排列检验是一种精确的检验,可为您提供精确的p值。引导排列测试没有意义。
紧接着,确定围绕测试统计数据的置信区间也没有意义,因为它是根据您的样本而不是估计来计算的。您可以根据均值之类的估计值来确定置信区间,但不能根据检验统计量来确定置信区间。
排列测试不应用于太大的数据集,以致无法再计算所有可能的排列。如果是这种情况,请使用引导过程来确定所用测试统计信息的临界值。但是同样,这与95%的置信区间无关。
一个例子:我在这里使用经典的T统计量,但是使用一种简单的引导方法来计算我的统计量的经验分布。基于此,我计算出一个经验p值:
x <- c(11.4,25.3,29.9,16.5,21.1)
y <- c(23.7,26.6,28.5,14.2,17.9,24.3)
t.sample <- t.test(x,y)$statistic
t.dist <- apply(
replicate(1000,sample(c(x,y),11,replace=F)),2,
function(i){t.test(i[1:5],i[6:11])$statistic})
# two sided testing
center <- mean(t.dist)
t.sample <-abs(t.sample-center)
t.dist <- abs(t.dist - center)
p.value <- sum( t.sample < t.dist ) / length(t.dist)
p.value
请注意,此两面测试仅适用于对称分布。非对称分布通常仅在一侧进行测试。
编辑:
好的,我误解了这个问题。如果要计算差异估计的置信区间,则可以使用此处提到的代码在每个样本中进行引导。请注意,这是一个有偏见的估计:通常,这会导致CI值过小。另请参阅此处给出的示例,作为为什么必须对置信区间和p值使用不同方法的原因。
sample
和生成样本replace=TRUE
?有什么理由使用像这样的软件包boot
吗?