2

我正在尝试使用 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)
4

2 回答 2

0

MatchIt与其他类似的软件包一样,它提供了几个匹配例程,使您能够使用这些设置。查看默认method设置为的参数。method = 'nearest'这意味着除非您指定,否则它将为每个治疗观察结果寻找最佳匹配。在您的情况下,您将始终有 1000 个配对匹配此设置。

您可以选择将其设置为method = 'exact',这更具限制性。在文档中,您会发现:

该技术将每个处理单元与所有可能的控制单元匹配,在所有协变量上具有完全相同的值,形成子类,使得在每个子类中所有单元(处理和控制)具有相同的协变量值。

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

m.out <- matchit(treat ~ educ + black + hispan, data = lalonde, method = 'exact')
summary(m.out)

结果,它丢弃了一些无法匹配的治疗观察。看看其他的可能性method,也许你会找到你更喜欢的东西。

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

于 2019-07-02T03:11:43.370 回答
0

您应该查看 package designmatch,它实现了一种称为基数匹配的匹配形式,它可以满足您的需求(即,找到产生所需平衡的最大匹配集)。与, 不同MatchItdesignmatch不使用距离变量;相反,它使用优化来解决匹配问题。您可以准确选择每个协变量的平衡程度,它会尽最大努力解决问题,同时保留尽可能多的匹配项。该方法在Zubizarreta、Paredes 和 Rosenbaum (2014)中有描述。

于 2019-07-06T08:54:30.357 回答