我对 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
在这种情况下,建议结合最近邻和精确匹配,但转移到我的数据集这会导致我的样本不成比例地减少。最后,我想要的是某种定制的匹配过程,重点关注年龄和病程,同时也涉及最后三个变量,但方式较弱。
有人知道如何实现这一点吗?我真的很高兴收到有关此事的任何提示,并感谢您的宝贵时间!
不幸的是,
MatchIt
不提供此功能。有两种方法可以代替使用 MatchIt
来做到这一点,但它们稍微先进一些。请注意,两者都不使用倾向得分。倾向得分匹配的要点是匹配单个数字,即倾向得分,这使得匹配过程对需要平衡的原始协变量视而不见。
第一种方法是使用包
Matching
并将您自己的权重矩阵包含到 Weight.matrix
中的 Match()
中。您可以在权重矩阵中增加年龄和疾病持续时间。
第二种是使用包
designmatch
进行基数匹配,它允许您指定平衡约束,并且它将使用优化来找到满足这些约束的最大样本。在 bmatch()
中,将您感兴趣的协变量输入到 mom
参数中,这还允许您为每个变量包含特定的平衡约束。您可能需要对年龄和病程进行更严格的平衡限制。
您可以这样使用
exact=c("age","disease_duration")
,它们将与age
和disease_duration
完全匹配。两组具有相同的平均值(年龄),并且 disease_duration
或 mean(disease_duration)
的数量取决于疾病_持续时间的类别。另一件事是使用从逻辑回归模型获得的 distance="glm"
或 distance=data$logit
那些 logit
值。