我想做一个课堂演示,我将 t 间隔与引导间隔进行比较并计算两者的覆盖概率。我希望数据来自偏态分布,因此我选择将数据生成为exp(rnorm(10, 0, 2)) + 1
,一个大小为 10 的样本来自移位的对数正态分布。我编写了一个脚本来抽取 1000 个样本,并且对于每个样本,基于 1000 个重复计算 95% 的 t 间隔和 95% 的引导百分位数间隔。
当我运行脚本时,两种方法都给出了非常相似的间隔,并且都具有 50-60% 的覆盖概率。我很惊讶,因为我认为引导间隔会更好。
我的问题是,我有没有
- 在代码中犯了错误?
- 在计算间隔时犯了错误?
- 错误地期望引导间隔具有更好的覆盖属性?
另外,有没有办法在这种情况下构建更可靠的 CI?
tCI.total <- 0
bootCI.total <- 0
m <- 10 # sample size
true.mean <- exp(2) + 1
for (i in 1:1000){
samp <- exp(rnorm(m,0,2)) + 1
tCI <- mean(samp) + c(1,-1)*qt(0.025,df=9)*sd(samp)/sqrt(10)
boot.means <- rep(0,1000)
for (j in 1:1000) boot.means[j] <- mean(sample(samp,m,replace=T))
bootCI <- sort(boot.means)[c(0.025*length(boot.means), 0.975*length(boot.means))]
if (true.mean > min(tCI) & true.mean < max(tCI)) tCI.total <- tCI.total + 1
if (true.mean > min(bootCI) & true.mean < max(bootCI)) bootCI.total <- bootCI.total + 1
}
tCI.total/1000 # estimate of t interval coverage probability
bootCI.total/1000 # estimate of bootstrap interval coverage probability