使用 R 中的 Matchit 以 1:5 的比例仅获取完全匹配的案例

问题描述

我以 1:5 的比例匹配了我的两个组,并注意到我的两个结果组没有 1:5 的比例,类似于这里发布的这个问题:

3:1 matching with MatchIt in R. The number of matched control is not equal to 3 times the number of cases

我进行过这样的比赛:

    match_out <- matchit(as.formula(paste0("treat~",covar)),data = data,replace = FALSE,caliper = .2,ratio = 5,method = "nearest") 

我的输出是这样的:

> match_out 

Call: 
matchit(formula = as.formula(paste0("treat~",method = "nearest",caliper = 0.2,ratio = 5)

Sample sizes:
          Control Treated
All          7594      13
Matched        42      10
Unmatched    7552       3
discarded       0       0


> match_out$match.matrix
     1      2      3      4      5     
14   "3891" NA     NA     NA     NA    
300  "5160" "2282" "2634" "6349" NA    
578  "5343" "5486" "4433" "2026" "249" 
997  "1121" "3928" "6464" "5015" "1863"
1534 NA     NA     NA     NA     NA    
1787 "7517" "7053" "5187" "4157" "919" 
4016 "525"  "5514" NA     NA     NA    
4082 "5548" "2951" "7282" "3378" "2642"
4894 "1009" "6386" "946"  "1819" "1727"
5812 NA     NA     NA     NA     NA    
5954 "7298" "6898" "1503" "7004" "7110"
6825 NA     NA     NA     NA     NA    
7389 "4286" "3044" "985"  "1471" "3591"

我的理解是正确的,我的输出现在包含了至少一个匹配发生的所有情况。

现在我想知道,是否有一种(简单的)方法来获得每 1 个治疗具有 5 个完全匹配的控制(在我的情况下为 7 个)。

解决方法

要限制为恰好有 5 个匹配项的单位,您只需在 na.omit() 输出上运行 match.matrix。这将生成一个矩阵,其中仅包含所有 5 个匹配项的处理单元和控制单元。从那里您可以对 match.data() 输出进行子集化以获得您需要的输出,例如,

m_data <- match.data(match_out,data = data)

mm <- na.omit(match_out$match.matrix)

m_data <- m_data[rownames(m_data) %in% rownames(mm) |
                   rownames(m_data) %in% mm,]

然后您可以在 m_data 中运行您的效果估计。请注意,您提出的建议不是一个好主意;你不必要地丢弃了没有明显好处的单位。

,

只是回答我自己的问题:似乎您可以通过在函数中添加:method = "optimal" 来强制进行完整的 1:5 匹配。 在此处阅读更多信息:https://cran.r-project.org/web/packages/MatchIt/vignettes/matching-methods.html#optimal-pair-matching-method-optimal

然而,这会降低匹配的成功率。有人知道从原始输出中只选择那些 1:5 案例的方法吗?

编辑:正如诺亚所指出的,可以强制进行 1:5 匹配,但这将忽略卡尺。请参阅此处的文档:https://rdrr.io/cran/MatchIt/man/method_optimal.html 我认为它有点隐藏,但你可以在标题“参数”下看到它说:“参数替换、卡尺和 m.order 被忽略并警告。”