书接上回。
Usage:
matchit(formula, data, method = "nearest", distance = "logit", distance.options = list(), discard = "none", reestimate = FALSE, ...)
library(haven)
cattaneo <- read_dta("D:/Temp/STATA/cattaneo.dta") #{foreign}read.dta只能导入stata11、12等低版本的stata的数据
以下命令可能会提供参考
library(pastecs)
by(cattaneo[c("mage","medu","fage","bweight")],cattaneo$mbsmoke,function(x)stat.desc(x,norm=TRUE))
by(cattaneo[c("mage","medu","fage","bweight")],cattaneo$mbsmoke,summary)
library(pastecs)
by(cattaneo[c("mage","medu","fage","bweight")],cattaneo$mbsmoke,stat.desc)
wilcox.test(mage~mbsmoke,data=cattaneo)
Chi<-table(cattaneo$mrace,cattaneo$mbsmoke)
Chi
chisq.test(Chi)
library(MatchIt)
psm<-matchit(mbsmoke~mmarried+alcohol+mage+medu+fage+mrace+frace+fbaby+prenatal1, data=cattaneo, method="nearest",caliper=0.2)
psm
按照默认的最邻近匹配法、干预组和对照组1:1进行匹配、卡钳值设为0.2个PS标准差,结果显示有844例匹配成功。
【4】平衡性检查:可采用summary()或plot()分别进行数据汇总或者图示来检查,具体可参照说明文件。
summary(psm)
结果包括匹配前、后的干预组和对照组的加权均数,对照组的标准差,干预组和对照组的均数差,Q-Q图的一些指标(中位值、均数及最大距离,值大于0代表两组间在分布上的偏差),匹配前后平衡性的改善程度、以及匹配的样本量。结果显示经过匹配后,平衡性有较大改善。
plot(psm,type="hist",col=7) #绘制直方图,颜色为7
plot(psm,type="jitter",col=6) #绘制抖动图,颜色为6
结果显示经过匹配后的数据组间平衡性有较为明显的改善。
##生成匹配成功的数据
mchdata <- match.data(psm)
wilcox.test(bweight~mbsmoke,data=mchdata)
Chi<-table(cattaneo$mrace,cattaneo$mbsmoke)
Chi
chisq.test(Chi)
[1]method:默认的匹配方法是最相近匹配(method="nearest",nearest neighbor matching),其他方法还有"exact" (exact matching), "full" (full matching), "optimal" (optimal matching), "subclass" (subclassification),"genetic" (genetic matching), and "cem" (coarsened exact matching)。每种方法在MachIt中提供了各自的选项;
[2]distance:默认采用的计算倾向值采用的是logistic回归(distance="logit"),如想采用其他链接函数如Probit回归来计算倾向值,可添加distance="probit";
[3]caliper:当前结果与我们在SPSS中的结果并不一致,主要原因是对卡钳值(caliper)的定义不同。卡钳值实际上就是指干预组与对照组在进行配对时概率上允许的误差,通过这样一个误差可以预先设定一个范围,当干预组与对照组的PS差值在这个范围内才可以匹配。在SPSS中直接用匹配容差(Match Tolerance)来表示允许匹配的最大PS差值,而在R中卡钳值指的是 the number of standard deviations of the distance measure within which to draw control units (default = 0, no caliper matching),即PS标准差的倍数,本例为0.2,即0.2个PS标准差;
[4]ratio: the number of control units to match to each treated unit (default = 1),设置匹配比例,干预组和对照组进行1比几的比例进行匹配,本例默认为1:1。如果想干预组和对照组按1:n进行匹配,增加选项ratio=n即可。但需要为了让干预组尽可能多的被匹配,对照组的样本量需要尽可能比干预组多,如果样本量不够,可能会导致需要匹配数据困难。如本例干预组864例,对照组3778例,如果设置ratio=2或者ratio=3,在保证数据平衡的前提下,由于能匹配的数据相对较少,会损失更多的干预组样本,而且最终匹配的数据也可能达不到要求的比例。
psm2<-matchit(mbsmoke~mmarried+alcohol+mage+medu+fage+mrace+frace+fbaby+prenatal1, data=cattaneo, method="nearest",ratio=3,caliper=0.2)
E
N
D
联系客服