stata命令之esttab

type
status
date
slug
summary
tags
category
icon
password
网址
作者
标签
文章链接
发布时间
来源
在Stata中,esttab是最好用的输出回归结果的命令之一,是estout的简化版本,因此需要先安装外部命令:
随后,在Stata中输入help esttab,即可看到语法公式:
esttab [ namelist ] [ using filename ] [ , options ]
其中,括号内都是可选项,即对哪些模型制表(namelist),把表以什么名字保存在哪里(using filename),对制出来的表格(形式和内容)有什么额外要求(options)
以系统自带的auto.dta数据集为例,如果只使用最简单的esttab命令:
结果输出如下:
由上述表格可以看出:
  1. 缺少表名
  1. 表头“(1)”代表模型序号,price代表模型名字,因为没有对模型命名,所以默认被解释变量price作为名字。因为没有指定哪一个模型,所以默认对最近的一次回归进行制表。
  1. 表格内容由点估计系数和t统计量组成,两者在同一列。其中点估计系数上会有星号指示显著水平;t统计量包含在括号里
  1. 默认输出汇总统计N,代表进入回归的样本观察数
  1. “t statistics in parentheses, * p<0.05, ** p<0.01, *** p<0.001”是模型的注脚
针对这些问题,我们接下来介绍一些有用的可选项。

回归模型选择

namelist很简单,就是指定对哪个模型制表。如果省略,就默认最近的那个回归模型。支持使用*通配符。比如 esttab m1就是对m1回归模型制表,而esttab * 就是对所有的回归模型制表。再比如,esttab M*是对所有前缀有M的回归模型制表(M1 M2 M3等)。

