MatchingFrontier包简介及R实现

浏览: 1459

作者:赵毅 来源:个人微信公众号:数据分析1480

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个函数模块构成:

  • 构造匹配边界makeFrontier;

  • 估计边界效应estimateEffects();

  • 可视化分析Visualize the full frontier;

  • 生成经优化后的匹配样本。

2.1 载入需要的程辑包和数据集

library(MatchingFrontier)  
# 载入本文所需要的程序包data('lalonde')  
# 读入本文所需要用到的数据集
lalonde <- as.data.frame(lalonde)  
#转换为data.frame类型,提升运算速度  
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 <- colnames(lalonde)[!(colnames(lalonde) %in% c('re78', 'treat'))]
# 显示需要匹配的变量
match.on
# 计算马氏边界
my.frontier <- makeFrontier(dataset = lalonde,treatment = 'treat',outcome = 're78',  match.on = match.on)
my.frontier

image.png

返回结果显示,997个观测值被Drop,也即消除偏误和减少方差这两个维度同时达到最优化条件的观测值只剩余188个。

3.2 Estimating Effects(估计效应)

# 设置基本关系式
my.form <- as.formula(re78 ~ treat + age + black + education + hispanic + married + nodegree + re74 + re75)
# 估计马氏边界的效应
my.estimates <- estimateEffects(my.frontier, '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,type = 'l', panel.first =grid(NULL,NULL, lw

image.png

笔者注:this figure displays the imbalance-n frontie

plotEstimates(my.estimates,ylim =c(-10000, 3000), cex.lab = 1.4,cex.axis = 1.4, panel.first =

image.png

笔者注:this figure  shows estimates of the causal effect across that same frontier. The shaded region is the Athey-Imbens model dependence interva

plotMeans(my.frontier)

image.png

笔者注:TThe figure displays the means of each covariate as observations are pruned and balance improves

5.1生成经优化后的匹配样本

n <- 180matched.data <- generateDataset(my.frontier, N = n)

      可在优化后的样本中选取一部分观测或者全部观测,本文选择了180个观测。

      OK,MatchingFrontier的介绍到此结束,可以去用该新生成的 matched.data去跑后续回归了。

文中所提文献可至下方链接下载

链接:https://pan.baidu.com/s/1dGwvsbB 密码:sllf

往期精彩内容整理合集:

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)

image.png

推荐 1
本文由 R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册