首页 > 解决方案 > 在 PSM(R 的 Matchit 包)中使用卡尺会改变匹配并使平衡变得更糟,即使匹配处理的数量保持不变?

问题描述

我想出了这个问题的答案......请参阅我在下面发布的答案。

A) 我对卡尺功能的了解(如有错误请更正):

在使用 R 的 matchit 包进行匹配时添加一个卡尺(例如 caliper = 0.2),意味着仅在它们彼此相距 0.2 个标准差(在这种情况下为倾向得分)之内时才匹配一个对照组点和一个治疗组点。因此,在 0.2 sd 内没有对照组点的治疗组点将不匹配,因此被丢弃。这应该可以改善平衡(减少偏差),因为只有当它们彼此“足够相似”时,它才会产生匹配的控制和治疗。

B)我的主要问题:

那么,使用重采样(replace = TRUE)并使用最近邻方法,这是否意味着包括卡尺只能通过减少匹配的治疗组数量以及可能用于匹配的对照组点数来改变匹配?

即治疗组点与控制组点在 0.2 sd 内的匹配方式与没有卡尺的方式相同(假设种子是恒定的),通过匹配最近的邻居。那些在 0.2 sd 内没有对照组点的治疗组点将被丢弃。

在下面的例子中,这不是发生的事情,所以我很困惑。任何解释/纠正我对卡尺的理解将不胜感激!

C)我上面的问题的例子:

在以下示例中(代码取自https://sejdemyr.github.io/r-tutorials/statistics/tutorial8.html),我使用卡尺和不使用卡尺运行 PSM,两次我的所有治疗组点都匹配( 1352)。所以我希望这意味着卡尺没有效果(因为它没有阻止任何治疗组点匹配),因此匹配的对照组点应该是相同的。

但事实并非如此。没有卡尺,匹配的对照组点数 = 1164,使用卡尺,它增加到 1185,结果改变了我对治疗效果的估计。它似乎也使平衡变得更糟(从图片中可以看出,附加链接)。有人可以向我解释这是怎么发生的吗?

没有卡尺,我得到以下结果(Matched Control = 1164,Matched Treated 1352):

Call: 
matchit(formula = catholic ~ race_white + w3income + p5hmage + 
    p5numpla + w3momed_hsb, data = ecls_nomiss, method = "nearest", 
    distance = "logit", replace = TRUE)

Sample sizes:
          Control Treated
All          7915    1352
Matched      1164    1352
Unmatched    6751       0
Discarded       0       0

治疗效果(作为天主教徒),使用线性回归 = -0.176:

Call:
lm(formula = c5r2mtsc_std ~ catholic, data = dta_m)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.4783 -0.5803  0.0647  0.5997  3.0473 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.38637    0.02677  14.432  < 2e-16 ***
catholic    -0.17670    0.03652  -4.838 1.39e-06 ***

平衡(通过比较倾向得分的控制和治疗的每个协方差)似乎非常匹配:[1] https://i.stack.imgur.com/pyU6s.png

使用卡尺,我得到以下结果(匹配控制 = 1185,匹配处理 1352):

Call: 
matchit(formula = catholic ~ race_white + w3income + p5hmage + 
    p5numpla + w3momed_hsb, data = ecls_nomiss, method = "nearest", 
    distance = "logit", replace = TRUE, caliper = 0.2)

Sample sizes:
          Control Treated
All          7915    1352
Matched      1185    1352
Unmatched    6730       0
Discarded       0       0

治疗效果估计 = -0.1151,即减少:

Call:
lm(formula = c5r2mtsc_std ~ catholic, data = dta_m)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.4167 -0.5649  0.0608  0.5947  3.1089 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.32477    0.02635  12.326  < 2e-16 ***
catholic    -0.11510    0.03609  -3.189  0.00144 ** 

平衡(通过比较倾向得分的控制和治疗的每个协方差)似乎变得更糟,控制和治疗之间的匹配也变得更糟:[2]:https ://i.stack.imgur.com/Z9uLK.png

标签: rpropensity-score-matching

解决方案


刚刚检查了 R 文档 ---如果指定了卡尺,则随机选择卡尺内用于处理单元的控制单元作为该处理单元的匹配项。 所以这说明了一切,它随机选择匹配的控制单元。

当我设置 caliper = 0.0000001 时,平衡得到改善。原来 caliper = 0.2 对于我的数据集来说太大了。


推荐阅读