查看原文
其他

实证中常用Stata操作命令和代码总结

凡是搞计量经济的,都关注这个号了

稿件:econometrics666@126.com

所有计量经济圈方法论丛的code程序, 宏微观数据库和各种软件都放在社群里.欢迎到计量经济圈社群交流访问.

一、STATA输出

1. 安装estout。最简单的方式是在stata的指令输入:
ssc install estout, replace
EST安装的指导网址是:http://repec.org/bocode/e/estout/installation.html
2.跑你的regression
3.写下这行指令esttab using test.rtf,然后就会出现个漂亮的表格给你(WORD文档)。只要再小幅修改,就可以直接用了。这个档案会存在my document\stata下。如果你用打开的是一个stata do file,结果会保存到do文件所在文件夹中。如果要得到excel文件,就把后缀改为.xls或者.csv就可以了
4.跑多个其实也不难,只要每跑完一个regression,你把它取个名字存起来:est store m1。m1是你要改的,第一个model所以我叫m1,第二个的话指令就变成est store m2,依次类推。
5.运行指令:esttab m1 m2 ... using test.rtf就行了。

二、异方差检验

Breusch-Pagan test in STATA:

其基本命令是:estat hettest var1 var2 var3
其中,var1 var2 var3 分别为你认为导致异方差性的几个自变量。是你自己设定的一个

滞后项数量。

同样,如果输出的P-Value 显著小于0.05,则拒绝原假设,即不存在异方差性。

White检验:

其基本命令是在完成基本的OLS 回归之后,输入

imtest, white
如果输出的P-Value 显著小于0.05,则拒绝原假设,即不存在异方差性

 
处理异方差性问题的方法:

方法一:WLS

 WLS是GLS(一般最小二乘法)的一种,也可以说在异方差情形下的GLS就是WLS。在WLS下,我们设定扰动项的条件方差是某个解释变量子集的函数。之所以被称为加权最小二乘法,是因为这个估计最小化的是残差的加权平方和,而上述函数的倒数恰为其权重。

在stata中实现WLS的方法如下:

reg (被解释变量) (解释变量1) (解释变量2)…… [aweight=变量名]

其中,aweight后面的变量就是权重,是我们设定的函数。

一种经常的设定是假设扰动项的条件方差是所有解释变量的某个线性组合的指数函数。在stata中也可以方便地实现:

首先做标准的OLS回归,并得到残差项;

reg (被解释变量) (解释变量1) (解释变量2)……
predict r, resid

生成新变量logusq,并用它对所有解释变量做回归,得到这个回归的拟合值,再对这个拟合值求指数函数;

gen logusq=ln(r^2)
reg logusq (解释变量1) (解释变量2)……
predict g, xb
gen h=exp(g)

最后以h作为权重做WLS回归;

reg (被解释变量) (解释变量1) (解释变量2)…… [aweight=h]

如果我们确切地知道扰动项的协方差矩阵的形式,那么GLS估计是最小方差线性无偏估计,是所有线性估计中最好的。显然它比OLS更有效率。虽然GLS有很多好处,但有一个致命弱点:就是一般而言我们不知道扰动项的协方差矩阵,因而无法保证结果的有效性。

方法二:HC SE

There are 3 kinds of HC SE

(1)Huber-White Robust Standard Errors HC1, 其基本命令是:

reg var1 var2 var3, robust

White(1980)证明了这种方法得到的标准误是渐进可用(asymptotically valid)的。这种方法的优点是简单,而且需要的信息少,在各种情况下都通用。缺点是损失了一些效率。这种方法在我们日常的实证研究中是最经常使用。

(2)MacKinnon-White SE HC2,其基本命令是:

reg var1 var2 var3, hc2

(3)Long-Ervin SE HC3,其基本命令是:

reg var1 var2 var3, hc3

 

约束条件检验:

如果需要检验两个变量,比如x 与y,之间系

数之间的关系,以检验两者系数相等为例,我们可以直接输入命令:

test x=y

再如检验两者系数之和等于1,我们可以直接输入命令:

test x+y=1

