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

如何使用R tidymodels workflow拟合无截距项的模型?

tidymodels拟合无截距项模型的正确实现方法

tidymodels的add_formula()方法默认不支持在公式内直接添加+0/0+/-1这类移除截距的语法,属于框架的预设规则,需要通过框架提供的专用参数或预处理步骤实现,以下是两种常用的可行方案:

方案1:通过模型接口的intercept参数直接设置(最简便)

parsnip包封装的回归模型统一提供了intercept参数,直接设置为FALSE即可移除截距,无需修改公式:

library(tidymodels)
workflow() %>% 
  add_model(linear_reg(intercept = FALSE) %>% set_engine("lm")) %>% 
  add_formula(mpg ~ cyl + wt) %>% 
  fit(mtcars)

方案2:通过recipe预处理步骤移除截距

如果需要在数据预处理流程中统一控制截距项,可以用step_intercept()指定移除:

library(tidymodels)
# 构建预处理配方
no_intercept_rec <- recipe(mpg ~ cyl + wt, data = mtcars) %>% 
  step_intercept(remove = TRUE)

# 拟合模型
workflow() %>% 
  add_model(linear_reg() %>% set_engine("lm")) %>% 
  add_recipe(no_intercept_rec) %>% 
  fit(mtcars)

两种方案输出的系数结果和直接运行lm(mpg ~ 0 + cyl + wt, data = mtcars)的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:33:02