使用did包进行多期DID分析

本例中,样例数据来自 Callaway 和 Sant'Anna (2020),研究问题是各州提高最低工资对县级青少年就业率影响。

样例数据集包含 2003 年至 2007 年 500 个县级青少年就业率的数据,其中一些州在 2004 年首次接受治疗,也有一些在 2006 年或 2007 年接受治疗。

主要变量 lemplemp 是县级青少年就业率的对数值,first.treatfirst.treat 是某个州首次提高最低工资的时间,可能是 2004 年、2006 年或 2007 年;yearyear 是年份; countryrealcountryreal 是每个县的 ID。

首先进行包的安装和样例数据的调入。

复制代码
writeLines('PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")  #创建路径配置文件.Renviron
Sys.which("make")  #测试配置路径是否成功
options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) #设置镜像
install.packages("did") #从CRAN上下载did包
library(did)  #调用did包
data(mpdta)   #调入样例数据

一、平均处理效应

did 包使用 att_ gt 命令估计处理组平均处理效应 (ATT)。

复制代码
out <- att_gt(yname = "lemp",   
              gname = "first.treat",  
              idname = "countyreal",
              tname = "year",
              xformla = ~1,
              data = mpdta,
              est_method = "reg"
              )
summary(out)

#> Call:
#> att_gt(yname = "lemp", tname = "year", idname = "countyreal", 
#>     gname = "first.treat", xformla = ~1, data = mpdta, est_method = "reg")
#> 
#> Group-Time Average Treatment Effects:
#>  Group Time ATT(g,t) Std. Error [95% Simult.  Conf. Band]  
#>   2004 2004  -0.0105     0.0259       -0.0796      0.0586  
#>   2004 2005  -0.0704     0.0312       -0.1535      0.0127  
#>   2004 2006  -0.1373     0.0375       -0.2373     -0.0372 *
#>   2004 2007  -0.1008     0.0352       -0.1947     -0.0069 *
#>   2006 2004   0.0065     0.0229       -0.0547      0.0677  
#>   2006 2005  -0.0028     0.0203       -0.0568      0.0513  
#>   2006 2006  -0.0046     0.0179       -0.0522      0.0430  
#>   2006 2007  -0.0412     0.0210       -0.0972      0.0148  
#>   2007 2004   0.0305     0.0159       -0.0118      0.0728  
#>   2007 2005  -0.0027     0.0164       -0.0465      0.0410  
#>   2007 2006  -0.0311     0.0183       -0.0797      0.0176  
#>   2007 2007  -0.0261     0.0179       -0.0737      0.0215  
#> ---
#> Signif. codes: `*' confidence band does not cover 0
#> 
#> P-value for pre-test of parallel trends assumption:  0.16812
#> Control Group:  Never Treated,  Anticipation Periods:  0
#> Estimation Method:  Outcome Regression

可视化结果如下:

复制代码
ggdid(out, ylim = c(-.25,.1))

上图中的红色圆点是政策冲击前的平均治疗效果 (采用了 95% 的置信区间),可以看出红色圆点在 95% 的置信水平下趋近于 0,符合平行趋势假设。蓝色圆点表示接受政策冲击后的平均治疗效果,在本案例中表示提高最低工资水平对县级青少年就业率的影响。

二、时间动态处理效应

did 包使用 aggte 估计动态处理效应。

复制代码
es <- aggte(out, type = "dynamic")
summary(es)

#> Call:
#> aggte(MP = out, type = "dynamic")
#> 
#> Overall ATT:  
#>      ATT Std. Error     [95%  Conf. Int.]  
#>  -0.0772     0.0205   -0.1175      -0.037 *
#> 
#> Dynamic Effects:
#>  Event time Estimate Std. Error [95% Simult.  Conf. Band]  
#>          -3   0.0305     0.0153       -0.0102      0.0712  
#>          -2  -0.0006     0.0132       -0.0356      0.0345  
#>          -1  -0.0245     0.0145       -0.0630      0.0141  
#>           0  -0.0199     0.0120       -0.0518      0.0120  
#>           1  -0.0510     0.0175       -0.0977     -0.0042 *
#>           2  -0.1373     0.0396       -0.2426     -0.0319 *
#>           3  -0.1008     0.0346       -0.1929     -0.0087 *
#> ---
#> Signif. codes: `*' confidence band does not cover 0
#> 
#> Control Group:  Never Treated,  Anticipation Periods:  0
#> Estimation Method:  Outcome Regression

上面 summary 的输出结果中,event time 表示个体第一次接受政策冲击时的处理效应,比如 event time=0 表示个体刚好处于政策冲击期的处理效应,event time=-1 表示个体在接受政策冲击前一年的处理效应。

上图与多期 DID 平均处理效应的图相似,但这里将政策冲击看作一个事件,横坐标轴表示事件发生时间。通过对每段时期的处理效应进行估计,上图表示个体参与治疗的总体处理效应。可以看到随着提高最低工资的政策实行越久,青少年失业率降低幅度先增大再减少。

三、总体平均处理效应 (ATE)

复制代码
group_effects <- aggte(out, type = "group")
summary(group_effects)

#> Call:
#> aggte(MP = out, type = "group")
#> 
#> Overall ATT:  
#>     ATT Std. Error     [95%  Conf. Int.]  
#>  -0.031     0.0125   -0.0554     -0.0066 *
#> 
#> Group Effects:
#>  Group Estimate Std. Error [95% Simult.  Conf. Band]  
#>   2004  -0.0797     0.0274       -0.1388     -0.0207 *
#>   2006  -0.0229     0.0165       -0.0585      0.0127  
#>   2007  -0.0261     0.0176       -0.0641      0.0120  
#> ---
#> Signif. codes: `*' confidence band does not cover 0
#> 
#> Control Group:  Never Treated,  Anticipation Periods:  0
#> Estimation Method:  Outcome Regression

从总体平均处理效应 (ATE) 的结果来看,提高最低工资会使青少年就业率下降 3.1%,在 10% 的置信水平下显著。

相关推荐
Omics Pro13 小时前
~30,000+引用!理论2005,R包2008,多组学集成AI增强
开发语言·数据库·人工智能·算法·机器学习·自然语言处理·r语言
天桥下的卖艺者2 天前
chrals.CTI函数升级版发布,增加了CTI衍生的脂肪指数提取
数据库·r语言
小师兄吃牛肉3 天前
什么是R语言?如何快速学习R语言
开发语言·学习·r语言
喆星时瑜4 天前
Win10/11 安装 R 与 RStudio 详细图文教程
开发语言·r语言·安装
喆星时瑜4 天前
R语言基础语法入门
开发语言·r语言
喆星时瑜5 天前
R语言向量语法的详细教程
开发语言·r语言
临床数据科学和人工智能兴趣组7 天前
在R语言中, 使用 as.factor() 函数转换数值型变量
开发语言·r语言
babe小鑫16 天前
信息与计算科学专业应届生面试 怎么证明自己能解决业务问题
学习·r语言·excel
深兰科技18 天前
深兰科技受邀参与第二届中国(南宁)—东盟人工智能场景应用对接会,深化AI国际合作
人工智能·qt·r语言·scala·symfony·智能机器人·深兰科技
赵钰老师19 天前
基于ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析
python·arcgis·数据分析·r语言