使用MatchIt进行倾向得分匹配。如何将卡尺引入确切的附加规格

时间:2019-08-08 13:04:44

标签: r propensity-score-matching

我是R的新手,Im使用Matchit通过倾向得分来匹配患者。我的数据集包括两组患者,他们是否接受药物有所不同。除了倾向得分匹配之外,我还想精确匹配年龄,性别和家庭习惯,因为治疗的决定确实会因这些特征而异。

我的问题是我想按年龄±2岁进行精确匹配,因为我想通过增加精确匹配的灵活性(而不是使用)来增加数据集中可以匹配的治疗患者的数量任意分界线,例如带有分类年龄变量的分界线)。

下面的代码效果很好

match.1 <-  matchit(exposed ~ imd2010_5 + hyp + mhealth + mm_score + GP_consult + smoke + no_pres3m + lterm_pres + pres_rate, 
data=dataset_pscore2, 
distance=dataset_pscore2$pscores, 
method="nearest", 
exact=c("gender", "pracid", "age_cat"), 
discard="both", 
caliper=0.25, 
ratio=2)

Id就像要将确切的代码更改为类似的

exact=c("gender", "pracid", "age" *with a caliper*),

这可能吗?

1 个答案:

答案 0 :(得分:0)

据我所知,倾向得分匹配(PSM)通常使用LOGIT回归来找到估计的倾向得分,以此避免维数诅咒。因此,进行精确匹配在PSM设置中某些协变量听起来不太可能。

我建议运行两个匹配过程:第一个对您希望精确匹配的协变量进行精确匹配。然后,在其他协变量的新匹配样本上运行PSM。

例如:

match.1 <-  matchit(exposed ~ gender + pracid + age_cat, 
data=dataset_pscore2, 
method="exact")

matched_sample <- match.data(match.1) # Get Propensity Scores for 'matched_sample'

match.2 <-  matchit(exposed ~ imd2010_5 + hyp + mhealth + mm_score + GP_consult + smoke + no_pres3m + lterm_pres + pres_rate, 
data=matched_sample, 
distance=matched_sample2$pscores, 
method="nearest", 
discard="both", 
caliper=0.25, 
ratio=2)

我还建议您阅读MatchIt软件包文档。还有另一个奇妙的软件包,称为cem