[英]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.