gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 13:02:06 24 4
gpt4 key购买 nike

因此,请遵循 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/

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