通过MatchIt(或其他程序包)减少“处理”样本量以增加样本相似度

时间:2019-06-28 16:43:05

标签: r propensity-score-matching

我正在尝试使用MatchIt在两个协变量上匹配两个样本,但是我很难创建足够相似的样本。我的两个样本都很大(对照组中约1000个,对照组中约5000个)。

我希望获得与参与者尽可能匹配的匹配样本,并且在对照组中丢失样本数量也可以。现在,MatchIt仅返回两组1000,而我希望两组非常匹配,并且对于较小的组(例如500,而不是1000)也可以。

有没有办法通过MatchIt或另一个软件包来做到这一点?我宁愿避免使用随机抽样,然后尽可能地进行匹配,因为我希望组之间的匹配尽可能接近。

抱歉,没有可复制的示例,我对使用R还是很陌生,无法弄清楚如何对此问题进行示例...

下面是我用于匹配两组的代码。

data<- na.omit(data)
data$Group<- as.numeric(data$Group)
data$Group<- recode(data$Group, '1 = 1; 2 = 0')

m.out <- matchit(Group ~ Age + YearsEdu + Income + Gender, data = data, ratio = 1)
s.out <- summary(m.out, standardize = TRUE)
plot(s.out)

matched.data <- match.data(m.out)

2 个答案:

答案 0 :(得分:0)

MatchIt与其他类似的软件包一样,提供了几个匹配的例程,使您可以随意进行设置。检出参数method,该参数默认情况下设置为method = 'nearest'。这意味着,除非您指定,否则它将为每个治疗观察值寻找最佳匹配。对于您而言,使用此设置,您将始终具有1000个配对的配对。

您可以选择将其设置为method = 'exact',这要严格得多。在文档中,您将找到:

  

此技术将每个治疗的单位都匹配   在所有协变量上具有完全相同值的可能控制单元,形成子类   这样,在每个子类中,所有单元(处理和控制)的协变量值都相同。

在lalonde数据集上,您可以运行:

m.out <- matchit(treat ~ educ + black + hispan, data = lalonde, method = 'exact')
summary(m.out)
因此,它丢弃了一些无法匹配的治疗观察。看看method的其他可能性,也许您会发现自己更喜欢的东西。

话虽如此,请注意不要丢弃太多治疗意见。如果这样做,您将使治疗组看起来像对照组(而不是对照组),这可能会导致不良结果。

答案 1 :(得分:0)

您应该查看软件包designmatch,该软件包实现了一种匹配形式,称为基数匹配,可以满足您的需求(即找到产生所需余额的最大匹配集)。与MatchIt不同,designmatch不使用距离变量。相反,它使用优化来解决匹配问题。您可以选择希望每个协变量完全平衡的方式,它将尽最大努力解决该问题,同时保留尽可能多的匹配项。 Zubizarreta, Paredes, & Rosenbaum (2014)中介绍了该方法。