查看原文
其他

PSM倾向匹配详细步骤和程序, 附上最详细的操作代码和解读!

因果推断研究小组 计量经济圈 2022-05-11

凡是搞计量经济的,都关注这个号了

箱:econometrics666@sina.cn

所有计量经济圈方法论丛的code程序, 宏微观数据库和各种软件都放在社群里.欢迎到计量经济圈社群交流访问.

编辑:计量经济圈;上半部分作者,周支瑞,复旦大学附属肿瘤医院放射治疗在读博士;下半部分作者:计量经济圈 Inno.静;转载请注明出处。

中国工业企业数据库匹配160大步骤的完整程序和相应数据(戳前面看看)

关于各种匹配方法可参看:1. PSM倾向匹配Stata操作详细步骤和代码,干货十足,2.处理效应模型选择标准,NNM和PSM,赠书活动,3.PSM和马氏匹配已淘汰, '遗传匹配'成因果推断匹配之王,4.PSM, RDD, Heckman, Panel模型的操作程序, selective文章精华系列,5.广义PSM,连续政策变量因果识别的不二利器,6.PSM-DID, DID, RDD, Stata程序百科全书式的宝典,7.在教育领域使用IV, RDD, DID, PSM多吗? 使用具体References,8.分位数DID, PSMDID, 政策前协变量平衡性检验操作步骤和案例,9.逐年匹配的PSM-DID操作策略, 多时点panel政策评估利器,10.执行PSM的标准操作步骤, 不要再被误导了,11.PSM匹配后如何保留配对样本? 1:1, 1:4或更多情况呢?12.逐年PSM匹配后再DID识别因果的实证范文, 这就是逐年PSM-DID的操作范式!13.英诺丁汉大学校长为你讲解逐年PSM匹配-DID方法的操作, 并配上自己写的一篇范文!14.内生性问题和倾向得分匹配, 献给准自然试验的厚礼,15.粗化精确匹配CEM文献推荐, 程序步骤可复制,16.DID, 合成控制, 匹配, RDD四种方法比较, 适用范围和特征,17.匹配方法(matching)操作指南, 值得收藏的16篇文章,18.中国工业企业数据库匹配160大步骤的完整程序和相应数据,19.Match匹配估计做敏感性检验的最新方法, 让不可观测变量基础上的选择无处遁形,20.无需检查协变量平衡性的CEM匹配, 到底有多神气和与众不同,21.因果推断中的匹配方法:最全回顾和前景展望,22.内生性问题和倾向得分匹配, 献给准自然试验的厚礼,23.倾向值匹配与因果推论,史上最全面精妙的锦囊,24.匹配还是不匹配?这真是个值得考虑的问题,25.匹配比OLS究竟好在哪里?这是一个问题,26.倾向匹配分析深度(Propsensity matching analysis),27.倾向得分匹配PSM, 你真的用对了吗? 对主流期刊86篇文章分析与总结!28.中文刊上用倾向得分匹配PSM和内生转换模型ESM的实证文章有哪些?不看至少需要收藏一下29.倾向得分匹配PSM, 你真的用对了吗? 对主流期刊86篇文章分析与总结30.内生转换模型vs内生处理模型vs样本选择模型vs工具变量2SLS31.ESP内生转化概率模型是什么, 如何做, 如何解释, 为什么需要它? 32.Heckman模型out了,内生转换模型掌控大局33.因果效应中的双重稳健估计值, 让你的估计精准少误34.加权DID, IPW-DID实证程序百科全书式的宝典