如果输出结果对应的P-Value 小于0.05,则说明原假设显著不成立,即拒绝原假设。

 

序列相关性问题的检验与处理 
 
序列相关性问题的检验: 
首先,要保证所用的数据必须为时间序列数据。如果原数据不是时间序列数据,
则需要进行必要的处理,最常用的方法就是: 
gen n=_n 
tsset n 
这两个命令的意思是,首先要生成一个时间序列的标志变量n(或者t 也可以);
然后通过tsset 命令将这个数据集定义为依据时间序列标志变量n定义的时间序

列数据。 
最直观的检验方式是通过观察残差分布,其基本步骤是在跑完回归之后,直接输
入 
Predict error, stdp 
这样就得到了残差值;然后输入命令: 
plot error n 
会得到一个error 随n 变化的一个散点图。

 

D-W检验——对一阶自相关问题的检验: 
D-W检验是对一阶自相关问题的常用检验方法,但是如果实际问题中存在高阶
序列相关性问题,则不能用这个检验方法。 
D-W 检验的命令如下: 
首先,输入回归命令, 
reg Variable1 Variable2 Variable3…VariableM 
输出一个简单的OLS估计结果。然后,再输入命令:

dwstat 
这时会输出一个DW  统计量。通过与临界值之间的比较,可以得出结论。也可
以执行如下命令

estat durbinalt 

直接进行Durbin检验。 
 
Breusch-GodfreyTest in STATA——检验高阶序列相关性: 
在得到一个基本回归结果和error 之后,我们假设这样一个关系: 
et = α0 + α1 et-1 + α2 et-2 …+ αk et-p + β1 x1t + β2 x2t … +βk xkt +εt 
BG  检验的原假设是:H0  :  α1 = α2 = … αp =0。 
其基本命令是: 
bgodfrey , lags(p) 
其中p  是你自己设定的一个滞后项数量。如果输出的p-value 显著小于0.05,则
可以拒绝原假设,这就意味着模型存在p  阶序列相关性;如果输出的p-value 显
著大于0.05  甚至很大,则可以接受原假设,即不存在p  阶序列相关性。 

 

 

处理序列相关性问题的方法——GLS: 
常用的几种GLS  方法: 
(1) Cochrane-Orcutt estimator 和Prais-Winsten estimator 
其基本命令是 
prais var1 var2 var3, corc 
(2) Newey-West standard errors 
其基本命令是 
newey var1 var2 var3, lag(3) 
其中,lag(3)意思是对三阶序列相关性问题进行处理;如果需要对p  阶序列相

关性问题进行处理,则为lag(p) 

 

 

t因变量,g,f,c是自变量,_26存放了弟26个观测值,为需要预测的值

reg t g f c if _n!=26

点预测

predict taxpredict if _n==26


均值的区间预测

predictnl py=predict(xb),ci(lb ub) l(95)


因变量的区间预测

adjust g=117251.9 f=24649.95 c=99.9,stdf ci level(95)

 

Hausman检验是检验内生性的最常用的方法。它是通过比较一致估计量与有效估计量的Wald统计量。
命令格式为:

  .hausman name-constistent [name-efficent] [,options]

其中,name-cosistent指一致估计的结果, name-efficent 指有效估计的结果。注意,一致、有效估计量的先后顺序不能改变。

Option选项:

