R 在GenMatch中使用标准差鼓励更多配对

R 在GenMatch中使用标准差鼓励更多配对,r,match,matching,standard-deviation,R,Match,Matching,Standard Deviation,下面是匹配包中的示例,尤其是GenMatch示例 遵循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,

下面是匹配包中的示例,尤其是GenMatch示例

遵循
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)
但这并没有显著增加我返回的对的数量

我出错的任何提示或解决方案

如下所述:

summary(as.logical(lalonde$treat))
   Mode   FALSE    TRUE    NA's 
logical     260     185       0 
GenMatch仅匹配每个治疗病例的
M
次。它可能会减少治疗病例,通常会减少对照病例,因为许多病例不匹配,但它不能凭空生成新的治疗病例:这就是多重插补的目的;-)

如果您的意思是说,通过
M
参数可以为每个治疗病例生成更多匹配,但需要谨慎,尤其是当控制数量与治疗病例数量非常接近时,如在
lalonde
数据中,因为它已经找到了最佳匹配,而且,增加额外的比赛不太可能改善情况,而且往往会使情况恶化。当控制数量>>处理数量时,这是最好的


M>1
时,如果您愿意,您可以从输出数据中重建每一对匹配项,这将使治疗组中的行数大于185行,但当然是重复的。

不太清楚您想要什么。只有185个已处理的观察值和260个未处理的观察值,匹配函数正在尝试执行1对1匹配。有超过185场未加权比赛的原因是因为有超过1名未经治疗的个人是同样优秀的比赛。如果您希望每个人有一个以上未经治疗的人,则需要使用M参数进行匹配。e、 g.
mout如果你想放宽年龄标准,你可以改变权重矩阵中的参数,但这不会影响匹配的数量。
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))
summary(as.logical(lalonde$treat))
   Mode   FALSE    TRUE    NA's 
logical     260     185       0