1.1 MatchingFrontier Package 简介
MatchingFrontier Package包由哈佛大学的Gary King和Christopher Lucas以及来自MIT的Richard Nielsen三位学者共同开发,该包于2015年首次发布在Github上,现在在CRAN上也可方便下载。
该包主要提供了一个用于因果推断的优化分组匹配效率的算法。作者认为好的匹配方法应该同时在匹配组与对照组的相似度上(消除偏误)和样本规模上(减少方差)同时实现最大化。而现在学界流行的PSM方法仅仅通过倾向得分本身进行匹配,在匹配组与对照组的相似度、模型依赖度、统计效率、偏误等评价指标上都表现欠佳。具体表现为:传统的PSM缺乏一种原则性的解决方案去处理偏误—方差之间如何权衡的问题,也即目前的匹配方法的是通过选择性地修剪观测数据来降低样本数据的不平衡,从而降低模型的依赖度。然而,修剪数据同时又会减少样本量,因而反过来又可能会增大最终估计值的方差。因此,研究者长面临着偏误—方差的权衡困境。
该包作者提出的MatchingFrontier算法实现了对不平衡(在处理组和控制组之间)和样本大小的同步联合优化与精简,优化了分组匹配效率(笔者注:本包最核心用途为生产最优的匹配样本,因此后续还需要进行相应的分析;而标准的PSM分析在计算出ATT值后其分析流程实质上就已全部结束)。本文仅对该包做简要介绍,以期通过对该包的初步介绍,使读者能够更有效地进行后续学习。(参考文献见该包的使用说明和该包作者发表的学术论文—-American Journal of Political Science, Vol. 61, No. 2, April,2017,Pp. 473–489)。
该包主要由4个函数模块构成:
2.1 载入需要的程辑包和数据集
library(MatchingFrontier)
data('lalonde')
lalonde attach(lalonde)
2.2 数据集(lalonde)简介
该数据集为最传统的倾向值匹配分析所用到的数据集(该包对控制组的观测值进行了补充),re78为1978年实际收入(结果变量);treat是否参加就业培训(处理变量);age年龄,educ教育年限,black是否为黑人,hisp是否为拉丁族,married是否结婚,re74、re75为1974和75年的实际收入,u74,u75为1974和75年是否为失业状态;样本共1185个观测
3.1.Computing the Frontier
计算匹配边界,本文仅对连续型度量为例说明也即本文所指平均马氏距离,离散型度量请参见相关文献。
match.on in% c('re78', 'treat'))]
match.on
my.frontier 'treat',outcome = 're78', match.on = match.on)
my.frontier
返回结果显示,997个观测值被Drop,也即消除偏误和减少方差这两个维度同时达到最优化条件的观测值只剩余188个。
3.2 Estimating Effects(估计效应)
my.form my.estimates 're78 ~ treat', mod.dependence.formula = my.form, continuous.vars = c('age', 'education', 're74', 're75'), prop.estimated = .1, means.as.cutpoints = TRUE)
4.1可视化分析
plotFrontier(my.frontier,cex.lab = 1.4,cex.axis = 1.4