2017-07-03 94 views
1

我一直在使用R中的MatchIt包进行治疗与控制匹配,而我无法获得最佳匹配以使用我自己的数据集。MatchIt:最佳匹配失败

如果我运行下面的代码:

m.out <- matchit(match_formula, data=stats, method='optimal', distance='logit', ratio=2) 

其中公式是

treatment ~ t_1 + t_2 + t_3 + t_4 + t_5 + t_6 + t_7 + t_8 + t_9 + 
t_10 + t_11 

然后我结束了错误

Error in fullmatch.matrix(d, min.controls = ratio, max.controls = ratio, : omit.fraction must be NULL or numeric between -1 and 1 

我不能在任何地方找到matchit方法来指定一个omit.fraction变量或甚至做什么。有没有办法绕过这个bug并执行最佳匹配?

+2

请做一个可重现的例子:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – emilliman5

+0

'matchit'使用'fullmatch'函数从'optmatch'包。从那里查看帮助文件。 – lmo

回答

2

想通了!

因为我比治疗单位有更多的控制权,optmatch无法将所有控制单元分配到至少一个治疗,导致上述错误。解决方案是切换控制和治疗人群,并使用匹配比例1来匹配所有控制单位到治疗单位。

红利:最佳匹配比“最近邻居”匹配更合适,我猜这是预料之中。

+0

太奇怪了。我觉得'optmatch'应该知道许多控制要与几个处理过的单元匹配。感谢您的发表! – Noah

+0

是的,它完全与我期待的完全相反!我想我需要阅读更多关于匹配的一般信息。 – istewart