R语言实现bootstrap和jackknife检验方法

Python017

R语言实现bootstrap和jackknife检验方法,第1张

写在最前面:

首先需要说一下,本文的bootstrap和jackknife都算是蒙特卡罗方法(Monte Carlo method)的一种。应用广泛的的MCMC链(马尔可夫链蒙特卡洛方法Markov chain Monte Carlo)也是蒙特卡罗与马尔可夫链的结合。简单来说,蒙特卡罗方法就是从已知样本的分布中随机抽取新的样本集进行评估,然后放回,再次抽取的方法。根据具体方法的不同,抽取样本集的手段也不同。

bootstrap抽样方法将观测到的样本视为一个有限的总体,是唯一的信息来源,从中有放回的随机抽样来评估总体特征,以及对抽样总体进行推断统计。bootstrap 也分参数bootstrap和非参数bootstrap,前者的分布已完全知道。但在生信领域一般没有这种情况。所以下面讨论的是非参数bootstrap。

直接上例子:

假设现在有bootstrap包中的law数据集如下,

现在我们要计算LSAT成绩(美国法学入学考试)和GPA之间的相关系数。但因为样本量太少了,所以我们使用bootstrap重复抽样评估其标准误。

200次循环抽样后,计算得se.R标准误为0.1474629

得到如下的图:

1e6次循环抽样后,计算得se.R标准误为0.1333802

得到如下的图:

如果用bootstrap包的bootstrap函数会快一些:

bootstrap函数的用法: bootstrap(抽取样本范围,重复次数,进行bootstrap的函数,bootstrap的数据集)

偏差定义为bootstrap结果(多个数值)与原数据统计结果(单个数值)的均值:

得到bias大约为0.001817608,比较小

换一个包,boot包

这里用了三种方法计算置信区间:basic、正态和百分数。样本相关系数分布接近正态,则正态置信区间接近百分数区间。此外还有“Better Bootstrap Confivendence Interval” 更好的bootstrap置信区间,称为BCa区间,使用偏差和偏度对百分数置信区间进行矫正。设置type="bca"即可。

简单的说,bootstrap是从原有真实样本中有放回地抽取n个。jacknife就是每次都抽取n-1个样本,也就是每次只剔除一个原样本。

同样地,如果以bootstrap包中的law数据进行演示:

Jackknife计算的bias为-0.006473623。 这里jackknife的偏差公式相比于bootstrap有一个(n-1)系数,推导就不写了。

标准误se为0.1425186,与bootstrap得出的比较接近。

当统计量不太平滑的时候,Jacknife有很大误差。比如说对中位数进行统计,其变化很大。在进行Jacknife之后最好再跑一次bootstrap,看看是否相差很大。

居然还能这么嵌套着玩,针对每次bootstrap形成的数列向量计算jackknife的标准差,这样可以看出bootstrap若干次取样之间的差异。

算出来分别为0.1344824和0.08545141。后者较小,表面bootstrap取样之间的variance较小。

简单来说就是一种数据分割检验的方法,将数据分割为K份,称为"K-fold"交叉检验,每次第i个子集作为测试集来评估模型,其余的用来构建模型。Admixture使用的就是这个原理。Jackknife也属于Cross Validation的应用之一。

现在我创建一个这样的alignment:

这棵树长这样,符合遗传距离:

进行bootstrap:

phylogeny的bootstrap是对每一个节点都进行bootstrap取样并建树,比如说在9号节点,查看其bootstrap子集建的树符合系统发育关系((human2,human4,human3)(human8,human1,human6,human7,human5))的百分比(不管内部怎么样,先看这个节点)。发现Node1支持率是100(1000次都符合)。而后移到下一个节点,并且只看节点内部的分支支持率是多少。

其实原理都比较简单,计算bootstrap也会有专门的软件。

参考资料:

1)中科大张伟平教授课件

2) https://ecomorph.wordpress.com/2014/10/09/phylogenetic-trees-in-r-4/

rush也就是快速进攻或包抄的意思

All-around(全能):一个All-around玩家是一个在任何技术上都很全面的玩家。比如现在的f0rest(fnatic)、Neo(mYm). Shooting(射击):Shooting是射击和瞄准两种技术的总称。瞄准仅仅是简单的将准星对准目标,而射击技巧就可能包括移动射击,后坐力控制,预瞄,武器运用等等。现在射击技术世界上最好的人无疑是f0rest(瑞典fnatic).Neo(波兰mYm).zet(瑞典SK).plastE(芬兰Roccat)和俄罗斯强队VP里的五个强男. Aiming(瞄准):当你瞄准的时候,Aiming决定着你的精确性。这跟暴头率无关,而是在于当你拖动指针从一个目标转为另一个目标时,准星移动的是否流畅而准确。当然,Aiming的技术之一便是你必须知道什么时候应该把准星放在那里,例如知道在什么地形下,头部的位置应该是那里。另外,反应的快慢也决定着Aiming的技术。当今世界上瞄准做得做好的绝对是zet和f0rest.

Teamwork/Teamplay(协作):Teamwork是在已有的境遇下利用最智慧的方式协助你的队友,但更重要的是整个团队攻击或防守的协调性。如果你可以用最有效的方法来协助你的队友,那意味着你清楚的知道你的队友在哪个位置做着什么,做到这一点,你便是最好的队友。当今世界上团队协作最好.人员结构最稳定最出色的战队非fnatic(瑞典).mYm(波兰)和mTw.dk(丹麦)莫属.

Organisation(组织):Organisation与在游戏中的站队的5个队友对动作处理的组织性:在队友倒下时是否能很好的顶替他的位置;是否能在同一时刻的不同方位同时进攻;如何组织进攻等。一个玩家可以有很好的组织性,然后他的队友可能不是这样。Organisation与走位技术并不相同,通过走位的技术,你可以找出在什么情形下哪个位置最有利与攻击和防守。例如,如何避免被背后偷袭或避免被包围。同时,如果你的Organisation技术好的话,在考虑自己走位的同时,也会考虑你的视野是否与队友重叠是否会挡住队友。Organisation是团队中的最重要技术之一,它可以帮助你避免你被聪明的对手杀死,也可以帮助你在窘境时不会惊慌。当队伍被组织的很好,你便能充分的利用对手的错误,因为你的动作非常严格,几乎不会犯错。来自瑞典富贵兵团fnatic的指挥者cArn是其中代表人物.

Logic(逻辑性):当一个玩家不需要仔细考虑,便可以知道一个动作的逻辑结果,因此而迅速找出特定情形下的解决方法(特别是在1v1的情况下),当然也给了你提前考虑对手动作的机会。瑞典豪门SK里的Tentpole是其中杰出代表.

Reflexes(反应):这意味着你可以快速反应并瞄准对手,手雷等一切视觉因素都可以使你起反应。它简单的表现出你天生的直觉。来自丹麦的mTw.dk中的狙击手Sunde也许是世界上现役选手中反应最快的,如果要看以前的话,已退役的Johnny R.和fisker是其中佼佼者.

Recoilcontrol(后坐力的控制):你使用的武器都是有后坐力的,每种武器都有不同的后坐力。通过对后坐力的控制,你可以控制子弹的走向。完美的后坐力控制者清楚的知道,在扫射时怎样拉下准星和子弹的走向。在这点上,职业玩家都能够随心所欲地控制得很好,即便不是打职业的人,也有很多可以做到.

精确估算典型森林生态系统呼吸(R(下标 eco))对评价生态系统碳平衡具有重要意义。采用开路涡度相关法对鼎湖山针阔叶混交R(下标 eco)进行定位测定,根据2003~2004年数据采用多种呼吸模型对R(下标 eco)进行估算并分析R(下标 eco)对环境要素的响应特征,结果表明:(1)R(下标 eco)受土壤温度、湿度和冠层气温、相对湿度共同影响,R(下标 eco)对环境因子的响应模式存在季节性差异,总体上土壤温度是驱动凡的主要因子。(2)描述R(下标 eco)与温度因子的关系模式中,指数方程、Van't Hoff方程、Arrhenius方程和Lloyd-Talor方程,统计意义上具有同等的能力,从温度敏感性指标Q10看,Lloyd-Talor方程比其他方程更适合于描述R(下标 eco)对温度的响应特征。(3)由土壤温度(Ts)和土壤含水量(Ms)驱动的连乘耦合模型,能综合反映Ts、Ms对R(下标 eco)的协同作用。在Ms较高时段,连乘模型模拟的R(下标 eco)高于Tloyd-Taylor方程,而在Ms较低时段连乘模型的结果低于Tloyd-Taylor方程,但二者没有统计意义上的显著差异。(4)鼎湖山混交林2003年R(下标 eco)年总量,基于白天涡度相关通量观测资料的模型估算结果为1100-1135.6gCm^(-2)a^(-1),比基于夜间通量资料估算结果(921-975gCm%(-2)a^(-1))增加12%~25%。采用白天通量资料估算R(下标 eco),对克服夜间涡度相关法通量测定结果偏低问题具有积极意义,为进一步可靠评估净生态系统CO2交换(NEE)奠定方法基础。