Stata:面板数据的稳健回归-xtrobreg和robreg
👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:公开课-直播 | 计量专题 | 关于连享会
连享会 · 2022 空间计量专题
连享会 · 2022 面板数据因果推断专题
作者:张迪 (中南财经政法大学)
邮箱:zhangdi_16@126.com
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
目录
1. 引言
2. 理论背景
2.1 一阶差分估计
2.2 成对差别估计
3. 命令介绍
3.1 命令安装
3.2 命令语法
4. stata 实操
4.1 robreg 命令
4.2 xtrobreg 命令
5. xtrobreg 和 robreg 对比
6. 参考文献
7. 相关推文
1. 引言
在正式介绍 xtrobreg
命令之前,首先了解一下稳健回归 (robust regression)。稳健回归是指将稳健估计方法应用于回归模型,以拟合大部分数据结构,同时识别出潜在的离群点、强影响点或与模型假设相偏离的结构。
在回归模型中,如果误差项服从正态分布,即符合 OLS 假设,那稳健回归结果与 OLS 结果并无差别。稳健回归的主要思路是将普通最小二乘回归中的目标函数修改,并且不同的目标函数对应不同的稳健回归方法。常见的稳健回归方法有:S 估计、GS 估计、MM 估计、LMS 估计、LTS 估计方法等。
xtrobreg
命令为面板数据提供了两种不同的稳健回归方法,即稳健的一阶差分估计 (robust first-differences estimators) 和稳健的成对差别估计 (robust pairwise-differences estimators)。
2. 理论背景
适用于一般面板数据的固定效应模型为:
其中, 是因变量, 是自变量组成的向量, 是估计参数组成的向量, 是单位个体, 是时间, 是个体层面不随时间变化的个体固定效应。
这些个体固定效应可以通过简单的线性 (组内) 转换分离出来,步骤如下:
计算每个个体的时间平均值:
减去 、 ,得到真实值与均值的差值 、:
将 (3) 式代入 (1) 式模型得到:
其中,,由此得 (4) 式:
可以看出,通过转换消除了模型中不随着时间变化的个体层面因素的影响。在研究中,之所以控制固定效应,是为防止遗漏变量带来的内生性问题。这种将个体固定效应的分离出来的方法一举两得,既遵循了控制个体固定效应以尽可能地避免内生性问题,又能够简化模型。
除了上面介绍的取平均值来分离个体固定效应的方法,还有其他方法。xtrobreg
命令就涉及两种分离转换的方式,分别是稳健的一阶差分估计 (robust first-differences estimators) 和稳健的成对差别估计 (robust pairwise-differences estimators)。
2.1 一阶差分估计
上述方法是通过取均值的方式分离个体固定效应,一阶差分估计通过差分的方式分离,最终结果如下:
其中,,。而且在严格的外生性假设下, 始终由 LS 估计得出。
2.2 成对差别估计
成对差别估计是由 Aquaro 和 Cížek (2013) 在文章中提出,他们认为可以通过取出每个个体中的所有成对差异来消除个体固定效应 。
其中,,,。
xtrobreg
命令默认的转换方式是成对差别估计 ,并根据转换数据进行稳健估计。同时,为了处理成对差别转换所引起的序列相关问题,标准误默认聚类在个体层面,也允许设置其他的聚类水平。
3. 命令介绍
xtrobreg
命令是 robreg
用于面板数据估计的命令,类似于 xtreg
与 reg
的关系。robreg
命令为线性回归模型提供了许多稳健的估计量。
3.1 命令安装
我们可以使用 Stata
的官方命令 ssc install
进行安装。
ssc install xtrobreg, replace
值得注意的是,xtrobreg
的命令需要在 stata11 及以上的版本中使用,还需要安装 robreg
命令和 moremata
命令。
ssc install robreg, replace
ssc install moremata, replace // 下载链接:http://fmwww.bc.edu/repec/bocode/m/moremata.zip
3.2 命令语法
xtrobreg
命令有四种语法结构,包括估计语法、结果报告语法、预测语法和转换语法。
Estimation
xtrobreg subcmd depvar indepvars [if] [in] [weight] [, options ]
Replaying results
xtrobreg [, reporting_options ]
Prediction
predict [type] newvar [if] [in] [, predict_options ]
Convert data
xtrobreg convert depvar [indepvars] [if] [in] [weight] [, convert_options ]
3.2.1 估计语法
xtrobreg subcmd depvar indepvars [if] [in] [weight] [, options ]
其中,subcmd
包括 robreg
命令的所有子命令,如 ls
、q
、m
、s
、mm
、lts
、lqs
、lms
等。这几个命令的具体含义可在 help robreg
中看到,具体为:
ls
:最小二乘估计法;q
:分位数估计法;m
:广义最大似然估计法;s
:最小残差尺估计法;mm
:矩估计法;lts
:最小截尾平方估计法;lqs
:最小分位数平方估计法;lms
:最小中位数平方估计法。
options
选择项如下:
fd
:使用一阶差分法 (first differences)。默认方法是成对差别估计法 (pairwise differences),对于最小二乘回归,成对差别估计量等于固定效应估计量。选项fd
需要设置时间变量;gmin(#)
:每组的最少观察次数为#
。数量#
大于等于 2,默认为gmin(2)
。观察值小于#
的组将被排除在估计样本之外;gmax(#)
:每组的最大观察次数为#
。数量#
大于等于 2,默认是不施加限制。观察值超过#
的组将被排除在估计样本之外;cluster(clustvar)
:基于函数的标准错误指定一个自定义的聚类变量。默认是在面板组上聚类;vce(vcetype)
:使用bootstrap
或者jackknife
进行方差估计;robreg_options
:robreg
命令的所有选项。
其他说明:
必须设置面板变量,使用 xtset
命令;indepvars
可以是因子变量,如i.varname
、i.varname#i.varname
等;组中权重:计算方法是 pweigh
方法,除非指定fd
方法,否则组中的权重必须是常量。
3.2.2 结果报告语法
xtrobreg [, reporting_options ]
其中,reporting_options
选择项与 robreg
命令一致,具体如下:
level(#)
:设置置信区间,默认置信区间为level(95)
。noheader
:设置表标题;notable
:设置表内结果;all
:报告所有结果 (与robreg s
和robreg mm
相关)。display_options
:其他的标准报告选项,详细内容使用help estimation options
命令查看。
3.2.3 预测语法
predict [type] newvar [if] [in] [, predict_options ]
其中,predict_options
选择项如下:
xb
:生成拟合值a + xb
,且此为默认值;ue
:生成复合残差u_i + e_it
;xbu
:生成含固定效应的估计值a + xb + u_i
;u
:生成固定效应u_i
;e
:生成特殊误差项e_it
。
3.2.4 转换语法
xtrobreg convert depvar [indepvars] [if] [in] [weight] [, convert_options ]
其中,convert_options
选择项如下:
fd
:生成一阶差分值 (first differences),而不是生成成对差别值 (pairwise differences),默认情况下是生成成对差别值;gmin(#)
:每组的最少观察次数为#
。数量#
大于等于 2,默认为gmin(2)
。观察值小于#
的组将被排除在估计样本之外;gmax(#)
:每组的最大观察次数为#
。数量#
大于等于 2,默认是不施加限制。观察值超过#
的组将被排除在估计样本之外;wvar(newvarname)
:权重变量的新名称。默认名称为 _weight。wexp 为权重表达式,如果忽略了权重,则 wexp=1。设 n_g 为组内的观察次数,设 n_avg 为组的平均大小 (未加权)。对于成对差别法,权重等于 。在一阶差分 (选项fd
) 的情况下,权重等于 wexp;keep(varlist)
:数据中保留的变量。这些变量在组内必须是常量,除非指定了fd;clear
:清除当前内存数据。
其他说明:
必须设置面板变量,使用 xtset
命令;组中权重:计算方法是 pweigh
和iweights
方法。 除非指定fd
方法,否则组中的权重必须是常量。
4. stata 实操
4.1 robreg 命令
robreg
命令也是应对数据集中可能存在的离群值进行诊断和稳健回归的命令。接下来将通过简单的回归,分析和比较 robreg
命令在不同的稳健回归方法中的作用,xtrobreg
命令也拥有类似的稳健回归思路。
. clear all
. sysuse auto, clear
. reg price mpg weight headroom foreign
. est store ols
. robreg ls price mpg weight headroom foreign
. est store ls
. robreg s price mpg weight headroom foreign
. est store s
. robreg mm price mpg weight headroom foreign
. est store mm
. estout *, drop(scale: S: _cons) cells(b(star fmt(3)) t(par fmt(2))) ///
> collabels(none) stats(hausman_p) style(smcl)
----------------------------------------------------------------------------
ols ls s mm
----------------------------------------------------------------------------
main
mpg 15.031 15.031 -62.281 -37.867
(0.21) (0.19) (-1.81) (-0.89)
weight 3.753*** 3.753*** 0.835 0.884*
(5.90) (4.71) (1.03) (2.06)
headroom -641.846 -641.846* -252.217 -224.919
(-1.94) (-2.25) (-1.50) (-1.86)
foreign 3648.619*** 3648.619*** 1230.326 1450.328**
(5.44) (5.60) (1.56) (3.06)
----------------------------------------------------------------------------
hausman_p 0.033 0.612
----------------------------------------------------------------------------
其中,关于效率值和 Hausman test 的结果为:
* robreg s price mpg weight headroom foreign 的结果:
S regression (28.7% efficiency)
Hausman test of S against LS: chi2(4) = 10.494712 Prob > chi2 = 0.0329
* robreg mm price mpg weight headroom foreign 的结果:
MM regression (85% efficiency)
Hausman test of MM against S: chi2(4) = 2.6856261 Prob > chi2 = 0.6117
回归结果显示:(1) LS 估计法和 reg
的回归系数保持一致,但是从结果数据面板中可以看出 robreg ls
结果中的 值更小,拥有更稳健的标准误,更好地考虑到组内扰动项相关的问题,拟合结果更可靠。
(2) robreg s price mpg weight headroom foreign
和 robreg mm price mpg weight headroom foreign
结果中有 Hausman test 的结果,如下列所示。这意味着,robreg subcmd
除了做模型拟合分析,还将两两模型的拟合结果做了比较。上述 Hausman test 结果表明,S 估计量和 LS 估计量的 Hausman test 表明存在相关的异常值;再看回归结果表,S 估计法和 LS 估计法拟合的回归系数差距很大,进一步说明存在相关的异常值。
. * 做出离群值的散点图
. robreg ls price mpg weight headroom foreign
. predict outlier, outlier
. two scatter price weight if outlier==0 || scatter price weight if outlier==1
. drop outlier
. robreg s price mpg weight headroom foreign
. predict outlier, outlier
. two scatter price weight if outlier==0 || scatter price weight if outlier==1
. drop outlier
. robreg mm price mpg weight headroom foreign
. predict outlier, outlier
. two scatter price weight if outlier==0 || scatter price weight if outlier==1
从上到下依次为 LS 估计法、S 估计法、MM 估计法的离群值散点图。可以看出,S 和 MM 稳健估计法对于离群值的处理相近,得出的拟合值也相近。而这两种方法与最小二乘法估计 LS 估计法处理离群值的方法存在差异,最小二乘估计纳入了更多的离群值,会对线性曲线的斜率产生影响,影响到最后的拟合值大小。
4.2 xtrobreg 命令
xtrobreg
命令与 robreg
命令一样,是应对数据集中可能存在的离群值进行诊断和稳健回归的命令。接下来将通过简单的回归,分析和比较 robreg
命令在稳健回归的作用。
4.2.1 离群值的处理
. clear all
. xtarsim y x1 eta, n(200) t(4) g(0) b(1) r(0) sn(5) seed(1234) // xtarsim创建面板数据集用于蒙特卡洛实验
. est clear
. drawnorm x2 x3 // 从多元正态分布中抽取样
. replace y=y+x2+x3
. xtreg y x*, cluster(ivar) fe
. est store FE_Clean // FE估计
. xtrobreg s y x*
. est store PWDSE_Clean // S估计
. xtrobreg mm y x*
. est store PWDMME_Clean // MM估计
. replace x1=x1+10 if uniform()>0.9 // 制造污染样本
. xtreg y x*, cluster(ivar) fe
. est store FE_Contaminated // FE估计
. xtrobreg s y x*
. est store PWDS_Contaminated // S估计
. xtrobreg mm y x*
. est store PWDMM_Contaminated // MM估计
. estout *, drop(scale: S: _cons) cells(b(star fmt(3)) t(par fmt(2))) ///
> collabels(none) stats(hausman_p) style(smcl)
------------------------------------------------------------------------------------------------------------
FE_Clean PWDSE_Clean PWDMME_Clean FE_Contami~d PWDS_Conta~d PWDMM_Cont~d
------------------------------------------------------------------------------------------------------------
main
x1 0.997*** 1.016*** 0.993*** 0.353*** 0.999*** 0.996***
(51.87) (29.87) (51.14) (11.46) (38.84) (47.10)
x2 0.956*** 0.975*** 0.958*** 0.914*** 0.997*** 0.979***
(23.15) (11.98) (21.72) (9.45) (16.67) (21.22)
x3 0.950*** 0.920*** 0.920*** 1.044*** 0.865*** 0.881***
(19.56) (12.79) (19.58) (11.92) (13.50) (17.64)
------------------------------------------------------------------------------------------------------------
hausman_p 0.883 0.649 0.000 0.904
------------------------------------------------------------------------------------------------------------
其中,关于效率值和 Hausman test 的结果为:
* xtrobreg s y x* 的结果:
Pairwise-differences S regression (28.7% efficiency)
Hausman test of S against LS: chi2(3) = .65730748 Prob > chi2 = 0.8832
* xtrobreg mm y x* 的结果:
Pairwise-differences MM regression (85% efficiency)
Hausman test of MM against S: chi2(3) = 1.645461 Prob > chi2 = 0.6491
* xtrobreg s y x* 的结果:
Pairwise-differences S regression (28.7% efficiency)
Hausman test of S against LS: chi2(3) = 350.31698 Prob > chi2 = 0.0000
* xtrobreg mm y x* 的结果:
Pairwise-differences MM regression (85% efficiency)
Hausman test of MM against S: chi2(3) = .56784717 Prob > chi2 = 0.9038
回归结果显示:(1) 在未添加离群值之前的样本中,三种方法的拟合值将近,而且 Hausman test 的结果表明不拒绝原假设,与回归拟合值相近的结论相互印证。
(2) Hampel 等人研究表明一个常规的数据集合中可能存在着 1%-10% 的离群值,因此,此处随机生产离群值模拟实际应用中可能会遇到的数据类型。但是添加离群值之后,三种方法的拟合值差异较大:
S 估计和 MM 估计结果明显优于 FE 估计结果; S 估计和 LS 估计的 Hausman test 的结果表明拒绝原假设; MM 估计 和 S 估计的Hausman test 的结果表明不拒绝原假设; MM 估计 和 S 估计的拟合值相近而且比较稳健; FE 估计法未有效处理离群值,所得拟合值并不是无偏估计量。
4.2.2 数据转换
. clear all
. xtarsim y x1 eta, n(200) t(4) g(0) b(1) r(0) sn(5) seed(1234) // xtarsim创建面板数据集用于蒙特卡洛实验
. est clear
. drawnorm x2 x3 // 从多元正态分布中抽取样本
. replace y=y+x2+x3
. replace x1=x1+10 if uniform()>0.9 // 制造污染样本
. save 抽样样本.dta,replace
. use 抽样样本.dta,clear
. xtrobreg ls y x*, noconstant cluster(ivar)
. est store LS_1 // FE估计
. xtrobreg s y x*, noconstant cluster(ivar)
. est store S_1 // S估计
. xtrobreg mm y x*, noconstant cluster(ivar)
. est store MM_1 // MM估计
. use 抽样样本.dta,clear
. xtrobreg convert y x*, wvar(wt)
. robreg ls y x* [pw=wt], noconstant cluster(ivar)
. est store LS_2 // FE估计
. robreg s y x* [pw=wt], noconstant cluster(ivar)
. est store S_2 // S估计
. robreg mm y x* [pw=wt], noconstant cluster(ivar)
. est store MM_2 // MM估计
. estout *, drop(scale: S: _cons) cells(b(star fmt(3)) t(par fmt(2))) ///
> collabels(none) stats(hausman_p) style(smcl)
------------------------------------------------------------------------------------------------------------
LS_1 S_1 MM_1 LS_2 S_2 MM_2
------------------------------------------------------------------------------------------------------------
main
x1 0.358*** 1.017*** 1.006*** 0.358*** 1.017*** 1.006***
(11.77) (41.13) (46.32) (11.77) (41.13) (46.32)
x2 0.866*** 0.986*** 0.973*** 0.866*** 0.986*** 0.973***
(8.94) (17.21) (22.22) (8.94) (17.21) (22.22)
x3 0.991*** 0.908*** 0.928*** 0.991*** 0.908*** 0.928***
(10.61) (16.67) (19.25) (10.61) (16.67) (19.25)
------------------------------------------------------------------------------------------------------------
hausman_p 0.000 0.801 0.000 0.801
------------------------------------------------------------------------------------------------------------
结果表明:直接用 xtrobreg subcmd
命令对模型进行稳健估计与用 xtrobreg convert
命令转换之后再使用 robreg subcmd
命令进行稳健估计的拟合值基本保持一致。这是因为 xtrobreg convert
命令通过转换将个体固定效应分离了,随后再使用 rebreg subcmd
命令进行稳健估计,与 xtrobreg subcmd
命令思想内核保持一致。
5. xtrobreg 和 robreg 对比
根据前面列举的示例,我们可以看出 xtrobreg
命令和 robreg
命令既有共性,也有其特殊的使用场合。
相同点:
都是进行处理离群值,进行稳健估计的方法; 都能使用 ls
、q
、m
、s
、mm
、lts
、lqs
、lms
估计方法。
不同点:
处理的数据类型不同: robreg
命令一般用于截面数据的线性稳健性回归,可以在模型中加个体固定效应和时间效应等虚拟变量。xtrobreg
命令用于处理面板数据;对离群值的处理方式不同: robreg
命令直接使用ls
、q
、m
等方法对模型进行稳健估计。xtrobreg
命令先对数据进行处理,拆分出个体固定效应,再进一步使用以上方法对模型进行稳健估计。
二者联系:xtrobreg
和 robreg
命令通过 xtrobreg convert
命令联系起来,具体分两步:
分离个体固定效应:使用 xtrobreg convert
命令分离出个体固定效应,而且永久转换了数据,不能恢复 (xtrobreg
命令在回归之后会恢复原始数据,即使数据再次成为包含个体固定效应的原始数据,不影响后续的任何回归分析操作);稳健估计:在上一步的基础上用 robreg
命令进行稳健估计。
以上分两步回顾的结果与 xtrobreg
命令直接进行稳健估计的结果基本保持一致。
6. 参考文献
Verardi, V., B. Jenn, 2021, xtrobreg: A new command for pairwise difference robust panel estimators. -PDF- Aquaro, M., and P. Cížek (2013). One-step robust estimation of fixed-effects panel data models. Computational Statistics and Data Analysis (57): 536-548. -PDF- Adams, J., D. Hayunga, S. Mansi, D. Reeb, and Verardi V. (2019). Identifying and treating outliers in finance. Financial Management 48(2): 345-384. -PDF-
7. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 离群值 权重 固定效应, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:计量专题 主成分分析-交互固定效应基础:协方差矩阵的几何意义 专题:数据处理 winsor2:离群值和异常值的缩尾处理 Stata:离群值!离群值?离群值! 专题:回归分析 固定效应还是随机效应? Stata 权重设定-fweight-pweight 专题:面板数据 FE!FE!面板固定效应模型:你用对了吗 Stata:双向固定效应模型中是否要控制公司年龄? Stata:如何处理固定效应模型中的单期数据-xtfesing Stata:固定效应分析新命令-sumhdfe xtheckmanfe:面板Heckman模型的固定效应估计 regife:面板交互固定效应模型-Interactive Fixed Effect 引力模型-高维固定效应面板泊松模型 ocmt:高维固定效应模型的变量筛选问题 Stata新命令:ppmlhdfe-面板计数模型-多维固定效应泊松估计 Stata:非对称固定效应模型 reghdfe:多维面板固定效应估计 专题:倍分法DID DID最新进展:异质性处理条件下的双向固定效应DID估计量 (TWFEDD) Stata:双重差分的固定效应模型-(DID) 专题:内生性-因果推断 用FE-固定效应模型能做因果推断吗? 专题:空间计量 Stata:空间计量模型双权重-spm 空间权重矩阵的构建 专题:Probit-Logit feologit:固定效应有序Logit模型
课程推荐:面板数据因果推断
主讲老师:徐轶青 (斯坦福大学)
🍓 课程主页:https://gitee.com/arlionn/Course
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。