凡是搞计量经济的,都关注这个号了
邮箱:econometrics666@126.com
所有计量经济圈方法论丛的code程序, 宏微观数据库和各种软件都放在社群里.欢迎到计量经济圈社群交流访问.
关于DID的最新进展,参看:1.120篇DID双重差分方法的文章合集, 包括代码,程序及解读, 建议收藏!2.诚实双重差分法DID, 面板事件研究法和Bacon分解的经典应用文!3.前沿: 多期或渐进或交叠DID, 如何进行平行趋势检验呢?4.多期DID或渐进DID或交叠DID, 最新Stata执行命令整理如下供大家学习,5.DID前沿: 5种方法估计事件研究的因果效应, 并使用绘制系数和置信区间, 详细代码和数据,6.事件研究法开展政策评估和因果识别, 分享8篇提供数据和代码的文章,7.推荐用渐进(多期)DID和事件研究法开展政策评估的论文及其实现数据和代码!8.机器学习已经与政策评估方法, 例如事件研究法结合起来识别政策因果效应了!9.多期DID前沿方法大讨论, e.g., 进入-退出型DID, 异质性和动态性处理效应DID, 基期选择问题等,10.面板数据政策评估方法(DID等)的最新进展与相关应用, 包括机器学习和因子估计法,11.DID相关前沿问题“政策交错执行+堆叠DID+事件研究”, 附完整slides,12.前沿, 合成双重差分法SDID方法介绍和示例, 附code和数据!13.前沿, 模糊双重差分法FDID方法介绍和示例, 附code和数据!正文
*完整版code放在计量社群里的,可以自行下载运行。① TWFE估计多期DID
*1.使用TWFE估计多期DID或者说交错DID,代码如下,以下结果经过调试都可以直接运行*use bacon_example.dta, clear*为受到政策影响的州创建滞后/领先项,所谓的lag/lead项,对于未受到政策影响的州用0填充,这允许在每个州发生 `treat` 和 `time_to_treat` 之间的交互,否则,可能会有一些NA值出现。g time_to_treat = year - _nfd //_nfd为政策发生的年份,这里就是时间上的动态项replace time_to_treat = 0 if missing(_nfd)g treat = !missing(_nfd) //这个州是否受到政策影响*通过构建shifted_tt变量,把time_to_treat为负数的变成非负数g shifted_ttt = time_to_treat - r(min)*使用reghdfe进行回归,同时控制年份和州固定效应,在州级别进行聚类reghdfe asmrs treat#shifted_ttt pcinc asmrh cases, a(stfips year) vce(cluster stfips)levelsof shifted_ttt, l(times)replace coef = _b[1.treat#`t'.shifted_ttt] if shifted_ttt == `t'replace se = _se[1.treat#`t'.shifted_ttt] if shifted_ttt == `t'g ci_bottom = coef - 1.96*sekeep time_to_treat coef se ci_** 创建连接的系数散点图,使用 rcap 中包含的 CI和水平和垂直方向为0的线local bottom_range = r(min)twoway (sc coef time_to_treat, connect(line)) ///(rcap ci_top ci_bottom time_to_treat)///(function y = 0, range(time_to_treat)) ///(function y = 0, range(`bottom_range' `top_range') horiz), ///xtitle("Time to Treatment") caption("95% Confidence Intervals Shown")
② Sun 和 Abraham (2020)估计多期DID
当然,如前所述,这种TWFE分析受到 Sun 和 Abraham (2020) 的批评。我们使用 Stata 中的 eventstudyinteract 命令估计 Sun 和 Abraham建议的方法。先自行安装 eventstudyinteract命令。*Sun and Abraham (2020)的方法进行估计的代码如下,都已经经过调试,可以直接使用,并给予了注释。use bacon_example.dta, clear*为受到政策影响的州创建滞后/领先项,所谓的lag/lead项* 这允许在每个州发生 `treat` 和 `time_to_treat` 之间的交互* 否则,可能会有一些NA出现,并且估计值将被关闭g time_to_treat = year - _nfdreplace time_to_treat = 0 if missing(_nfd)g never_treat = missing(_nfd)* 手动为处理组创建相对时间指标,这里只用了-9到16区间,你可以将全部区间-21到27用起来*(请注意,假设这些领先/滞后项之外的任何影响为 0)local tname = abs(`t') //令tname为t的绝对值,免得生成变量名称为g_m-1g g_m`tname' = time_to_treat == `t' //当time_to_treat等于1,则生成g_m1 = 1g g_`t' = time_to_treat == `t'eventstudyinteract asmrs g_*, cohort(_nfd) control_cohort(never_treat) covariates(pcinc asmrh cases) absorb(i.stfips i.year) vce(cluster stfips) //cohort()分类变量,对应于每个单位的初始政策处理时间。如果有单位接受多次政策处理,Sun and Abraham (2020)将初始政策处理时间定义为基于第一次处理。对于从未受政策处理过的单位,应将此分类变量设置为缺失。//control_cohort()二元变量,可以是从未接受政策处理的单位或最后接受处理的单位。如果使用最后一个接受政策处理的单位作为对照队列,则排除最后一个队列接受政策处理的时间段。* 在撰写本文时,系数矩阵未标记,因此我们不能使用 _b[] 和 _se[]g coef = 0 if time_to_treat == -1g se = 0 if time_to_treat == -1replace coef = T[1,colnumb(T,"g_m`tname'")] if time_to_treat == `t'replace se = T[2,colnumb(T,"g_m`tname'")] if time_to_treat == `t'replace coef = T[1,colnumb(T,"g_`t'")] if time_to_treat == `t'replace se = T[2,colnumb(T,"g_`t'")] if time_to_treat == `t'g ci_bottom = coef - 1.96*sekeep time_to_treat coef se ci_*keep if inrange(time_to_treat, -9, 16)* 创建连接的系数散点图,使用 rcap 中包含的 CI和水平和垂直方向为 0 的线local bottom_range = r(min)twoway (sc coef time_to_treat, connect(line)) ///(rcap ci_top ci_bottom time_to_treat)///(function y = 0, range(time_to_treat)) ///(function y = 0, range(`bottom_range' `top_range') horiz), ///xtitle("Time to Treatment with Sun and Abraham (2020) Estimation") caption("95% Confidence Intervals Shown")
*完整版code放在计量社群里的,可以自行下载运行。**R软件操作代码
library(data.table)
wranglinglibrary(fixest)
dat = fread("https://raw.githubusercontent.com/LOST-STATS/LOST-STATS.github.io/master/Model_Estimation/Data/Event_Study_DiD/bacon_example.csv")
dat[, treat := ifelse(is.na(_nfd
), 0, 1)]
dat[, time_to_treat := ifelse(treat==1, year - _nfd
, 0)]
mod_twfe = feols(asmrs ~ i(time_to_treat, treat, ref = -1) + pcinc + asmrh + cases | stfips + year, cluster = ~stfips, data = dat)
iplot(mod_twfe, xlab = 'Time to treatment', main = 'Event study: Staggered treatment (TWFE)')
1.免费4门课程, 因果推断1和2, IV, 份额移动IV和高级DID, 附数据,代码,讲义和阅读清单,2.哈佛“数据科学导论”课程对所有人免费开放!包括机器学习和回归分析等各种方法!3.加拿大经济学会主席的"机器学习"课程可以学习了! 共计20份Slides直指ML前沿!4.耶鲁开设“应用实证方法”P.hd课程, 强逻辑, 好文献, 重实操, 真前沿, 送slides和笔记!5.诺奖得主Angrist的因果推断课程文献读物单子再次更新了, 还提供了其他三门课程,6.全面且前沿的因果推断课程, 提供视频, 课件, 书籍和经典文献,7.美国博士用4年整理了写论文的各章实用资料, 包括课程, 软件, 研究, 投稿和工作等,8.MIT经济系50门开放课程对中国学者开放, 包括计量经济学等各类经济学课程!9.MIT斯隆商学院研究生课程对国内免费开放, 在家就能学习世界一流商学院的课程!10.从入门到进阶的Python数据分析手册, 课程内容完全免费!11.疫情期计量课程免费开放!面板数据, 因果推断, 时间序列分析与Stata应用1.“显著不显著的后背是什么, 非(半)参估计里解决内生性”,2.“计量社群里关于使用交互项还是中介效应分析开展机制研究的讨论”,3.“为啥面板数据回归中, 即使X对Y的解释程度很大, 但R-square一般都很小?”,4.多期DID中使用双向固定效应可能有问题! 又如何做平行趋势检验? 多期DID方法的最新进展如何?,5.收入和年龄等变量是将其转化成有序离散变量还是当成连续变量进行回归呢?6.控制变量就能影响结果显著性, 所以存在很大操作空间, 调参数是常用手段吗?7.回归中常数项显著说明模型中有遗漏变量问题?8.审稿人有义务告诉你回归中可能的遗漏变量么?9.针对很多实证问题的讨论, 随手保存的部分内容以飨学者,10.未引入交互项主效应为正, 引入后变为负, 解释出来的故事特别好, 主效应符号确实增强了故事性,11.双向固定效应多期DID最新进展和代码汇总, 关于控制变量和固定效应选取的讨论,12.逐年匹配的PSM-DID操作策略, 多时点panel政策评估利器,13.多期DID前沿方法大讨论, e.g., 进入-退出型DID, 异质性和动态性处理效应DID, 基期选择问题等,14.针对经济学领域中介效应模型问题的回应和理性讨论,15.讨论a(b)对b(a)的新方向论文, 经济学期刊分区问题, 3个机制存在时计量模型设计问题下面这些短链接文章属于合集,可以收藏起来阅读,不然以后都找不到了。