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

R语言中基于泰坦尼克数据集的逻辑回归Bootstrap绘图报错排查求助

问题根源与解决方法

你遇到的问题核心是bootstrap函数没有真正使用抽样后的数据集,导致每次拟合模型都用的是原始数据,所以所有bootstrap重复计算的系数完全一致,自然偏差和标准误为0,绘图时也会提示所有t*值相同。

具体错误点

看你的logit_test函数:

logit_test <- function(data, indices) {
 dt <- data[indices,]  # 这里已经抽取了bootstrap样本
 fit <- glm(Clean_data$Survived ~ Fare, data = Clean_data, family = "binomial")  # 但这里还是用原始的Clean_data!
 return(coef(fit))
}

你虽然创建了抽样后的子集dt,但拟合glm时完全没用到它,而是硬编码了原始数据集Clean_data,这就导致每次bootstrap迭代都在同一个数据集上拟合模型,系数结果完全一样,bootstrap的抽样就失去了意义。

修正后的代码

把glm的数据集换成抽样后的dt,并且不要硬编码原始数据的列:

library(boot)
set.seed(50000)

logit_test <- function(data, indices) {
  dt <- data[indices,]  # 抽取当前bootstrap样本
  # 用dt拟合模型,而不是原始的Clean_data
  fit <- glm(Survived ~ Fare, data = dt, family = "binomial")
  return(coef(fit))
}

# 运行bootstrap
boot_strap <- boot(
  data = Clean_data,
  statistic = logit_test,
  R = 1000  # 建议增加重复次数,100次可能不够稳定
)

# 计算95%置信区间
boot.ci(boot.out = boot_strap, type = c("basic"))

# 查看结果和绘图
boot_strap
plot(boot_strap, index=2)

额外建议

  • 增加R的数值:100次bootstrap重复可能不足以得到稳定的置信区间,建议设置为1000甚至5000(根据你的计算资源调整)。
  • 检查数据完整性:确保Clean_data中没有缺失值,可以用na.omit(Clean_data)预处理,避免拟合模型时出错。
  • 尝试多种置信区间类型:除了basic,还可以试试normal、percentile类型,对比结果是否一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:57:44