stata面板数据回归操作之GMM

您所在的位置:网站首页 固定效应ols模型 stata面板数据回归操作之GMM

stata面板数据回归操作之GMM

2023-05-06 13:30| 来源: 网络整理| 查看: 265

我在B站(小菲stata)也发布了教学视频,欢迎大家一起交流学习呀~https://b23.tv/mEzCV5

知乎:https://www.zhihu.com/zvideo/1410267629391511552

最近有小伙伴私信问我有什么计量经济学数据推荐,其实我也是小白,都是看大量文献和数据学习整理的,这里推荐一本我最近学习的计量经济学书吧~

陈强的这一本,比较基础,适合新手去了解和学习~我有电子版的,可以免费分享,稍后放到评论区吧~

之所以再推荐这一本空间计量经济学呢,是因为我的文章,审稿人要求我使用这里面的空间模型,控制变量之间可能存在的空间偏移差异,我的天,提起来就头大~还是需要多多钻研书籍,真正理解很多名词的含义,而不是只简单操作代码~大家一起学习加油吧~

新手面板数据回归之GMM 的 stata 操作步骤

广义矩估计( Generalized Method of Moments 即 GMM )

原理就是回归!就是一种高级点的回归!

我也是新手,也有很多不太懂的地方。断断续续学习了两个月,看了很多文献和公众号拼凑整理的,放到这里就是大家可以一起修正和补充。

数据情况:

样本:31个省份的面板数据

年份:2009-2016年 八年数据

因变量Y

自变量:八个X

一、数据整理、导入和保存

第一步:整理数据:

以X1 CPI为例 最好数据原始整理的时候,就注意形式,整理成这样

首先,stata不识别字符,所以建议把省份换成1-31。以免后续麻烦。也可以后续将字符修改为数值型,语法:egen pro=group(var1)//将var1变量转化为新的非字符串变量,并命名为pro。

(缺失数据:多重插补用的较多,这需要你根据自身情况去学习,学问多多。我是按照Landerman 等( 1997) 建议当缺失比例小于2%时, 用均数替代; 当缺失比例在2%—5%之间时, 用最大似然估计替代; 而当缺失比利大于5%时, 用多项回归替代(multiple imputation)。(Landerman, L .R . Land, K .C ., and Pieper , C .F . ( 1997) . An Empirical Evaluation of the Predictive Mean Matching Method for Imputing Missing Values . Sociological Methods and Research, 26( 1) : 3—33 .))

再从数据的第三行即具体数据开始,开始复制粘贴到stata的数据编辑器中,如右下图。

(ps:如果把第二行也纳入,stata会默认地区也是一个样本,后面2009-2016是数据,观测值变为32,年份9,错误如左下图,不要地区省份和具体年份!)

第二步:调整数据

开始在stata里面输入命令

第一:将第一列中的样本var1重命名

语法:rename var1 样本名

本例:rename var1 province

然后你就会看到var1变成province

第二:转换为数据,继续识别时间变量

语法:reshape long var,i(样本名)

本例:reshape long var,i(province)

其他的var就会变成年份顺序

Stata语法界面可以看到:一共31个样本,248个观测值。J variable 有8个值。

第三:重命名 语法: rename _j year ;rename var 变量名称

本例就是: rename _j year ;rename var CPI

就得到下图:其中province 1-31个省份。2-9就是2009-2016年,八年

为防止数据不符合排序问题,我们可以再来个排序:sort 样本名称 时间

本例:sort province year 一般是没有问题的。

最后保存一下,方便后续导入使用。

注:其他变量也全部都这样导入,导入前先clear一下。stata也可以直接打开Excel,前提你的格式记得修改好。如果变量较多,一定记得保存到一个文件夹,后续导入需要一直使用这个文件路径。

第三步:合并数据

从因变量Y开始。其他变量也是要一个个导入合并。看起来一个个来很麻烦,操作熟练了,几分钟的事情,所以不要担心。

打开因变量Y的数据库。先合并CPI。

语法:merge 1:1 province year using 文件路径

