笔记

双重差分法

双重差分法(Diff-in-diff)

概念

  • 常用于评估宏观干预措施的效果,比如一个宏观政策颁布(e.g.三明医改)后,它对整个医疗体系的医生的工资的变化如何呢?
  • 这时候我们可以考虑以下双重差分法来进行因果推断

DID估计量

我们假设D为处理变量,T为时间变量,设YD(T)Y_D(T)为T时期下处理D的潜在结果,换句话说,这是反事实。倘若我们能够观测到反事实的理想情况下(比如我们有哆啦A梦的时光机),我们可以在哆啦A梦的世界里这样估算干预的处理效应:

ATET^=E[Y1(1)Y0(1)D=1]\hat{ATET} = E[Y_1(1)-Y_0(1)|D=1]

但显然的是,我们并没有时光机,我们没办法探索反事实的结果。但我们可以很显然想到,那我们可以用一些其他的结果来代替这个反事实推断。一方面:我们假设前后趋势一样,那么我们自然可以用先前时间的效果来替代反事实推断

E[Y(0)D=1]=E[Y0(0)D=1]=E[Y1(0)D=1]E[Y(0)|D=1] = E[Y_0(0)|D=1]=E[Y_1(0)|D=1]

于是乎,我们就有了:

ATET^=E[Y(1)D=1]E[Y(0)D=1]\hat{ATET} = E[Y(1)|D=1] - E[Y(0)|D=1]

但显然一个问题在于:没有干预的情况下,后面的结果会与前面的结果相同,但这真的会这样吗?回到三明医改的例子,我们可以想象,医生的工资真的会完全不变吗(虽然可能有些人会认为难说)。显然,这并不符合常理。

那我们考虑另一方面,我们不用时间了,我们现在都政策实施了,但有一个地方的政策没实施,我们拿它对比不就好了。这个我们假设空间是一样的,这样我们也可以得到相同时间不同空间的反事实推断的结果

E[Y(1)D=0]=E[Y0(1)D=0]=E[Y0(1)D=1]E[Y(1)|D=0] = E[Y_0(1)|D=0]=E[Y_0(1)|D=1]

于是乎,我们就有了:

ATET^=E[Y(1)D=1]E[Y(1)D=0]\hat{ATET} = E[Y(1)|D=1]-E[Y(1)|D=0]

回到例子,一样的,我们现在都到了三明医改后的时期了,但此时,还是有地方没有实施三明医改,于是乎,我们拿这个地方假装为三名医改前的时期的工资水平。但很显然,也是不合理的,毕竟不同地区的工资水平不一样。

于是乎我们在想,我们计算它的趋势就好了,就跟我们算未来工资的时候,我们会想通货膨胀率是否会比工资增长的快呢?因此我们同时考虑时间和空间的话,就最好了

E[Y0(1)D=1]=E[Y0(0)D=1]+(E[Y0(1)D=0]E[Y0(0)D=0])E[Y_0(1)|D=1]= E[Y_0(0)|D=1] +(E[Y_0(1)|D=0]-E[Y_0(0)|D=0])

同样的我们也会假设,这两个地区的工资增长可能是一样的,这个假设看着就稍微合理了一些(当然你不能拿两个国家形式完全不一样的比),换更严谨的说法:处理与对照的变化趋势是一致的

E[Y0(1)Y0(0)D=1]=E[Y0(1)Y0(0)D=0]E[Y_0(1)-Y_0(0)|D=1] = E[Y_0(1)-Y_0(0)|D=0]

然后我们代入:

ATET^=E[Y(1)D=1]E[Y0(1)D=1]=E[Y(1)D=1](E[Y0(0)D=1]+(E[Y0(1)D=0]E[Y0(0)D=0]))E[Y(1)D=1](E[Y(0)D=1]+(E[Y(1)D=0]E[Y(0)D=0]))=(E[Y(1)D=1]E[Y(1)D=0]处理前后的处理组)(E[Y(0)D=1E[Y(0)D=0]处理前后的对照组)\begin{aligned} \hat{ATET} &= E[Y(1)|D=1]-E[Y_0(1)|D=1] \\ &= E[Y(1)|D=1] - (E[Y_0(0)|D=1] +(E[Y_0(1)|D=0]-E[Y_0(0)|D=0])) \\ &\approx E[Y(1)|D=1] - (E[Y(0)|D=1] +(E[Y(1)|D=0]-E[Y(0)|D=0])) \\ &=(\underbrace{E[Y(1)|D=1] - E[Y(1)|D=0]}_{处理前后的处理组}) - (\underbrace{E[Y(0)|D=1 - E[Y(0)|D=0]}_{处理前后的对照组}) \end{aligned}

估计量的标准误

那么,标准误呢? 我们只进行了点估计,对于标准误,我们会用到线性回归 同样的,我们假设两个变量,对于上述的例子: SMiSM_i代表三明地区,当i = 0 时,我们不妨假设是莆田;而YGiYG_i代表了医改的处理,当i=0时,我们认为在这个时间之前是没有宏观政策的影响。那么YY即代表了工资水平,则有

Yi=β0+β1SMi+β2YGi+β3SMiYGi+eiY_i = \beta_0 + \beta_1\cdot SM_i + \beta_2 \cdot YG_i + \beta_3 \cdot SM_i *YG_i + e_i

在这里,β0+β1\beta_0+\beta_1是三明地区没实现医改前的工资,β0+β2\beta_0+\beta_2是莆田地区实现医改后的工资。β1\beta_1即从控制组转向处理组的增量,β2\beta_2是干预前到干预后的增量。那么若我们全部把虚拟变量打开,即β0+β1+β2+β3\beta_0+\beta_1+\beta_2+\beta_3是医改后三明地区的工资。因此β3\beta_3即是干预前后,从莆田到三明的工资增量影响,即是ATET^\hat{ATET}

假设

我们之前提到了,我们一个假设在于控制组和处理组的增量相同,即平行趋势。那么很容易想到,若无法满足平行趋势,那么自然也会产生偏误。因此我们需要去验证这种平行关系是否存在。若平行趋势不存在时,我们可以使用合成控制法解决,可以整合多个城市来构建一个合成城市(Pooling),类似于(市与省的关系),使其趋势与目标地区都吻合。但显然,如果我们使用聚合数据,我们就没有办法构建置信区间(因为我们没办法得到β0\beta _0β1\beta_1)。当然缺少具体医生的工资时,我们仍然可以通过均值来估计DID从而推测因果效应,但由于是个体在一个均值水平上聚合,我们自然无法考虑到每个人的工资的异质性(不同职称),所以无法求解方差。