如何模拟抽样分布?

How to simulate the sampling distribution?

我正在尝试更深入地了解抽样分布,为此我一直在进行一些模拟。对于本练习,我使用的分布是均值 = 0.1 和 sigma = 0.17 的对数正态分布。我的代码如下:

n_sims <- 1000

mu <- rep(NA, n_sims)
lo95 <- rep(NA, n_sims)
hi95 <- rep(NA, n_sims)

data <- rlnorm(1000, 0.1, 0.17)

for (i in 1:n_sims){
  sim <- sample(data, 1000)
  mu[i] <- mean(sim)
  lo95[i] <- mean(sim) - 2*sd(sim)
  hi95[i] <- mean(sim) + 2*sd(sim)
}

xs <- seq(1,n_sims,1)

plot(xs, mu, pch=16, ylim = c(min(lo95)-0.05, max(hi95)+0.05))
segments(xs, lo95, xs, hi95, lwd = 0.5, col = "gray")

sum((lo95 <= 1.1) & (hi95 >= 1.1))

我期望 95% 的样本包含分布的真实值(变换比例为 1.1),但最后一行代码显示所有 1000 个样本都包含真实均值?我的理解是这些模拟中只有 95% 应该包含正确的均值。有什么我不明白的地方吗?

错误位于此处:sample(data, 1000)
sample 函数的默认值是“replace=FALSE”,因此每次迭代都使用完全相同的样本。为了正确地 bootstrap 您的分析,您需要进行替换采样:sim <- sample(data, 1000, replace=TRUE).

还要计算估计均值的置信限度,我相信你想使用 mu +/- 2*sd/sqrt(n),其中 n 是样本数。