如何在stargazer多模型表格中同时添加因变量标签与列标签
问题
需要在stargazer生成的多模型表格中同时实现以下需求:
- 所有模型因变量相同,但需手动指定分组的因变量标签(区分不同模型组的核心变量差异)
- 保留列标签设置(标记每组内的模型是否包含平方项)
- 通过
column.separate = c(2, 2)将4列模型按2列一组拆分
解决方法
stargazer默认在所有模型因变量相同时只会显示一次因变量标签,且无法直接同时渲染分组的因变量标签和列标签。因此需要通过自定义LaTeX表头的方式实现,核心思路是关闭默认表头,手动添加包含跨列因变量标签和列标签的表头行。
修改后的代码
library(stargazer) # 示例模型 model1 <- lm(mpg ~ cyl + hp, data = mtcars) model2 <- lm(mpg ~ cyl + hp + hp^2, data = mtcars) model3 <- lm(mpg ~ cyl + wt, data = mtcars) model4 <- lm(mpg ~ cyl + wt + wt^2, data = mtcars) stargazer(list(model1, model2, model3, model4), type = "latex", title = "Test on dep.var. labels", header = FALSE, # 关闭默认表头,手动自定义 column.separate = c(2, 2), column.sep.width = "0.25pt", table.layout = "=d-c-#-t-sa=n", # 添加自定义表头行:第一行是跨列的因变量标签,第二行是列标签 add.lines = list( c("", "\\multicolumn{2}{c}{hp}", "\\multicolumn{2}{c}{wt}"), c("", "no sq.", "sq", "no sq.", "sq"), c("Additional stats to be reported", NA, NA, NA, NA) ))
关键修改说明
- 关闭默认表头:设置
header = FALSE,避免stargazer自动生成的表头覆盖自定义内容 - 自定义表头行:
- 第一行用
\multicolumn{2}{c}{hp}和\multicolumn{2}{c}{wt}实现跨列的因变量分组标签,满足区分模型组的需求 - 第二行直接添加列标签
no sq.和sq,对应原列标签设置的需求
- 第一行用
- 保留列分组:
column.separate = c(2,2)维持两组模型列之间的间距,保证表格结构清晰
内容的提问来源于stack exchange,提问作者Beni
相关产品推荐
相关产品推荐

