【发布时间】:2021-06-05 19:28:11
【问题描述】:
Matchit R - 如何运行 1 CONTROL: 2 TREATED 单位的比率? (40 个治疗对象的 20 个对照) 比率 = 对于允许它的方法,应在 k:1 匹配中将多少控制单元与每个处理单元匹配。 0.5 是不可能的 如何申请?
【问题讨论】:
标签: r statistics match matching
Matchit R - 如何运行 1 CONTROL: 2 TREATED 单位的比率? (40 个治疗对象的 20 个对照) 比率 = 对于允许它的方法,应在 k:1 匹配中将多少控制单元与每个处理单元匹配。 0.5 是不可能的 如何申请?
【问题讨论】:
标签: r statistics match matching
我认为这是不可能的,因为它没有意义。您的问题暗示处理过的单位可以配对,但前提是处理过的单位相互匹配的先前步骤,这不是 MatchIt 的设计目的的一部分(并且从实验中并没有真正意义无论如何设计观点)。
要么是这样,要么您有一对完全匹配的已处理案例,在这种情况下,您并没有通过尝试同时使用它们来真正获得任何分析优势。如果是这种情况,我会将这些对减少为单一观察并进行 1:1 匹配。
【讨论】:
这实际上是一个比看起来更难的问题。最近邻匹配绝对没有办法做到这一点。理论上,优化匹配应该是可能的,例如,直接使用method = "full" 或optmatch 包。不幸的是,在我的实验中,我无法让optmatch 做你想做的事。理想情况下,您应该能够运行
fullmatch(., min.controls = 1/2, max.controls = 1/2, mean.controls = 1/2)
但这实际上并没有产生预期的结果。或许你可以联系opmatch作者解决这个问题,因为这是一个有趣的问题,他们的包应该能够解决。
您可以使用另一种称为基数匹配的方法,它将在MatchIt 的下一个版本中实现,但可以在开发版本中使用devtools::install_github("ngreifer/MatchIt") 访问。基数匹配使用优化来选择满足用户设置的样本大小约束和平衡约束的单元子集。在这种情况下,您的样本量约束是处理单元数是控制单元数的两倍。您需要设置平衡约束,即治疗组和对照组之间允许的最大不平衡(以标准化平均差单位为单位)。如果 A 是您的处理变量,X1 和 X2 是您尝试匹配的变量,您可以运行以下代码:
m <- matchit(A ~ X1 + X2, dataa = data, method = "cardinality",
estimand = "ATC", ratio = 2, tols = .01)
如果一个解决方案是可能的,它就会产生。如果不是,您将不得不放宽容差(即增加tols)直到它是。你可以跑了
summary(m, un = FALSE)
这将生成余额摘要和剩余样本量。如果不是所有处理过的单位都匹配,则继续增加tols,直到它们匹配为止。
【讨论】:
?method_cardinality 中有说明。很高兴它对你有用。