R语言select()剔除case变量后线性回归输出仍包含该变量问题求助
问题原因
- 你在
fit()步骤传入的babies %>% select(-case)仅用于模型训练,这一步确实剔除了case变量,该变量不会参与回归计算 - 最后一步
augment(babies)中你传入的是完整的原始babies数据集,broom::augment()的逻辑是保留传入的新数据集的所有原始列,再追加拟合值、残差等模型输出列,所以case会被保留下来,属于该函数的固有特性,不是代码逻辑错误。
解决方案
如果需要输出结果剔除case变量,有两种常用写法:
- 给augment传入已经剔除case的数据集:
linear_reg() %>% set_engine("lm") %>% fit(formula = bwt ~ ., data = babies %>% select(-case)) %>% pluck("fit") %>% augment(babies %>% select(-case))
- 先得到完整输出后再剔除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
相关产品推荐
相关产品推荐

