3

我想在 R 中执行自举配对 t 检验。我已经尝试过使用参数配对 t 检验时返回 p<.05 的多个数据集,但是当我运行自举时,我得到的 p 值在 0.4 和 0.5 之间. 我运行不正确吗?

   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

谢谢!

4

1 回答 1

1

看起来你在比较苹果和橘子。对于您的单个 t 检验,differences您将获得一个 t 统计量,如果大于临界值,则表明两者之间的差异是否group1group2着不同于零。您的自举代码做同样的事情,但对于 10,000 个自举样本differences,您可以估计 t 统计量在 总体中的不同随机样本上的变化differences。如果您取这些自举 t 统计量 ( mean(tstat.values)) 的平均值,您会发现它与differences.

sum(tstat.values<=-1.96)/Repnumber为您提供小于 -1.96 的自举 t 统计量的百分比。这是对来自总体的重复随机样本中 t 统计量小于 -1.96 的时间百分比的估计。group1我认为这本质上是对您的测试在给定样本量和显着性水平之间检测给定大小差异的能力的估计group2,尽管我不确定这种能力分析的稳健性。

在正确引导 t 检验方面,我认为您实际需要做的是某种排列检验,与反复改组数据标签并进行 t 检验相比,检查您的实际数据是否是异常值每个洗牌的数据集。您可能想在CrossValidated上提问,以获得有关如何正确处理您的数据的建议。这些 CrossValidated 答案可能会有所帮助:这里这里这里

于 2016-03-03T19:00:47.270 回答