函数问题 MatchIt::matchit

Problems with function MatchIt::matchit

您好,我想通过调整倾向得分来进行逻辑回归。但首先我想根据倾向得分匹配条约和非条约。这是我的第一个脚本:

mod_match<-matchit(Treatment~Prop.score, method = "nearest", data = Epidemio.prop,caliper = 0.05)

这是错误消息

Error in matchit(Treatment~Prop.score, method = "nearest", data = Epidemio.prop, : Missing values exist in the data

因此,我从模型中删除了所有其他变量,除了两个没有缺失数据的感兴趣变量。

mod_match<-matchit(Treatment~Prop.score, 
method = "nearest",  data = Epidemio.prop[c("Treatment","Prop.score")],
caliper = 0.1)

我仍然有错误消息。

Error in weights.matrix(match.matrix, treat, discarded) : No units were matched In addition: Warning messages:

1: In max(pscore[treat == 0]) : no non-missing arguments to max; returning -Inf

2: In max(pscore[treat == 1]) : no non-missing arguments to max; returning -Inf

3: In min(pscore[treat == 0]) : no non-missing arguments to min; returning Inf

4: In min(pscore[treat == 1]) : no non-missing arguments to min; returning Inf

问题是你没有给出任何用于倾向得分计算的变量(即,你只给出 TreatmentProp.score,我不清楚其含义) . 您需要传递一组辅助变量,这些变量将用于拟合预测倾向得分的模型。

此外,根据我使用 MatchIt 的经验,无论缺失与模型中包含的变量无关,它都会抛出与缺失值相关的错误。

我建议您使用要在模型中使用的变量创建一个辅助数据框,并删除(或推算)任何这些变量中具有缺失值的观察值。

像这样:

vars_to_keep <- c("Treatment", "x1", "x2", "x3", ... )
aux_df <- df[vars_to_keep]

# Select only complete cases (i.e. drop observations with at least one missing)
aux_df <- aux_df[complete.cases(aux_df), ]

mod_match <- matchit(Treatment ~ x1 + x2 + x3 + ..., method = "nearest", data = aux_df) 

不过,this tutorial 是更全面的帮助。我建议看看它。

祝你好运!