如何在R中绘制总体样本的抽样分布?
在R中绘制抽样分布的方法
当然可以在R中完成抽样分布的绘制,核心思路是模拟抽样过程、获取统计量的分布,再通过绘图工具可视化。下面分几种实用方式说明:
一、手动模拟抽样(基础R)
这种方式能帮你直观理解抽样分布的本质,步骤清晰:
- 定义总体数据(可以用内置分布生成,也可以导入真实数据)
- 重复抽取指定样本量的样本,计算每次的统计量(比如均值、中位数)
- 将统计量集合绘制成直方图或密度图
示例代码:
# 生成模拟总体(均值50、标准差10的正态分布,10000个数据点) population <- rnorm(10000, mean = 50, sd = 10) # 设置抽样参数:样本量n,重复抽样次数reps n <- 30 reps <- 1000 # 批量抽取样本并计算均值,存储结果 sample_means <- replicate(reps, mean(sample(population, n, replace = TRUE))) # 绘制抽样分布直方图,叠加密度曲线和总体均值参考线 hist(sample_means, breaks = 30, freq = FALSE, main = "样本均值的抽样分布", xlab = "样本均值", col = "lightblue", border = "white") lines(density(sample_means), col = "red", lwd = 2) abline(v = mean(population), col = "darkgreen", lwd = 2, lty = 2)
二、用ggplot2绘制美观图形
如果需要更灵活的样式调整,ggplot2是首选:
library(ggplot2) # 将样本均值转为数据框格式 df <- data.frame(sample_means = sample_means) ggplot(df, aes(x = sample_means)) + geom_histogram(aes(y = ..density..), bins = 30, fill = "lightblue", color = "white", alpha = 0.7) + geom_density(color = "red", size = 1) + geom_vline(xintercept = mean(population), color = "darkgreen", size = 1, linetype = "dashed") + labs(title = "样本均值的抽样分布", x = "样本均值", y = "密度") + theme_minimal()
三、用专用工具包简化流程
没有专门直接绘制抽样分布的单一函数,但部分统计包可以简化抽样步骤:
infer包:专门用于统计推断,内置抽样模拟流程,代码更贴合统计逻辑:
library(infer) # 用infer包模拟Bootstrap抽样分布 sampling_dist <- df %>% specify(response = sample_means) %>% generate(reps = 1000, type = "bootstrap") %>% calculate(stat = "mean") # 直接可视化抽样分布 visualize(sampling_dist) + labs(title = "Bootstrap样本均值的抽样分布", x = "样本均值")
sampling包:提供多种专业抽样方法(分层抽样、整群抽样等),可配合绘图函数自定义抽样分布。
内容的提问来源于stack exchange,提问作者Ali Khan
相关产品推荐
相关产品推荐

