
今天小编在做线性回归的时候,突然想 R 能不能把结果以表格的形式输出呢?这样就不需要自己复制粘贴画表格啦。小编搜了一下果然有相关的 R 包—— stargazer ,现将自己关于该包的一些学习笔记分享给大家。
stargazer 简介stargazer 包中只有 stargazer()函数,其主要优势在于支持的模型数量多、易于使用以及表格的清楚美观。stargazer() 函数为格式良好的回归表创建 LATEX 代码、HTML 代码和 ASCII 文本,其中包括多个模型并排、汇总统计表和矩阵等。再结合 rmarkdown 、TEXworks 等,就可以一键输出非常好看的表格啦~
install.packages("stargazer") #安装包
library(stargazer) #加载包
输入上面的代码就可以直接安装和加载。
由于 stargazer() 的参数 type 中可以指定输出 LATEX 代码、HTML 代码或 ASCII 文本,可将 R 中的输出结果粘贴到对应的编辑器上得到表格(例如 LATEX 代码可以粘贴到 TEXworks 等编辑器),故本文的结果显示直接以表格形式呈现。
本文使用 R 中自带的数据集 mtcars 来简要说明 stargazer() 函数的用法。
数据集 mtcars 中有 mpg 、 cyl 等 11 个变量, 32 个观察值。
library(stargazer) #加载包
data(mtcars)
head(mtcars)#展示数据前6行
#> head(mtcars)
# mpg cyl disp hp drat wt qsec vs am gear carb
#Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
创建汇总统计表并命名为 summary statistics table。
#创建汇总统计表并命名为 `summary statistics table`
stargazer(mtcars,title = " summary statistics table")

Fig1. R 中 stargazer() 的输出结果
Fig 1 是 R 中 stargazer() 的直接输出结果,此处默认的是 LATEX 代码,接下来再将此 LATEX 代码粘贴到 TEXworks 中,就可以一键导出该表格啦。我们来看一下效果,如 Fig 2 所示。

Fig 2. 汇总统计表
构建两个线性模型和一个 probit 模型并并排显示在表格中,如 Fig 3 所示。
# creat a linear model 1
linearmodel1 <- lm(vs ~ mpg + cyl + disp + hp + drat + wt, data = mtcars)
# creat a linear model 1
linearmodel2 <- lm(vs ~ mpg + cyl + disp + hp + drat, data = mtcars)
## creat a probit model
probitmodel <- glm(vs ~ mpg + cyl + disp + hp + drat + wt,
family = binomial(link = "probit"), data = mtcars)
stargazer(linearmodel1,linearmodel2,probitmodel,title = "Comparison Results")

Fig 3. 多个模型并排
#置信区间
stargazer(linearmodel2, probitmodel, title="CI Results",
dep.var.labels=c("vs"),
covariate.labels=c("mpg","cyl",
"disp","hp","drat","wt"),
omit.stat=c("LL","ser","f"), ci=TRUE, ci.level=0.95, single.row=TRUE)
这里比较的是 linearmodel2 和 probitmodel 两个模型的置信区间结果。其中, omit.stat 参数表示不显示指定的统计量,ci 和 ci.level 表示是否显示置信区间和置信区间的水平, sing.row=TRUE 表示将系数和置信区间显示在同一行,如 Fig 4 所示。

Fig4. 置信区间
由于 rmarkdown 兼容 LATEX 格式,还可以直接输出 HTML、pdf 等格式的文档,因此 stargazer() 结合 rmarkdown 非常方便,省去了粘贴的步骤,写完代码 Knit 一键导出便可生成表格。下面是 stargazer() 结合 rmarkdown 生成汇总统计表的例子。

Fig 5. rmarkdown 代码
results='asis' 保证输出的是表格,而不是 LATEX 格式。

Fig 6. R markdown 生成表格
综上所述,stargazer() 生成表格的代码非常简单明了,输出的表格结果也十分简洁美观,并且对 LATEX 和 R 的初学者都比较友好,可适用的模型也非常多,具体可见该 R 包的帮助文档[1]。当然,除了 stargazer 以外,本公众号也介绍过 knitr 包和 pander包的相关内容:1.5w字的Rmarkdown入门教程汇总,另外还有如 formattable[2] 包、gt[3] 包和 reactable[4] 包等,感兴趣的读者可以点击链接查看学习。
[1]帮助文档: https://cran.r-project.org/web/packages/stargazer/vignettes/stargazer.pdf;https://cran.r-project.org/web/packages/stargazer/index.html
[2]formattable: https://www.rdocumentation.org/packages/formattable/versions/0.2.1
[3]gt: https://gt.rstudio.com/
[4]reactable : https://www.rdocumentation.org/packages/reactable/versions/0.2.3