作者:张伟广 | 知乎 | | 码云
Stata连享会 计量专题 || 精品课程 || 推文 || 公众号合集
2020寒假Stata现场班 (北京, 1月8-17日,连玉君-江艇主讲),「+助教招聘」
双重差分法(DID
)作为估计处理效应的工具方法,常被用来对政策实施的跨期效果进行评估,其本身也是一种固定效应估计方法。在不同应用情形下,该方法具有多种可供选择的回归命令,而由于有些应用者对双重差分模型设定的优点和缺陷,以及 stata
命令实现不够了解,使得该方法有被错误滥用的倾向。
在此借鉴参考 Using Stata to estimate difference-in-differences models with fixed effects by Nicholas Poggioli ([email protected])
,举例从混合回归、 areg
回归、面板回归的随机效应和固定效应等情形,给出正确和错误模型设定的对比,以期为双重差分模型估计命令的正确选择作参考。
简要回顾双重差分模型的设定形式:
模型(1)为双重差分模型的基本设定。其中, 为分组虚拟变量(处理组=1,控制组=0); 为分期虚拟变量(政策实施后=1,政策实施前=0);交互项 表示处理组在政策实施后的效应,其系数即为双重差分模型重点考察的处理效应。
模型(2)是加入个体固定效应 ()、时间固定效应 (),以及其它控制变量 () 的双重差分模型设定的一般形式。
下面,我们通过一份模拟数据来对比分析不同估计方法的效果和偏误。
1. 生成数据
- 生成企业数量
set obs 400
gen firm=_n
- 时间跨度设定为24个季度(6年)
expand 24
bysort firm: gen t=_n
- 设定事件冲击发生在第14期
gen d=(t>=14)
label var d "=1 if post-treatment"
- 设定处理组和对照组
gen r=rnormal()
qui sum r, d
bysort firm: gen i=(r>=r(p50)) if _n==1
bysort firm: replace i=i[_n-1] if i==. & _n!=1
drop r
label var i "=1 if treated group, =0 if untreated group"
- 设定随机变量
gen e = rnormal()
label var e "normal random variable"
2. 验证模型
处理效应设定交互项系数为 0.56
gen y = 0.3 + 0.19*i + 1.67*d + 0.56*i*d + e
2.1 混合回归 (POLS)
错误设定模型
. reg y i d
Source | SS df MS Number of obs = 9600
-----------+------------------------------ F( 2, 9597) = 4406.07
Model | 9073.16808 2 4536.58404 Prob > F = 0.0000
Residual | 9881.26843 9597 1.02962055 R-squared = 0.4787
-----------+------------------------------ Adj R-squared = 0.4786
Total | 18954.4365 9599 1.97462616 Root MSE = 1.0147
----------------------------------------------------------------------------
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-----------+----------------------------------------------------------------
i | .4349154 .0208277 20.88 0.000 .3940888 .475742
d | 1.902249 .0207848 91.52 0.000 1.861506 1.942991
_cons | .192176 .0168782 11.39 0.000 .1590912 .2252609
----------------------------------------------------------------------------
这一设定忽略了交互项,此时
i
和d
的 OLS 的估计都是有偏估计。即使考虑异方差稳健性标准误或在企业层面进行聚类调整后的标准误,也不会改变其有偏性。因此,使用reg y i d, robust
或reg y i d, vce(cluster firm)
是无济于事的。
正确设定模型
. reg y i d i.i#i.d
. eststo pooled
----------------------------------------------------------------------------
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-----------+----------------------------------------------------------------
i | .174383 .0280267 6.22 0.000 .1194448 .2293213
d | 1.647874 .0276935 59.50 0.000 1.593589 1.702159
i#d |
1 1 | .5684342 .0413982 13.73 0.000 .4872851 .6495834
_cons | .3087643 .0187486 16.47 0.000 .2720131 .3455154
----------------------------------------------------------------------------
此时对交互项的估计、对
i
和d
的估计都是接近参数的真实值的。
Stata连享会 专题课程 || 精彩推文
2.2 areg 回归
. areg y i d i.i#i.d, absorb(firm)
. eststo areg
----------------------------------------------------------------------------
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-----------+----------------------------------------------------------------
i | 0 (omitted)
d | 1.647874 .0276586 59.58 0.000 1.593657 1.702091
i#d |
1 1 | .5684342 .041346 13.75 0.000 .4873869 .6494815
_cons | .3868007 .0139183 27.79 0.000 .3595177 .4140837
-----------+----------------------------------------------------------------
firm | F(399, 9198) = 1.156 0.019 (400 categories)
连享会计量方法专题……
2.3 面板回归
. xtset firm t, quarter
错误设定模型
. xtreg y i d
----------------------------------------------------------------------------
y | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-----------+----------------------------------------------------------------
i | .4349154 .0212192 20.50 0.000 .3933266 .4765042
d | 1.902249 .0207677 91.60 0.000 1.861545 1.942953
_cons | .192176 .0170907 11.24 0.000 .1586789 .2256731
-----------+----------------------------------------------------------------
sigma_u | .04121238
sigma_e | 1.0138689
rho | .00164959 (fraction of variance due to u_i)
-----------------------------------------------------------------------------
. xtreg y i d, fe
----------------------------------------------------------------------------
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-----------+----------------------------------------------------------------
i | 0 (omitted)
d | 1.902249 .0207677 91.60 0.000 1.861539 1.942958
_cons | .3868007 .0140598 27.51 0.000 .3592403 .4143611
-----------+----------------------------------------------------------------
sigma_u | .30216053
sigma_e | 1.0138689
rho | .08157474 (fraction of variance due to u_i)
------------------------------------------------------------------------------
此时
i
不能被估计,因为在面板数据中的企业代码是不随时间变化的。更为核心的问题在于:没有包含交乘项!
正确设定模型——随机效应 (RE)
. xtreg y i d i.i#i.d
. eststo xtreg_re
----------------------------------------------------------------------------
y | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-----------+----------------------------------------------------------------
i | .174383 .0284493 6.13 0.000 .1186234 .2301427
d | 1.647874 .0276586 59.58 0.000 1.593664 1.702084
i#d |
1 1 | .5684342 .041346 13.75 0.000 .4873976 .6494709
_cons | .3087643 .0190313 16.22 0.000 .2714636 .3460649
-----------+----------------------------------------------------------------
sigma_u | .05056003
sigma_e | 1.003664
rho | .00253126 (fraction of variance due to u_i)
----------------------------------------------------------------------------
该随机效应模型与正确设定的混合回归模型产生了一致的估计结果。
正确设定模型——固定效应 (FE)
. xtreg y i d i.i#i.d, fe
. eststo xtreg_fe
----------------------------------------------------------------------------
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-----------+----------------------------------------------------------------
i | 0 (omitted)
d | 1.647874 .0276586 59.58 0.000 1.593657 1.702091
i#d |
1 1 | .5684342 .041346 13.75 0.000 .4873869 .6494815
_cons | .3868007 .0139183 27.79 0.000 .3595177 .4140837
-----------+----------------------------------------------------------------
sigma_u | .22793566
sigma_e | 1.003664
rho | .0490464 (fraction of variance due to u_i)
----------------------------------------------------------------------------
F test that all u_i=0: F(399, 9198) = 1.16 Prob > F = 0.0194
该固定效应模型对交互项和变量
d
的估计结果一致,但对变量i
的估计则被忽略,因为其并不随面板代码而发生变化;
随机效应模型能够估计出变量
i
,因为该模型能够包含企业变化,且i
也随企业发生变化。
2.4 结果输出对比
estout *, title("Actual parameter values are i = .19, d = 1.67, and i*d = .56") ///
cells(b(star fmt(%9.3f)) se(par)) ///
stats(N N_g, fmt(%9.0f %9.0g) label(N Groups)) ///
legend collabels(none) varlabels(_cons Constant) keep(i d 1.i#1.d)
--------------------------------------------------------------------------
pooled areg xtreg_re xtreg_fe
--------------------------------------------------------------------------
i 0.174*** 0.000 0.174*** 0.000
(0.028) (.) (0.028) (.)
d 1.648*** 1.648*** 1.648*** 1.648***
(0.028) (0.028) (0.028) (0.028)
1.i#1.d 0.568*** 0.568*** 0.568*** 0.568***
(0.041) (0.041) (0.041) (0.041)
--------------------------------------------------------------------------
N 9600 9600 9600 9600
Groups 400 400
--------------------------------------------------------------------------
* p<0.05, ** p<0.01, *** p<0.001
关于我们
- Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
- 推文同步发布于 CSDN 、 和 知乎Stata专栏。可在百度中搜索关键词 「Stata连享会」查看往期推文。
- 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。
- 欢迎赐稿: 欢迎赐稿。录用稿件达 三篇 以上,即可 免费 获得一期 Stata 现场培训资格。
- E-mail: [email protected]
- 往期精彩推文:一网打尽
7bI5C5OhRqjkOw)