美文网首页python学生信
【统计与检验-4】permutation test

【统计与检验-4】permutation test

作者: lanzinuo | 来源:发表于2019-10-12 15:44 被阅读0次
    permutation-test 检验

    置换检验(permutation test) 是一种非参数检验。 在样本分布未知且数量较小的时,我们一般选用无参检验方法,一般选用秩和检验,例如之前文章提到的Mann-Whitney U test。
    但是有时候也会遇到无参检验也无法解决的小样本样本检验。这时候我们可以使用置换检验。
    置换检验是Fisher20世纪30年代提出的一种基于大量计算(computationally intensive),利用样本数据的全(随机)排列,进行统计推断的方法。因其对总体分布自由,特别适合用于总体分布未知的小样本数据,以及一些常规方法难以使用的假设检验情况。
    假设: 假设两个样本之间没有差异,成立则H0,不成立则H1。或者某个处理没有效果,成立H0,不成立H1。
    检验步骤:
    1.两组样本A、B,提出原假设,比如A和B没有差异,或者就B结果而言,某个处理对A无效,
    2.首先计算A、B均值差,观测统计量 Sobj=meanA-meanB,
    3.将A、B样本所有值进行合并,并进行随机排序分组为A'、B'。并计算A'、B'的均值差,置换统计量 Sp1=meanA'-meanB',
    4.重复步骤3,直到所有的排序可能都齐全,以获得一系列的置换统计量,假设我们进行了n次置换则获得统计量为Sp1-Spn。我们尽可能多的重复3的步骤,以达到精确计算的结果,如果未能实现所有的排序组合,则是近似计算,重复次数越多,得到的背景分布越”稳定“,
    5.最后将这些n个置换统计量按照从小到大排序,构成抽样分布,再看Sobj是否落在分布的置信区间内(如95%置信区间),这时候可计算一个P值(如果抽样总体1000次统计量中大于Sobj的有10个,则估计的P值为10/1000=0.01),落在置信区间外则拒绝原假设。

    举例
    样本A:{24,43,58,67,61,44,67,49,59,52,62,50}
    样本B:{42,43,65,26,33,41,19,54,42,20,17,60,37,42,55,28}
    Sobj=(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
    合并A、B,all:{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}
    重排序:A'={43,17,44,62,60,26,28,61,50,43,33,19}
    B'={55,41,42,65,59,24,54,52,42,49,37,67,67,20,42,58}
    Sp1=meanA'-meanB'=(43+17+44+62+60+26+28+61+50+43+33+19)/12-(55+41+42+65+59+24+54+52+42+49+37+67+67+20+42+58)/16=-7.875
    我们设置置换次数n=5000,则会产生Sp1...Sp5000,将置换统计量进行从大到小排序,然后我们进行histogram绘图如下:

    Rplot.png
    其中大于14的置换统计量一共37个,p=37/5000=0.0074,置信区间如果为95%,则拒绝原假设H0,故A,B有差异。
    R包执行permutation test 分析
    install.packages("jmuOutlier")
    library(jmuOutlier)
    print( x <- rnorm(10,0.5) )

    perm.test(A,B,sim=5000)

    相关文章

      网友评论

        本文标题:【统计与检验-4】permutation test

        本文链接:https://www.haomeiwen.com/subject/uiyqmctx.html