美文网首页Cook RR语言与统计分析
用R完成倾向性得分匹配

用R完成倾向性得分匹配

作者: 六胜一平 | 来源:发表于2020-02-20 15:56 被阅读0次

    倾向性得分匹配是一类基于反事实理论的数据预处理方法,在医学和政策研究中被广泛应用。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。这些都留待我们下回分解。
    Q461157910

    相关文章

      网友评论

        本文标题:用R完成倾向性得分匹配

        本文链接:https://www.haomeiwen.com/subject/jbuxqhtx.html