如何模拟抽样分布?
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 是样本数。
我正在尝试更深入地了解抽样分布,为此我一直在进行一些模拟。对于本练习,我使用的分布是均值 = 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 是样本数。