欢迎光临散文网 会员登陆 & 注册

互助问答第48期:面板数据的PSM问题

2020-04-14 20:29 作者:学术苑  | 我要投稿

问题:

各位老师:

你们好!我在做面板数据的PSM时遇到了一个问题,

我希望匹配的控制组与处理组在时间上处于同一期。我采用stata中如下循环进行匹配:

forvalue obs=1/48{

psmatch2 treat Xlag2 if obs==`obs',out(Y) logit neighbor(1) caliper(0.001)  

}

 

Obs代表季度(我的数据是季度数据),我想在PSM后做DID,并参考文献中所说的“使用事件发生前两期的协变量”,我用的是滞后两期的协变量Xlag2。但是运行过程中,出现no observation的错误提示,并且在我将按季度匹配放松到按年度匹配后,依旧出现no observation。但是如果我直接匹配,不限制控制组的时间,则可以得到匹配结果。我想知道如果我想得到控制组与处理组时间一致的匹配结果,有没有什么解决方案?

另外,我的处理组共352个数据,控制组有87550个数据(其中包括处理组公司的其他季度观测值),我不知道这个no observation是否与我的样本有关。

上述问题后续:

我减少协变量个数后,no observation的问题得到了解决,但是我采用如下代码,得到匹配成功的处理组和控制组时,发现匹配成功的样本很少:

gen  treat_new1=0

forvalue year=2007/2018{

psmatch2 treat Xlag2 if year==`year',out(Y) logit neighbor(1) caliper(0.001)  

replace treat_new1=1 if treat==1 & _weight!=.

replace treat_new1=. if _weight==.

}

其中,treat_new1=1代表匹配成功的处理组,treat_new1=0代表对应的控制组,我通过sum treat_new1,发现,似乎只有最后一年匹配成功的处理组和控制组的结果计入了treat_new1中。我觉得可能是代码有写错的地方,因为自己stata水平不是很高。希望老师们看看是不是循环的代码有错?

希望得到老师们的耐心解答,谢谢!


 回答:

 Caliper()放大,neighbor()放大,即可。1:1匹配,给定你的treatment group观测值明显小于control group,caliper还设这么小,一个都匹配不到也不奇怪。

后续问题的解决方案也是改neighbor(),改caliper()!!


本期解答人:曹晖老师

编辑:统计小妹  

统筹:易仰楠

技术:知我者  

往期回顾

互助问答第47期:政策时点不一致DID的问题

互助问答第28期:二值变量及倾向得分匹配PSM问题

互助问答第45期:VAR模型及面板泊松回归系数差异检验问题

互助问答第44期:交互项系数和调节效应存在问题


如果您在计量学习和实证研究中遇到问题,请及时发到邮箱szlw58@126.com,专业委员会有30名编辑都会看,您的问题会得到及时关注!请您将问题描述清楚,任何有助于把问题描述清楚的细节都能使我们更方便地回答您的问题,提问细则参见:实证研究互助平台最新通知


如果您想成为问题解答者,在帮助他人过程中巩固自己的知识,请发邮件至szlw58@126.com(优先)或给本公众号留言或加微信793481976给群主留言,我们诚挚欢迎热心的学者和学生。具体招募信息请参见:实证研究互助平台志愿者团队招募公告


鲜活的事例更有助于提高您的研究水平,呆板的教科书让人生厌。如果您喜欢,请提出您的问题,也请转发推广!


(欢迎转发,欢迎分享;转载请注明出处,引用和合作请留言。本文作者拥有所有版权,原创文章最早发表于“论文导向计量实证社区”。任何侵权行为将面临追责!)



互助问答第48期:面板数据的PSM问题的评论 (共 条)

分享到微博请遵守国家法律