如何用R的performance包check_model每行展示6个LM模型诊断图?
实现performance包check_model多模型诊断图的指定布局
先修正原模型拟合代码的错误
你提供的代码存在两处语法问题:head("mtcars")应传入数据框对象而非字符串;map调用时缺少波浪线和闭合括号,修正后的代码如下:
library(tidyverse) library(performance) library(see) library(patchwork) data("mtcars") head(mtcars) table(mtcars$cyl, useNA = "ifany") # 修正后的模型拟合代码 foo <- mtcars %>% group_by(cyl) %>% nest() %>% mutate(model = map(data, ~lm(mpg ~ hp + wt, data = .x))) %>% ungroup() # 取消分组避免后续操作警告 # 保存模型汇总列表 model_summaries <- map(foo$model, summary)
实现每个模型6个诊断图一行的布局
利用patchwork包可轻松将多个check_model生成的图按指定行/列拼接,具体步骤:
- 为每个模型生成诊断图,设置
ncol=6让单模型的6个诊断图排成一行,并添加对应cyl的标题 - 将三个模型的诊断图拼接成3行布局
完整代码:
# 生成每个模型的诊断图(带标题) model_plots <- map2(foo$cyl, foo$model, function(cyl_val, mod) { plot(check_model(mod), ncol = 6) + plot_annotation(title = paste("Cylinder", cyl_val)) }) # 拼接成3行布局 combined_plot <- wrap_plots(model_plots, nrow = 3) # 查看最终布局 combined_plot
关键说明
check_model生成的图依赖see包,必须提前加载plot(check_model(mod), ncol=6)强制单模型的6个诊断图横向排列patchwork的wrap_plots可灵活控制整体布局的行数/列数model_summaries就是你需要存储模型汇总结果的列表对象,可通过model_summaries[[1]]查看第一个模型的汇总
内容的提问来源于stack exchange,提问作者bison2178
相关产品推荐
相关产品推荐

