您所说的是您想将配对 t 检验统计量与通过独立切换所有可能的数据对获得的此类统计量的分布进行比较。有这样的开关,小到可以快速计算完整分布。210=1024
将其编码为两组数据之间差异的 t 检验很方便R
:我们只需对它们取反,而不是切换值。
让我们首先运行 t 检验:
x <- c(12.9, 13.5, 12.8, 15.6, 17.2, 19.2, 12.6, 15.3, 14.4, 11.3)
y <- c(12.7, 13.6, 12.0, 15.2, 16.8, 20.0, 12.0, 15.9, 16.0, 11.1)
(value <- t.test(x,y, paired=TRUE, alternative="two.sided"))
正如预期的那样,统计数据和 p 值为和现在让我们生成排列分布(按要求使用):−0.2130.836expand.grid
perms <- do.call(expand.grid, lapply(as.list(1:length(x)), function(i) c(-1,1)))
dist <- apply(perms, 1, function(p) t.test(p*(x-y), alt="t")$statistic)
(这需要秒。)作为快速检查,让我们绘制结果:0.33
hist(dist)
abline(v = value$statistic, col="Red", lwd=2)
因为实际统计量接近分布的中间并且这是一个双边检验,所以 p 值看起来大约为左右。我们可以计算它:0.9
sum(abs(dist) > abs(value$statistic)) / 2^length(x)
结果是,与 t 分布给我们的结果相同。0.836