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

如何高效将map()创建的模型传入modelsummary()生成回归表

批量拟合多因变量模型并生成回归表的高效方法

你不需要提前对模型执行tidy操作,modelsummary可以直接接收原始模型对象组成的列表,只需把批量拟合的模型整理成命名列表(方便区分模型对应因变量和类型)即可快速生成回归表,以下是两种高效实现方式:

方法1:生成合并的回归表(所有模型同表展示)

保留原始模型对象,转成命名列表后直接传入modelsummary:

library(tidyverse)
library(modelsummary)

# 1. 批量拟合模型,保留模型对象
model_df <- mtcars %>% 
  pivot_longer(cols = c(mpg, hp), names_to = "因变量") %>% 
  nest(数据 = -因变量) %>% 
  mutate(
    model1 = map(数据, ~lm(value ~ disp, data = .)),
    model2 = map(数据, ~lm(value ~ disp + cyl, data = .)),
    model3 = map(数据, ~lm(value ~ disp * cyl, data = .))
  )

# 2. 整理成命名列表(名称包含因变量和模型类型)
model_list <- model_df %>%
  pivot_longer(cols = starts_with("model"), names_to = "模型类型", values_to = "模型") %>%
  mutate(模型名称 = str_c(因变量, "_", 模型类型)) %>%
  select(模型名称, 模型) %>%
  deframe() # 转换为命名列表:名称=模型名称,值=模型对象

# 3. 生成回归表
modelsummary(model_list)

生成的表会用mpg_model1、hp_model2这类名称作为列标题,清晰区分不同因变量和模型规格。

方法2:按因变量分组生成独立回归表

如果希望每个因变量对应一张回归表,可以按因变量分组处理:

# 按因变量分组生成回归表
model_df %>%
  pivot_longer(cols = starts_with("model"), names_to = "模型类型", values_to = "模型") %>%
  group_by(因变量) %>%
  summarise(
    回归表 = list(modelsummary(模型, output = "gt", title = str_c("回归结果:因变量=", 因变量)))
  ) %>%
  pull(回归表)

运行后会输出两张独立的回归表,分别对应mpg和hp作为因变量的模型结果。

关键说明

  • 避免提前对模型执行tidy:modelsummary需要原始模型对象来提取标准误、R²等完整统计量,提前tidy会丢失这些信息。
  • 命名列表的作用:给每个模型设置唯一名称,modelsummary会自动将名称作为列标题,避免混淆不同因变量的模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:25:01