r - 在 GenMatch 中使用标准差来鼓励更多对

标签 r match matching standard-deviation

因此,请遵循 Matching 包中的示例,特别是 GenMatch 示例。 This continues on from a previous question

Link to R package here

遵循 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])

现在,关于 Weight.Matrix 的文献生成自 GenMatch非常神秘,并没有解释这些值代表什么。我有一个悬而未决的问题 here .现在假设我们要放宽匹配,以便在年龄标准上进行更灵活的配对。

我们看到 sd(lalonde$age)为我们的数据提供了 7 年的 SD。

所以我想要 Weight.matrix考虑到这一点。我想对 age 使用 1 SD 的限制。变量,因此返回比原来的 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))

但这并没有显着增加我返回的对数。

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

最佳答案

Nick Kennedy描述:

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

GenMatch 将仅匹配 M每个治疗病例的时间。它可能会丢弃已处理的案例,并且通常会丢弃控制案例,因为许多案例不匹配,但它不能凭空生成新的已处理案例:这就是多重​​插补的用途;-)

如果您的意思是,通过 M 为每个处理的案例生成更多匹配项论点,但需要谨慎,特别是当控制的数量与治疗病例的数量非常接近时,如 lalonde数据,因为它已经找到了最佳匹配,并且添加额外的匹配不太可能改善问题,而且往往会使问题变得更糟。这最好是当控制数>>处理数。

您可以在 M > 1 时重建每“对”匹配项。从输出数据中,如果这是您想要的,这将提供比治疗组中的 185 多的行数,但当然会有重复。

关于r - 在 GenMatch 中使用标准差来鼓励更多对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647201/

相关文章:

r - 将另一个 data.frame 中的一行添加到 qplot

R ggplot 方面 : varying x axis formatting and varying aesthetics by facet

excel - 使用不存在的值进行反向 MATCH

c# - 使用正则表达式从 AssemblyInfo.cs 文件中检索程序集版本

Javascript/OpenLayers 匹配

r - 在 R 中的大数据框中的重复位置插入空白列

r - 使用 Apply 系列 : Metropolis-Hasting Alg 的迭代算法

excel - 如果 EXCEL 的一行中有 3 个连续数据可用,则查找值

mysql - 匹配两个不同列中的内容-MySQL

java - 正确的用户输入与数组值不匹配