互助问答第370期:关于PSM-DID的问题

关于PSM-DID的问题
我的数据排列与stata命令如下所示,通过查找资料知道这个数据是一个多期DID数据,并且根据之前学术苑的推文得知:政策时点不一样的情况下使用逐年匹配较为合适,因此我使用以下命令进行匹配与DID。post是政策实施时间虚拟变量,treat为是否处理组虚拟变量,y是结果变量,X是协变量,post_treat是DID交乘项。
数据:

命令:
(1)应用循环语句逐年匹配
forvalues i=1(1)7{
preserve
keep if year==`i' //capture主要是发现错误会报错且不停止程序运行
set seed 123456 //定义种子值
gen tmp=runiform() //生成随机数——匹配之前必做工作
sort tmp //重新按照tmp降序排列数据
pSMatch2 treat X , ///
outcome(y) logit ate neighbor(1) common caliper(0.05) ties noreplace
//进行1:1的卡尺匹配
pstest X ,both graph //做平衡性检验
drop if _weight==. //删除未进行匹配的样本
save `i'.dta,replace //将匹配的每一年数据导出
restore}
(2)将匹配好的数据合并
use 1.dta,clear
forvalues j=2(1)7{
cap append using `j'.dta //将所有匹配好的数据整合到“1.dta”中}
(3)用合并后的数据做DID
xtset country year
xtreg y post_treat X i.year,fe r
或reghdfe y c.post_treat X,absorb(country year) vce(robust)
问题:
(1)之前推文中有提到应该使用政策实施前的数据进行匹配,那么我这个政策时点不同的情况是否也应该使用实施前的数据,命令又该如何改变呢?
(2)我尝试使用逐年匹配,但是每一年的平衡性检验(pstest)的结果存在差异甚至有的年份匹配后协变量差异增大了。但是一次性匹配则不存在这样的情况【即使用命令一次性匹配所有年份数据:pSMatch2 treat X , outcome(y) logit ate neighbor(1) common caliper(0.05) ties noreplace】
(3)我发现无论匹配之前还是匹配之后,如果不控制时间效应结果则是和我预期相符(post_treat回归系数为负),但是在控制了时间效应之后和我预期完全相反(post_treat回归系数为正),请问这是怎么回事呢?我是否可以选择不控制时间效应呢?
你的样例数据是个面板数据,ABC为处理组对象,DEF为控制组对象,且处理组对象进入政策干预的时间点不同。如果我来做的话,我会依据第一期(year=1)的信息进行匹配,因为这是所有单位都未进入政策干预的唯一时点;匹配之后再进行DID分析。DID分析中,控制时间效应(特别当时间是DID的两个维度之一时)是必须的。
往期回顾:
互助问答第369期:随机效应模型和门限回归
如果您在计量学习和实证研究中遇到问题,有三条途径可以到达我们手里:一是请及时发到邮箱szlw58@126.com;二是加入论文导向计量群(现有10个群);三是直接在微信公众号平台后台留言。专业委员会有40多名编辑都会看,您的问题会得到及时关注!请您将问题描述清楚,任何有助于把问题描述清楚的细节都能使我们更方便地回答您的问题,提问细则参见:实证研究互助平台最新通知(点击文末阅读原文查看详情)
如果您想成为问题解答者,在帮助他人过程中巩固自己的知识,请发邮件至szlw58@126.com(优先)或给本公众号留言或加微信793481976给群主留言,我们诚挚欢迎热心的学者和学生。具体招募信息请参见:实证研究互助平台志愿者团队招募公告
鲜活的事例更有助于提高您的研究水平,呆板的教科书让人生厌。如果您喜欢,请提出您的问题,也请转发推广!
(欢迎转发,欢迎分享;转载请注明出处,引用和合作请留言。本文作者拥有所有版权,原创文章最早发表于“学术苑”。任何侵权行为将面临追责!)
学术指导:张晓峒老师 Ben Lambert
本期解答人:中关村大街
编辑:张咪
统筹:左川 易仰楠
技术:刘子瑗

请顺手点个“在看”吧~
阅读原文