双重差分模型(DID)

作者: pdnbplus | 发布时间: 2024/06/16 | 阅读量: 1604

双重差分模型(DID) -- 潘登同学的计量经济学笔记

基本思想

双重差分法可以理解为对随机分配实验的一种模拟,在没有随机实验的情况下去验证因果关系。

步骤:

  • 分组:对于一个自然实验,其将全部的样本数据分为两组:一组是受到干预影响,即实验组;另一组是没有受到同一干预影响,即对照组;
  • 目标选定:选定一个需要观测的目标指标,如购买转化率、留存率,一般是希望提升的KPI;
  • 第一次差分:分别对在干预前后进行两次差分(相减)得到两组差值,代表实验组与对照组在干预前后分别的相对关系;
  • 第二次差分:对两组差值进行第二次差分,从而消除实验组与对照组原生的差异,最终得到干预带来的净效应。

构造模型

对于每一个个体 $i$,其对应指标的公式化表达如下,类似线性回归的形式 $$ y_{i,t} = \gamma_{s(i)} + \lambda_t + \delta \cdot post + \epsilon_{i,t} $$ 其中$s(i)$表示组别变量,post表示政策实施与否(未实施则为0,实施则为1)

在这里插入图片描述

我们需要计算的DID可以表示为下式:

$$ \hat{\delta} = (\bar{y}_{T,1} - \bar{y}_{T,0}) - (\bar{y}_{C,1} - \bar{y}_{C,1}) $$

即实验组干预前后的均值的差减去对照组干预前后均值的差

将上式的双重差分思想写成经典的双重差分模型: $$ Y_{i,t} = \beta_0 + \beta_1 s(i) + \beta_2 post_{i,t} + \delta s(i)*post_{i,t} + \epsilon_{i,t} $$ 因为只有同时满足是实验组且是政策实施后的群体才能表现出差异,所以重点观察系数$\delta$

数据前提

双重差分利用的是面板数据

样本数据需要满足下面三个假设(第三个需要重点关注):

  1. 线性关系假设: 认为因变量(Treatment)与结果变量存在线性关系
  2. 个体处理稳定性假设(The Stable Unit Treatment Value Assumption,SUTVA)个体的outcome是取决于个体干预变量treatment的一个函数,该假设由两部分组成:
    1. 一致性(Consistency):个体接受处理后所导致的潜在结果是唯一的。(例:我养狗了会变开心,无论是什么狗、不存在因为狗是黑的就不开心)
    2. 互不干预(No interference):个体接受处理后导致的潜在结果不受其他个体处理的影响(例:我在淘宝上领到了红包之后会更愿意买东西,不因为我同事也领了红包就意愿降低了)
  3. 平行趋势假设(Parallel Trend Assumption):实验组和对照组在没有干预的情况下,结果的趋势是一样的。即在不干预的情况下,前后两个时间点实验组与对照组的差值一致。

稳健性检验

共同趋势(CT)检验

画出实验组时期和对照组时期的时间趋势图;若两条线走势完全一样或者基本一致,则满足共同趋势(CT)假设。

或者通过平行趋势检验: $$ Y_{i,t} = \sum_{t=-q}^{-1}\delta_t D_t s(i) + \sum_{t=0}^m\gamma_t D_t s(i)+ \lambda_t + X_{i,t} + \epsilon_{i,t} $$

该模型中包括了政策之前和之后若干期的虚拟变量$D_t$ ,即可用于检验平行趋势是否成立,也可估计政策施行每一期效果具体大小, $\lambda_t$代表时间固定效应。系数 $\delta_t$用于检验平行趋势是否成立,若系数不显著则平行趋势成立;系数$\gamma_t$度量的是政策实行后每一期的效果大小,若显著则说明该期政策效应存在。

