如何使用 R tidymodels 工作流程在没有截距的情况下拟合模型?

How to fit a model without an intercept using R tidymodels workflow?

如何使用此 tidymodels 工作流程拟合模型?

library(tidymodels)
workflow() %>% 
  add_model(linear_reg() %>% set_engine("lm")) %>% 
  add_formula(mpg ~ 0 + cyl + wt) %>% 
  fit(mtcars)
#> Error: `formula` must not contain the intercept removal term: `+ 0` or `0 +`.

您可以使用 formulaadd_model() 的参数来覆盖模型的条款。这通常用于生存模型和贝叶斯模型,所以要格外小心,知道自己在做什么,因为这样做是在绕过 tidymodels 的一些护栏:

library(tidymodels)
#> Registered S3 method overwritten by 'tune':
#>   method                   from   
#>   required_pkgs.model_spec parsnip

mod <- linear_reg()
rec <- recipe(mpg ~ cyl + wt, data = mtcars)

workflow() %>%
  add_recipe(rec) %>%
  add_model(mod, formula = mpg ~ 0 + cyl + wt) %>%
  fit(mtcars)
#> ══ Workflow [trained] ══════════════════════════════════════════════════════════
#> Preprocessor: Recipe
#> Model: linear_reg()
#> 
#> ── Preprocessor ────────────────────────────────────────────────────────────────
#> 0 Recipe Steps
#> 
#> ── Model ───────────────────────────────────────────────────────────────────────
#> 
#> Call:
#> stats::lm(formula = mpg ~ 0 + cyl + wt, data = data)
#> 
#> Coefficients:
#>   cyl     wt  
#> 2.187  1.174

reprex package (v2.0.1)

于 2021-09-01 创建