前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >STATA教程之一:自动化输出回归表格 Estout

STATA教程之一:自动化输出回归表格 Estout

作者头像
宋彦
发布2019-07-03 11:32:21
12.4K0
发布2019-07-03 11:32:21
举报
文章被收录于专栏:一点ECON

前言

STATA是回归分析的最常用的工具。当我们进行了大量的回归分析之后通常需要解决三个问题。怎样才能直观的展示需要关注的系数?如何才能方便的对比不同回归中的系数?怎样才能生成论文中可以直接使用的高质量的回归表格?本教程将试图对这三个问题给出自己的理解。

本教程将使用STATA中的$Estout Package$来回答以上三个问题。$Estout$功能非常强大,其中包括了estout, esttab, estadd等命令。Estout的具体细节介绍可以参考官方介绍文档。 但是由于它的选项非常丰富,学习起来有一定的难度,因此本文旨在对$Estout$的使用方法进行总结,来达到降低使用estout制作表格的难度的目的。

Estout 介绍

我们将首先介绍如何使用$Estout$输出最基本的回归表格,接着介绍如何把描述性数字以及回归中控制的变量类型加入到表格中,最后是如何生成pdf格式的表格。

基本回归表格

使用$Estout$制作基本的表格非常简单,只需要在$regress$命令后使用esttab即可。 下面我们以STATA自带的auto数据来展示esttab的效果。

代码语言:javascript
复制
 sysuse auto,clear. sysuse auto(1978 Automobile Data). eststo: quietly regress price weight mpg(est1 stored). eststo: quietly regress price weight mpg foreign(est2 stored). esttab-------------------------------------------- (1) (2) price price--------------------------------------------weight 1.747** 3.465*** (2.72) (5.49)mpg -49.51 21.85 (-0.57) (0.29)foreign 3673.1*** (5.37)_cons 1946.1 -5853.7 (0.54) (-1.73)--------------------------------------------N 74 74--------------------------------------------t statistics in parentheses* p<0.05, ** p<0.01, *** p<0.001. eststo clear

我们仅仅用了一个命令就得到了一个简单的回归表格,而这个回归表格已经能够满足我们需要清晰的对比不同回归中的相同变量的系数的目的。Esttab之所以如此简单,强大,因为它其实是更为复杂的estout的一个wrapper,也就是说当我们使用esttab命令时,其实已经使用了STATA设计好的初始设置。例如,回归系数,标准误差的小数点默认为三位,以及表格中会加入观测值数量等。当然,这个表格还不能满足我们的所有需求。当我们希望更为丰富的表格内容时该如何做呢?

加入描述性数据,以及控制变量类型

可以加入到回归表格中的描述性数据分为两类:回归本身返回的数据,例如R Square, 总观测值等;需要另外计算加入到回归表格中的数据,例如因变量的均值等。

加入回归返回的数据

将回归本身返回的数据加入到表格的方法相对简单,只需要使用esttab中的选项stats即可。例如,当我们需要加入R Square和回归的观测值时,可以加入stats(r2 N, labels("R Square" "Num of Obs"))。其中,r2,N分别代表了要加入的数据,而labels中的内容为数据的标签。具体效果可见下图。

代码语言:javascript
复制
.esttab, stats(r2 N, labels("R Square" "Num of Obs"))-------------------------------------------- (1) (2) price price--------------------------------------------weight 1.747** 3.465*** (2.72) (5.49)mpg -49.51 21.85 (-0.57) (0.29)foreign 3673.1*** (5.37)_cons 1946.1 -5853.7 (0.54) (-1.73)--------------------------------------------R Square 0.293 0.500Num of Obs 74 74--------------------------------------------t statistics in parentheses* p<0.05, ** p<0.01, *** p<0.001
加入其他信息

如果所需要加入回归表格中的信息不是回归中返回值时,我们需要用到estout package中的estadd命令。例如,当需要加入因变量的均值时,我们可以使用以下命令

代码语言:javascript
复制
 sum price estadd r(mean)

我们也常常需要在回归表格中标注所控制的变量的类型,这一步骤也同样的可以使用estadd来实现。例如,当我们希望在上述部分回归中控制车辆是否是外国品牌时,我们可以在回归表格中加入一行来显示每个回归是否控制了该变量。

代码语言:javascript
复制
 estadd local Foreign_FE = " ", replace
代码语言:javascript
复制
 sysuse auto,clear reg price trunk headroom length weight estimates store est1 sum price estadd r(mean) estadd local Foreign_FE = " ", replace reg price trunk headroom length weight i.foreign estimates store est2 sum price estadd scalar ymean = r(mean) estadd local Foreign_FE = "X", replace. esttab, stats(Foreign_FE ymean r2 N, ///> labels("Foreign FE" "Dep Mean" "R Square" "Num of Obs"))-------------------------------------------- (1) (2) price price--------------------------------------------trunk 114.1 63.31 (1.04) (0.68)headroom -711.6 -606.2 (-1.60) (-1.62)length -101.7* -89.03* (-2.41) (-2.52)weight 4.753*** 5.780*** (4.24) (6.04)0.foreign 0 (.)1.foreign 3526.8*** (5.51)_cons 11488.5* 5340.2 (2.53) (1.35)--------------------------------------------Foreign FE XDep Mean 6165.3 6165.3R Square 0.372 0.566Num of Obs 74 74--------------------------------------------t statistics in parentheses* p<0.05, ** p<0.01, *** p<0.001

制作tex文档

上述表格都是在STATA窗口中的显示效果,并不是我们的最终目的。我们希望能够将表格制作完全自动化,从进行回归分析,到将表格加入到文章中,不需要进行任何手动的复制粘贴。将这一过程自动化的目的,是在不断修改回归的过程中,减少人为出错的概率。为了达到这个目的,我们需要使用estout 中的using .tex, 以及prehead, postfoot这几个选项。using x.tex 使得输出结果为tex格式,而prehead, postfoot分别包括了使得tex文档能够直接编译成pdf的tex代码。

代码语言:javascript
复制
 #delimit ; esttab est1 est2 using estout_eg.tex, replace style(tex) booktabs keep(trunk headroom length weight 1.foreign) stats(Foreign_FE ymean r2 N, labels("Foreign FE" "Dep Mean" "R-Squared" "N") fmt(0 3 3 0)) // content options b(3) se(3) star(* 0.1 ** 0.05 *** 0.01) // content formating options mlabels(,none) numbers // column heading options label varlabels(1.foreign "Foreign") // row head formating options prehead( // tex code needed to compile document \documentclass[leqno,11pt]{article} \usepackage{booktabs} \usepackage{tabularx} \begin{document} \begin{table}[h] \def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi} \caption{Using Estout to Output Regression Coefficients} \begin{center} \begin{tabular}{l c c} \toprule ) postfoot( // more tex code needed to compile document \end{tabular} \end{center} \end{table} \end{document} ) ; #delimit cr

执行上述Stata do file之后,我们会得到一个tex文档。编译tex文档即可得到如下图所示的表格。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一点ECON 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • Estout 介绍
      • 基本回归表格
      • 加入描述性数据,以及控制变量类型
      • 制作tex文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档