我正在研究的课程存在以下问题:
进行蒙特卡洛研究,以估计标准正常自举置信区间和基本自举置信区间的覆盖概率。从正常人群中抽样,并检查样本均值的经验覆盖率。
标准普通引导程序CI的覆盖率很容易:
n = 1000;
alpha = c(0.025, 0.975);
x = rnorm(n, 0, 1);
mu = mean(x);
sqrt.n = sqrt(n);
LNorm = numeric(B);
UNorm = numeric(B);
for(j in 1:B)
{
smpl = x[sample(1:n, size = n, replace = TRUE)];
xbar = mean(smpl);
s = sd(smpl);
LNorm[j] = xbar + qnorm(alpha[1]) * (s / sqrt.n);
UNorm[j] = xbar + qnorm(alpha[2]) * (s / sqrt.n);
}
mean(LNorm < 0 & UNorm > 0); # Approximates to 0.95
# NOTE: it is not good enough to look at overall coverage
# Must compute separately for each tail
根据本课程所学的内容,可以如下计算基本的引导置信区间:
# Using x from previous...
R = boot(data = x, R=1000, statistic = function(x, i){ mean(x[i]); });
result = 2 * mu - quantile(R$t, alpha, type=1);
那讲得通。我不了解的是如何计算基本引导CI的覆盖率。我了解覆盖率将代表CI包含真实值的次数(在这种情况下为mu
)。我是否boot
多次运行该函数?
我该如何不同地对待这个问题?
另外,
—
主教
smpl = x[sample(1:n, size = 100, replace = TRUE)];
可以简化为smpl = sample(x, size=100, replace=TRUE)
。
@cardinal-是的,这是一个拼写错误,并且与
—
TheCloudlessSky
mu
0 相同。正常的CI可以正常工作,这是我遇到的基本引导程序CI。
size=100
有错字吗 我不相信您会获得正确的上限和下限,因为在循环中计算配置项时,隐式样本大小似乎为1000(因为sqrt.n
在计算中使用了)。另外,为什么要mu
直接比较而不是0(后者是真实的均值)?