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

使用car::Boot bootstrap逻辑回归模型时出现'low'变量未找到错误

问题原因与解决方案

你遇到的object 'low' not found错误,是因为car::Boot函数在重抽样时,无法正确从模型的调用环境中定位到变量。这通常和你用~ .简化公式的写法有关,Boot函数解析这种简化公式时容易出现环境匹配问题。

解决办法(任选其一即可)

办法1:明确写出模型公式的所有自变量

把原来用.的公式改成具体变量名,避免简化写法:

data(birthwt, package = "MASS")
data <- as.data.frame(birthwt)
data$low <- as.factor(data$low)

# 明确列出所有自变量,替代~ . - bwt - age - ftv
pmod <- glm(low ~ lwt + race + smoke + ptl + ht + ui, data = data, family = binomial)
boot_results <- car::Boot(pmod, R = 100)

办法2:调用Boot时明确指定data参数

在car::Boot中直接传入你的数据框,帮它明确数据来源:

data(birthwt, package = "MASS")
data <- as.data.frame(birthwt)
data$low <- as.factor(data$low)

pmod <- glm(low ~ . - bwt - age - ftv, data = data, family = binomial)
boot_results <- car::Boot(pmod, R = 100, data = data)

办法3:改用boot包实现bootstrap

如果上述方法仍有问题,可以用boot包的核心函数来实现,逻辑更直观:

library(boot)
data(birthwt, package = "MASS")
data <- as.data.frame(birthwt)
data$low <- as.factor(data$low)

# 定义bootstrap要提取的统计量(这里是模型系数)
boot_fun <- function(data, indices) {
  d <- data[indices, ]
  fit <- glm(low ~ . - bwt - age - ftv, data = d, family = binomial)
  return(coef(fit))
}

# 运行bootstrap
boot_results <- boot(data = data, statistic = boot_fun, R = 100)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:22:09