constant  计算检验统计量将常数也包括在内,默认值为排除常数
allegs 利用所有方程进行检验,默认只对第一个方程进行检验
skipeqs(eqlist) eqlist只能以方程名称而不能以方程序号表示
equation(matchlist) 比较设定的方程。
force 即使假设条件不满足仍进行检验
df(#) 默认值为一致估计与有效估计的协方差矩阵的差的估计
sigmamore 协方差矩阵采用有效估计量的协方差矩阵
sigmaless   协方差矩阵采用一致估计量的协方差矩阵
tconsistent(string)  一致估计量的标题
tefficient(string) 有效估计量的标题

 

工具变量估计
命令格式:
.ivregress esitimator depvar [varlist1] [varlist2=varlist_iv] [if] [in] [weight][,options]
其中,estimator包括2sls,gmm,liml三种。varlist1为模型中的外生变量,varlist2为模型中的内生变量,varlist_iv为模型中的工具变量。

Nonconstant  不包括常数项
Hascons  用户自己设定常数项
CMM 选项:
  wmatrix(wmtype)  robust,cluster clustvar,hac kernel, unadjusted
  center  权数矩阵采用中心矩
  igmm 采用迭代GMM估计
  eps(#) 参数收敛标准。默认值为eps(le-6)
  weps(#)  权数矩阵的收敛标准。默认值为w eps(le-6)
Vce(vcetype) unajusted,robust,cluster clustvar,bootstrap,jackknife,hac kernel
level(#)置信区间
First 输出第一阶段的估计结果
Small 小样本下的自由度调整

.estat firststage [,all forcenonrobust]

        该命令给出第一阶段的估计结果以及各种统计量,包括排除外生变量的相关性检验。All选项给出所有的拟合优度统计量。如果模型存在多个内生变量,则stata给出R2、偏R2、调整的R2 、F统计量;如果模型存在多个内生变量,则stata给出Shea偏R2和调整的偏R2。
       forcenonrobust给出最小特征值统计量及其临界值,即使采用稳健估计(这一检验的假设条件是误差项为独立正态分布)。

        

estat overid[,lag(#) forceweights forcenonrobust]
该命令给出了过度识别约束检验。如果使用2sls估计估计,则Stata给Sargan’s(1958)和Basman’s(1960)卡方统计量,这也是Wooldridge’(1995)稳健得分检验。如果采用liml估计方法,则stata给出Anderson and Rubin’s(1950) 卡方统计量以及Basmann F统计量;如果采用GMM估计,则stata给出hansen’s(1982)J统计量。Lags(#)用于计算得分检验的HAC(异方差自相关一致)统计量的过程中进行去噪时设定滞后阶数。如果设定lag(0),则表示不进行去噪处理。默认选择为lag(1)。这一选择仅使用于2sls估计方法和设定vce(hac)选项情况。
Forceweight    表示即使采用aweights,pweights或iweights也进行检验。Stata仅对于fweights的情况进行检验,其他权数所得到临界值可能不准确。

Forcenonrobust  指在2sls或LIML估计中即使采用稳健标准差也进行Sargan and Basmann检验(这一检验的假设的假设条件是误差项为独立正态分布)。

例子:

log(wage)=a+b*educ+c*exper+d*expersq+u

怀疑模型教育(educ)具有内生性问题,利用父母接受教育的年数(fatheduc,motheduc)作educ的工具变量估计上述模型。
(1)利用2SLS估计模型
.ivregress 2sls lwage exper expersq (educ=fatheduc motheduc),first

第一阶段回归结果为:
  educhat=9.1+0.19fatheduc+0.16motheduc+0.05exper
              (21.34)      (5.62)       (4.39)       (1.12)
         - 0.001expersq
             (-0.84)
第二阶段的估计结果为:
 lwagehat=0.05+0.06educ+0.04exper-0.001expersq
              (0.12)     (1.95)      (5.29)       (-2.24)

(2)检验educ的内生性
.quietly  ivreg  iwage exper expersq {educ=fatheduc motheduc}
.est store IV_reg
.quietly regress lwage exper expersq educ
.est store LS_reg
.hausman IV_reg LS_reg
可以得到hausman估计量=2.7,P值=0.44。接受原假设,即educ是外生的。

(3)进行过度识别的约束检验
.estat overid 
可得Sargan统计量=0.38,P值=0.54接受原假设。

 面板数据估计

首先对面板数据进行声明:
前面是截面单元,后面是时间标识:
tsset company year
tsset industry year
产生新的变量:gen newvar=human*lnrd
产生滞后变量Gen fiscal(2)=L2.fiscal
产生差分变量Gen fiscal(D)=D.fiscal

描述性统计:
xtdes :对Panel Data截面个数、时间跨度的整体描述
Xtsum:分组内、组间和样本整体计算各个变量的基本统计量
xttab 采用列表的方式显示某个变量的分布


Stata中用于估计面板模型的主要命令:xtreg
xtreg depvar [varlist] [if exp] , model_type [level(#) ]

Model  type              模型
be             Between-effects estimator
fe              Fixed-effects estimator
re             GLS Random-effects estimator
pa           GEE population-averaged estimator
mle        Maximum-likelihood Random-effects estimator

主要估计方法:
xtreg:   Fixed-, between- and random-effects, and population-averaged linear models
xtregar:Fixed- and random-effects linear models with an AR(1) disturbance
xtpcse :OLS or Prais-Winsten models with panel-corrected standard errors
xtrchh :Hildreth-Houck random coefficients models
xtivreg :Instrumental variables and two-stage least squares for panel-data models

xtabond:Arellano-Bond linear, dynamic panel data estimator
xttobit :Random-effects tobit models
xtlogit :Fixed-effects, random-effects, population-averaged logit models
xtprobit :Random-effects and population-averaged probit models
xtfrontier :Stochastic frontier models for panel-data
xtrc gdp invest culture edu sci health social admin,beta

 

xtreg命令的应用:
声明面板数据类型:tsset  sheng t
描述性统计:xtsum gdp invest sci admin
1.固定效应模型估计:
xtreg  gdp invest culture sci health admin techno,fe
固定效应模型中个体效应和随机干扰项的方差估计值(分别为sigma u 和sigma e),二者之间的相关关系(rho)
最后一行给出了检验固定效应是否显著的F 统计量和相应的P 值

 

2.随机效应模型估计:
xtreg  gdp invest culture sci health admin techno,re
检验随机效应模型是否优于混合OLS 模型:
在进行随机效应回归之后,使用xttest0
检验得到的P 值为0.0000,表明随机效应模型优于混合OLS 模型
3. 最大似然估计Ml:
xtreg  gdp invest culture sci health admin techno,mle


Hausman检验
Hausman检验究竟选择固定效应模型还是随机效应模型:
第一步:估计固定效应模型,存储结果
xtreg  gdp invest culture sci health admin techno,fe
est store fe
第二步:估计随机效应模型,存储结果
xtreg  gdp invest culture sci health admin techno,re
est store re
第三步:进行hausman检验
hausman fe
Hausman检验量为:
H=(b-B)′[Var(b)-Var(B)]-1(b-B)~x2(k)
Hausman统计量服从自由度为k的χ2分布。当H大于一定显著水平的临界值时,我们就认为模型中存在固定效应,从而选用固定效应模型,否则选用随机效应模型
如果hausman检验值为负,说明的模型设定有问题,导致Hausman 检验的基本假设得不到满足,遗漏变量的问题,或者某些变量是非平稳等等
可以改用hausman检验的其他形式:
hausman fe, sigmaless

对于固定效应模型的异方差检验和序列相关检验:
Xtserial gdp invest culture sci health admin techno
异方差检验:
    xtreg  gdp invest culture sci health admin techno,fe
xttest3 (Modified Wald statistic for groupwise heteroskedasticity in fixed effect model)

随机效应模型的序列相关检验:
xtreg  gdp invest culture sci health admin techno,re
Xttest1
Xttest1用于检验随机效应(单尾和双尾) 、一阶序列相关以及两者的联合显著
检验结果表明存在随机效应和序列相关,而且对随机效应和序列相关的联合检验也非常显著
可以使用广义线性模型xtgls对异方差和序列相关进行修正:
xtgls  gdp invest culture sci health admin techno, panels(hetero),修正异方差
xtgls  gdp invest culture sci health admin techno, panels(correlated),修正依横截面而变化的异方差
xtgls  gdp invest culture sci health admin techno, panels(hetero) corr(ar1),修正异方差和一阶序列相关ar(1)

关于Stata

1.Stata16新增功能有哪些? 满满干货拿走不谢,2.Stata资料全分享,快点收藏学习3.Stata统计功能、数据作图、学习资源4.Stata学习的书籍和材料大放送, 以火力全开的势头5.史上最全Stata绘图技巧, 女生的最爱,6.把Stata结果输出到word, excel的干货方案,7.编程语言中的函数什么鬼?Stata所有函数在此集结,8.世界范围内使用最多的500个Stata程序,9.6张图掌握Stata软件的方方面面, 还有谁, 还有谁? 10.LR检验、Wald检验、LM检验什么鬼?怎么在Stata实现,11.Stata15版新功能,你竟然没有想到,一睹为快,12."高级计量经济学及Stata应用"和"Stata十八讲"配套数据,13.数据管理的Stata程序功夫秘籍,14.非线性面板模型中内生性解决方案以及Stata命令15.把动态面板命令讲清楚了,对Stata的ado详尽解,16.半参数估计思想和Stata操作示例,17.Stata最有用的points都在这里,无可替代的材料18.PSM倾向匹配Stata操作详细步骤和代码,干货十足,19.随机前沿分析和包络数据分析 SFA,DEA 及Stata操作,20.福利大放送, Stata编程技巧和使用Tips大集成,21.使用Stata进行随机前沿分析的经典操作指南,22.Stata, 不可能后悔的10篇文章, 编程code和注解,23.用Stata学习Econometrics的小tips, 第二发礼炮,24.用Stata学习Econometrics的小tips, 第一发礼炮,25.广义合成控制法gsynth, Stata运行程序release,26.多重中介效应的估计与检验, Stata MP15可下载,27.输出变量的描述性统计的方案,28.2SLS第一阶段输出, 截面或面板数据及统计值都行,29.盈余管理指标的构建及其Stata实现程序, 对应解读和经典文献,30.Python, Stata, R软件史上最全快捷键合辑!,31.用Stata做面板数据分析, 操作代码应有尽有,32.用Stata做面板数据分析, 操作代码应有尽有,33.没有这5个Stata命令, 我真的会活不下去!,34.第一(二)卷.Stata最新且有趣的程序系列汇编,35.第三卷.Stata最新且急需的程序系列汇编,36.第四卷.Stata最新且急需的程序系列汇编,37.干货: UN和WTO推荐的最全且权威的实证研究方法及在Stata实现!必收藏!38.再中心化影响函数RIF回归和分解的Stata操作程序39.R和Stata软件meta分析操作详细攻略, 对研究再开展研究的利器!40.不能安装Stata命令咋弄?这个方法一直都比较靠谱!,41.使用Stata做结构方程模型GSEM的操作指南42.疫情期计量课程免费开放!面板数据, 因果推断, 时间序列分析与Stata应用,43.一些Stata常见操作代码和注释, 能够让年轻学人更快掌握相关命令!44.Stata语言中的常用函数及其用法解释, 在附上42篇Stata相关学习资料,45.Stata经典操作笔记和学习资源合辑! 都是些博士生导师比较推荐的! 46.Stata17版本对外发布了, 里面提供了25个让学者激动的新程序板块!

下面这些短链接文章属于合集,可以收藏起来阅读,不然以后都找不到了。

2.5年,计量经济圈近1000篇不重类计量文章,

可直接在公众号菜单栏搜索任何计量相关问题,

Econometrics Circle




数据系列空间矩阵 | 工企数据 | PM2.5 | 市场化指数 | CO2数据 |  夜间灯光 | 官员方言  | 微观数据 | 内部数据计量系列匹配方法 | 内生性 | 工具变量 | DID | 面板数据 | 常用TOOL | 中介调节 | 时间序列 | RDD断点 | 合成控制 | 200篇合辑 | 因果识别 | 社会网络 | 空间DID数据处理Stata | R | Python | 缺失值 | CHIP/ CHNS/CHARLS/CFPS/CGSS等 |干货系列能源环境 | 效率研究 | 空间计量 | 国际经贸 | 计量软件 | 商科研究 | 机器学习 | SSCI | CSSCI | SSCI查询 | 名家经验计量经济圈组织了一个计量社群,有如下特征:热情互助最多前沿趋势最多、社科资料最多、社科数据最多、科研牛人最多、海外名校最多。因此,建议积极进取和有强烈研习激情的中青年学者到社群交流探讨,始终坚信优秀是通过感染优秀而互相成就彼此的。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存