gpt4 book ai didi

R 包 cem 和 MatchIt : Different imbalance measure

转载 作者:行者123 更新时间:2023-12-03 21:58:54 24 4
gpt4 key购买 nike

我正在通过包 MatchIt 运行粗化精确匹配 (CEM) 作为预处理步骤,并希望在进一步分析中使用匹配的数据。作为测试,我使用包 cem 运行 CEM,并注意到不平衡测量与通过 MatchIt 包测量的不同。
例如,使用 LaLonde 数据集:

library(MatchIt)
library(cem)
data(LL)

re74cut <- seq(0, 40000, 5000)
re75cut <- seq(0, max(LL$re75)+1000, by=1000)
agecut <- c(20.5, 25.5, 30.5,35.5,40.5)
my.cutpoints <- list(re75=re75cut, re74=re74cut, age=agecut)

matchit.match <- matchit(treated ~ age + education + black + married + nodegree +
re74 + re75 + hispanic + u74 + u75,
data = LL,
method = "cem",
cutpoints = my.cutpoints)

matchit.data <- match.data(matchit.match)

matchit.imb <- imbalance(group=matchit.data$treated,
data=matchit.data,
drop=c("treated","re78","distance",
"weights","subclass"))

cem.match <- cem(treatment = "treated",
data = LL, drop = "re78",
cutpoints = my.cutpoints,
eval.imbalance = TRUE)

matchit.imb
cem.match$imbalance

有人知道这里发生了什么吗?感谢您的任何帮助。

最佳答案

有两个原因。首先,您必须提供 matchit 中的权重。反对imbalance() .如果包括这些,(diff)统计数据是正确的,但 L1 统计数据仍然是错误的。

其次,通过使用 matchit.data而不是 LL在调用 imbalance() ,L1 统计数据的中断仅使用匹配数据而不是完整数据集应用,这会产生 L1 统计数据的不同计算。为了纠正这个问题,在调用 imbalance() ,您应该提供原始的、未匹配的数据集,并使用匹配的权重来提供有关匹配的信息。所以,您最后一次调用 imbalance()应如下所示:

imbalance(LL$treated, 
data=LL,
drop=c("treated", "re78"),
weights=matchit.match$weights)

这将产生与 cem.match$imbalance 相同的结果.

关于R 包 cem 和 MatchIt : Different imbalance measure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60725005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com