【问题标题】:Get only the fully matched cases using Matchit in R using 1:5 ratio在 R 中使用 Matchit 以 1:5 的比例仅获取完全匹配的案例
【发布时间】:2021-07-13 13:55:29
【问题描述】:

我以 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~", covar)), data = data, 
    method = "nearest", replace = FALSE, 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 个)的那些。

【问题讨论】:

    标签: r matching propensity-score-matching


    【解决方案1】:

    要限制只有恰好匹配 5 个的单位,您可以在 match.matrix 输出上运行 na.omit()。这将生成一个矩阵,其中仅包含所有 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 中运行您的效果估计。请注意,您提出的建议不是一个好主意;你是在不必要地丢弃没有明显好处的单位。

    【讨论】:

      【解决方案2】:

      只是为了回答我自己的问题:您似乎可以通过在函数中添加: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 被忽略并发出警告。”

      【讨论】:

      • 这不正确。设置'method = "optimal" 会忽略卡尺,您也可以使用method = "nearest" 来完成。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多