MatchIT函数返回相等的连续变量但不相等的分类变量

时间:2019-07-09 11:19:50

标签: r

我使用MatchIt函数得出了1:4的比例:未处理的数据集,试图获得相似的平均年龄和性别频率。

我有一个小的治疗组(n = 44)和一个更大的对照组(n = 980)。为了减少对照组的数量并排除年龄和性别作为混杂因素,我尝试使用MatchIt函数创建一个176个对照组,其平均年龄和性别平衡与治疗组相似。

m.out <- matchit(Treated ~ AGE + SEX, data = d, 
                 method = "optimal",
                 ratio = 4)

输出摘要为:

Summary of balance for matched data:
         Means Treated Means Control SD Control Mean Diff eQQ Med
distance        0.0602        0.0603     0.0250   -0.0001       0
AGE            57.5227       58.4034     7.9385   -0.8807       1
SEXF            0.4318        0.1477     0.3558    0.2841       0
SEXM            0.5682        0.8523     0.3558   -0.2841       0

Age变量的效果很好-并没有显着差异,但性别似乎不对(对照组中85%的男性与接受治疗的57%的男性),因此我对接受治疗的〜性别数据进行了卡方检验。它显示出性别上的极显着差异:

chisq <- with(m.data, chisq.test(SEX, Treated))
data:  SEX and Treated
X-squared = 15.758, df = 1, p-value = 7.199e-05

我如何解释这里的差异?我的MatchIT函数是否有问题(方法不正确?)或它起作用了,但我将卡方应用于错误的问题上?

1 个答案:

答案 0 :(得分:0)

在这种情况下,倾向得分匹配不起作用的原因有很多。通常,不能保证在小样本中平衡协变量。倾向得分的理论属性适用于大样本且具有正确的倾向得分(您的肯定是不正确的)。

一些更具体的原因可能是:在进行4:1匹配时,有许多与已处理单位相距较远的对照单位会与您已处理的单位进行匹配。您可以查看是否通过更改比率来匹配较少的控制单元来解决此问题。最佳匹配可能不是使用的良好匹配方法。最佳匹配根据倾向得分找到最佳对,但是您希望在协变量上取得平衡,而不是倾向得分。您可以尝试进行基因匹配(即使用method = "genetic"),尽管这也可能会失败(就像在图钉上用锤子一样)。

一个建议是使用designmatch包执行基数匹配,这使您可以施加平衡约束并执行匹配,而不必估计倾向得分。但是,只有两个协变量,性别上的精确匹配和年龄上的最近邻居匹配应该做得很好。在exact = d$gender中设置distance = d$agematchit(),看看效果是否更好。您不需要针对此问题的倾向得分。

最后,不要使用假设检验来评估平衡。余额输出就足够了。在平衡能力不再提高之前,不要停止尝试寻找合适的比赛。有关更多信息,请参见Ho,Imai,King和Stuart(2007)。他们也是MatchIt的作者。


Ho,D.E.,Imai,K.,King,G.,&Stuart,E.A.(2007)。匹配作为非参数预处理,以减少参数因果推理中的模型依赖性。政治分析,15(3),199–236。 https://doi.org/10.1093/pan/mpl013