Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关
遗漏变量偏误检验
stata命令之esttab
type
Post
status
Published
date
Nov 14, 2025
slug
summary
tags
category
Stata应用技巧
icon
password
网址
作者
标签
文章链接
发布时间
来源
在Stata中,
esttab是最好用的输出回归结果的命令之一,是estout的简化版本,因此需要先安装外部命令:随后,在Stata中输入
help esttab,即可看到语法公式:esttab [ namelist ] [ using filename ] [ , options ]其中,括号内都是可选项,即对哪些模型制表(namelist),把表以什么名字保存在哪里(using filename),对制出来的表格(形式和内容)有什么额外要求(options)
以系统自带的auto.dta数据集为例,如果只使用最简单的esttab命令:
结果输出如下:
由上述表格可以看出:
- 缺少表名
- 表头“(1)”代表模型序号,price代表模型名字,因为没有对模型命名,所以默认被解释变量price作为名字。因为没有指定哪一个模型,所以默认对最近的一次回归进行制表。
- 表格内容由点估计系数和t统计量组成,两者在同一列。其中点估计系数上会有星号指示显著水平;t统计量包含在括号里
- 默认输出汇总统计N,代表进入回归的样本观察数
- “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数据举例。
- 首先,将样本分为国内制造和国外制造两组进行回归。代码如下:
- 然后,基于似无相关检验(suest)对两个模型的系数进行检验,代码如下:
- 再把
coef_diff和p_diff挂到某一个模型上(这里挂到 m2),代码如下:
- 最后,用
esttab输出,同时显示N r2 coef_diff p_diff,代码如下:
参考资料
- esttab功能挖掘:“Yes”or“No” - [Link] -
- 合并输出回归结果和其他检验结果——esttab和estadd - [Link] -
上一篇
如何完整下载国自然结题报告?
下一篇
队列DID
Loading...