安慰剂检验

  1. 选择政策实施前年份进行处理。
    • 假设2013-2015年是研究区间,2014年是政策发生实践。则可以移动区间把2011-2013年设置为样本区间,并假设政策发生在2012年,进行回归。在这样的虚构模型假设下,如果回归结果仍然显著,则可能原来的结果存在偏误。
  2. 选择已知的不受政策影响的群体作为处理组进行回归。
  3. 选择一个完全不受政策敢于影响的因素作为解释变量进行回归。

如果原来的结果稳健的话,虚构模型下的结果都不应该显著。如果显著,就回过头去检查之前的模型和结果是否有问题。

  1. 利用不同的对照组进行回归,看结论是否一致。

如果一致则没有问题。

stata示例

  1. 数据下载地址
  2. 数据背景介绍: 历史上A、B、C、D、E、F、G这7个地区非常相似,然而1994年后E、F和G三个地区(实验组)颁布了一项政策,其余4个地区(控制组)没有。
use panel101,clear


gen time = (year >= 1994)&!missing(year)
gen treated = (country >4)&!missing(country)
egen mean_y=mean(y), by(year treat)

twoway (connect mean_y year if treat==1,sort) (connect mean_y year if treat==0,sort lpattern(dash)), ///
xline(1994,lpattern(dash) lcolor(gray)) ///
ytitle("y") xtitle("年度") ///
ylabel(,labsize(*0.75)) xlabel(,labsize(*0.75)) ///
legend(label(1 "处理组") label( 2 "控制组")) ///图例
xlabel(1990 (1) 1999)  graphregion(color(white)) //白底

在这里插入图片描述

DID估计

use panel101,clear

gen time = (year >= 1994)&!missing(year)
gen treated = (country >4)&!missing(country)

diff y, t(treated) p(time)

在这里插入图片描述

在10%的显著性水平上,政策实施有显著的负效应;

平行趋势检验

以上的基准回归只有当地区在政策前足够相似才能够保证DID提取的是政策的因果效应,所以研究者需要知道两组地区在政策前有多大差异。实现这一目标的方法是将年份虚拟变量乘以实验组虚拟变量,这一交互项就可以捕捉两组地区在每一年份的差异。

如果两组地区的确有着平行趋势的话,那么预期在1994年前的那些交互项的回归结果将不显著,而1994年后的将显著。

// 平行趋势检验
gen Dyear = year-1994
gen Before3 = (Dyear==-3&treated==1)
gen Before2 = (Dyear==-2&treated==1)
gen Before1 = (Dyear==-1&treated==1)
gen Current = (Dyear==0&treated==1)
gen After1 = (Dyear==1&treated==1)
gen After2 = (Dyear==2&treated==1)
gen After3 = (Dyear==3&treated==1)
**将以上交互项作为解释变量进行回归

xtreg y time treated Before3 Before2 Before1 Current After1 After2 After3 i.year, fe
eststo reg

在这里插入图片描述

可以看出Before3 Before2 Before1 的系数均不显著,After1的系数负向显著

采用coefplot命令画图: 查看系数的变化

在这里插入图片描述

结果发现系数在政策前的确在0附近波动,而政策后一年系数显著为负,但很快又回到0附近。这说明实验组和控制组的确是可以进行比较的,而政策效果可能出现在颁布后一年,随后又很快消失。

安慰剂检验

政策的实施确实产生了政策效应,且政策实施前实验组和控制组不存在显著性差异,但是通过DID估计出的政策效应是否受其他政策或因素的影响是未知的,因此需要进行安慰剂检验。

将研究样本设定在1990-1994间,并将政策年份设定在1992年

//安慰剂检验
gen time_new = (year>=1992) & !missing(year)
gen treated_new = (country>4) & !missing(country)
gen did_new = time_new*treated_new
reg y time_new treated_new did_new x1-x3 i.opinion if year<=1994, r

在这里插入图片描述

结果显示,did_new的系数为负,但是不显著,表明可以排除其他潜在的不可观测因素的影响,即估计出的政策效应是稳健的。