查看原文
其他

统计计量 | 因果推理的匹配方法及其在Stata中的实现

数据Seminar 2022-12-31


本文转载自公众号计量经济学服务中心

来源:Barbara Sianesi,IFS,Stata Users’ Group Meeting

匹配,尤其是在倾向评分方面,已经成为一种非常流行的评价方法。事实上,匹配是选择匹配(或重新加权)的比较组的最佳方法,该比较组看起来像感兴趣的治疗组。

在本文中,将在一般的因果推理问题中介绍匹配方法,强调它们的优缺点,并简要概述不同的匹配估计量。然后,使用psmatch2演示Stata中基于真实数据的实际示例。然后,我将展示如何实现其中一些估计,并强调一些实现问题

本文主要包括两部分,第一部分为课件,第二部分为相应的文档代码

Part1因果推理的匹配方法及其在Stata中的实现

Part2对应文档代码

// PSMATCH2 EXAMPLE  

use nsw_psid, clear
desc
 more
ta treated
 more
 
 
//  Propensity score           
/************************************************************************/
 more
dprobit treated age black hispanic married educ nodegree re75
 more
cap drop score
predict double score
 more


//  Common support            
/************************************************************************/
 more
summarize score if treated==1, detail
 more
summarize score if treated==0, detail
 more
density2 score, group(treated)
 more
psgraph, treated(treated) pscore(score) bin(50)
 more

 
//  Nearest neighbour without replacement without caliper                  
/************************************************************************/
 more
psmatch2 treated, pscore(score) outcome(re78) noreplacement
 more
pstest2 age black hispanic married educ nodegree re75, sum graph
 more

 
//  Nearest neighbour without replacement within caliper                   
/************************************************************************/
 more
psmatch2 treated, pscore(score) outcome(re78) noreplacement caliper(0.01)
 more
summarize _support if treated==1
display  1-r(mean)
 more
psgraph
 more
pstest2 age black hispanic married educ nodegree re75, sum graph
 more


//  Nearest neighbour with replacement                    
/************************************************************************/
 more
psmatch2 treated, pscore(score) outcome(re78) 
 more
summarize _pdif, detail
 more
psmatch2 treated, pscore(score) outcome(re78) caliper(0.01)
 more
summarize _support if treated==1
display  1-r(mean)
 more
tab _weight if treated==0
 more 
psgraph
 more
density2 score, g(treated) 
 more
density2 score, g(treated) m(_weight)
 more
pstest2 age black hispanic married educ nodegree re75, sum graph
 more
density2 re75 if re75<40000, g(treated) 
 more
density2 re75 if re75<40000, g(treated) m(_weight)
 more

 
// >1-to-1  matching           
/************************************************************************/
 more
psmatch2 treated, pscore(score) outcome(re78) neigh(10)
 more
psmatch2 treated, pscore(score) outcome(re78) neigh(20)
 more

psmatch2 treated, pscore(score) outcome(re78) neigh(10) cal(0.01)
 more
tab _nn if treated==1
 more
psmatch2 treated, pscore(score) outcome(re78) neigh(20) cal(0.01)
 more
tab _nn if treated==1
 more

 
// Kernel matching                
/************************************************************************/
 more
psmatch2 treated, pscore(score) outcome(re78) kernel k(epan)   bw(0.06)
 more
psmatch2 treated, pscore(score) outcome(re78) kernel k(normal) bw(0.06)
 more
psmatch2 treated, pscore(score) outcome(re78) kernel k(epan)   bw(0.01)
 more
psmatch2 treated, pscore(score) outcome(re78) kernel k(normal) bw(0.01)
 more


//  Mahalanobis-metric matching        
/************************************************************************/
 more
psmatch2 treated, mahal(age black hispanic married educ nodegree re75) outcome(re78) 
 more
pstest2 age black hispanic married educ nodegree re75, sum graph
 more
psmatch2 treated, mahal(score age black hispanic married educ nodegree re75) outcome(re78) 
 more
pstest2 age black hispanic married educ nodegree re75, sum graph
 more


//  ATNT            
/************************************************************************/
 more
gen treat0 = 1-treated
 more
psmatch2 treat0 age black hispanic married educ nodegree re75, outcome(re78)
* Remember to take -1*(effect) for ATNT.
 more
sum _pdif, d
 more
psmatch2 treat0 age black hispanic married educ nodegree re75, outcome(re78) cal(0.01)
 more
tab _weight if treat0==0
 more
pstest2 age black hispanic married educ nodegree re75, sum graph
 more 
psmatch2 treated age black hispanic married educ nodegree re75, outcome(re78) kernel ate  
 more
film re78 treated age black hispanic married educ nodegree re75, ate  
 more
qui regress re78 treated##c.age treated##black treated##hispanic treated##married treated##c.educ treated##nodegree treated##c.re75
 more
margins, dydx(treated)
 more
margins, dydx(treated) over(treated)
 more





星标⭐我们不迷路!
想要文章及时到,文末“在看”少不了!

点击搜索你感兴趣的内容吧


往期推荐


统计计量 | 陆铭的13个实证研究锦囊(下)

统计计量 | 双重差分法(DID)安慰剂检验的做法:随机抽取500次?

统计计量 | 陆铭的13个实证研究锦囊(上)

统计计量 | DID最新进展汇总:命令、书单、论文、文章资源汇总

数据治理 | 带你学Python之 环境搭建与基础数据类型介绍篇

统计计量 | 梁捷:因果识别——挑战经典理论的实证研究工具

数据可视化 | 如何利用色彩来佐证观点






数据Seminar




这里是大数据、分析技术与学术研究的三叉路口


推荐 | 青酱


    欢迎扫描👇二维码添加关注    

点击下方“阅读全文”了解更多

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存