【转载】参考:
https://www.plob.org/article/3176.html
http://blog.sciencenet.cn/blog-659252-924314.html
Permutation test
下面通过一个简单例子来介绍Permutation test的思想。
假设我们设计了一个实验来验证加入某种生长素后拟南芥的侧根数量会明显增加。A组是加入某种生长素后,拟南芥的侧根数量;B是不加生长素时,拟南芥的侧根数量(均为假定值)。
A组侧根数量(共12个数据):24 43 58 67 61 44 67 49 59 52 62 50
B组侧根数量(共16个数据):42 43 65 26 33 41 19 54 42 20 17 60 37 42 55 28
我们来用假设检验的方法来判断生长素是否起作用。我们的零假设为:加入的生长素不会促进拟南芥的根系发育。在这个检验中,若零假设成立,那么A组数据的分布和B组数据的分布是一样的,也就是服从同个分布。
接下来构造检验统计量——A组侧根数目的均值同B组侧根数目的均值之差。
statistic:= mean(Xa)-mean(Xb)
对于观测值有 Sobs:=mean(Xa)-mean(Xb)=(24+43+58+67+61+44+67+49+59+52+62+50)/12-(42+43+65+26+33+41+19+54+42+20+17+60+37+42+55+28)/16=14
我们可以通过Sobs在置换分布(permutation distribution)中的位置来得到它的P-value。
Permutation test的具体步骤是:
1.将A、B两组数据合并到一个集合中,从中挑选出12个作为A组的数据(X'a),剩下的作为B组的数据(X'b)。
Gourp:=24 43 58 67 61 44 67 49 59 52 62 50 42 43 65 26 33 41 19 54 42 20 17 60 37 42 55 28
挑选出 X'a:=43 17 44 62 60 26 28 61 50 43 33 19
X'b:=55 41 42 65 59 24 54 52 42 49 37 67 67 20 42 58
2.计算并记录第一步中A组同B组的均值之差。Sper:=mean(X'a)-mean(X'b)= -7.875
3.对前两步重复999次(重复次数越多,得到的背景分布越”稳定“)
这样我们得到有999个置换排列求得的999个Sper结果,这999个Sper结果能代表拟南芥小样本实验的抽样总体情况。
如上图所示,我们的观测值 Sobs=14 在抽样总体右尾附近,说明在零假设条件下这个数值是很少出现的。在permutation得到的抽样总体中大于14的数值有9个,所以估计的P-value是9/999=0.01
最后还可以进一步精确P-value结果(做一个抽样总体校正),在抽样总体中加入一个远大于观测值 Sobs=14的样本,最终的P-value=(9+1)/(999+1)=0.01。(为什么这样做是一个校正呢?自己思考:))
结果表明我们的原假设不成立,加入生长素起到了促使拟南芥的根系发育的作用。
Monte Carlo and Bootstrap
理解一、
风马牛不相及,举个简单的例子(关于一个分布的平均值)来帮你理解bootstrap和Monte Carlo,
比如现在有一个分布F...
1. Bootstrap: 如果我无法知道F的确切分布,手上仅有一组从F中iid抽样的样本(X_1, ..., X_n),我想检验“F的均值是否为0”。看起来这个不可能,因为我只有一个ar{X}的点估计,而并不知道ar{X}的分布。Bootstrap的魔术是现在我把(X_1, ..., X_n)这个样本当做总体,从中(有放回地)重新抽样,重抽样样本大小仍为n,那么每一次重抽样就可以得到一个“样本均值”,不断地重抽样我就得到了一个ar{X}的“分布”。这样接下来我就可以构造confidenceinterval并做检验了。
虽然实践中bootstrap的重抽样步骤都是用Monte Carlo方法来模拟重抽样样本统计量的分布,但是严格地说这个分布原则上可以精确计算。而如果待估统计量比较简单,bootstrap的结果有时甚至可以直接用(X_1, ..., X_n)的某种统计量表示出来,从而并不需要真正地“重抽样”。当然实际应用中绝大多数时候重抽样分布的解析表达式都会太复杂,所以用模拟代替计算。
(关于bootstrap的更多讨论见此答案下的评论,特别是Lee Sam提的问题)
2. Monte Carlo: 如果我知道F的确切分布,现在想计算mean(F),但是F的形式太复杂(或者我这人太懒);另一方面我又知道如何从F中抽样,于是就抽一个样本出来,拿样本均值充数。
一般来说bootstrap干的事大都跟这个例子中干的事差不多,而Monte Carlo的应用要广泛和多元化得多了。
所以两者连“区别”都谈不上,就是两码事。
理解二、
MonteCarlo是一个更基础的想法。在很多数学、物理或者工程问题种有很多无法写出closed form的表达式,为了能得到数值上的一个解,需要通过随机采样的方法去估计。
Bootstrap是重新改变统计学的一个想法。统计推断的主体总是一个的随机变量分布。在这个分布很复杂无法假设合理的参数模型时,bootstrap提供了一种非参数的推断方法,依靠的是对观测到的样本的重新抽样(resampling),其实是用empirical distribution去近似真正的distribution。
这两种方法从目的到用法都完全不同,有联系的话就是都涉及到计算机抽样。
理解三、
MonteCarlo是一个更基础的想法。在很多数学、物理或者工程问题种有很多无法写出closed form的表达式,为了能得到数值上的一个解,需要通过随机采样的方法去估计。
Bootstrap是重新改变统计学的一个想法。统计推断的主体总是一个的随机变量分布。在这个分布很复杂无法假设合理的参数模型时,bootstrap提供了一种非参数的推断方法,依靠的是对观测到的样本的重新抽样(resampling),其实是用empirical distribution去近似真正的distribution。
这两种方法从目的到用法都完全不同,有联系的话就是都涉及到计算机抽样。