首页 > 解决方案 > 使用 MatchIt 进行倾向得分匹配。如何将卡尺引入精确的附加规格

问题描述

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

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

下面的代码运行良好

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)

我只是想将确切的代码更改为类似

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

这可能吗?

标签: rpropensity-score-matching

解决方案


据我所知,倾向得分匹配 (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


推荐阅读