如何在R中合并循环生成的回归模型至modelsummary面板
问题
我有基于不同因变量的OLS和IV(ivreg)回归模型,目前通过循环更换因变量运行模型,并用modelsummary将每个因变量的结果保存为独立的.html文件。现在需要将这些结果合并,生成带有不同面板(按因变量分组)的汇总表,每个面板内展示对应因变量的OLS和IV模型结果。
原代码示例:
library(modelsummary) library(ivreg) data(mtcars) models <- c("mpg", "disp", "hp") for(i in models){ formula1 <- paste(i, "~ cyl + qsec + carb + drat") formula2 <- paste(i, "~ cyl + qsec + carb | drat | wt") # 线性回归模型 ols <- lm(formula = formula1, data = mtcars) # 工具变量回归 iv <- ivreg(formula = formula2, data = mtcars) modelsummary(list("OLS" = ols, "IV" = iv), output = paste0("Outcome_", i, ".html")) }
解决方案
无需单独输出每个文件,只需将所有模型按因变量分组存储,再利用modelsummary的多面板功能生成合并后的汇总表,以下是两种常用实现方式:
方法1:嵌套列表 + 分组参数
将模型按因变量存入嵌套列表,通过group参数指定面板分组逻辑:
library(modelsummary) library(ivreg) data(mtcars) models_outcome <- c("mpg", "disp", "hp") # 嵌套列表存储模型:外层键为因变量,内层为对应OLS/IV模型 all_models <- list() for(i in models_outcome){ formula1 <- paste(i, "~ cyl + qsec + carb + drat") formula2 <- paste(i, "~ cyl + qsec + carb | drat | wt") ols <- lm(formula = formula1, data = mtcars) iv <- ivreg(formula = formula2, data = mtcars) all_models[[i]] <- list("OLS" = ols, "IV" = iv) } # 生成合并面板汇总表 modelsummary(all_models, output = "Combined_Outcomes.html", # 指定分组:每个因变量对应2个模型(OLS/IV) group = list("mpg" = 1:2, "disp" = 3:4, "hp" = 5:6), group_names = models_outcome, # 显示标准误和显著性星号 statistic = "({std.error}){stars}", stars = c('*' = 0.1, '**' = 0.05, '***' = 0.01))
方法2:面板列表参数(更直观)
直接构建面板列表,每个面板包含自定义标题和对应模型,灵活控制面板内容:
library(modelsummary) library(ivreg) data(mtcars) models_outcome <- c("mpg", "disp", "hp") # 构建面板列表:每个元素对应一个因变量的面板 panels <- lapply(models_outcome, function(i) { formula1 <- paste(i, "~ cyl + qsec + carb + drat") formula2 <- paste(i, "~ cyl + qsec + carb | drat | wt") ols <- lm(formula1, data = mtcars) iv <- ivreg(formula2, data = mtcars) list(title = paste("因变量:", i), models = list("OLS" = ols, "IV" = iv)) }) # 生成多面板汇总表 modelsummary(panels, output = "Combined_Outcomes.html", statistic = "({std.error}){stars}", stars = TRUE)
两种方法都会生成一个包含多面板的.html文件,每个面板对应一个因变量,面板内并列展示OLS和IV的回归结果,符合预期的嵌套结构样式。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

