You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中通过for循环生成重复抽样样本并构建零分布?

解决重复抽样与均值存储的R代码问题

你的代码存在几个关键问题,我帮你逐一修正并给出完整实现:

  • 存储向量长度错误:你把Storage设为长度9,但需要存储500000次抽样的均值,应改为numeric(500000)。
  • 循环迭代范围错误:for (i in v)只会执行一次循环(v是单个数值),要改成for (i in 1:v)才能遍历所有抽样次数。
  • 抽样逻辑缺失:循环里没有执行有放回抽样操作,mean(i)完全不符合需求,需每次从原始数据中抽取样本再计算均值。

正确的for循环实现代码

# 生成原始Gamma分布数据
data <- rgamma(9, shape=32, scale=1/4)
# 设置重复抽样次数
n_reps <- 500000
# 初始化存储均值的向量,长度匹配抽样次数
mean_storage <- numeric(n_reps)

# 执行有放回抽样循环
for (i in 1:n_reps) {
  # 有放回抽取9个观测值(replace=TRUE是核心)
  current_sample <- sample(data, size=9, replace=TRUE)
  # 计算当前样本均值并存入向量
  mean_storage[i] <- mean(current_sample)
}

基于抽样结果构建零分布

零分布即原假设下统计量的分布,你已经得到500000个样本均值,直接用这个向量即可构建:

  • 绘制分布直方图:
hist(mean_storage, breaks=50, main="零分布:样本均值抽样分布", xlab="样本均值")
  • 计算关键统计量:
# 计算95%置信区间分位数
quantile(mean_storage, c(0.025, 0.975))
# 计算零分布的标准误
sd(mean_storage)

高效替代方案

针对大量重复操作,R的replicate()函数比for循环更简洁高效,一行代码就能完成相同工作:

mean_storage <- replicate(n_reps, mean(sample(data, 9, replace=TRUE)))

内容的提问来源于stack exchange,提问作者Fishy Science

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:21:30