在Quarto中使用modelsummary为不同面板设置系数名与拟合优度
解决modelsummary面板表格的两个问题
问题分析
- 系数重命名失效:TSLS模型的系数仍是
qsec而非fit_qsec,原cof_map中的fit_qsec无法匹配实际系数;且全局cof_map无法区分不同面板的同名系数。 - 拟合优度统一显示:全局
gof_map会应用到所有面板,无法实现分面板控制显示内容。
修改后的代码
library(modelsummary) library(fixest) # 加载feols所属的fixest包 # 定义不同面板的拟合优度映射 gm_ols <- tibble::tribble( ~raw, ~clean, ~fmt, "nobs", "N", 0, "adj.r.squared", "Adj. $R^2$", 2 ) gm_tsls <- tibble::tribble( ~raw, ~clean, ~fmt, "nobs", "N", 0 ) # 定义面板模型 panels <- list( "OLS" = list( "(I)" = feols(mpg ~ 1 + qsec, data = mtcars), "(II)" = feols(hp ~ 1 + qsec, data = mtcars) ), "TSLS" = list( "(I)" = feols(mpg ~ 1 | qsec ~ drat, data = mtcars), "(II)" = feols(hp ~ 1 | qsec ~ drat, data = mtcars) ) ) # 分面板设置参数 modelsummary( panels, shape = "rbind", # 按面板顺序传递独立参数 panel_args = list( list(cof_map = c("qsec" = "OLS"), gof_map = gm_ols), list(cof_map = c("qsec" = "TSLS"), gof_map = gm_tsls) ) )
关键改动说明
- 分面板拟合优度控制:定义两个独立的
gof_map,通过panel_args分别传递给OLS和TSLS面板,实现第一个面板显示调整R方,第二个面板仅显示样本量。 - 分面板系数重命名:利用
panel_args给每个面板单独设置cof_map,针对各自面板的qsec系数设置不同显示名称,解决同名系数的区分问题。 - 显式依赖加载:明确加载
fixest包,避免feols函数调用的潜在异常。
内容的提问来源于stack exchange,提问作者Cola
相关产品推荐
相关产品推荐

