R:使用 MatchIt 进行倾向得分匹配。如何为不同协变量指定所需的匹配精度?

问题描述 投票:0回答:2

我对 R 相当陌生,尤其是对通过倾向得分进行匹配的方法。我的数据集包括两组在是否接受治疗方面有所不同的人 - 不幸的是,他们在年龄和疾病持续时间上也存在显着差异,因此我希望将他们匹配。

到目前为止,这是我的代码:

set.seed(2208)
mod_match <- matchit(TR ~ age + disease_duration + sex + partner + work + academic,
                     data = Data_nomiss, 
                     method = "nearest",
                     caliper = .025)
summary(mod_match)

这段代码工作正常,但我想知道是否有可能权衡协变量关于匹配准确性的重要性?对我来说,至关重要的是,各组在年龄和疾病持续时间(数字)方面尽可能接近,而其余变量(因素)也应该匹配,但就我的目的而言,平均值可能比第一个稍多一些两个。

在寻找解决我的问题的方法时,我遇到了这个人的请求,他基本上有同样的问题http://r.789695.n4.nabble.com/matchit-can-I-weight-the-参数-td4633907.html

在这种情况下,建议结合最近邻和精确匹配,但转移到我的数据集这会导致我的样本不成比例地减少。最后,我想要的是某种定制的匹配过程,重点关注年龄和病程,同时也涉及最后三个变量,但方式较弱。

有人知道如何实现这一点吗?我真的很高兴收到有关此事的任何提示,并感谢您的宝贵时间!

r nearest-neighbor
2个回答
3
投票

不幸的是,

MatchIt
不提供此功能。有两种方法可以代替使用
MatchIt
来做到这一点,但它们稍微先进一些。请注意,两者都不使用倾向得分。倾向得分匹配的要点是匹配单个数字,即倾向得分,这使得匹配过程对需要平衡的原始协变量视而不见。

第一种方法是使用包

Matching
并将您自己的权重矩阵包含到
Weight.matrix
中的
Match()
中。您可以在权重矩阵中增加年龄和疾病持续时间。

第二种是使用包

designmatch
进行基数匹配,它允许您指定平衡约束,并且它将使用优化来找到满足这些约束的最大样本。在
bmatch()
中,将您感兴趣的协变量输入到
mom
参数中,这还允许您为每个变量包含特定的平衡约束。您可能需要对年龄和病程进行更严格的平衡限制。


0
投票

您可以这样使用

exact=c("age","disease_duration")
,它们将与
age
disease_duration
完全匹配。两组具有相同的平均值(年龄),并且
disease_duration
mean(disease_duration)
的数量取决于疾病_持续时间的类别。另一件事是使用从逻辑回归模型获得的
distance="glm"
distance=data$logit
那些
logit
值。

© www.soinside.com 2019 - 2024. All rights reserved.