r - 使用 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*),
这可能吗?
解决方案
据我所知,倾向得分匹配 (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)
推荐阅读
- matlab - 在 MATLAB 中查找两个复指数函数之间的相位差
- python - 是否可以在休息框架中返回 api 响应而不是模型/数据库?
- php - openssl_encrypt 是否足够安全以创建会话令牌?
- multithreading - F# 线程中的取消标记
- java - 第一次迭代发散的 FitzHugh-Nagumo 扩散模型的实现
- javascript - 使用文本字段输入在 iframe 中执行全局函数
- angular - 如何更改 Observable 的成员对象字段的值?
- swift - ARKit – 使用 SCN 文件 > 300 MB 时出现“意外发现 nil”
- c# - 如何找到贝塞尔曲线的控制点?
- google-colaboratory - 尝试将数据从磁盘加载到 Google Collab 时出错