stargazer包——线性回归结果输出到文档中

2021-12-15 14:20:59 浏览数 (1)

前言

今天小编在做线性回归的时候,突然想 R 能不能把结果以表格的形式输出呢?这样就不需要自己复制粘贴画表格啦。小编搜了一下果然有相关的 R 包—— stargazer ,现将自己关于该包的一些学习笔记分享给大家。

1. stargazer 简介

stargazer 包中只有 stargazer()函数,其主要优势在于支持的模型数量多、易于使用以及表格的清楚美观。stargazer() 函数为格式良好的回归表创建 LATEX 代码、HTML 代码和 ASCII 文本,其中包括多个模型并排、汇总统计表和矩阵等。再结合 rmarkdownTEXworks 等,就可以一键输出非常好看的表格啦~

2. 安装及本文说明

2.1 安装

代码语言:javascript复制
install.packages("stargazer") #安装包
library(stargazer) #加载包

输入上面的代码就可以直接安装和加载。

2.2 本文说明

由于 stargazer() 的参数 type 中可以指定输出 LATEX 代码、HTML 代码或 ASCII 文本,可将 R 中的输出结果粘贴到对应的编辑器上得到表格(例如 LATEX 代码可以粘贴到 TEXworks 等编辑器),故本文的结果显示直接以表格形式呈现。

本文使用 R 中自带的数据集 mtcars 来简要说明 stargazer() 函数的用法。

3. 使用方法

数据集 mtcars 中有 mpgcyl 等 11 个变量, 32 个观察值。

代码语言:javascript复制
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

3.1 创建汇总统计表

  • 例 1

创建汇总统计表并命名为 summary statistics table

代码语言:javascript复制
#创建汇总统计表并命名为 `summary statistics table`
stargazer(mtcars,title = " summary statistics table")

Fig1. R 中 stargazer() 的输出结果

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

Fig 2. 汇总统计表

3.2 多个模型并排

  • 例 2

构建两个线性模型和一个 probit 模型并并排显示在表格中,如 Fig 3 所示。

代码语言:javascript复制
# 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. 多个模型并排

3.3 置信区间

  • 例 3
代码语言:javascript复制
#置信区间
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)

这里比较的是 linearmodel2probitmodel 两个模型的置信区间结果。其中, omit.stat 参数表示不显示指定的统计量,cici.level 表示是否显示置信区间和置信区间的水平, sing.row=TRUE 表示将系数和置信区间显示在同一行,如 Fig 4 所示。

Fig4. 置信区间

4. 结合 rmarkdown

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

  • 例 4

Fig 5. rmarkdown 代码

results='asis' 保证输出的是表格,而不是 LATEX 格式。

Fig 6. R markdown 生成表格

小编有话说

综上所述,stargazer() 生成表格的代码非常简单明了,输出的表格结果也十分简洁美观,并且对 LATEXR 的初学者都比较友好,可适用的模型也非常多,具体可见该 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

0 人点赞