我应该把结果变量放在 Matchit::matchit ()

机器算法验证 r 倾向评分
2022-03-26 18:42:26

我想通过调整倾向得分来执行逻辑回归。我的问题是,我是否必须在倾向得分计算中包括结果(在我的情况下为二进制)?否则我怎么能将结果变量链接到创建的匹配数据?例如,如果我没有像下面的脚本那样将结果变量放在函数 matchit() 中

library(MatchIt)
m.out<-matchit(treatment~var1+var2+var3+var4, data = data,method = "nearest", ratio=1)
dataMatched = match.data(m.out)

我会有这样一个不包含结果的data.frame。我怎样才能在结果变量和这个数据框之间建立联系,以便进行最终分析。

 treatment var1 var2 var3 var4 distance weights
1         0    1    1    0    0   0.4135      1
2         0    1    0    1    1   0.5446      1
3         0    0    0    0    0   0.6534      1
4         1    1    1    1    0   0.7343      1


library(Zelig)
z.out = zelig(outcome ~treatment+var1+var2+var3+var4, model = "logit",data = dataMatched )
1个回答

不要将结果包括在倾向得分计算中。要在匹配后分析您的数据,请不要使用match.data(). 只需使用您的原始数据集,它希望包含治疗和结果,并matchit在结果模型中包含输出对象中的权重。您可以按如下方式执行此操作:

m.out <- matchit(treatment ~ var1 + var2 + var3 + var4, data = data,
                 method = "nearest", ratio=1)
fit <- glm(outcome ~ treat, data = data, family = binomial,
           weights = m.out$weights)

权重为零的观测值(表明它们不匹配)将被简单地排除在分析之外。如果要进行配对分析,配对成员资格位于输出对象的subclass组件中matchit,您可以将其作为固定或随机效应包含在结果回归模型中以模拟配对 t 检验或将其用作聚类变量一个集群稳健的标准错误。