当我从 R caret 转换为 tidymodels 时如何获得 beta 估计

how to get beta estimates when I convert from R caret to tidymodels

我没有看到使用 tidymodels 生态系统从交叉验证模型中获取参数估计的简单方法。我该怎么做?

有了插入符号,我可以做一个交叉验证模型并得到这样的参数估计值:

library(caret)
library(tidyverse)
library(tidymodels)
data(ames)

set.seed(123)
mod_wo_Garage_Cars <- train(
  Sale_Price ~ .,
  data = select(ames, -Garage_Cars),
  method="lm",
  trControl=trainControl(method= "cv", number = 10)
)

summary(mod_wo_Garage_Cars) %>% 
  broom::tidy() %>% 
  filter(term == "Garage_Area")

我有一个我认为可以进行相同建模的工作流程(在 train()vfold_cv() 重采样方面存在差异):

library(tidyverse)
library(tidymodels)
data(ames)

set.seed(123)
folds <- vfold_cv(ames, v = 10)

the_rec <- 
  recipe(Sale_Price ~ ., data = ames) %>% 
  step_rm(Garage_Cars)

the_lm_model <- 
  linear_reg() %>% 
  set_engine("lm")

the_workflow <- 
  workflow() %>% 
  add_recipe(the_rec) %>% 
  add_model(the_lm_model) 

mod_wo_Garage_Cars <- 
  fit_resamples(the_workflow, folds) 

我可以看到如何使用 show_best(mod_wo_Garage_Cars, metric = "rmse") 获得 RMSE。我如何从这个工作流中获得关于 beta 的整体模型估计值?

你需要从你的拟合模型中提取系数,然后整理它。

best_rmse <- the_workflow %>% 
  fit_resamples(folds) %>% 
  select_best('rmse')

the_workflow %>% 
  finalize_workflow(best_rmse) %>% 
  fit(ames) %>% 
  pull_workflow_fit() %>% 
  tidy()