繁体   English   中英

如何自动计算不同样本量的均值和置信区间?

[英]How to calculate means and confidence intervals for different sample sizes automatically?

我有一个总体样本 (n=670),我想在其中调查样本大小如何影响结果。 我已经计算了总体的“真实平均值”,并想将其与 n=20、n=30、n=40 等时的平均值进行比较。有没有办法让 R 从我的样本中随机抽取 x 个个体数据集,并计算每个样本大小的均值和置信区间?

还想 plot 这不知何故,其中 x 轴显示“累计”的意思。 假设是样本量越大,越接近“真实均值”,这里我想研究样本量必须有多大才能接近真实均值。

我已经弄清楚如何使用sample_n(data, size)对随机行进行采样,以及如何进行计算(使用lm()confint() )。 但是是否有可能避免手动完成所有操作? 不仅是 670 个人的数据集,而且我必须对另外两个人群(总共 1500 个人)做同样的事情。

我会用我感兴趣的样本量做一个for循环,如下所示:

sizes <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)

results <- c()

for (size in sizes) {
  subset <- sample_n(data, size)
  
  lm_fit <- lm(subset$response ~ subset$predictor)
  conf <- confint(lm_fit, level = 0.95)
  
  results <- rbind(results, c(size, lm_fit$coefficients[1], conf[1,1], conf[1,2]))
}

您可以按如下方式绘制结果:

library(ggplot2)

ggplot(data = results, aes(x = size, y = mean)) +
  geom_point() +
  geom_errorbar(aes(ymin = lower, ymax = upper))

其中geom_errorbar有助于显示置信区间。

谢谢你。 这让我朝着正确的方向前进,RStudio 的新手。所以知道在哪里寻找解决方案并不总是那么容易。 我最终得到了下面的代码。

calculate_mean_ci_M <- function(data, subset_sizes){
mean <- mean(RandomM$Value[1:subset_sizes])
sem <- sd(RandomM$Value[1:subset_sizes]) /sqrt(subset_sizes)
ci <- sem * qt(c(0.025, 0.975), df = subset_sizes-1)
return(data.frame(subset_sizes = subset_sizes, mean = mean, ci_lower = mean - ci[1], 
                ci_upper = mean + ci[1]))
}


subset_sizes <- c(20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 
              150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 
              270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370,
              380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500,
              510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630,
              640, 650, 660, 670, 672)
mean_ci_data_M <- map(subset_sizes, calculate_mean_ci_M, data = data) %>%
  bind_rows()`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM