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

在tidymodels中如何执行F检验比较两个拟合的线性回归模型?

方法1:直接提取底层模型对象传入anova()

你只需要用tidymodels自带的extract_fit_engine()函数,从拟合完成的workflow对象中提取出底层的lm模型对象,就可以直接传入anova()做F检验,和base R的效果完全一致:

# 提取底层lm模型做F检验
anova(
  extract_fit_engine(the_workflow_fit1a),
  extract_fit_engine(the_workflow_fit1)
)

方法2:tidymodels生态的更优雅实现(多模型比较场景)

如果你需要批量比较多个嵌套模型,推荐用workflowsets包统一管理不同配方/模型的工作流,不需要手动逐个更新拟合:

library(workflowsets)

# 先定义两个不同的配方
rec_full <- recipe(medv ~ ., data = Boston)
rec_no_age_black <- rec_full %>% step_rm(age, black)

# 构建工作流集,把要比较的配方都放进去
wflow_set <- workflow_set(
  preproc = list(full = rec_full, drop_age_black = rec_no_age_black),
  models = list(lm = lm_spec)
)

# 批量拟合所有工作流
wflow_set_fit <- wflow_set %>% 
  workflow_map("fit", data = Boston)

# 提取所有模型的底层lm对象,做方差分析
wflow_set_fit %>% 
  pull(result) %>% 
  map(extract_fit_engine) %>% 
  do.call(anova, .)

这种方式在需要比较3个及以上模型的时候,代码会更简洁易维护,也方便后续统一提取其他模型统计量做分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:57:02