R 在GenMatch中使用标准差鼓励更多配对
下面是匹配包中的示例,尤其是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
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