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

R语言模拟研究:使用for循环批量生成95%置信区间的实现问题

R语言for循环批量生成95%置信区间问题解答

错误原因

你之前的代码无法正常运行核心有两个问题:

  • 存储结构错误:你用rep(NA,10)生成了一维向量存储结果,但每个95%置信区间包含上下限两个值,无法塞进一维向量的单个元素中,需要提前创建10行2列的矩阵存储,每行对应一组置信区间的上下限。
  • 逻辑位置错误:样本生成、置信区间计算的代码放在了for循环外部,只会运行一次,即使循环执行10次也只能得到同一个置信区间,必须把这部分逻辑放到循环内部,每次迭代重新生成随机样本、计算新的置信区间。

基础功能实现(单组置信区间)

原始可正常运行的单组95%置信区间生成代码如下:

set.seed(10)
ransamp <- rnorm(30, 100, 5)
x.bar <- mean(ransamp)
n <- length(ransamp)
me.95 <- qt(0.05/2, df = (n-1), lower.tail = FALSE) * sd(ransamp) / sqrt(n)
ci.95 <- c(x.bar - me.95, x.bar + me.95)
ci.95

最终可行代码

你后续找到的实现方案已经修复了上述两个问题,可正常输出10组置信区间:

matrix1 <- matrix(NA, nrow = 10, ncol = 2)
set.seed(10)
loop1 <- for(i in 1:10){
  ransamp <- rnorm(30, 100, 5)
  x.bar <- mean(ransamp)
  n <- length(ransamp)
  me.95 <- qt(0.05/2, df = (n-1), lower.tail = FALSE) * sd(ransamp) / sqrt(n)
  ci.95 <- c(x.bar - me.95, x.bar + me.95)
  matrix1[i, 1] <- x.bar - me.95
  matrix1[i, 2] <- x.bar + me.95
}
matrix1

如果需要进一步简化代码,也可以直接把ci.95赋值给矩阵的整行:

matrix1[i, ] <- ci.95

效果和分别给两列赋值完全一致。


内容的提问来源于stack exchange,提问作者Scott Hebert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:57:03