我正在尝试使用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)
答案 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)中介绍了该方法。