R中倾向得分匹配后的不同结果

机器算法验证 k-最近邻 匹配 倾向评分
2022-03-09 04:49:39

我已经进行了 Prospensity Score Matching(在 R 中使用 R 包“Matchit”)。我使用了匹配方法“最近邻”。匹配后,我比较了治疗组和对照组的结果变量。对于这个比较,我使用了 t 检验。我发现在每个匹配过程之后,t 检验的结果都发生了变化。为了测试我的假设,即结果的这种变化是由于倾向得分的随机选择(用于最近邻匹配),我将随机数生成器设置为特定的种子,并多次执行匹配过程。通过设置 RNG,结果不再不同。

  1. 每次匹配程序后都面临不同的结果:我如何决定使用哪种匹配解决方案进行进一步分析?多次进行匹配程序(比如 10'000)并报告我从几个 t 检验中获得的结果的 p 值和 t 值的中值是否是一种有效的方法?
3个回答

这是 MatchIt 包的标准行为。它在匹配之前对观察结果进行洗牌,即,它随机选择处理过的观察结果的匹配顺序。您可以使用set.seed()函数来修复结果。例如,先调用set.seed(100)再调用matchit()will的不同参数set.seed()对应不同的匹配。

当您(至少)有两个人具有相同的倾向得分时,就会发生这种情况。MatchIt 随机选择一个包含在匹配集中。我的建议是选择一个匹配的集合并用它进行分析。我同意尝试其他调节方法,例如完全匹配和 IPW 将是一个好主意。您可以在敏感性分析部分报告各种分析的结果。

编辑:这可能是错误的答案。请参阅 Viktor 的回答,了解可能的实际原因。

编辑 2020-12-07:对于MatchIt低于 4.0.0 的版本,最近邻匹配时会发生的唯一随机选择是存在关系时或 时m.order = "random",这不是默认值。如果在匹配中使用的变量很少,特别是如果它们都是分类变量或取很少的值,则可能出现平局。从 4.0.0 版开始,不再有任何随机进程,除非m.order = "random"; 根据数据的顺序确定性地打破所有关系。

这是一个非常有趣的问题。我可以建议的第一个解释是您的研究非常小,因此几乎没有匹配差异是有影响的。更一般地说,最近邻匹配不是很准确。卡尺数学更可靠,并且您报告的差异可能会使用它减少或消失(与使用逆概率处理加权一样)。最后,我不确定您是使用 t 检验来比较基线差异(这是不合适的,因为这应该计算标准化差异),还是用于假设检验(在这种情况下应该使用配对检验)。在任何情况下,典型的报告方法都是简单地报告单个匹配过程的结果,只要它正确完成(例如使用卡尺匹配)。