精华内容
下载资源
问答
  • DID双重差分模型Day1

    2021-01-20 11:36:12
    1985年普林斯顿大学的Ashenfelter和Card的一篇论文中,第一次引入了DID模型;2001年哈佛大学公共卫生学院学者使用DID模型对中国海南省的医疗报销付费制度改革进行了分析;2001年杜克大学学者对美国保险制度对于妇幼...
  • 双重差分模型DID学习笔记

    万次阅读 多人点赞 2020-06-22 20:17:50
    双重差分模型 (Difference-Differences, DID)是政策评估的非实验方法中最为常用的一种方法,其中交互项是DID的灵魂。 交互项形式拥有各种形式,包括(1)传统DID;(2)经典DID;(3)异时DID;(4)广义DID;以及...

    1.DID介绍

    1.1 特点

    双重差分模型 (Difference-Differences, DID)是政策评估的非实验方法中最为常用的一种方法,其中交互项是DID的灵魂
    交互项形式拥有各种形式,包括(1)传统DID;(2)经典DID;(3)异时DID;(4)广义DID;以及(5)异质性DID。下面分别介绍这几种。

    1.2 传统DID

    双重差分法是研究“处理效应”(treatment effects)的流行方法。一般来说,DID的使用场景为,在面板数据中,个体可分为两类,即受到政策冲击的“处理组”(treatment group)与未受政策影响的“控制组”(control group)。重点落在政策冲击和是否受到政策冲击,通过引入虚拟变量来实现。即:
    政策冲击前后(pre-post)设为0和1,是否受到政策冲击(control-treat)设为0和1.
    在这里插入图片描述
    在这里插入图片描述
    因而,模型常设计为
    在这里插入图片描述
    处理组虚拟变量 beta 捕捉了处理组的组别效应(处理组与控制组的固有差别),处理期虚拟变量lambda控制了处理期的时间效应(处理期前后的固有时间趋势), X为其他控制变量,而交互项xigema 则代表了处理组在处理期的真正效应(受到政策冲击的效应),这正是我们关心的处理效应。然后进行OLS估计即可。

    1.3 经典DID

    经典DID是在传统DID模型上控制了个体固定效应(individual fixed effects)和时间固定效应(time fixed effects),并去除单独变量。模型如下:
    在这里插入图片描述
    模型解释如下:
    (1)u 为个体固定效应。加入个体固定效应之后,就不必再放入处理组虚拟变量(treat i),否则会引起多重共线性问题。因为前者包含比后者更多的信息(前者控制到个体层面,而后者仅控制到组别层面)。
    (2)入 为时间固定效应。同理,加入时间固定效应就不用再加处理期虚拟变量(post t)。否则,将导致严格多重共线性,因为前者包含比后者更多的信息(前者控制了每一期的时间效应,而后者仅控制处理期前后的时间效应)
    (3)注意:估计方法依然是OLS,但须使用“聚类稳健标准误”(cluster-robust standard errors)。

    1.4 异时DID

    在传统与经典DID的模型设定中,一个隐含假设是,处理组的所有个体开始受到政策冲击的时间均完全相同。但有时也会遇到每位个体的处理期不完全一致的情形(heterogeneous timing);比如,某项试点政策在不同城市分批推出。此时,可使用“异时DID”(heterogeneous timing DID)。
    异时DID的关键在于,既然每位个体的处理期不完全一致,则处理期虚拟变量也因个体而异,故应写为post(i,t),既依赖于个体 i,也依赖于时间 t。模型设定为如下任意一种形式:

    在这里插入图片描述
    在这里插入图片描述
    举一个5期面板数据在stata的应用:
    1)定义变量:定义因个体而异的处理期虚拟变量post(i,t);
    2)识别受影响:post1(i,t) = (0,0,1,1,1)代表第1位个体从第3期开始受到政策处理;post2(i,t) = (0,0,0,1,1)代表第2位个体从第4期开始受到政策处理;post3(i,t) = (0,0,0,0,0)代表从未受到政策冲击(属于控制组)。

    1.5 广义DID

    以上各种DID方法均假设存在处理组与控制组的区别,但有时某项政策在全国统一铺开,此时只有处理组,并没有控制组,是否还能使用DID呢?答案是“能”,可以尝试“广义DID”(generalized DID)。
    使用广义DID的重要前提是,虽然所有个体均同时受到政策冲击,但政策对于每位个体的影响力度并不相同,不妨以 intensity(i) 来表示。
    在这里插入图片描述
    在这里插入图片描述
    其中,交互项系数为我们关注的对象。此外对于广义DID,文献中也有门槛区分组别的方法,即人为地设定一个门槛值 c,根据 变量是否超过此门槛值来定义处理组与控制组。因为将连续变量压缩为二分变量损失了不少信息,故在实践中已不多见。
    在这里插入图片描述

    1.6 异质性DID

    传统的处理效应模型一般假设“同质性处理效应”(homogeneous treatment effects),即所有个体的处理效应都相同。显然,此假定太苛刻,在实践中难以成立。更为合理的假定则为“异质性处理效应”(heterogeneous treatment effects),即允许每位个体的处理效应不尽相同。具体而言:
    1)在DID的框架下,引入异质性处理效应,即在于对交互项(treatpost)的调整,即引入在组别上的交互项(treatpost*group)。
    2)模型建立上,在经典DID的模型中,再引入三重交互项 ,构建异质性DID模型。
    在这里插入图片描述
    由上式可知,对于group=0 那类处理组个体,其处理效应为 s。而对于 group=1那类处理组个体,其处理效应为(s+t) 。因而其处理效应是异质的(只要三重交互项的系数显著)。
    3)推广到多雷,只要将将所有个体分为 M 类,设立 (M -1) 个类别虚拟变量。

    2. DID 平行趋势检验

    注意,DID应用的前提是未受到政策冲击时,treat组和control组的变化趋势是平行的,因而进行平行趋势检验是绝对必要的。
    从文献来看,最为常见的展示是否符合平行趋势假设的检验方法有两个:
    其一,对比不同组别因变量均值的时间趋势;其二,回归中加入各时点虚拟变量与政策变量的交互项,若政策或称为处理发生前的交互项系数不显著,则表明的确有着平行趋势。

    • 第一种的方法(图片来源于stata连享会)为:
      在这里插入图片描述
    • 第二种方式分为:代码操作和图形输出

    安装命令:安装 coefplot
    生成各时点虚拟变量与政策变量的交互项的交互项
    进行回归
    输出图形
    例子学习于:多期DID:平行趋势检验图示
    详见学习链接

    3 实践举例

    3.1 所有个体开始受到政策冲击的时间均完全相同

    例子参考学习自:
    连享会-倍分法DID详解 (一):传统 DID

    /* 模拟数据的生成 */
    ///设定60个观测值,设定随机数种子
    clear all
    set obs 60
    set seed 10101
    gen id = _n
    // 每一个数值的数量扩大11倍,再减去前六十个观测值,即60*11-60 = 600,为60个体10年的面板数据
    expand 11
    drop in 1/60
    count
    ///id分组生成时间标识
    bysort id : gen time = _n + 1999
    xtset id time
    ///生成协变量x1, x2
    gen x1 = rnormal(1,7)
    gen x2 = rnormal(2,5)
    ///生成个体固定效应和时间固定效应
    sort time id
    by time : gen ind = _n
    sort id time
    by id : gen T = _n
    ///生成treat和post变量,以2005年为接受政策干预的时点,id30-60的个体为处理组,其余为控制组
    gen D = 0
    replace D = 1 if id > 29
    gen post = 0
    replace post = 1 if time >= 2005
    ///将基础数据结构保存成dta文件,命名为DID_Basic_Simu.dta,默认保存在当前的 working directory 路径下
    save "DID_Basic_Simu.dta",replace
    

    3.1.1 政策效果不随时间而变DID

    ///调用本文第二部分生成的基础数据结构
    use "DID_Basic_Simu.dta",clear
    ///生成两种潜在结果,并且合成最终的结果变量,令政策的真实效果为10
    bysort id : gen y0 = 10 + 5*x1 + 3*x2 + T +ind + rnormal()
    bysort id : gen y1 = 10 + 5*x1 + 3*x2 + T +ind + rnormal() if time < 2005
    bysort id : replace y1 = 10 + 5*x1 + 3*x2 + 10 + T +ind + rnormal() if time >= 2005
    gen y = y0 + D*(y1-y0)
    ///去除协变量和个体效应对y的影响,画出剩余残差的图像
    xtreg y x1 x2,fe r
    predict e, ue
    binscatter e time, line(connect) by(D)
    ///输出生成的图片,令格式为800*600
    graph export "article1_1.png",as(png) replace width(800) height(600)
    ///多种回归形式
    reg y c.D#c.post x1 x2 i.time i.id,robust
    eststo reg
    xtreg y c.D#c.post x1 x2 i.time,absorb(id) robust
    eststo areg
    reghdfe y y c.D#c.post x1 x2, absorb(id time) vce(robust)
    estout *, title("The Comparison of Actual Paramerer Values") ///
    		 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(x1 x2 c.D#c.post)
    ///ESA及图示法
    ///预先生成年度虚拟变量
    tab time,gen(year)
    reg y i.D#i.time x1 x2, vce(robust)
    reghdfe y c.D#(c.year2-year10) x1 x2, absorb(id time) vce(robust)
    coefplot, ///
       keep(c.D#c.year2 c.D#c.year3 c.D#c.year4 c.D#c.year5 c.D#c.year6 c.D#c.year7 c.D#c.year8 c.D#c.year9 c.D#c.year10)  ///
       coeflabels(c.D#c.year2 = "-4"   ///
       c.D#c.year3 = "-3"           ///
       c.D#c.year4 = "-2"           ///
       c.D#c.year5 = "-1"           ///
       c.D#c.year6  = "0"             ///
       c.D#c.year7  = "1"              ///
       c.D#c.year8  = "2"              ///
       c.D#c.year9  = "3"              ///
       c.D#c.year10 = "4")            ///
       vertical                             ///
       yline(0)                             ///
       ytitle("Coef")                 ///
       xtitle("Time passage relative to year of adoption of implied contract exception") ///
       addplot(line @b @at)                 ///
       ciopts(recast(rcap))                 ///
       scheme(s1mono)
    ///输出生成的图片,令格式为800*600
    graph export "article1_3.png", as(png) replace width(800) height(600)
    

    3.1.2 政策效果随时间而变DID

    ///调用本文第二部分生成的基础数据结构
    use "DID_Basic_Simu.dta",clear
    ///生成两种潜在结果,并且合成最终的结果变量,令政策的真实效果随时间发生变化,即(5*T-T),由于从2005年开始接受干预,因此,每年的政策效果应为2428323640.
    bysort id: gen y0 = 10  + 5 * x1 + 3 * x2 + T + ind  + rnormal()
    bysort id: gen y1 = 10  + 5 * x1 + 3 * x2 + T + ind  + rnormal() if time < 2005
    bysort id: replace y1 = 10  + 5 * x1 + 3 * x2 + 10 + T + ind  + rnormal() if time >= 2005
    gen y = y0 + D * (y1 - y0)
    ///去除协变量和个体效应对y的影响,画出剩余残差的图像
    xtreg y x1 x2 , fe r
    predict e,ue
    binscatter e time, line(connect) by(D)
    ///输出生成的图片,令格式为800*600
    graph export "article1_1.png",as(png) replace width(800) height(600)
    ///多种回归形式
    reg y c.D#c.post x1 x2 i.time i.id,	r
    eststo reg
    xtreg y c.D#c.post x1 x2 i.time, r fe
    eststo xtreg_fe
    areg y c.D#c.post x1 x2 i.time, absorb(id) robust
    eststo areg
    reghdfe y c.D#c.post x1 x2, absorb(id time) vce(robust)
    eststo reghdfe
    estout *, title("The Comparison of Actual Paramerer Values") ///
    		 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(x1 x2 c.D#c.post)
    ///ESA及图示法
    ///预先生成年度虚拟变量
    tab time, gen(year)
    reghdfe y i.D#i.time x1 x2, vce(robust) absorb(id time)
    reghdfe y c.D#(c.year2-year10) x1 x2, absorb(id time) vce(robust)
    coefplot, ///
       keep(c.D#c.year2 c.D#c.year3 c.D#c.year4 c.D#c.year5 c.D#c.year6 c.D#c.year7 c.D#c.year8 c.D#c.year9 c.D#c.year10)  ///
       coeflabels(c.D#c.year2 = "-4"   ///
       c.D#c.year3 = "-3"           ///
       c.D#c.year4 = "-2"           ///
       c.D#c.year5 = "-1"           ///
       c.D#c.year6  = "0"             ///
       c.D#c.year7  = "1"              ///
       c.D#c.year8  = "2"              ///
       c.D#c.year9  = "3"              ///
       c.D#c.year10 = "4")            ///
       vertical                             ///
       yline(0)                             ///
       ytitle("Coef")                 ///
       xtitle("Time passage relative to year of adoption of implied contract exception") ///
       addplot(line @b @at)                 ///
       ciopts(recast(rcap))                 ///
       scheme(s1mono)
     ///输出生成的图片,令格式为800*600
     graph export "article1_4.png",as(png) replace width(800) height(600)		 
    
    

    3.2 个体受到政策冲击的时间不相同

    倍分法DID详解 (二):多时点 DID (渐进DID)
    所有个体开始受到政策冲击的时间均完全相同:Standard DID
    在这里插入图片描述
    个体开始受到政策冲击的时间不相同:Time-varying DID
    在这里插入图片描述

     /* 模拟数据的生成 */
     ///设定60个观测值,设定随机数种子
    clear all
    set obs 60 
    set seed 10101
    gen id =_n
    /// 每一个数值的数量扩大11倍,再减去前六十个观测值,即60*11-60 = 600,为60个体10年的面板数据
    expand 11
    drop in 1/60
    count
    ///id分组生成时间标识
    bysort id: gen time = _n+1999
    xtset id time
    ///生成协变量以及个体和时间效应
    gen x1 = rnormal(1,7)
    gen x2 = rnormal(2,5)
    sort time id
    by time: gen ind = _n
    sort id time
    by id: gen T = _n
    gen y = 0
    ///生成处理变量,此时D为Dit,设定1-202004年接受冲击,21-402006年,36-602008年
    gen D = 0
    gen birth_date = 0
    forvalues i = 1/20{
    	replace D = 1 if id  == `i' & time >= 2004
    	replace birth_date = 2004 if id == `i'
    }
    forvalues i = 21/40{
    	replace D = 1 if id  == `i' & time >= 2006
    	replace birth_date = 2006 if id == `i'
    }
    forvalues i = 41/60{
    	replace D = 1 if id  == `i' & time >= 2008
    	replace birth_date = 2008 if id == `i'
    }
    ///将基础数据结构保存成dta文件,命名为DID_Basic_Simu.dta,默认保存在当前的 working directory 路径下
    save "DID_Basic_Simu_1.dta", replace
    

    3.2.1 政策效果不随时间而变DID

    /* 政策效果不随时间而变DID */
    ///调用生成的基础数据文件
    use "DID_Basic_Simu_1.dta",clear
    ///Y的生成,使得接受冲击的个体的政策真实效果为10
    bysort id: gen y0 = 10  + 5 * x1 + 3 * x2 + T + ind  + rnormal()
    bysort id: gen y1 = 10  + 5 * x1 + 3 * x2 + T + ind  + 10 + rnormal() if time >= 2004 & id >= 1 & id <= 20
    bysort id: replace y1 = 10  + 5 * x1 + 3 * x2 + T + ind  + 10 + rnormal() if time >= 2006 & id >= 21 & id <= 40
    bysort id: replace y1 = 10  + 5 * x1 + 3 * x2 + T + ind  + 10 + rnormal() if time >= 2008 & id >= 41 & id <= 60
    bysort id: replace y1 = 10  + 5 * x1 + 3 * x2 + T + ind  + rnormal() if y1 == .
    replace y = y0 + D * (y1 - y0)
    ///去除个体效应和协变量对Y的影响,得到残差并画图
    xtreg y x1 x2 , fe r
    predict e, ue
    binscatter e time, line(connect) by(D)
    ///输出生成的图片,令格式为800*600
    graph export "article2_1.png",as(png) replace width(800) height(600)
    ///保存并输出多个命令的结果
    reg y c.D x1 x2 i.time i.id, r
    eststo reg
    xtreg y c.D x1 x2 i.time, r fe
    eststo xtreg_fe
    areg y c.D x1 x2 i.time, absorb(id) robust
    eststo areg
    reghdfe y c.D x1 x2, absorb(id time) vce(robust)
    eststo reghdfe
    estout *, title("The Comparison of Actual Parameter Values") ///
    		 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(x1 x2 D)
    ///ESA及图示法   Time-varying DID 和 Event Study Approach 的结合
    ///用当前年份减去个体接受处理的年份,得到相对的时间值event,将 -4 期之前的时间归并到第 -4 期,由于部分个体没有多于 -4 期的时间
    ///然后生成相对时间值的虚拟变量,eventt,并将首期设定为基准对照组
    gen event = time - birth_date
    replace event = -4 if event <= -4
    tab event, gen(eventt)
    drop eventt1
    xtreg y eventt* x1 x2 i.time, r fe
    coefplot, ///
       keep(eventt*)  ///
       coeflabels(eventt2 = "-3"   ///
       eventt3 = "-2"             ///
       eventt4 = "-1"             ///
       eventt5 = "0"              ///
       eventt6  = "1"             ///
       eventt7  = "2"             ///
       eventt8  = "3"             ///
       eventt9  = "4"             ///
       eventt10 = "5")           ///
       vertical                       ///
       yline(0)                       ///
       ytitle("Coef")               ///
       xtitle("Time passage relative to year of adoption of implied contract exception") ///
       addplot(line @b @at)                 ///
       ciopts(recast(rcap))                 ///
       scheme(s1mono)
    ///输出生成的图片,令格式为800*600
    graph export "article2_2.png",as(png) replace width(800) height(600)
    

    3.2.2 政策效果随时间而变DID

    /*政策效果随时间而变DID*/
    ///调用生成的基础数据文件
    use "DID_Basic_Simu_1.dta",clear
    ///Y的生成,设定真实的政策效果为当年为3,并且每年增加3
    bysort id: gen y0 = 10  + 5 * x1 + 3 * x2 + T + ind + rnormal()
    bysort id: gen y1 = 10  + 5 * x1 + 3 * x2 + T + ind  + (time - birth + 1 ) * 3 + rnormal() if time >= 2004 & id >= 1 & id <= 20
    bysort id: replace y1 = 10  + 5 * x1 + 3 * x2 +  T + ind  + (time - birth + 1 ) * 3  + rnormal() if time >= 2006 & id >= 21 & id <= 40
    bysort id: replace y1 = 10  + 5 * x1 + 3 * x2 +  T + ind  + (time - birth + 1 ) * 3  + rnormal() if time >= 2008 & id >= 41 & id <= 60
    bysort id: replace y1 = 10  + 5 * x1 + 3 * x2 +  T + ind  + rnormal() if y1 == .
    replace y = y0 + D * (y1 - y0)
    ///去除个体效应和协变量对Y的影响,得到残差并画图
    xtreg y x1 x2 , fe r
    predict e, ue
    binscatter e time, line(connect) by(D)
    ///输出生成的图片,令格式为800*600
    graph export "article2_3.png",as(png) replace width(800) height(600)
    ///保存并输出多个命令的结果
    reg y c.D x1 x2 i.time i.id, r
    eststo reg
    xtreg y c.D x1 x2 i.time, r fe
    eststo xtreg_fe
    areg y c.D x1 x2 i.time, absorb(id) robust
    eststo areg
    reghdfe y c.D x1 x2, absorb(id time) vce(robust)
    eststo reghdfe
    estout *, title("The Comparison of Actual Parameter Values") ///
    		 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(x1 x2 D)
    ///ESA及图示法   Time-varying DID 和 Event Study Approach 的结合
    ///用当前年份减去个体接受处理的年份,得到相对的时间值event,将 -4 期之前的时间归并到第 -4 期,由于部分个体没有多于 -4 期的时间
    ///然后生成相对时间值的虚拟变量,eventt,并将首期设定为基准对照组
    gen event = time - birth_date
    replace event = -4 if event <= -4
    tab event, gen(eventt)
    drop eventt1
    xtreg y eventt* x1 x2 i.time, r fe
    coefplot, ///
       keep(eventt*)  ///
       coeflabels(eventt2 = "-3"   ///
       eventt3 = "-2"           ///
       eventt4 = "-1"           ///
       eventt5 = "0"           ///
       eventt6  = "1"             ///
       eventt7  = "2"              ///
       eventt8  = "3"              ///
       eventt9  = "4"              ///
       eventt10 = "5")            ///
       vertical                             ///
       yline(0)                             ///
       ytitle("Coef")                 ///
       xtitle("Time passage relative to year of adoption of implied contract exception") ///
       addplot(line @b @at)                 ///
       ciopts(recast(rcap))                 ///
       scheme(s1mono)
    ///输出生成的图片,令格式为800*600
    graph export "article2_2.png",as(png) replace width(800) height(600)
    

    本文学习总结的文章分别如下:
    开学礼包:如何使用双重差分法的交叉项(迄今最全攻略)
    多期DID:平行趋势检验图示
    连享会-倍分法DID详解 (一):传统 DID
    倍分法DID详解 (二):多时点 DID (渐进DID)

    展开全文
  • DID-双重差分模型

    千次阅读 2020-04-12 20:19:38
    DID-双重差分模型 DID(difference-in-differences model)也叫双重差分模型。 现在要修一条铁路,铁路是条线,所以必然会有穿过的城市和没有被穿过的城市。记Di=1 如果城市i被穿过,Di=0 如果城市i没有被穿过。 ...

    DID-双重差分模型

    DID(difference-in-differences model)也叫双重差分模型。

    现在要修一条铁路,铁路是条线,所以必然会有穿过的城市和没有被穿过的城市。记Di=1 如果城市i被穿过,Di=0 如果城市i没有被穿过。
    现在我们比较好奇铁路修好以后,被铁路穿过的城市是不是经济增长更快了?我们该怎么做呢?

    一开始的想法是,我们把Di=1的城市的GDP加总,减去Di=0的城市的GDP加总,然后两者一减,即E(Yi|Di=1)-E(Yi|Di=0),这样我们就算出了两类城市的GDP的平均之差。

    这样做不用说肯定有问题。万一被铁路穿过的城市在建铁路之前GDP就高呢?为了解决这个问题,我们需要观察到至少两期,第一期是建铁路之前,第二期是建铁路之后。我们先把两类城市的GDP做两期之差,即:

    公式1

    这是第一次差分,经过这一步,我们实际上算出了每个城市GDP的增长(率,如果取log之后),也就是GDP的趋势。完了之后,计算:

    公式2
    这是第二次差分。这一步就把两类城市在修建铁路之前和之后的GDP增长率的差异给算出来了,这就是我们要的处理效应,即修建铁路之后对城市经济的促进作用。这个东西你还可以换一个写法。记T=1 如果时间为建铁路之后,T=0如果时间为建铁路之前,那么我们可以得到一个表:

    表格1
    Treated代表在某一期,某一类城市是不是建了铁路。第零期肯定没有建铁路,第一期只有Di=1的城市建了铁路。所以Treated=Di*T。因此我们把方程写成:
    公式3
    对时间差分,得到:

    公式4
    再次差分,取期望:

    公式5
    可见,gamma就是我们想要估计的处理效应。所以实际做的时候,可以直接跑。
    公式6
    这个式子的回归,得到的交叉项的系数就是所要估计的处理效应。

    用一个图表示就是:
    图片1
    所以看清楚了,这里DID最关键的假设是common trend,也就是两个组别在不处理的情况下,y的趋势是一样的。那么你会说了,铁路穿过的城市可能本身GDP也高,而GDP高的城市按照理论GDP增长率可能更高可能更低,所以common trend的假设可能是不对的,那怎么办?如果这个问题存在,我们可以进一步假设在控制了某些外生变量之后,common trend是对的,比如上个问题,我们可以控制城市在t=0期的GDP level。当我们控制其他变量之后,自然不能直接减两次了,我们需要用上面说的回归式子,即run the following OLS:

    公式7

    参考资料:
    https://www.zhihu.com/question/24322044/answer/27534813

    展开全文
  • 双重差分法(DID

    千次阅读 2020-06-02 14:34:40
    DID数学公式 我们假设Pi=1表示在这个城市投放了广告,Pi=0表示没有投放广告。 Δ = E ( Y ∣ P i = 1 ) − E ( Y ∣ P i = 0 ) \Delta=E(Y|Pi=1)-E(Y|Pi=0) Δ=E(Y∣Pi=1)−E(Y∣Pi=0) P=0 P=1 组间差异 T = 0 T=0 ...

    假设我们有一个广告方案P,没有经过ABTest直接在在一些城市放量了,怎么来判断这个广告的有效性(gmv)呢?能不能直接比较投放广告的城市和没有投放广告的城市之间gmv的差值呢
    Δ g m v = a v g ( 投 放 广 告 城 市 的 g m v ) − a v g ( 没 有 投 放 广 告 城 市 的 g m v ) \Delta_{gmv}=avg(投放广告城市的gmv)-avg(没有投放广告城市的gmv) Δgmv=avg(广gmv)avg(广gmv)

    这样可以得到两类城市之间gmv的差值。这样其实有个问题,万一投放活动的城市本身gmv就高呢?比如北京和杭州,两者之间存在天然的差别,直接这么比较肯定不合理。因此我们就想能不能观察两期,第一期是没有投放活动之前,第二期是投放活动之后

    杭州(未投放)北京(投放)组间差异
    投放活动前154
    投放活动后2.55.53
    组内变化1.50.5-1

    这里可以看到对于没有投放广告的杭州,他的一个自然变化是上涨了1.5,但是对于投放广告的北京,反而只上涨了0.5,这个一个不幸的消息,广告反而抑制了gmv的增长在这里插入图片描述
    是不是感觉很奇怪,苦思冥想的策略怎么就没有效果呢?真的是这个样子吗?其实不然,北京的gmv已经非常高了,要想再提高非常的困难,反观杭州,gmv的起点非常底,上涨的空间很大,即使什么都不做gmv都上涨了很高。所以在这样的对比是非常的不合理的。(想一想,同样可以找到很多自然上涨不如北京的城市,比如自身就是搞gmv的上海市)。这里最关键的一点是,北京和杭州的自然上涨趋势是不一致的

    在这里插入图片描述
    假设咱们有一个平行世界,在咱们的世界中,北京投放了广告,平行世界中没有投放广告,可以看到,红色的线是北京自然增长的,咱们的活动是有效的。也可以看到北京和杭州的自然增长趋势非常的不同。
    所以这就要求咱们在做对比的时候,选择的对照组一定要跟实验组有相同的增长趋势,怎么找到这样的城市呢?可以通过聚类或者一些其他的规则。比如都有较高的gmv,城市体量差不多,运营时间相差不多等等,通过这些特征我们可以把一些城市给聚集起来,认为他们是一类,未来有相同的增长趋势。
    上面依然不是正常的AA测试,为什么这么说呢?假如咱们找到了上海,深圳,广州这三个城市跟北京是相似的。并且这三个城市都没有进行投放,再假设上海增幅是0.1,深圳增幅是0.15,广州增幅是0.2,如果选择了上海,广告的增益就是0.4(0.5-01),深圳是0.35,广州是0.3,为了证明广告的效果好,我肯定直接选择跟上海对比,这就很值得品味了。

    DID数学公式

    我们假设Pi=1表示在这个城市投放了广告,Pi=0表示没有投放广告。
    Δ = E ( Y ∣ P i = 1 ) − E ( Y ∣ P i = 0 ) \Delta=E(Y|Pi=1)-E(Y|Pi=0) Δ=E(YPi=1)E(YPi=0)

    P=0P=1组间差异
    T = 0 T=0 T=0 α \alpha α α + γ \alpha + \gamma α+γ γ \gamma γ
    T = 1 T=1 T=1 α + β \alpha+\beta α+β α + β + γ + δ \alpha + \beta + \gamma + \delta α+β+γ+δ γ + δ \gamma + \delta γ+δ
    组内变化 β \beta β β + δ \beta+\delta β+δ δ \delta δ

    Y i t = α P i + β T + γ ( P i ∗ T ) + δ i t Y_{it}=\alpha P_i+\beta T + \gamma (P_i * T)+\delta_{it} Yit=αPi+βT+γ(PiT)+δit

    展开全文
  • DID实现命令以及基于倾向得分PSM的DID实现,含DID实现各项条件检验
  • 论文分享1 & 双重差分方法 DID [关于双重差分方法 DID](https://blog.csdn.net/Claire_chen_jia/article/details/106903842) 关于双重差分方法 DID

    关于双重差分方法 DID

    政策评估和因果效用

    经典论文 Big Bad Bands?

    相关代码

    ##此代码为stata代码
    
    cd "F:\StataCode\z4_did"
    
    use nlswork  //使用系统自带数据库
    xtset idcode year, delta(1)  //设置面板
    xtdescribe   //描述一下这个面板数据情况
    
    gen age2= age^2
    gen ttl_exp2=ttl_exp^2
    gen tenure2=tenure^2
    
    
    global xlist "grade age age2 ttl_exp ttl_exp2 tenure tenure2 not_smsa south race"
    sum ln_w $xlist  //统计描述相关变量
    
    
    **DID方法-----------------------------------
    gen time = (year >= 77) & !missing(year)  //政策执行时间为1977年
    
    gen treated = (idcode >2000)&!missing(idcode) //政策执行地方为idcode大于2000的地方
    gen did = time*treated  //这就是需要估计的DID,也就所交叉项
    
    reg ln_w did time treated $xlist //这就是一个OLS回归,也可以用diff命令
    xtreg ln_w did time treated $xlist i.year, fe //也可以这去做,会省略掉一个虚拟变量
    
    **PSM-DID方法-------------------------------
    
    ** PSM的部分
    set seed 0001	//定义种子
    gen tmp = runiform() //生成随机数
    sort tmp //把数据库随机整理
    psmatch2 treated $xlist, out(ln_w) logit ate neighbor(1) common caliper(.05) ties //通过近邻匹配,这里可以要outcome,也可以不要它
    pstest $xlist, both graph  //检验协变量在处理组与控制组之间是否平衡
    gen common=_support
    drop if common == 0  //去掉不满足共同区域假定的观测值
    psgraph
    
    ** DID的部分,根据上面匹配好的数据
    reg ln_w did time treated $xlist 
    xtreg ln_w did time treated $xlist i.year, fe
    
    **PSM-DID部分结束--------------------------------------
    
    **DID方法需要满足的五个条件检验------------------------
    
    **1.共同趋势假设检验
    
    tab year, gen(yrdum) //产生year dummy,即每一年一个dummy变量
         forval v=1/7{
    gen treated`v'=yrdum`v'*treated
    }                     //这个相当于产生了政策实行前的那些年份与处理虚拟变量的交互项
    xtreg ln_w did treated*  i.year ,fe  //这个没有加控制变量
    xtreg ln_w did treated* $xlist i.year ,fe //如果did依然显著,且treated*这些政策施行前年份交互项并不显著,那就好
    xtreg ln_w did treated* $xlist i.year if union!=1 ,fe //我们认为工会会影响这个处理组和控制组的共同趋势,因此我们看看union=0的情形
    
    **2.政策干预时间的随机性
    gen time1 = (year >= 75) & !missing(year)  //政策执行时间提前到1975年
    capture drop treated1
    gen treated1= (idcode >2000)&!missing(idcode) //政策执行地方为idcode大于2000的地方
    gen did1 = time1*treated1  //这就是需要估计的DID,也就所交叉项
    
    gen time2 = (year >= 76) & !missing(year)  //政策执行时间提前到1976年
    capture drop treated2
    gen treated2= (idcode >2000)&!missing(idcode) //政策执行地方为idcode大于2000的地方
    gen did2 = time2*treated2  //这就是需要估计的DID,也就所交叉项
    
    xtreg ln_w did1 $xlist i.year,fe 
    xtreg ln_w did2 $xlist i.year,fe //看看这两式子里did1和did2显著不,显著为好
    
    **3.控制组将不受到政策的影响
    gen time3 = (year >= 77) & !missing(year) 
    capture drop treated3 
    gen treated3= (idcode<1600 & idcode>1000)&!missing(idcode) //我们考虑一个并没有受政策影响地方假设其受到政策影响
    gen did3 = time3*treated3  
    xtreg ln_w did3 $xlist i.year,fe //最好的情况是did3不显著,证明控制组不受政策影响
    
    
    **4.政策实施的唯一性,至少证明这个政策才是主要影响因素
    gen time4 = (year >= 77) & !missing(year)  
    capture drop treated4
    gen treated4= (idcode<3000 & idcode>2300)&!missing(idcode) //我们寻找某些受到其他政策影响的地方
    gen did4 = time4*treated4  
    xtreg ln_w did4 $xlist i.year,fe //did4可能依然显著,但是系数变小,证明还受到其他政策影响
    
    **5.控制组和政策影响组的分组是随机的
    
    xi:xtivreg2 ln_w (did=hours tenure) $xlist i.year,fe first //用工具变量来替代政策变量,解决因为分组非随机导致的内生性问题
    
    
    **附加的,一般而言,我们需要看看这个政策的动态影响-------------
         forval v=8/15{
    gen treated`v'=yrdum`v'*treated  
    }               //注意,这里yrdum8就相当于year=78
    	
    reg  ln_w treated*  
    
    xtreg  ln_w treated*, fe
    
    xtreg ln_w treated* i.year,fe 
    
    xtreg ln_w treated* $xlist i.year,fe  //一般而言上面这些式子里的treated*应该至少部分显著
    

    参考资料

    双重差分模型DID学习笔记

    展开全文
  • 通过建立双重差分模型,研究大秦线、侯月线、神黄线3条亿吨级铁路运煤专线开通对地区经济增长的影响,得出以下结论:我国亿吨级铁路运煤专线的开通改变了煤炭资源的空间配置格局和地区能源禀赋,提高了地区间的交通...
  • 双重差分法之空间DID

    千次阅读 2021-07-15 20:48:50
    简单谈一下我本人对空间双重差分模型(Spatial Difference in Difference Model,SDID)几点或许不太成熟的理解。 (本文首发于个人微信公众号DMETP,欢迎关注!) 一、从聚类标准误到空间相关性 当使用面板数据进行...
  • 文章目录1 双重差分 - difference-in-difference -DID 理论与假设1.1 DID介绍1.2 使用时需要满足的假设2 DID + PSM 差异与联用2.1 DID / PSM差异2.2 解决平行趋势假设:DID+PSM连用(最常用)3 三重差分(Difference...
  • 双重差分(Differences-in-Differences,DID),其常用于政策评估效应研究,比如研究‘鼓励上市政策’、‘开通沪港通’、‘开通高铁’、‘引入新教育模式’等效应时,分析效应带来的影响情况。 比如:两类地区A和B,在...
  • did双重差分法介绍

    2021-04-09 18:02:55
    学习链接: https://zhuanlan.zhihu.com/p/48952513 https://zhuanlan.zhihu.com/p/103412389
  • 法来源于计量经济学的综列数据模型,是政策分析和工程评估中广为使用的一种计量经济方法。主要是应用于在混合截面数据集中,评价某一事件或政策的影响程度。该方法的基本思路是将调查样本分为两组,一组是政策或...
  • 请问python有做倾向匹配得分法和双重差分法的包吗?我只找到了一个ctmatch的包,但是无法获得匹配的pscore,DID基本上都是在stata实现的
  • 双重差分法之PSM - DID

    千次阅读 多人点赞 2021-07-23 14:22:38
    这次推文的内容主要是介绍选择偏差及其导致的内生性问题,以及缓解这种内生性问题的倾向得分匹配法(Propensity Score Matching,PSM),并且用一实例介绍一下如何将PSM与DID结合,即PSM - DID在Stata中的具体操作。...
  • 一、双重差分解析 双重差分方法近几年在主流期刊流行起来(这种趋势大概会持续几年),主要原因在于:(1)可以很大程度上避免内生性问题,政策相对于微观经济主体而言一般是外生的,因而不存在逆向因果问题。...
  • 机器学习与双重差分DID

    千次阅读 2018-07-19 16:19:49
    https://mp.weixin.qq.com/s/iHX7JWqigVvSslP5FijBJg
  • 空间双重差分模型,英文简写为SDID,利用的软件为R语言。
  • 双重差分stata

    2021-07-30 18:39:57
    法来源于计量经济学的综列数据模型,是政策分析和工程评估中广为使用的一种计量经济方法。主要是应用于在混合截面数据集中,评价某一事件或政策的影响程度。该方法的基本思路是将调查样本分为两组,一组是政策或...
  • 3.1 两阶段双重差分估计量 3.2 事件法研究 3.3 统计推断 4. Stata 实操 4.1 did2s 命令 4.2 具体案例 5. 结语 6. 参考资料 7. 相关推文     1. 背景介绍 最近一系列文献都表明,当处理组个体...
  • stata双重差分

    2021-08-12 16:39:30
    理论不介绍了,下面放一个之前做过的DID政策评估的项目。 一、背景介绍 研究环境约谈制度对PM2.5排放量的影响,采用55个地级市,2014-2018年5期面板数据,政策实施点是2016年,共5个处理组,50个控制组。以gdp、...
  • 双重差分小介

    2021-07-25 13:27:45
    双重差分,顾名思义就是差分两次。那么差分和我小叮当又有什么关系呢?更何况是差分两次。别急,听我们慢慢道来。 双重差分模型是计量经济学中的一种常见的模型。它的作用是探究一项实验或一个事件的影响,有一丢丢...
  • 简单介绍一下实证论文中双重差分法(DID)的安慰剂检验(Placebo Test)在Stata中如何操作。 (本文首发于个人微信公众号DMETP,是往期两篇推文的合辑,欢迎关注!) 下面的内容根据实际使用的数据集分为两个部分...
  • 双重差分模型了解一下?

    万次阅读 2019-08-31 09:55:43
    总第163篇/张俊红今天给大家介绍一种比较常用分析方法。叫做双重差分法。啥叫个双重差分法呢?我们先不管这个什么法,我们直接来看例子。假如现在市场同学做了一场促销活动,然后...
  • 基于2008-2018年相关数据,利用双重差分DID)模型,考察去产能政策对我国产业结构产生的影响。结果表明,煤炭去产能政策对我国产业结构调整产生较为明显的正向促进效应。一方面, 煤炭去产能政策通过提高煤炭企业...
  • 双重差分法之平行趋势检验

    千次阅读 2021-07-15 20:47:19
    简单介绍一下实证论文中双重差分法(DID)的平行趋势检验(Parallel Trend Test)在Stata中如何操作。 (本文首发于个人微信公众号DMETP,欢迎关注!) 一、平行趋势假定 平行趋势假定是实证论文中使用DID的前提,...
  • 这一章笔记围绕虚拟变量问题展开,主要介绍虚拟变量的引入形式和分析方法,重点介绍双重差分模型的应用方法。
  • 双重差分 difference-in-differences

    千次阅读 2021-03-07 20:00:37
    双重差分吗,就是差分两次。 我们先来举个栗子。 现在要修一条铁路,铁路是条线,所以必然会有穿过的城市和没有被穿过的城市。记Di=1 如果城市i被穿过,Di=0 如果城市i没有被穿过。 现在我们比较好奇铁路修好...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 343
精华内容 137
关键字:

双重差分did