函数问题 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
问题是你没有给出任何用于倾向得分计算的变量(即,你只给出 Treatment
和 Prop.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 是更全面的帮助。我建议看看它。
祝你好运!
您好,我想通过调整倾向得分来进行逻辑回归。但首先我想根据倾向得分匹配条约和非条约。这是我的第一个脚本:
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
问题是你没有给出任何用于倾向得分计算的变量(即,你只给出 Treatment
和 Prop.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 是更全面的帮助。我建议看看它。
祝你好运!