倾向匹配得分R操作与应用(Matching/MatchIt函数介绍)
计量经济学服务中心专辑汇总!计量百科·资源·干货:
Stata |Python |Matlab |Eviews |R Geoda |ArcGis |GeodaSpace |SPSS 一文读懂 |数据资源 |回归方法 |网络爬虫 门限回归 |工具变量 |内生性 |空间计量 因果推断 |合成控制法 |倾向匹配得分 |断点回归 |双重差分 面板数据 | 动态面板数据
1
R操作与应用:Matching命令
背景数据描述:
这是国家支持工作示范(NSW)处理组数据的子样本和当前人口调查(CPS)的比较样本。Lalonde(1986)、Dehejia和Wahba(1999)对这些数据进行了广泛的分析。
R软件操作倾向匹配得分的函数安装包比较多,主要包括Matching、MatchIt等。
例如使用Matching前,需要先进行安装:install.packages(“Matching”)就可以安装了。
1、首先进行数据查看
> data("lalonde")
> summary(lalonde)
age educ black
Min. :17.00 Min. : 3.0 Min. :0.0000
1st Qu.:20.00 1st Qu.: 9.0 1st Qu.:1.0000
Median :24.00 Median :10.0 Median :1.0000
Mean :25.37 Mean :10.2 Mean :0.8337
3rd Qu.:28.00 3rd Qu.:11.0 3rd Qu.:1.0000
Max. :55.00 Max. :16.0 Max. :1.0000
hisp married
Min. :0.00000 Min. :0.0000
1st Qu.:0.00000 1st Qu.:0.0000
Median :0.00000 Median :0.0000
Mean :0.08764 Mean :0.1685
3rd Qu.:0.00000 3rd Qu.:0.0000
Max. :1.00000 Max. :1.0000
nodegr re74
Min. :0.000 Min. : 0.0
1st Qu.:1.000 1st Qu.: 0.0
Median :1.000 Median : 0.0
Mean :0.782 Mean : 2102.3
3rd Qu.:1.000 3rd Qu.: 824.4
Max. :1.000 Max. :39570.7
re75 re78 u74
Min. : 0 Min. : 0 Min. :0.0000
1st Qu.: 0 1st Qu.: 0 1st Qu.:0.0000
Median : 0 Median : 3702 Median :1.0000
Mean : 1377 Mean : 5301 Mean :0.7326
3rd Qu.: 1221 3rd Qu.: 8125 3rd Qu.:1.0000
Max. :25142 Max. :60308 Max. :1.0000
u75 treat
Min. :0.0000 Min. :0.0000
1st Qu.:0.0000 1st Qu.:0.0000
Median :1.0000 Median :0.0000
Mean :0.6494 Mean :0.4157
3rd Qu.:1.0000 3rd Qu.:1.0000
Max. :1.0000 Max. :1.0000
> View(lalonde)
结果为:
数据介绍:包含对以下12个变量的445个观察值。
age表示年龄
educ:受教育年限
black:是否为黑人
hispan:是否为西班牙裔
married:是否已婚
nodegree:是否没有毕业文凭。
re74,1974年的实际收入。
re75,1975年的实际收入。
re78,1978年的实际收入。
u74,1974年的收入指标变量为零。
u75,1975年收入的指标变量为零。
treat:是否接受职业培训。
2、估计倾向匹配模型
glm1 <- glm(treat~age + I(age^2) + educ + I(educ^2) + black +
hisp + married + nodegr + re74 + I(re74^2) + re75 + I(re75^2) +
u74 + u75, family=binomial, data=lalonde)
3、保存数据对象
X <- glm1$fitted
Y <- lalonde$re78
Tr <- lalonde$treat
3、一对一匹配,评估处理效应的影响(“estimand”选项默认为ATT)。
rr <- Match(Y=Y, Tr=Tr, X=X, M=1);
summary(rr)
结果为:
4、我们来看看协变量的平衡性,为了提高速度,nboots被设置为较小的值。正式分析时提高到至少500。
mb <- MatchBalance(treat~age + I(age^2) + educ + I(educ^2) + black +
hisp + married + nodegr + re74 + I(re74^2) + re75 + I(re75^2) +
u74 + u75, data=lalonde, match.out=rr, nboots=10)
结果为:
2
R操作与应用:Matchit命令
数据框有614个观察(185处理,429对照)。合计有10个变量。“treat”是处理分配(1=已处理,0=对照)。“age”是年龄的年数。“educ”是指教育的学制。“black”是非裔美国人的指示符(1=非裔美国人,0=非裔美国人)。“hispan”是西班牙血统的标志(1=西班牙裔,0=非西班牙裔)。“married"”是已婚的指示符(1=已婚,0=未结婚)。“nodegree”是个人是否有高中学历的指标(1=无学历,0=学历)。re74是1974年的收入,以美元计算。re75是1975年的收入,以美元计算。re78是1978年的收入,以美元计算。
注意上述文字介绍是官方文档提供的,具体数据结构,请以数据为准。
1、首先进行数据查看
> library(Match It)
> data(lalonde)
我们的示例数据集是Lalonde(1986)、Dehejia和Wahba(1999)分析的职业培训计划的子集。
该安装包函数包含了原始数据的子样本,坚持国家支持工作示范(NSW)处理组和来自人口收入动态调查(PSID)的比较样本。
该数据集中的变量包括:参加职业培训项目(treat,如果参加该项目,等于,其他为0)、年龄(age)、受教育年限(educ)、种族(black,黑色= 1,其他为0;hispan等于1,如果是西班牙语, 婚姻状况(已婚= 1,非已婚= 0)、高中学历(无学历= 1,非学历= 0)、1974年实际收入(re74)、1975年实际收入(re75)和主要结果变量1978年实际收入(re78)。
2、倾向匹配分析
最简单的匹配就是精确匹配。这种技术将每个处理单元匹配到所有可能的控制单元,在所有的协变量上使用完全相同的值,从而形成子类,使得每个子类中的所有单元(处理和控制)都具有相同的协变量值。
在匹配中实现了精确匹配,使用method =“exact”。在调用MatchIt时指定的公式的右侧所包含的所有协变量都将进行精确匹配。
代码为
m.out <- matchit(treat ~ educ + black + hispan, data = lalonde,
method = "exact")
其他案例代码:
> m.out <- matchit(treat ~ age + educ + black + hispan + married +
nodegree + re74 + re75, data = lalonde, method = "full")
> m.out <- matchit(treat ~ age + educ + black + hispan + married + nodegree +
re74 + re75, data = lalonde, method = "genetic")
下一行执行最近邻匹配基于估计的逻辑回归的倾向分数,
m.out1 <- matchit(treat ~ re74 + re75 + age + educ, data = lalonde, method = "nearest", distance = "logit")
要获得匹配的数据,输入以下命令,
m.data1 <- match.data(m.out1)
很容易总结得到的匹配数据,
summary(m.data1)
为获得处理组或对照组的匹配数据,指定选项组如下:
m.data2 <- match.data(m.out1, group = "treat")
summary(m.data2)
m.data3 <- match.data(m.out1, group = "control")
summary(m.data3)
结果为: