r - 与R中的MatchIt 3:1匹配,匹配控件数不等于3倍case数
问题描述
您好,我正在使用MatchIt
R 中的包
我总共有 116 个未治疗病例和 462 个未治疗病例
用命令
mod_match_logit = matchit(f.build("treatement_yes_or_no", covariates),
method = "nearest", distance = "logit", data = df, caliper = 0.05, ratio = 3)
然后我得到了 91 个匹配的治疗病例和 248 个匹配的未治疗病例的结果。我不明白的是,通过 3:1 匹配,我应该有 91*3 = 273 个匹配的未处理病例(而不是 248 个)。默认情况下,命令replace
设置为F
in MatchIt
,所以它不能解释我的区别。我错过了什么?
解决方案
在没有看到数据的情况下,我只是在猜测,但这很可能是由于您的卡尺设置所致。
MatchIt 将卡尺定义为“绘制控制单元的距离测量的标准偏差数(默认 = 0,无卡尺匹配)”(第 26 页)
因此,我的猜测是,您在治疗组中有一些单位的倾向得分较高,无法与未治疗组中的那些单位匹配(至少在您指定的 0.05 标准差内)。您没有在匹配数据集中获得 273 个主题的原因是您的 MatchIt 调用中的 caliper = 0.05 设置。一些倾向得分较高但仍与至少一个未治疗对象匹配的治疗对象无法匹配第二个或第三个对象,因为它们超出了 0.05 卡尺规格。也许增加卡尺会保留更多的治疗对象,但根据文献中记录的最佳实践,我不会高于 0.25。
根据您的研究设计,您可以考虑使用其他匹配方法。例如,您可以使用欧几里得以外的距离,例如 mahalanobis,这是 MatchIt 中的一个选项。或者,您也可以使用“optmatch”库中的最佳完全匹配或最佳配对匹配,尽管您也可以通过 MatchIt 函数调用它们。还有许多其他方法,但这些方法很容易从 MatchIt 库中访问。文献确实建议尝试几种不同的方法,然后检查平衡,只要你不“挑选”给你最大效果的那个。换句话说,根据协变量平衡而不是研究中的结果变量来选择匹配集。倾向得分匹配肯定是一门艺术,但这就是为什么我认为它如此有趣!
推荐阅读
- c# - 从网格视图和数据库 ASP.NET C# 中检索单元格值
- sql - 选择数据,其中两列在两个不同的表中具有相同的数据
- python - 在 SymPy 中创建特定符号 \tilde{x}
- python - 如何为 XlsxWriter 数据验证设置不相邻的单元格范围
- azure - 获取 Azure AD 中用户的权限
- java - 在 java 方法的参数列表中创建方法
- python - 无法在 python 3.7 中安装和使用 pyaudio
- amazon-web-services - NoCredentialProviders:使用 AWS S3 的电子更新程序中的链错误中没有有效的提供者
- spring - 在同一个 Spring Batch 步骤中针对不同类型的多个编写器
- sql - 得到 sql 错误:小时必须在 1 到 12 之间