MatchingFrontier包简介及R实现

作者:赵毅 
来源:个人微信公众号:数据分析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

返回结果显示,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, lwd = 2))

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

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

笔者注: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)

笔者注: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语言中文社区历史文章整理(类型篇)


公众号后台回复关键字即可学习

回复 R              R语言快速入门免费视频 
回复 统计          统计方法及其在R中的实现
回复 用户画像   民生银行客户画像搭建与应用 
回复 大数据      大数据系列免费视频教程
回复 可视化      利用R语言做数据可视化
回复 数据挖掘   数据挖掘算法原理解释与应用
回复 机器学习   R&Python机器学习入门 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值