如何在stargazer回归表格中展示混合效应模型的随机效应?
如何用stargazer显示混合效应模型的随机效应部分
stargazer对lme4包的混合效应模型原生不支持直接输出随机效应,但可以通过手动提取随机效应信息并添加到表格的方式实现需求,以下是具体方案:
方法1:手动提取随机效应并通过add.lines插入表格
先从拟合好的模型中提取随机效应的标准差等核心信息,再用stargazer的add.lines参数将这部分内容追加到表格末尾,实现类似sjPlot/texreg的展示效果。
完整代码示例
library(stargazer) library(lme4) mtcars$cyl <- as.factor(mtcars$cyl) # 拟合混合效应模型 model <- lmer(mpg ~ hp + (1 | cyl), data = mtcars) # 提取随机效应与残差的标准差 vc <- VarCorr(model) rand_eff_rows <- list( c("随机效应(cyl)标准差", round(attr(vc$cyl, "stddev"), 3)), c("残差标准差", round(attr(vc, "sc"), 3)) ) # 生成包含随机效应的stargazer表格 stargazer(model, type = "text", star.cutoffs = c(0.1, 0.05, 0.01, 0.001), star.char = c("+", "*", "**", "***"), notes = c("系数与95%置信区间(括号内);+ p<0.1; * p<0.05; ** p<0.01; *** p<0.001"), notes.append = FALSE, align = TRUE, ci = TRUE, add.lines = rand_eff_rows, # 插入随机效应行 keep.stat = c("n", "rsq") # 保留样本量、R²等统计量 )
方法2:结合texreg提取信息(可选)
利用texreg已支持输出随机效应的特性,先提取模型的完整结果,再整理后整合到stargazer表格中,这种方式相对繁琐,更推荐方法1。
示例代码
library(texreg) # 用texreg提取包含随机效应的模型信息 tr <- extract(model, include.random = TRUE) # 整理随机效应说明文本 rand_eff_note <- paste0("随机效应(cyl)标准差: ", round(tr@random[[1]]@stddev, 3), "\n残差标准差: ", round(tr@sigma, 3)) # 生成表格 stargazer(model, type = "text", star.cutoffs = c(0.1, 0.05, 0.01, 0.001), star.char = c("+", "*", "**", "***"), notes = c("系数与95%置信区间(括号内);+ p<0.1; * p<0.05; ** p<0.01; *** p<0.001\n", rand_eff_note), notes.append = FALSE, align = TRUE, ci = TRUE)
需要注意:stargazer本身没有专门的随机效应输出模块,所以添加的内容需要手动格式化,确保和表格整体风格一致。
内容的提问来源于stack exchange,提问作者Ttytamaki
相关产品推荐
相关产品推荐

