在GenMatch中使用标准偏差以鼓励更多的匹配对

18

所以,根据Matching软件包中的示例,特别是GenMatch示例。这个问题是从之前的一个问题继续的

此处链接到R软件包

遵循GenMatch示例的步骤。

library(Matching)
data(lalonde)
attach(lalonde)

X = cbind(age, educ, black, hisp, married, nodegr, u74, u75, re75, re74)

BalanceMat <- cbind(age, educ, black, hisp, married, nodegr, u74, u75, re75, re74,
                    I(re74*re75))

genout <- GenMatch(Tr=treat, X=X, BalanceMatrix=BalanceMat, estimand="ATE", M=1,
                   pop.size=16, max.generations=10, wait.generations=1)

genout$matches
genout$ecaliper

Y=re78/1000

mout <- Match(Y=Y, Tr=treat, X=X, Weight.matrix=genout)
summary(mout)

我们看到有185个接受治疗的观察结果与270个未接受治疗的观察结果成对出现。

我们可以通过以下方式生成一个表格,左边是接受治疗的案例及其年龄,右边是对照组案例及其年龄:

pairs <- data.frame(mout$index.treated, lalonde$age[mout$index.treated], mout$index.control, lalonde$age[mout$index.control])

现在,有关由GenMatch生成的Weight.Matrix的文献非常晦涩,并且没有解释这些值代表什么。我在这里提出了一个问题。现在假设我们想要放宽匹配,使年龄标准上更灵活的配对发生。

我们注意到sd(lalonde$age)给出了我们数据的7年标准差。

因此,我希望Weight.matrix能够考虑到这一点。 我想使用1个标准差的限制来匹配age变量,因此返回比原始的185-270对更多的对。

我猜想要生成第二个GenMatch函数,然后继续我的代码。 所以我使用:

genout <- GenMatch(Tr=treat, X=X, BalanceMatrix=BalanceMat, estimand="ATE",
                   pop.size=1000, max.generations=10, wait.generations=1,
                   caliper=c(2,1,1,1,1,1,1,1,1,1))

但这并没有显著增加我返回的配对数量。

有什么提示或解决方案可以告诉我哪里出了问题吗?


1
不太清楚您想要什么。只有185个处理过的和260个未处理的观测值,而Match函数正在尝试执行1对1匹配。存在超过185个非加权匹配的原因是由于存在平局,即有多个未处理的个体同样适合作为匹配对象。如果您希望每个个体有多个未处理的匹配对象,则需要使用M参数进行匹配。例如,mout <- Match(Y=Y, Tr=treat, X=X, Weight.matrix=genout, M = 2)将旨在返回每个处理过的个体2个未处理的匹配对象。如果您想要确切的2个匹配对象,则需要使用tis = FALSE - Nick Kennedy
如果您想放宽对年龄的限制,可以对权重矩阵中的参数进行变化,但这不会影响到您获得的匹配数。 - Nick Kennedy
1个回答

1

正如Nick Kennedy所描述:

summary(as.logical(lalonde$treat))
   Mode   FALSE    TRUE    NA's 
logical     260     185       0 

GenMatch每个受治疗案例仅匹配M次。它可能会放弃受治疗案例,并通常放弃对照组案例,因为许多案例无法匹配,但它无法凭空生成新的受治疗案例:这就是多重插补的作用;-)
如果您的意思是每个受治疗案例生成更多匹配项,则可以使用M参数来实现,但需要谨慎,特别是当控制组数量接近受治疗案例数量时(例如lalonde数据),因为它已经找到最佳匹配,添加额外的匹配项不太可能改善情况,而且通常会使情况变得更糟。当控制组数量远大于受治疗案例数量时效果最佳。
如果您希望从输出数据中重构每个匹配对(M > 1),则可以实现,但这将给出比治疗组中的185行更多的行数,但其中包含重复数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接