如何用modelsummary在fixest回归表格中显示分组数量?
解决方案:在modelsummary中显示fixest固定效应的分组数
方法1:使用add_rows参数快速添加(内置功能)
从fixest模型对象中直接提取固定效应的分组数,整理后通过add_rows参数插入表格:
library(fixest) library(modelsummary) # 拟合模型 reg1 <- feols(Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width | Species, data = iris) # 提取固定效应分组数并整理成表格行格式 fe_groups <- sapply(reg1$fixef, nlevels) fe_rows <- data.frame( term = names(fe_groups), reg1 = paste0("分组数 = ", fe_groups), check.names = FALSE ) # 生成带分组数的表格 msummary(reg1, gof_map = c("nobs", "r.squared", "adj.r.squared"), add_rows = fe_rows)
方法2:自定义拟合优度条目(整合到GOF区域)
如果希望把分组数和其他拟合优度指标放在同一区域,可以通过custom_functions自定义提取逻辑,配合gof_map统一格式:
# 自定义提取固定效应分组数的函数 extract_fe_count <- function(model) { fe_counts <- sapply(model$fixef, nlevels) # 整理成modelsummary要求的格式:term, value, section, fmt out <- data.frame( term = paste0("固定效应:", names(fe_counts)), value = fe_counts, section = "固定效应分组数", fmt = "%.0f" ) return(out) } # 生成表格时调用自定义函数 msummary(reg1, gof_map = list( list(raw = "nobs", clean = "观测数", fmt = "%.0f"), list(raw = "r.squared", clean = "R²", fmt = "%.3f"), list(raw = "adj.r.squared", clean = "调整后R²", fmt = "%.3f") ), custom_functions = list(fixest = extract_fe_count))
对于多模型场景,这个自定义函数会自动为每个模型提取对应固定效应的分组数,无需额外修改。
内容的提问来源于stack exchange,提问作者Laurence_jj
相关产品推荐
相关产品推荐

