取决于样本量的理论置信区间

机器算法验证 r 采样 样本量 中心极限定理 不确定
2022-04-05 08:36:21

我正在使用 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% 不确定性带的结果图:

在此处输入图像描述

1个回答

不错的实验。蓝线将在μ±zα/2σ/n在哪里α=0.05αzα是标准法线的上分位数函数,并且nsample_size_在这种情况下,这是准确的,因为您是从正态分布生成的,并且样本均值将具有分布N(μ,σ2/n). 一般来说,它大约基于 CLTn.

如果你试图解释 CI,那会有点不同。将 CI 垂直放置在每个点周围,对于每个sample_size_,大约 95% 的间隔将越过红色虚线(您涵盖了真实均值95% 的时间,因此覆盖概率为 0.95)。由于您的复制大小很小(10),所以这不是那么准确。尝试增加sample_number_说 1000 以更好地看到它。您将观察到的是,尽管 CI 的长度会随着您的增加而变小n, 仍然他们中的 95% 无论如何都继续覆盖红线n是。


PS。我假设不是这两行:

population <- rnorm(10000000, mean=mean, sd=sd)
sample_ <- sample(population, sample_size_)

你会做这样的事情:

sample_ <- rnorm(sample_size_, mean=mean, sd=sd)

也就是说,来自正态分布的样本,而不是像您在这里所做的那样从正态分布中抽取的有限总体,尽管在您的情况下结果将接近(除非您的样本量开始接近 10000000)。