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

使用Bootstrap法估计线性回归斜率95%置信区间的R实现问题

错误原因说明

你之前计算标准误返回NA,是因为你仅用原始数据集计算了1次斜率,slope是单个数值,sd()对单个数值计算会返回NA,自然无法得到有效结果。Bootstrap方法的核心是通过多次有放回重抽样得到多个斜率估计值,再基于这组估计值计算置信区间。

完整实现代码

# 原始数据生成代码
set.seed(1)
n <- 100
x <- rnorm(n)
y <- 5 + 3*x + rnorm(n, mean = 0, sd = 0.3)
df <- data.frame(x = x, y = y)

# 初始化向量存储100次Bootstrap得到的斜率
boot_slopes <- numeric(100)

# 执行100次Bootstrap重抽样
for (i in 1:100) {
  # 有放回抽取行索引
  sample_idx <- sample(1:n, size = n, replace = TRUE)
  # 生成重抽样数据集
  boot_df <- df[sample_idx, ]
  # 拟合模型提取斜率存入向量
  boot_slopes[i] <- lm(y ~ x, data = boot_df)$coefficients[2]
}

# 方法1:分位数法计算95%置信区间(Bootstrap最常用的方法)
ci_quantile <- quantile(boot_slopes, c(0.025, 0.975))
print("分位数法95%置信区间:")
print(ci_quantile)

# 方法2:标准误法计算95%置信区间
ci_se <- mean(boot_slopes) + c(-1.96, 1.96) * sd(boot_slopes)
print("标准误法95%置信区间:")
print(ci_se)

结果说明

在你设定的set.seed(1)的前提下,运行上述代码得到的置信区间会非常接近你预期的(2.95, 3.05)。如果需要更稳定的估计结果,可以将Bootstrap抽样次数从100次调整为1000次,区间估计的精度会进一步提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:54:03