寻找这个文件路径,很多方法,我一般使用文件夹上面有个复制路径,如下图,很简单方便。"C:\Users\thinkpad\Desktop\分省份数据\STATA修改数据\分省年度数据之CPI 2009-2016年.dta"

本例:merge 1:1 province year using C:\Users\thinkpad\Desktop\分省份数据\STATA修改数据\分省年度数据之CPI 2009-2016年.dta

合并之后,再进行排序对应,虽然一般整理的时候已经匹配好了,但安全起见,再打一遍。

语法:tab _merge drop _merge (因为这里会有多次merge,之前merge的数据会生成一个新var _merge, 合并后必须drop掉才可以进行下一步merge)

如下图,左边是语法界面,右边数据截面,我已经合并好了y和x1,x2,x3。

sort province year

结束!保存!

二、简单回归

这里想先简单写一写面板数据最基本的回归。即固定效应模型和随机效应模型。

第一步:定义面板数据: 语法:xtset样本 year

本例:xtset province year

注:第一个是横截面(样本或个体),第二个是时间,不要反了呀!!!

输入之后,stata会告诉你数据是否平衡,即strongly balanced。

第二步:数据检验:

单位根检验(如ADF、IPS、LLS、HT),判断是否平稳。

常用相同根单位根检验LLC(Levin-Lin-Chu)检验和不同根单位根检验Fisher-ADF检验

此外,单位根检验一般是先从水平(level)序列开始检验起,如果存在单位根,则对该序列进行一阶差分后继续检验,若仍存在单位根,则进行二阶甚至高阶差分后检验,直至序列平稳为止。我们记I(0)为零阶单整,I(1)为一阶单整,依次类推,I(N)为N阶单整。

LLC检验语法:xtunitroot llc varname, lag(n)

IPS检验语法:xtunitroot ips 变量名, lag(n)

可以使用xtunitroot,help一下,便会出现所有的检验命令及其用法和实例:而且有可能不同检验结果不一样,这里具体还需要加各种option,检验不通过,即同阶单整,还需要协整检验等,(具体去搜索别的大神写的,小的懂得也不多。这里还有很多学问!)

协整性检验:

语法1:按照ssc install xtwest

tsset province year转换为面板数据