试验设计中,匹配的目的在于确保干预效应估计是建立在可比个体之间的不同结果的基础上。最简单的匹配方式是将干预组和对照组中协变量值相同的两个个体进行配对分析。但是,如果协变量并不是某一个变量,而是一组变量时,这种简单的匹配方式也就不再适用,而是采用倾向得分匹配方式进行匹配。倾向性匹配得分(PSM)分析,主流统计学软件SAS、Stata、SPSS(22.0以上版本)、R语言均可实现。但SAS难度较高,不推荐;SPSS虽然操作简便,但是仅能实现1:1匹配,如无特殊需求可以尝试。笔者重点推荐使用Stata或者R语言完成PSM分析。下面笔者将以实例演示的形式讲解Stata软件在倾向性匹配得分中的应用。
1.安装psmatch2统计包。
命令如下:
.ssc install psmatch2
需要在联网状态下键入上述命令,然后软件自动搜索对应的程序包进行安装,成功安装后会有以下提示:
checking psmatch2 consistency and verifying not already installed...
installing into .\ado\plus\...
installation complete.(出现此提示表示安装完成)
为了验证是否成功安装以及查看psmatch2命令的帮助菜单,可在命令窗口键入
.help psmatch2
如果能顺利弹出帮助文件,表示安装成功,可正常使用。
2.数据准备
数据如下图所示,共有10个变量,614个观测,试验组185例,对照组429例。treat变量即为分组变量,“1”=试验组,“0”=对照组。age, educ, black, hispan, married, nodegree, re74, re75为协变量, re78为结局变量。事实上,倾向性匹配得分分析是要建立一个以分组变量(treat)为因变量,各个协变量(age, educ, black, hispan, married, nodegree, re74, re75)为自变量的回归方程。而结局变量(re78)在PSM过程中几乎不参与建模。
图1. 数据整理
3.数据分析及命令解读
命令窗口键入如下命令:
.gen tmp = runiform() 
.sort tmp (以上两步对所有观测值进行随机排序)
.psmatch2 treat age educ black hispan married nodegree re74 re75, out(re78) logit neighbor(1) common caliper(.05) ties
.pstest, both
.psgraph
命令解读:
以下是帮助菜单中psmatch2语法格式,
psmatch2 depvar [indepvars] [if exp] [in range] [, outcome(varlist) pscore(varname) neighbor(integer) radius caliper(real) mahalanobis(varlist) ai(integer) population altvariance kernel llr kerneltype(type) bwidth(real) spline nknots(integer) common trim(real) noreplacement descending odds index logit ties quietly w(matrix) ate]
简单说就是:psmatch2 因变量 协变量,[选择项]。重点解读命令语句中选择项的含义。本例中选择“nearest neighbor matching within caliper”匹配方法。out(re78)指明结局变量。logit指定使用logit模型进行拟合,默认的是probit模型。neighbor(1)指定按照1:1进行匹配,如果要按照1:3进行匹配,则设定为neighbor(3),本例中因对照组样本量有限,仅适合1:1进行匹配。common强制排除试验组中倾向值大于对照组最大倾向值或低于对照组最小倾向值。caliper(.05)试验组与匹配对照所允许的最大距离为0.05。ties强制当试验组观测有不止一个最优匹配时同时记录。
pstest, both做匹配后均衡性检验,理论上说此处只能对连续变量做均衡性检验,对分类变量的均衡性检验应该重新整理数据后运用χ2检验或者秩和检验。但此处对于分类变量也有一定的参考价值。
psgraph对匹配的结果进行图示。
4.结果解读
4.1模型拟合结果,此处无太多实际意义。

图2. 回归结果
4.2试验组可匹配的观测概览,按照命令中设定的匹配规则,试验组有8例患者未能匹配到合适对照。
图3. 匹配情况概览
4.3结果解读的重点应该是对stata新生成的中间变量的解读。打开数据编辑窗口,会发现软件自动生成了几个新变量:其中_pscore是每个观测值对应的倾向值;_id是自动生成的每一个观测对象唯一的ID(事实上这列变量即是对_pscore排序);_treated表示某个对象是否试验组;_n1表示的是他被匹配到的对照对象的_id(如果是1:3匹配,还会生成_n2, _n3);_pdif表示一组匹配了的观察对象他们概率值的差。为了观察方便可以按照id变量进行排序,排序后结果如下图所示:
图4. 匹配后的数据
匹配后数据整理进行统计分析即可。
4.4均衡性检验结果
图5. 均衡性检验结果
由均衡性检验结果可知,(1)各变量匹配后在试验组和对照组间是均衡的。(2)只有educ这个变量匹配前后试验组较对照组p值无变化,匹配前该变量试验组和对照组就无差别,匹配后不太可能出现差异,因此在建模的时候也可以考虑把educ这个变量排除,事实证明排除这个变量后匹配结果更为理想,读者可自行尝试。需要再次强调的是,此处理论上说只能对连续变量做均衡性检验,对分类变量的均衡性检验应该重新整理数据后运用χ2检验或者秩和检验等方法。
4.5匹配结果的图示化

图6.
 匹配结果 
5.Stata命令汇总
.ssc install psmatch2 #安装程序包
.use "F:\lalonde.dta" #调用F盘存储数据
.gen tmp = runiform() 
.sort tmp #对所有观测随机排序
.psmatch2 treat age educ black hispan married nodegree re74 re75, out(re78) logit neighbor(1) common caliper(.05) ties #PSM分析
.pstest, both #均衡性检验
.psgraph #图示匹配结果

最后留下两个问题给大家思考:
问题1:倾向性匹配得分分析这么牛,是不是可以替代设计良好的随机对照试验?
问题2:PSM既然可以很好的均衡基线特征,统计分析时继续运用多元回归是否还有必要?

题目
凡事有利必有弊!PSM肯定不是完美无缺的(废话,如果PSM完美无缺,那还要随机对照试验干什么?)。大家觉得PSM这种方法有何缺陷呢?当然,也可以顺便谈谈PSM的优点。
计量经济圈资深圈友:Inno·静,贡献倾向得分匹配分析代码
第一种:
教程: 
倾向匹配分析深度(Propsensity matching analysis)
安装系统包:ssc install psmatch2

统计缺失值:misstable sum smoke2_new qa1age employ2014 cfps2010edu_best qe1_best urban qq301 qg307siops feduc meduc

建模:probit smoke2_new qa1age employ2014 cfps2010edu_best qe1_best urban qq301 qg307siops feduc meduc

计算得分:predict pscore, p

匹配:psmatch2 smoke2_new, pscore(pscore) noreplacement
attnd med_per fasmoke3_why $xlist, pscore(myscore) comsup boot reps($breps) dots

