python学生信

聊一聊置换检验Permutation test的原理

2020-12-01  本文已影响0人  悦影科技

《本文同步发布于“脑之说”微信公众号,欢迎搜索关注~~》

统计,是我们做研究不可或缺的一个工具,尽管有时候两组样本的某个指标的均值看起来相差很大,但是只有当两组样本的这个指标具有统计学差异时,我们才有信心说这两组样本确实有差异。我们在平时的研究中,用的较多的统计方法是参数检验,如t检验,方差分析等,但是这些方法都有一个前提要求,即样本都要符合正态分布。当样本不符合这一前提时,我们就要用非参数检验,而置换检验Permutation test就属于非参数检验的一种。这里,笔者通过实例带大家认识Permutation test的基本原理。

什么是Permutation test

Permutation test又称randomization test,是Fisher[1]和 Pitman[2]等人于20世纪30年代提出的一种统计推断的方法,其属于一种非参数检验,对样本总体分布情况无要求,特别适用于总体分布未知的小样本数据,即使样本数据小到无法使用比如说t检验(这一点是说Permutation test可以用于样本量非常小的数据,笔者会在下面的“实例1”中进行详细的说明);当然,Permutation test也可以用于分布未知的大样本量的数据,因此,其应用非常广泛。Permutation test一般通过对两组样本进行顺序上的随机置换,并重新计算统计检验量,把上述过程重复多遍(比如说1000遍),就可以构造出统计检验量的经验分布,然后对比两组样本的统计检验量和构造出的统计检验量经验分布,就可以计算求出P值。由于早期受到计算机技术的限制(因为Permutation test要产生大量的随机样本组合),Permutation test只能用于小样本数据的检验,现在随着目前计算机技术的发展,可以在短时间内产生大量的随机样本组合,因此目前Permutation test可以用于样本量较大的数据。

Permutation test的原理

接下来,笔者通过两个实例,带大家形象地认识下Permutation test的原理。

例1:小明和小黑参加了一个数学补习班,参加补习班之前和之后小明和小黑的数学成绩如下所示

表1

请问,补习班能否 “显著性”地提高被试的成绩?

对于这样的一个例子,我们第一反应是会采用配对t检验来检验小明参加补习班后的成绩是否显著性地高于参加补习班前的成绩。但是,这个例子比较极端,因为只有两个样本,且分布情况未知,因此采用配对t检验并不合适。这种情况采用Permutation test比较合适。

第一步:建立H0假设,即参加补习班前后成绩无显著变化;

第二步:计算统计检验量,这里计算两个样本的均值之差,即Ms=74-72.5=1.5;

第三步:把两组样本混合在一起(共计4个样本),随机抽取2个样本作为参加补习班前的成绩,剩下的2个样本作为参加补习班后的成绩,并重新计算统计检验量Mn.由于总共只有4个样本,那么全排列共计有6种可能性,如下表所示。

表2

我们计算的两个样本的统计量Ms=1.5,而两组样本经过随机重排后得到的这个统计量经验分布中,大于Ms的共有2个,那么相应的P就可以计算得到:P=2/6=0.3333; 因此,从统计学上来说,参加补习班不能显著提高学生的成绩。

实例2:欲研究某新的教学方法能否显著提高学生的数学成绩。两组被试,每组10个人,A组采用传统教学方法,而B组采用这种新的教学方法,经过一个学期的教学后进行测试,并统计两组被试的成绩,如下所示:

A组成绩:65,75,43,80,67,68,54,78,80,62

B组成绩:91,69,73,87,75,71,89,64,70,95

针对这个例子,采用Permutationtest的步骤如下:

第一步:建立H0假设,即新不会提高学生的成绩,或者说新、旧方法并无差别;

第二步:计算统计检验量,这里同样计算两组被试的均值之差,Ms=-13.2;

第三步:把A组和B组成绩进性混合,

AB:65,75,43,80,67,68,54,78,80,62,91,69,73,87,75,71,89,64,70,95

从AB中随机抽取10作为新的A组(计为A1组)成绩,剩下的作为B组成绩(计为B1组),并重新计算统计检验量,计为Mn;

上述随机置换步骤重复若干次(如1000次)可以得到Mn的经验分布;

第四步:计算Mn中大于Ms的个数(计为n),那么P=n/随即置换次数。

笔者用Matlab编程,实现上述Permutation test,统计量Mn的经验分布如下图所示:

图1

得到的P值为:0.0090,说明新的教学方法可以显著提高学生的成绩。

总结

Permutation test是一种非参数检验方法,本文通过两个简单的例子比较详细地给大家讲述了Permutation test的原理,相信通过这两个实例,大家对Permutation test会有更深一步的认识。对于实例2中的Matlab程序,感兴趣的朋友可以加笔者微信(微信号:kervin_zhao)索要;对于Permutation test遇到的问题,也可以加笔者进行交流。

参考文献

[1] Fisher, R. A., 1935. The Design of Experiments. Oliver & Boyd, Edinburgh.

[2]Pitman, E., 1937. Significance tests which may be applied to samples from any populations: I. Journal of the Royal Statistical Society, B, 4, 119-130

上一篇下一篇

猜你喜欢

热点阅读