协整的命令为: xtwest depvar varlist [if exp] [in range] , lags(# [#]) leads(# [#])

lrwindow(#) [constant trend bootstrap(#) westerlund noisily mg]

语法2:Kao 检验

xtcointtest kao y x1 x2 x3

下方汇报了 5 种不同的检验统计量,其对应的 p 值均小于 0.01,故可在 1% 水平上强烈拒绝 “不存在协整关系” 的原假设,认为存在协整关系。

语法3:Pedroni 检验

下面进行更为灵活的 Pedroni 检验,允许不同面板单位有不同的协整向量与残差自回归系数,并加上时间趋势项

xtcointtest pedroni y x1 x2 x3,trend

语法4:Westerlund 检验

下面进行 Westerlund 检验,依然包括时间趋势项。

.xtcointtest westerlund y x1 x2 x3, trend

第三步:hausman检验,判断何种检验方法。

语法:xtreg y x1 x2 , fe (fe是固定效应模型)

est store fe (保存回归结果)

xtreg y x1 x2 , re (re是随机效应模型)

est store re (保存回归结果)

hausman fe re (比较两者,顺序一般而言不可以调换)

hausman检验最常用(也有人认为只是理论可信,实际一般),其实具体有三种模型,具体检验方法看下图,然后自己可以一个个检验方法搜索,都会找到语法和结果分析。

hausman出现负数是因为var(b-B)=var(b)-var(B)在有限样本的情况下,这两个协方差矩阵的差不能保证是正定的,所以可能会出现负数。在这种情况下无法拒绝random effect model,这是由协方差矩阵的相似性引发的。如果想进一步检验到底选择随机还是固定效应,可以用Baltagi(2005,pp.65-73)的式子解决这个问题,这个协方差矩阵永远是非负定的。认为用Breusch-Pagan Lagrange multiplier (LM) test来检验random effects

第二,如果hausman检验值为负,说明的模型设定有问题,导致Hausman 检验的基本假设得不到满足,遗漏变量的问题,或者某些变量是非平稳等等,则采用hausman fe, sigmaless或hausman fe, sigmamore。关于结果为负数没有统一定论,大部分情况都是选择固定效应模型,以上的检验结果最好是拒绝原假设,至少要很多个才好(注:这些都值得商榷的,很多也没有定论)。

其中固定效应模型应用较多,再详细介绍一点语法:

个体固定效应模型:xtreg y x1 x2 x3,fe robust(stata稳健性回归时不报告调整R2,稳健回归的话,则只调整了t统计量,其他不变)

时刻固定效应模型:xi:y x1 x2 x3 i.year

控制个体和年份的固定效应模型:xtreg y x1 x2 x3 i.year i.province,fe

最小二乘法虚拟变量模型: xi xtreg y x1 x2 x3 i.year i.province,fe

如果存在单位根,则取滞后项。例如:xtreg lnsjY l3.lnx1 lnx2 lnx3 lnx4 lnx6 lnx7 lnx8 , fe robust 其中lnx1不平稳,滞后3项平稳

LSDV方法:reg y x1 x2 x3 i.province,vce(cluster province) estimates store LSDV

很多中文文献统计糙点,如果写英文,你还需要再去了解很多,经管之家是个不错的APP。其实很多时候,这些检验只是为了应付审稿人,统计方法说来说去还是主观性很强,看自己需要怎么样的结果然后不断试验。

三、GMM

为什么使用这个方法,何时使用,注意事项需要再去搜索学习,学问很多,这里我就写一点语法经验。建议学这个之前,先学习什么是内生变量、工具变量、自相关等各种问题。如果不太懂也没有时间学,就建议使用OLS之类的回归。

现在都是使用xtabond2的语法格式:

第一步:定义截面变量和时间变量,语法:tsset province year

第二步:样本的描述性统计,语法:xtsum y x1 x2(注意stata区分大小写,你命名的时候最好统一,否则经常不识别)

我们发现统计结果是按照“整体”、“组间”和“组内”三个层次进行的。当然,你也可以采用 sum 命令来得到基本统计量,而且在正是写论文时,所需列示的结果并不要求像上面那么详细,此时 sum 命令反而更实用。

看下图,自行对比需要什么。

第三步:具体GMM操作

第一,对所有数据取对数,消除异方差

如对变量x取对数,语法: gen lnx=log(x)

九个变量依次变换

(ps:由于自变量中有比例,百分比,关于这个是否取对数,我没有找到统一要求,暂且一是看标准差是否大,二是看是否核心变量,是否需要明确具体系数大小,如果均是yes,那么取对数无可厚非。我是都取,由于如果是小于的1的数值,取对数就是小于0,所以建议可以转换为百分比,千分比,保证数值大于1)

缩尾处理:ssc install winsor2, replace,自动安装 winsor2

默认双侧缩尾winsor2 x1, gen(x11) cuts(1 99)

可以通过winsor命令的highonly或lowonly选项来进行单侧缩尾处理:winsor x1, gen(x11) p(0.025) highonly

winsor2 x1 x2 x3 x4 x5 , replace cuts(1 99) :批量处理多个变量;replace 选项,可以不必生成新变量

第二,安装xtabond2

ssc install xtabond2

第二步,最简单的语法形式:xtabond2 depvar(因变量) varlist(系列解释变量:前置变量、严格外生变量、内生变量)

simple autoregressive model(AR自回归模型) with no controls except time dummies

one-step difference GMM with robust errors.

语法:xtabond2 y L.y i.t, gmmstyle(L.y) ivstyle(i.t) robust noleveleq

其中:L.y表示y的滞后lag t时间 nolevel或者noleveleq表示是difference-GMM,系统默认的system-GMM

举例:如果x1 is strictly exogenous严格外生变量, x2 is predetermined but not strictly exogenous前置变量,但不完全外生, and x3 is endogenous内生变量, then

语法:xtabond2 sjY L.sjY x1 x2 x3, gmmstyle(L.sjY x2 L.x3) ivstyle(x1)twostep robust small orthogonal

这就是 two-step system GMM, Windmeijer-corrected standard errors, small-sample adjustments, and for orthogonal deviations(用来消除固定个体效应,即一个第t期的变量减去t期之后所有日期的平均数值,这与我们时常用的first difference不太一样,因为这种方式保证不了所有日期都能够获得数值).

我的案例: xtabond2 lnsjY L.lnsjY lnx1 lnx2 lnx3 lnx4 lnx5 lnx6 lnx7 lnx8 lnx9, gmm (lnsjY lnx1 lnx3 lnx7 lnx8 lnx2 lnx9, lag(2 2)) iv( lnx4 lnx5 lnx6 ) twostep robust noconstant small orthogonal

内生变量滞后两阶 工具变量4.5.6 二步系统GMM

下面再来具解释一下各选项。但其实实际应用,语法没有这么复杂。

语法:xtabond2 depvar(因变量) varlist(系列解释变量:前置变量、严格外生变量、内生变量) [条件筛选] [回归区间][, level twostep robust cluster noconstant small noleveleq passthru orthogonal gmmopt [gmmopt ...] ivopt [ivopt ...] pca components(主成分部分) artests(自相关检验的最大阶数) arlevels h(这个选项一般不影响大局) ]

level(置信区间)

twostep(表明计算two step估计量而不是one step估计量)

robust(如果前面选择了twostep,那么就必须选择这个robust,因为two会严重低估回归系数的标准误差,得到的回归系数都过于显著)

cluster(用来重新命名Panel变量,就是说改变之前的id,主要考虑组内(比如以id为组,year为组)

noconstant(在level equations中不要常数项)

small(用t统计量和F统计量,而不是用z统计量和Wald统计量来评估回归显著性)

noleveleq(如果有这个命令,那工具变量中就只有difference equations,没有了level equations,因此就等同于做了difference GMM,否则默认system GMM)

orthogonal(这是用向后orthogonal deviations方法来创造工具变量,主要是与difference GMM连着用,比传统的AR(1)difference GMM更加稳定无偏,尤其是数据非平衡以及有缺失值的时候使用,但系统默认一阶差分first difference)

gmmopt [gmmopt ...] gmmstyle(varlist [, laglimits(对于transformed或者level equations,这个选项规定了工具变量选择的前后日期)

ivopt [ivopt ...] ivstyle(varlist [, equation({diff | level | both}(表示哪个equation用前面的那个工具变量))

collapse(只为每个变量和滞后距离创造一个工具变量,而不是每一个时间段都创造一个工具变量,减少了工具变量个数,利于后面的过度检验,这个option是放在gmm里面)

passthru split(仅仅用于system GMM和没有规定equation(),主要是把工具变量分成2组来做difference-in-Sargan/Hansen testing)

mz(工具变量中Missing值就换成0)

equation({diff | level | both}) 那个等式使用工具变量,默认both

pca components(主成分部分)

artests(自相关检验的最大阶数)

arlevels(标明自相关检验用于level equations)

h(这个选项一般不影响大局)

#注意的是,如果x变量是个前置变量,那作为level equation的工具变量是可以的,但是现在就不能用ivstyle选项,而是后面这个iv(x, eq(level))。

第四步:过度检验和自相关检验

xtabond2会报告过度检验(Hansen J和sargan test)对于Sargan test of overid. restrictions和Difference-in-Sargan tests of exogeneity of instrument subsets,原假设是这些instruments valid, 因此p不显著,不reject原假设即p值要大于0.10以上就是好的,同时也不要大于等于1。一般而言在0.1-0.25之间最合适。

自相关检验情况(AR1 AR2),是检验扰动项的差分是否存在一阶与二阶自相关,以保证GMM的一致估计,一般而言扰动项的差分会存在一阶自相关,因为是动态面板数据,但若不存在二阶自相关或更高阶的自相关,则接受原假设“扰动项无自相关”。一般情况,AR1经常会拒绝,AR2则不显著,p值大于0.1较合适,不拒绝,如果AR2也显著的话,那么就该用3阶以及更高阶作为工具变量,然后检验AR3是否显著。在原方程后面再加上artests(3)就OK了

To compensate, xtabond2 makes available a finite-sample correction to the two-step covariance matrix derived by Windmeijer (2005). This can make two-step robust estimations more efficient than one-step robust, especially for system GMM (xtabond2反正用了一些方式让他的回归更加有效率和稳健)。

GMM估计包括一步(One-Step)和两步(Two-Step)的GMM。两步估计的权重矩阵依赖于估计参数且标准差存在向下偏倚,并没有带来多大的效率改善且估计量不可靠,一步估计量尽管效率有所下降但它是一致的,因而在经验应用中人们通常使用一步GMM估计。理论上,一步系统广义矩估计(One-Step SystemGMM)利用了比一步差分广义矩估计(One-step Difference-GMM)更多的信息,前者可以解决后者不能解决的内生性和弱工具变量问题,因而前者比后者的估计结果更有效。Blundell and Bond利用蒙特卡罗模拟实验也证实,在有限样本下,系统GMM比差分GMM估计的偏差更小、效率也有所改进。

第五步稳健性分析:

一是从数据选择上考虑,依据不同的标准来分类,进而验证检验结果是否依然显著,这种办法的难点在于不同标准之间较难衡量,在分类过程中会出现取舍不当的问题;不同的标准对数据重分类、聚合;蒙特卡洛/boostrap模拟取样;还有5%截尾值删减、不取或取对数

其次从变量选择上考虑,即通过用其他相类似的变量替代,这种办法较多人采用,但有些变量存在单一性,很难用其他变量代替,或者出现其他变量与解释变量之间相关性不大等问题;

最后从计量方法入手,利用不同的回归方法来检验,如先用基础回归的方法,对比解释变量在混合回归、固定效应模型和随机效应模型的系数和方向,再用动态面板的方法进一步检验,发现两者的系数大小和正负方向并没有发生巨大变化,也进一步说明了模型的稳健性。

模型不稳健怎么弄?

使用GMM的注意事项:

1、OLS和固定效应模型估计的参数一般就是真实系数的上限和下限。可考虑做GMM的估计限定范围。也可以做稳健性分析。

2、适合短面板数据即N>T

3、如果数据有间隙,尽量使用垂直离差。

4、每个自变量通常需要出现两次(除了定义的工具变量)。

先作为自变量出现在在xtabond2命令中逗号的左边,再以某种形式作为工具变量出现在逗号右边。如果变量x是完全外生的,那么放到 instyle(x)(表示直接作为工具变量);如果x是前定predetermined的,但不是完全外生的,则放到 gmmstyle(x)(表示从滞后一期或以上开始都作为工具变量);如果x是内生的,则放到 gmmstyle(L.x)(表示从后两期或以上开始都作为工具变量) .

例: xtabond2 y L.y x1 x2 x3 i.t, gmmstyle(L.y x2 L.x3) ivstyle(i.t x1)> twostep robust small orthogonal

5、报告工具变量的数量。

如果按照上一条的做法,工具变量的数量会很多。这样会导致overidentification test不准确,(一个标志就是 Hansen统计量的p值变为1, Hansen test的p值在(0.1,0.25)之外都要小心,小于0.1表明拒绝工具变量有效的假设,大于0.25表明选的工具变量太多, hansen检验变弱了)通常,需要限制工具变量数量,可以用 collapse选项,也可以用1ag1imits()选项。习惯做法是,选择不同数量的工具变量以显示估计系数的稳健性。工具变量数量的上限就是模型中个体的数量(也就是N),超出此上限, xtabond2命令会报警。

6、使用system-GMM的前提是数据应该在稳态附近,就是指在观测期间,样本或个体之间不能离稳定状态太远,否则这些变量的变化就会和固定效应关系比较大,不满足使用前提。

7、在有间隙的面板数据中使用正交偏差即orthogonal deviations,可以增大样本量。

8、报告你的选项:system还是difference;垂直离差还是一阶差分;工具变量;滞后几期;选择什么样的robust(nonrobust,cluster–robust, or Windmeijer-corrected cluster–robust errors;)。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3