2016-03-03 89 views
1

我想在R中执行bootstrapped配对t检验。我尝试过使用参数配对t检验返回p < .05的多个数据集,但是当我运行bootstrap时,我得到的p值介于0.4和0.5。我运行这个不正确吗?如何在R中执行引导配对t检验?

differences<-groupA-groupB 
    t.test(differences) #To get the t-statistic e.g. 1.96 

    Repnumber <- 10000     
    tstat.values <- numeric(Repnumber)  
    for (i in 1:Repnumber) { 
    group1 = sample(differences, size=length(differences), replace=T) 
    tstat.values[i] = t.test(group1)$statistic 
    } 

    #### To get the bootstrap p-value compare the # of tstat.values 
    greater (or lesser) than or equal to the original t-statistic divided 
    by # of reps: 

    sum(tstat.values<=-1.96)/Repnumber 

谢谢!

回答

1

它看起来像你比较苹果和橘子。对于differences的单个t检验,您将得到一个t统计量,如果大于临界值,则表示group1group2之间的差异是否与零差异显着。您的引导代码执行相同的操作,但对于10,000个自举样本differences,您可以估计来自differences总体的不同随机样本中t统计量的变化。如果您采用这些自助式t统计量的均值(mean(tstat.values)),则会看到它与来自整个differences样本的单个t统计量大致相同。

sum(tstat.values<=-1.96)/Repnumber为您提供小于-1.96的自举t统计的百分比。这是从您的人口重复随机样本中获得t统计量小于-1.96的时间百分比的估计值。我认为这实际上是对于给定的样本量和显着性水平,检测给定大小在group1group2之间差异的测试能力的估计值,尽管我不确定这样的功效分析有多强大。

在正确引导t检验方面,我认为你实际需要做的是某种排列检验,检查你的实际数据是否是异常数据,比较重复地对数据进行洗牌并做一个对每个混洗数据集进行t检验。您可能想问一个关于CrossValidated的问题,以获得有关如何正确处理数据的建议。这些CrossValidated答案可能有所帮助:here,herehere

+0

谢谢。引导时是否需要保留这些对?如果不是,我可以重写这个。 – Sebastian112