我正在使用 R 和简单的英语来表达我的问题。假设我有一个“真实”/虚构的总体,它的平均值为 500000,标准差为 13000:
mean <- 500000
sd <- 13000
population <- rnorm(10000000, mean=mean, sd=sd)
然后我可以使用从 3 到 150 的不同样本大小从这个总体中重复抽样。对于每个样本,我还使用 at 分布计算 95% 置信区间。我认为这是安全的,因为一开始我的样本量非常低(即 3)。这在这里并没有真正被利用,但我认为这是正确的?
results <- NULL
for (sample_size_ in 3:150) {
for (sample_number_ in 1:10) {
sample_ <- sample(population, sample_size_)
ci_test <- t.test(sample_, conf.level=0.95)
df <- data.frame(
sample_size = sample_size_
, low_ci = ci_test$conf.int[[1]]
, up_ci = ci_test$conf.int[[2]]
, mean = mean(sample_)
)
results <- rbind(results, df)
}
}
然后我可以绘制数据框,它很好地显示了随着样本量的增加,样本均值如何接近总体均值(红色虚线):
ggplot(results, aes(y = mean, x = sample_size)) +
geom_point() +
geom_hline(yintercept=mean, linetype="dotted", color = "red", size=3)
这是输出(实际代码使用主题):
我想这很简单,但我如何确定这些蓝线表示样本平均值的 95% 理论不确定性在蓝色区域内?
是否有一个公式,它是否取决于真实分布是否正常的知识?我想它不应该,因为样本均值将根据 CLT 进行正态分布?
谢谢。
PS:
这是当前/最终代码:
mu_ <- 500000
sd_ <- 13000
z_value <- qnorm(.975)
max_sample_size = 500
repeats = 2
results <- NULL
upper_and_lower <- NULL
for (sample_size_ in 3:max_sample_size) {
for (sample_number_ in 1:repeats) {
sample_ <- rnorm(sample_size_, mean=mu_, sd=sd_)
ci_test <- t.test(sample_, conf.level=0.95)
df <- data.frame(
sample_size = sample_size_
, low_ci = ci_test$conf.int[[1]]
, up_ci = ci_test$conf.int[[2]]
, mean = mean(sample_)
)
results <- rbind(results, df)
}
df <- data.frame(
sample_size = sample_size_
, upper = mu_ + (z_value * (sd_/sqrt(sample_size_)))
, lower = mu_ - (z_value * (sd_/sqrt(sample_size_)))
)
upper_and_lower <- rbind(upper_and_lower, df)
}
ggplot() +
geom_point(data=results, aes(y = mean, x = sample_size)) +
geom_line(data=upper_and_lower, aes(y = upper, x = sample_size), color = "blue", size=2) +
geom_line(data=upper_and_lower, aes(y = lower, x = sample_size), color = "blue", size=2)
具有理论 95% 不确定性带的结果图: