如何让modelsummary输出feols固定效应模型的R²指标
feols多模型R²自动纳入modelsummary输出表实现方案
modelsummary原生支持自定义拟合优度统计量批量注入,不需要手动拆分csw()生成的模型列表逐个提取R²拼接,按以下步骤操作即可:
- 第一步:按常规流程完成多模型回归
# 加载依赖包 library(fixest) library(modelsummary) # 替换为你自己的变量、数据集即可,csw()逐次累加控制变量、三类固定效应的写法保持不变 model_list <- feols(被解释变量 ~ csw(核心解释变量, 控制变量1, 控制变量2, 控制变量3) | 国家 + 年份 + 国家^年份, data = 你的数据集)
- 第二步:配置R²提取规则,两种方式选其一即可
- 全局配置(一次配置后所有后续modelsummary调用自动生效,推荐)
# 按需选择要展示的R²类型,不需要的项删掉即可 custom_gof <- list( "R²" = function(mod) r2(mod, type = "all")["r2"], "调整后R²" = function(mod) r2(mod, type = "all")["ar2"], "组内R²" = function(mod) r2(mod, type = "all")["wr2"] ) # 写入全局配置,可同时设置隐藏不需要的默认拟合优度项 config_modelsummary( gof_custom = custom_gof, gof_omit = "AIC|BIC|RMSE|Log.Lik" # 不想展示的默认项写在这里,用|分隔 )
- 单次调用配置(不想修改全局设置时使用)
直接在生成表格时传入自定义R²提取规则即可,不需要提前做全局设置。
- 第三步:生成回归结果表
# 全局配置后直接调用即可自动带上R²项 msummary(model_list, stars = c('*'=0.1, '**'=0.05, '***'=0.01), # 可自定义显著性星号规则 output = "markdown" # 导出为其他格式修改output参数即可,比如"docx"、"latex" ) # 单次调用的写法示例 msummary(model_list, gof_custom = list( "R²" = function(mod) r2(mod)["r2"], "组内R²" = function(mod) r2(mod)["wr2"] ), gof_omit = "AIC|BIC|RMSE", stars = c('*'=0.1, '**'=0.05, '***'=0.01) )
注意:该方法对csw()、sw()、sw0()等fixest批量语法生成的多模型对象完全适配,会自动遍历每个模型提取对应R²,结果和单独对单个feols模型调用r2()完全一致,不会出现匹配错误。
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

