用R完成倾向性得分匹配

倾向性得分匹配是一类基于反事实理论的数据预处理方法,在医学和政策研究中被广泛应用。R中有几个很优秀的包可用于开展倾向性得分匹配,而其中功能较强、知名较广、使用方便的当属Matchit,这个包与cobalt包联合使用,基本能完成PSM全流程分析。
下面我们用一个简单的例子,来演示一下如何用上述两个包完成一次倾向性得分匹配。我们用到的数据集是Matchit包自带的lalonde数据,此套数据用来评估某项就业政策对个人收入的影响。
我们首先尝试用最近邻方法对数据进行匹配(这是matchit函数采用的默认方法),随后用cobalt包的bal.tab方法来评估匹配的效果。

mt=matchit(formula = treat~age+educ+black+married+nodegree+re74+re75,data = lalonde)
bal.tab(mt)
图1.png

从结果来看匹配效果并不好,所有协变量的Diff.Adj都不够显著。下面再把倾向性得分的核密度图画出来观察。

bal.plot(mt,var.name = 'distance',which = 'both')
图二.jpeg

可见匹配对于数据分布的改善并不多,最近邻匹配对于lalonde数据不是很有效。接下来我们用一些比较高级的方法来进行匹配。

mt=matchit(formula = treat~age+educ+black+married+nodegree+re74+re75,data = lalonde,method = 'genetic')
bal.tab(mt)
bal.plot(mt,var.name = 'distance',which = 'both')
图三.png
图4.jpeg

情况确实有所改善,且匹配后的倾向性得分分布大体重合。
完成倾向性得分匹配后,如何提取匹配好的数据呢,还有如果我们对bal. plot 画的图不满意,或图像不符合杂志社的要求,我们该怎样利用匹配结果自己画图呢。这就需要我们深入解析matchit函数的返回值了,上述工作才能算是learn the hard way。这些都留待我们下回分解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容