bootstrap 通常用于非参数推理。但是,在某些情况下,引导然后在每个重新采样中进行参数测试很有用(可选地,请参阅参考资料,但这不是该问题的任何要求阅读)。
例如,您有一个连续变量。您使用经典引导程序重新采样,即带替换采样。然后,在每个重新采样的数据集中,您执行假设独立观察的假设检验,例如标准检验。因为数据集中有重复的观察,我认为我们有非独立的观察:观察是“聚集的”,因为所有重新采样的观察映射到原始数据集中的同一观察是 100% 相关的。
更正式地说,说是标准正态。令是一个随机变量,表示重采样数据集中第观测值让我们检查独立性是否成立。随着重采样的数量变大,我们有(有一些符号滥用):
但是,对于映射到我们重新采样的原始数据集中相同观察值的所有,由于重复观察和的连续性,条件分布是退化的:
所以独立性似乎不成立,我希望假设独立性无效的推论(可能是反保守的)。
然而,模拟(下面的代码)表明,事实上,在上面描述的确切情况下,实际上我们确实有名义上的 I 类错误。
那么独立性在自举样本中是否成立?如果不是,为什么非独立性不会像通常那样妥协推理?难道我连“独立观察”的定义都不懂吗?
编辑
我发现这个关于独立观察定义的精彩讨论支持了我直观地提出的观点。因此,我的问题仍然存在。
模拟
library(doParallel)
# set the number of cores
registerDoParallel(cores=8)
sim.reps = 250
n=50
boot.reps = 500
res = as.data.frame( foreach( i = 1:sim.reps, .combine=rbind ) %dopar% {
# generate original data under H0 for a 1-sample t-test
y = rnorm(n)
pvals = c()
for (i in 1:boot.reps) {
# classical bootstrap
ids = sample(1:n, replace=TRUE)
y.star = y[ids]
# t-test
pvals[i] = t.test(y.star)$p.value
}
# should be 0.05
sum(pvals < 0.05) / length(pvals)
} )
names(res) = "rej"
res$rej = as.numeric(res$rej)
# equals 0.05
mean(res$rej)
参考
Romano, JP 和 Wolf, M. (2007)。控制多重测试中的广义错误率。统计年鉴,1378-1408。