如何在modelsummary中显示固定效应估计数量而非仅标记存在?
要让modelsummary生成的表格显示固定效应的估计数量而非仅标记"X",可以用fixest的nfixef()函数提取数量,再通过modelsummary的自定义功能添加到表格里,具体有两种实用方法:
方法一:用add_rows手动添加固定效应数量行
library(fixest) library(modelsummary) # 拟合模型 mod1 <- feols(mpg ~ hp | cyl, data = mtcars) mod2 <- feols(mpg ~ wt | cyl, data = mtcars) mod3 <- feols(mpg ~ drat | cyl, data = mtcars) # 提取每个模型中cyl固定效应的估计数量 fe_cyl_counts <- sapply(list(mod1, mod2, mod3), function(m) nfixef(m)[["cyl"]]) # 构造要添加的行数据 fe_row <- data.frame( term = "FE: cyl (估计数量)", mod1 = fe_cyl_counts[1], mod2 = fe_cyl_counts[2], mod3 = fe_cyl_counts[3], check.names = FALSE ) # 生成表格:添加自定义行,同时隐藏默认的FE标记行 modelsummary( list(mod1, mod2, mod3), output = "markdown", add_rows = fe_row, gof_omit = "FE:" )
方法二:用custom_gof自定义统计量
这种方法更灵活,适合需要添加多个固定效应统计量的场景:
library(fixest) library(modelsummary) mod1 <- feols(mpg ~ hp | cyl, data = mtcars) mod2 <- feols(mpg ~ wt | cyl, data = mtcars) mod3 <- feols(mpg ~ drat | cyl, data = mtcars) # 定义提取cyl固定效应数量的函数 get_cyl_fe_count <- function(model) { if ("cyl" %in% names(nfixef(model))) { return(nfixef(model)[["cyl"]]) } else { return(NA) } } # 生成表格时添加自定义统计量,移除默认FE标记行 modelsummary( list(mod1, mod2, mod3), output = "markdown", custom_gof = list( "FE: cyl (估计数量)" = get_cyl_fe_count ), gof_omit = "FE:" )
说明
nfixef()是fixest包自带的函数,专门返回每个固定效应维度的估计数量,比如这里cyl有3个不同取值,所以返回3。gof_omit = "FE:"用来隐藏modelsummary默认生成的仅标记"X"的固定效应行,避免重复。
内容的提问来源于stack exchange,提问作者RoyalTS
相关产品推荐
相关产品推荐