第二种:
psmatch2  smoke2_new qa1age employ2014 cfps2010edu_best qe1_best urban qq301 feduc meduc, out(income) logit neighbor(1) common caliper(.05) ties

pstest, both

psgraph

简单说就是:psmatch2 因变量 协变量,[选择项]。重点解读命令语句中选择项的含义。本例中选择“nearest neighbor matching within caliper”匹配方法。out(re78)指明结局变量。logit指定使用logit模型进行拟合,默认的是probit模型。neighbor(1)指定按照1:1进行匹配,如果要按照1:3进行匹配,则设定为neighbor(3),本例中因对照组样本量有限,仅适合1:1进行匹配。

common强制排除试验组中倾向值大于对照组最大倾向值或低于对照组最小倾向值。caliper(.05)试验组与匹配对照所允许的最大距离为0.05。ties强制当试验组观测有不止一个最优匹配时同时记录。

pstest, both做匹配后均衡性检验,理论上说此处只能对连续变量做均衡性检验,对分类变量的均衡性检验应该重新整理数据后运用χ2检验或者秩和检验。但此处对于分类变量也有一定的参考价值。

psgraph对匹配的结果进行图示。

第三种:
global ylist logmed_per5

global treat fasmoke1_why

global xlist falcohol3_why fasmokenum2_why smoke_longth logindinc

global xlist falcohol3_why logindinc

pscore $treat $xlist, pscore(mypscore) blockid(myblock) detail,if household_hsy==1

psgraph, treated($treat)pscore(mypscore)

gen logitpscore = log(mypscore/(1-mypscore))

sum logitpscore

qui psmatch2 $treat, outcome($ylist) pscore(mypscore) caliper(.01138) neighbor(1)

pstest $xlist, treated($treat) both graph, if household_hsy==1

drop mypscore myblock


关于一些计量方法的合辑,各位学者可以参看如下文章:实证研究中用到的200篇文章, 社科学者常备toolkit”、实证文章写作常用到的50篇名家经验帖, 学者必读系列过去10年AER上关于中国主题的Articles专辑AEA公布2017-19年度最受关注的十大研究话题, 给你的选题方向2020年中文Top期刊重点选题方向, 写论文就写这些。后面,咱们又引荐了使用CFPS, CHFS, CHNS数据实证研究的精选文章专辑!这40个微观数据库够你博士毕业了, 反正凭着这些库成了教授Python, Stata, R软件史上最全快捷键合辑!关于(模糊)断点回归设计的100篇精选Articles专辑!关于双重差分法DID的32篇精选Articles专辑!关于合成控制法SCM的33篇精选Articles专辑!最近80篇关于中国国际贸易领域papers合辑!最近70篇关于中国环境生态的经济学papers合辑!使用CEPS, CHARLS, CGSS, CLHLS数据库实证研究的精选文章专辑!最近50篇使用系统GMM开展实证研究的papers合辑!
关于相关计量方法视频课程,文章,数据和代码,参看 1.面板数据方法免费课程, 文章, 数据和代码全在这里, 优秀学人好好收藏学习!2.双重差分DID方法免费课程, 文章, 数据和代码全在这里, 优秀学人必须收藏学习!3.工具变量IV估计免费课程, 文章, 数据和代码全在这里, 不学习可不要后悔!4.各种匹配方法免费课程, 文章, 数据和代码全在这里, 掌握匹配方法不是梦!5.断点回归RD和合成控制法SCM免费课程, 文章, 数据和代码全在这里, 有必要认真研究学习!6.空间计量免费课程, 文章, 数据和代码全在这里, 空间相关学者注意查收!7.Stata, R和Python视频课程, 文章, 数据和代码全在这里, 真的受用无穷!
下面这些短链接文章属于合集,可以收藏起来阅读,不然以后都找不到了。

2.5年,计量经济圈近1000篇不重类计量文章,

可直接在公众号菜单栏搜索任何计量相关问题,

Econometrics Circle




数据系列空间矩阵 | 工企数据 | PM2.5 | 市场化指数 | CO2数据 |  夜间灯光 | 官员方言  | 微观数据 | 内部数据计量系列匹配方法 | 内生性 | 工具变量 | DID | 面板数据 | 常用TOOL | 中介调节 | 时间序列 | RDD断点 | 合成控制 | 200篇合辑 | 因果识别 | 社会网络 | 空间DID数据处理Stata | R | Python | 缺失值 | CHIP/ CHNS/CHARLS/CFPS/CGSS等 |干货系列能源环境 | 效率研究 | 空间计量 | 国际经贸 | 计量软件 | 商科研究 | 机器学习 | SSCI | CSSCI | SSCI查询 | 名家经验计量经济圈组织了一个计量社群,有如下特征:热情互助最多前沿趋势最多、社科资料最多、社科数据最多、科研牛人最多、海外名校最多。因此,建议积极进取和有强烈研习激情的中青年学者到社群交流探讨,始终坚信优秀是通过感染优秀而互相成就彼此的。


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

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