csdid:多时期DID的异质性稳健估计量
did 设计
正如已经广泛解释的那样,如果治疗效果是异质的,并且治疗的时间因单位而异,则TWFE模型不是识别ATT的合适方法。
现在有很多论文详细解释了为什么会这样。
据我了解,第一个差异(随时间变化),它仍然是一个很好的第一种方法。事实上,Sant'Anna 和 Zhao (2020) 在使用面板数据时,双重稳健估计的运作方式是先估计单位内的差异,然后再使用重新权重方法来估计 ATT。
现在,第二个区别是有问题的。首先,应该了解正在比较哪些组:
处理单位与从未处理过单位:这些是很好的比较 已处理的单位与尚未处理的单位:除非您认为存在预期问题,否则这些也很好。 较晚处理的单位与较早处理的单位:这些是坏的。因为您正在使用已处理的观测值作为控制。
为什么第三种比较是糟糕的平均值?
也许说“坏”是苛刻的。一个更好的词是“潜在的不恰当的比较”。那么什么时候是坏的,什么时候不是?
还不错
如果您认为治疗效果是同质的,并且对结果有一次性冲击(换句话说,潜在结果的一次性向上移动),那么标准TWFE是合适的。即使比较 3 也没有问题,早期处理的单位是良好的“对照”。
绝对糟糕
如果您认为治疗效果是异质的,并且随着时间的推移而变化更多,那么第三种比较是不合适的。为什么?因为我们不知道早期处理的单位是如何受到影响的。
为什么这很重要?
假设您有 2 个观测值,并且平行趋势假设在治疗前适用于所有观测值。如果一个单位更早接受治疗,并且效果随时间变化,那么在治疗后,其新的“结果趋势”将不会与第二个单位平行。因此,当第二个单元被处理时,您无法将其与第一个单元(后处理)进行比较,因为平行假设不再成立!
负权重呢?!
关于TWFE问题的另一种讨论方式是负权重的生成。有一段时间,这并没有让我觉得是一个直观的概念,但这个问题与坏群体比较密切相关。让我试着解释一下,放松一点严谨的数学。
当您估计 ATT 时,归根结底,您只是在比较处理的单位与未处理的单位:
在这个简单的情况下,所有处理的单位都得到一个正的权重,所有未处理的单位都有一个有效的“负”权重,因为它们需要减去。
现在,如果您比较较早处理的单位和较晚处理的单位,则具有以下结果:
由于“较早”处理的单元用作对照,因此它正在输入从较晚处理的单元中减去的方程式。然而,在时间t,它已经被处理过,所以它正在接受“负”权重!,当它应该是积极的。这就是问题的根源。TWFE会对一些处理过的单位施加“负”权重,因为它将它们用作“对照”。
那么解决方案是什么?
正如您可能怀疑的那样,解决方案是简单地避免不良比较。而且,是的,这就是Callaway and Sant'Anna (2021)所做的。它估计所有可能的“良好”比较以估计ATT,然后简单地汇总它们以提供结果摘要。但这只是工作的一半。
工作的另一半是以最佳方式实际估计治疗效果,尽可能多地考虑合理的信息。正如Pedro所说,这是他在Sant'Anna and Zhao (2020)中早期作品中提出的构建块。
操作应用
需要下载安装新的CSDID
和DRDID
首先,为了使用,您将需要五组文件:CSDID
drdid.ado.这是估计的主力。为任何可能的已处理和未处理组对实现 2x2 DID 估计,这实现了Sant'Anna and Zhao (2020).。 csdid.ado,这是实施Callaway and Sant'Anna (2021). 的主要程序。它会调用 ,并把所有的东西都放到一张漂亮的桌子上。它完成了所做的工作。它确实带来了一些新的惊喜。 drdid.ado``attgt's``att_gt
csdid_estat.ado.此文件将用作后估算程序。 csdid_stats.ado.这是一个新文件 csdid_table.ado.该程序无论何时调用都可以工作。它只是发布 Wildbootstrap 置信区间。 csdid_table.ado.该程序无论何时调用都可以工作。它只是发布 Wildbootstrap 置信区间。 csdid_plot.ado.这是专用的绘图命令。
与 DID
相比,我的命令使用 drimp
作为默认估计方法。但是,将允许 drdid
中的所有其他估计器(和 除外)。他们的关键是使用**method()
.选项方法来声明。有趣的是,DID
** 用作默认值。因此,我将在以下复制中使用它。
简单的帮助文件
csdid
该命令的一般语法如下:
csdid depvar indepvar [if] [in] [iw], ivar(varname) time(year) gvar(group_var) ///
method(drdid estimator) [notyet] [saverif(file) replace cluster(varname) ///
wboot agg(aggregation method) reps(#) rseed(#) wbtype(wbtype)]
以下是所有选项的解释:
depvar
:是您感兴趣的因变量或结果Indepvar
:是你的自变量,你在这里可能有也可能没有变量。这些变量将包含在结果回归规范和/或倾向评分估计中。理想情况下,这是时间常数变量。但是允许随时间变化的变量。在这些情况下,ATT是使用处理前值估计的。** ivar
**:是标识面板 ID 的变量。如果删除它,该命令将使用重复的 截面估计器。如果包括,它将估计面板分析。如果使用“ivar”,则需要进行适当的面板数据设置,每个周期每个 ID 只有一个观测值。** time
:标识时间
**变量(例如年份)。周期是否连续并不重要。此变量应与“gvar”中所有可能的周期重叠。GVAR
:是标识首次处理观测值的变量。它应该在“时间”括号内。gvar==0
的观测值被视为从未处理过的单位。**method( estimator
)**用于指示要使用的估计方法,可用列表下方:drimp
估计 DR 改进的估计。dripw
使用 DRIPW 方法reg
估计reg回归估计。stdipw
估计标准 IPW 估计。IPW
估计方法类似于 Abadies (2005)
因此,让我们看看这是如何工作的。首先,加载数据并估计模型。为了复制简单的输出,我将使用 .DID``method(dripw)
use https://friosavila.github.io/playingwithstata/drdid/mpdta.dta, clear
csdid lemp lpop , ivar(countyreal) time(year) gvar(first_treat) method(dripw)
结果为:
des
Contains data from mpdta.dta
obs: 2,500 Written by R.
vars: 6 17 May 2021 11:45
-----------------------------------------------------------------------------------------------------------------------------
storage display value
variable name type format label variable label
-----------------------------------------------------------------------------------------------------------------------------
year int %9.0g year
countyreal long %9.0g countyreal
lpop double %9.0g lpop
lemp double %9.0g lemp
first_treat int %9.0g first.treat
treat byte %9.0g treat
-----------------------------------------------------------------------------------------------------------------------------
Sorted by:
. edit
.
end of do-file
. csdid lemp lpop , ivar(countyreal) time(year) gvar(first_treat) method(dripw)
............
Difference-in-difference with Multiple Time Periods
Number of obs = 2,500
Outcome model : least squares
Treatment model: inverse probability
------------------------------------------------------------------------------
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
g2004 |
t_2003_2004 | -.0145297 .0221292 -0.66 0.511 -.057902 .0288427
t_2003_2005 | -.0764219 .0286713 -2.67 0.008 -.1326166 -.0202271
t_2003_2006 | -.1404483 .0353782 -3.97 0.000 -.2097882 -.0711084
t_2003_2007 | -.1069039 .0328865 -3.25 0.001 -.1713602 -.0424476
-------------+----------------------------------------------------------------
g2006 |
t_2003_2004 | -.0004721 .0222234 -0.02 0.983 -.0440293 .043085
t_2004_2005 | -.0062025 .0184957 -0.34 0.737 -.0424534 .0300484
t_2005_2006 | .0009606 .0194002 0.05 0.961 -.0370631 .0389843
t_2005_2007 | -.0412939 .0197211 -2.09 0.036 -.0799466 -.0026411
-------------+----------------------------------------------------------------
g2007 |
t_2003_2004 | .0267278 .0140657 1.90 0.057 -.0008404 .054296
t_2004_2005 | -.0045766 .0157178 -0.29 0.771 -.0353828 .0262297
t_2005_2006 | -.0284475 .0181809 -1.56 0.118 -.0640814 .0071864
t_2006_2007 | -.0287814 .016239 -1.77 0.076 -.0606091 .0030464
------------------------------------------------------------------------------
Control: Never Treated
See Callaway and Sant'Anna (2021) for details
.
我发现这个输出比 R 中的基线输出更容易理解。每个代表单位治疗。每个代表用于估计 ATT 的两年(前和后)。
下面进行平行假设的趋势前测试。输出可能会发生变化。
estat pretrend
. estat pretrend
Pretrend Test. H0 All Pre-treatment are equal to 0
chi2(5) = 6.8418
p-value = 0.2327
我们还可以重现简单的日历和组聚合:
. estat simple
Average Treatment Effect on Treated
------------------------------------------------------------------------------
| Coefficient Std. err. z P>|z| [95% conf. interval]
-------------+----------------------------------------------------------------
ATT | -.0417518 .0115028 -3.63 0.000 -.0642969 -.0192066
------------------------------------------------------------------------------
. estat calendar
ATT by Calendar Period
------------------------------------------------------------------------------
| Coefficient Std. err. z P>|z| [95% conf. interval]
-------------+----------------------------------------------------------------
T2004 | -.0145297 .0221292 -0.66 0.511 -.057902 .0288427
T2005 | -.0764219 .0286713 -2.67 0.008 -.1326166 -.0202271
T2006 | -.0461757 .0212107 -2.18 0.029 -.087748 -.0046035
T2007 | -.0395822 .0129299 -3.06 0.002 -.0649242 -.0142401
------------------------------------------------------------------------------
. estat group
ATT by group
------------------------------------------------------------------------------
| Coefficient Std. err. z P>|z| [95% conf. interval]
-------------+----------------------------------------------------------------
G2004 | -.0845759 .0245649 -3.44 0.001 -.1327222 -.0364297
G2006 | -.0201666 .0174696 -1.15 0.248 -.0544065 .0140732
G2007 | -.0287814 .016239 -1.77 0.076 -.0606091 .0030464
------------------------------------------------------------------------------