在实证研究中,回归结果输出的标准化是十分重要的。一个完美的输出程序,能为你省下很多不必要的手工调整的麻烦。在原公众号中,我们推送过一篇关于esttab输出回归结果的命令,今天我们再来补充一下esttab、estout系列命令的其他用法:如何在回归结果表格输出时加入一行,备注是否控制时间固定效应、行业固定效应或者个体效应等。
首先我们调用一个网络面板数据(nlswork),并进行三个回归
clear
set more off
webuse nlswork,clear
xtset idcode year //设置面板标识
tab year,gen(yd) //生成年份虚拟变量
*回归1:未控制年份的OLS,对标准误进行聚类修正
reg ln_w age ttl_exp tenure not_smsa south, vce(cluster idcode)
est store m1
*回归2:控制年份的OLS,对标准误进行聚类修正
reg ln_w age ttl_exp tenure not_smsa south yd*, vce(cluster idcode)
est store m2
*回归3:控制年份的面板固定效应模型,对标准误进行聚类修正
xtreg ln_w age ttl_exp tenure not_smsa south yd*, fe vce(cluster idcode)
est store m3
esttab m1 m2 m3, star(* 0.1 ** 0.05 *** 0.01) b(%6.3f) t(%6.3f) compress nogap ///
drop(yd*) stats(N r2_a, fmt(%12.0f %9.3f)) varwidth(20) ///
title("Table1 Wage") mtitle("OLS" "OLS" "FE")
注1:star选项可以对显著性进行调整,此处*表示10%,**表示5%,***表示1%。
注2:b(),t()选项分别为调整输出系数和t值的格式,%6.3f表示,长度为6,小数3位。
注3:compress和nogap选项可以压缩行距和列距。
注4:由于year是控制变量,我们也不想观察其系数,故在输出时使用drop()选项删除。
注5:stats()选项可以在输出结果中增加行注释或者回归存储值;这里我们输出了观测值个数N和调整后的R²,并为其设置显示格式。
注6:为了避免输出时变量名缺省,我们使用varwidth()选项,设定输出变量名长度为20。
注7:title()和mtitle()选项可以设置表格标题以及模型的标题。
输出结果如下:
输出的表格很精美,然而仍有不足:1)没有显示是否控制年份;2)没有显示cluster;3)没有显示是否控制个体效应(Fixed Effect)。
对于第一个问题,我们可以选择使用indicate()选项来解决,命令和输出结果如下:
esttab m1 m2 m3, star(* 0.1 ** 0.05 *** 0.01) b(%6.3f) t(%6.3f) compress nogap ///
stats(N r2_a, fmt(%12.0f %9.3f)) varwidth(20) indicate("Year FE=yd*") ///
title("Table1 Wage") mtitle("OLS" "OLS" "FE")
对于第2和第3个问题,我们可以结合estadd命令来解决。其实esttab和estout是一个很强大的结果输出命令系列,其选项是通用的,如果能够灵活的搭配使用则会事半功倍。使用estadd对以上程序进行修改,具体细节请help estadd,修改后的程序如下:
clear
set more off
webuse nlswork,clear
xtset idcode year
tab year,gen(yd)
reg ln_w age ttl_exp tenure not_smsa south, vce(cluster idcode)
estadd local Cluster "Yes",replace
estadd local Fixed_Effect "No",replace
est store m1
reg ln_w age ttl_exp tenure not_smsa south yd*, vce(cluster idcode)
estadd local Cluster "Yes",replace
estadd local Fixed_Effect "No",replace
est store m2
xtreg ln_w age ttl_exp tenure not_smsa south yd*, fe vce(cluster idcode)
estadd local Cluster "Yes",replace
estadd local Fixed_Effect "Yes",replace
est store m3
esttab m1 m2 m3, star(* 0.1 ** 0.05 *** 0.01) b(%6.3f) t(%6.3f) compress nogap ///
stats(Fixed_Effect Cluster N r2_a, fmt(%3s %3s %12.0f %9.3f)) varwidth(20) ///
indicate("Year FE=yd*") title("Table1 Wage") mtitle("OLS" "OLS" "FE")
回归结果如下:
当然,我们也可以使用estadd把Year FE标识调整到横线下面,程序修改如下:
reg ln_w age ttl_exp tenure not_smsa south, vce(cluster idcode)
estadd local Cluster "Yes",replace
estadd local Year_FE "No",replace
estadd local Fixed_Effect "No",replace
est store m1
reg ln_w age ttl_exp tenure not_smsa south yd*, vce(cluster idcode)
estadd local Cluster "Yes",replace
estadd local Year_FE "Yes",replace
estadd local Fixed_Effect "No",replace
est store m2
xtreg ln_w age ttl_exp tenure not_smsa south yd*, fe vce(cluster idcode)
estadd local Cluster "Yes",replace
estadd local Year_FE "Yes",replace
estadd local Fixed_Effect "Yes",replace
est store m3
esttab m1 m2 m3, star(* 0.1 ** 0.05 *** 0.01) b(%6.3f) t(%6.3f) compress nogap ///
drop(yd*) stats(Year_FE Fixed_Effect Cluster N r2_a, fmt(%3s %3s %3s %12.0f %9.3f)) ///
varwidth(20) title("Table1 Wage") mtitle("OLS" "OLS" "FE")
输出结果如下:
esttab系列命令选项较多,功能强大,具体细节还需读者通过help学习。小编觉得自己的程序和大神的相比,之间差了好多好多个有用的命令,如果你也和小编一样,别担心,快来我们的公众号把这些好用的命令都收进你的程序里~
我们团队原来的微信公众号是“数据处理援助中心”,现在正式搬家到“爬虫俱乐部”,欢迎关注。新的公众号开始,我们推出有问必答栏目,对您提出的问题,我们会尽力回答,并通过推文的形式进行发布。我们也欢迎各位粉丝向公众号投稿。
(编辑 @徐苾雯)
欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:xueyuan19920310@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”
3)如果大家遇到关于stata处理分析数据的问题,也可以给该邮箱写邮件,邮件名称为“提问”+“问题名称或者关键词”,我们会在后期的推文里给予解答。
长按二维码关注公众号
微信扫一扫
关注该公众号