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

R语言select()剔除case变量后线性回归输出仍包含该变量问题求助

问题原因

  • 你在fit()步骤传入的babies %>% select(-case)仅用于模型训练,这一步确实剔除了case变量,该变量不会参与回归计算
  • 最后一步augment(babies)中你传入的是完整的原始babies数据集,broom::augment()的逻辑是保留传入的新数据集的所有原始列,再追加拟合值、残差等模型输出列,所以case会被保留下来,属于该函数的固有特性,不是代码逻辑错误。

解决方案

如果需要输出结果剔除case变量,有两种常用写法:

  1. 给augment传入已经剔除case的数据集:
linear_reg() %>%
  set_engine("lm") %>%
  fit(formula = bwt ~ ., data = babies %>% select(-case)) %>%
  pluck("fit") %>%
  augment(babies %>% select(-case))
  1. 先得到完整输出后再剔除case列:
# 先保存模型拟合结果
fit_res <- linear_reg() %>%
  set_engine("lm") %>%
  fit(formula = bwt ~ ., data = babies %>% select(-case)) %>%
  pluck("fit")

# 输出时剔除case列
augment(fit_res, babies) %>% select(-case)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 07:06:05