输出参数调整

  • esttab默认输出的是点估计系数和t统计量,但是可以在options里指定我们想要的统计量。比如,如果想输出标准误,那么可以写成 esttab *, b se(对于z统计量,也是相似的写法)。
    • 输出结果如下:
      注意:上述表格中,标准误的小数位并不统一,我们可以加上se(3)来统一小数位的保留。
      另外,如果不想使用圆括号,也可以使用brackets选项将其改为中括号。例如,esttab *, b se(3) brackets的输出是:
  • 如果我们想同时显示系数与p值,可以写成 esttab *, b p(3) ,对应的输出是:
    • 如果觉得表格下面的默认注脚不够,那么可以使用addnotes("")选项。例如,为了指示数据来源,可以写成esttab *, b t(3) addnotes("source: auto") ,输出结果如下:
      • 注意:如果想取消注脚的输出,直接使用nonotes 选项即可。
    • 如果只想显示回归系数,不想显示任何统计量,可以使用not选项。例如,esttab *, b not的输出是:
      • 如果想显示标准化系数,就使用beta取代b,例如esttab *, beta的输出是:
        • 注意:标准化系数是对变量标准化后计算出来的系数。因为在我们回归的时候,不同的变量有不同的量级,比如有的是数量有的是百分比。所以为了使回归系数有更好的可比性,将变量标准化(减去平均值再除以标准差)后计算出来的系数就是标准化贝塔系数。
      • 如果想去掉常数项的输出,加上noconstant 即可
      • 如果想去掉系数右上角的星号,可以加上nostar
        • 注意:默认情况下,p值小于10%是一颗星,小于5%是两颗星,小于1%是三颗星。如果想自定义星号与显著性的对应关系,可以加上star()选项,例如:star(* 0.05 ** 0.01 *** 0.001)意味着p值只有小于0.1%才显示三颗星
      • 如果想输出置信区间,可以加上ci,可以level指定百分区间,默认是level(95)。例如esttab *, b ci(2) level(99)的输出是:
        • 如果想增加表名的输出,可以指定title()。比如esttab *, b title(Regression results) 的输出是:
          • 如果不想在回归结果中显示某个变量,使用drop()选项即可。例如esttab *, b drop(foreign) 就是丢掉变量foreign的回归系数:
            • 为了避免表格输出时变量名缺省,可以使用varwidth()选项,例如esttab *, b varwidth(20)设定输出变量名长度为20:
              • 如果想对模型赋名,可以指定mtitle(),例如esttab *, b mtitle("Model 1" "Model 2") 的输出是:
                • 如果不想输出模型序号,只想输出模型名字,可以加上nonumbers。例如esttab *, b mtitle("Model 1" "Model 2") nonumbers 的输出是:
                  • 如果我们想增加变量标签的输出,可以加上label 选项。例如esttab *, b mtitle("Model 1" "Model 2") label的输出是:
                    • esttab会默认输出N,即样本数量,此外还可以添加下表显示的其他统计量:
                      • 统计量
                        含义
                        r2()
                        R方
                        ar2()
                        调整后R方
                        pr2()
                        伪R方
                        aic()
                        赤池信息准则
                        bic()
                        贝叶斯信息准则
                        scalars()
                        存储的标量,比如scalars(df_m)
                        noobs
                        取消样本数的输出
                        obslast
                        样本数显示在最后一行
                        例如,我们想同时显示调整后R方,可以写成esttab *, b ar2,对应的输出是:
                        注意:Stata中有两类命令,一类是r-命令,一类是e-命令,也就是估计命令。对应的运行结果分别储存在”r()” 和 “e()”中。我们可以通过ereturn list来查看”e()“里面包含的内容:
                        可以看到有scalars(标量)类,macros(宏)类,matrices(矩阵)类和function(函数)
                    • 如果想缩小表格中模型之间的输出间距,可以使用compress;反之,则使用gap选项
                    • 如果想把回归系数和统计量放在不同列,可以使用wide选项,例如esttab *, b t(3) wide
                      • 的输出是:
                        也可以用onecell把回归系数与统计量放在同一单元格内,例如esttab *, b t(3) onecell 的输出是:

                    保存文件格式

                    using file 选项可以让我们把结果保存为文件,其中文件类型可以是doc, csv, rtf, html, tex, booktabs等,推荐选择rtf。例如:esttab mod* using "回归表格.rtf", replace,其中replace是对原有文件的覆写。

                    固定效应回归的结果输出

                    以企业和时间双向固定效应为例,在每个回归模型后面增加estadd local Firm_FE "Included"estadd local Year_FE "Included"。然后在结果保存时候使用stats选项。
                    下面举一个例子:
                    输出结果为:

                    合并霍斯曼检验结果

                    在处理面板数据时,我们可以使用豪斯曼检验来确定应该使用固定效应还是随机效应模型。下面介绍如何把检验结果和回归结果放一起导出:
                    利用estadd命令将检验结果的p值添加到储存结果中,即estadd scalar Hausman_Test = r(p), replace ,输出如下:
                     
                    接下来,我们利用esttab命令中的scalars选项,导出我们所添加的标量,即esttab fe re,scalars(N Hausman_Test) nonum mtitle(FE RE) b(%12.3f),输出如下:
                    最后,正常使用esttab导出即可

                    合并分组回归检验结果

                    如果需要检验分组回归某一系数的差异,并将检验的结果和回归结果一并输出,我们仍然可以使用estadd命令,下面基于auto.dta数据举例。
                    1. 首先,将样本分为国内制造和国外制造两组进行回归。代码如下:
                      1. 输出结果如下:
                    1. 然后,基于似无相关检验(suest)对两个模型的系数进行检验,代码如下:
                      1. 输出结果如下:
                    1. 再把 coef_diffp_diff 挂到某一个模型上(这里挂到 m2),代码如下:
                      1. 输出结果如下:
                    1. 最后,用 esttab 输出,同时显示 N r2 coef_diff p_diff,代码如下:
                      1. 输出结果如下:

                    参考资料

                    • esttab功能挖掘:“Yes”or“No” - [Link] -
                    • 合并输出回归结果和其他检验结果——esttab和estadd - [Link] -
                     
                    Prev
                    如何完整下载国自然结题报告?
                    Next
                    队列DID
                    Loading...
                    Article List
                    Practice makes perfect
                    文献集锦
                    如何理论创新?
                    管理学理论集锦
                    Python实际应用
                    聚类标准误与固定效应
                    巫师3:狂猎
                    Stata应用技巧
                    Python知识与技巧
                    双重差分法(DID)
                    创新文献阅读与摘要
                    计量经济学
                    Python绘图相关