r - 函数 MatchIt::matchit 的问题
问题描述
嗨,我想通过调整倾向得分来进行逻辑回归。但首先我想根据倾向得分来匹配条约和非条约。这是我的第一个脚本:
mod_match<-matchit(Treatment~Prop.score, method = "nearest", data = Epidemio.prop,caliper = 0.05)
这是错误消息
matchit 中的错误(Treatment~Prop.score, method = "nearest", data = Epidemio.prop, : 数据中存在缺失值
因此,我从模型中删除了除没有缺失数据的两个感兴趣变量之外的所有其他变量。
mod_match<-matchit(Treatment~Prop.score,
method = "nearest", data = Epidemio.prop[c("Treatment","Prop.score")],
caliper = 0.1)
我仍然有错误消息。
weights.matrix(match.matrix,treat,discarded) 中的错误:没有匹配的单位另外:警告消息:
1:在 max(pscore[treat == 0]) 中:max 没有非缺失参数;返回-Inf
2:在 max(pscore[treat == 1]) 中:max 没有非缺失参数;返回-Inf
3:在 min(pscore[treat == 0]) 中:min 没有非缺失参数;返回 Inf
4:在 min(pscore[treat == 1]) 中:min 没有非缺失参数;返回 Inf
解决方案
问题是您没有给出用于倾向得分计算的任何变量(即,您只给出Treatment
and 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)
不过,本教程是一个更全面的帮助。我建议看看它。
祝你好运!
推荐阅读
- android - android studio build 资源名称必须以字母开头
- python - 如何使用和打印 pandas 数据框名称
- c# - 在迁移中使用外键播种数据
- javascript - 在 navigator.connection 中缺少类型,如何在 javascript 中获取蜂窝、wifi、以太网
- google-apps-script - Google 脚本:根据表格中保存的 URL 替换幻灯片中的 2 张图片
- django - 如何使用列表和字典的字典动态填充 Django 表单?
- laravel - “storage/logs/laravel-2019-11-22.log”无法打开:无法打开流:权限被拒绝
- c++ - 停止共享库链接删除未使用的类
- highcharts - 如何按切片值从最小值到最大值对 highchart pie jasperstudio 进行排序
- python - sklearn 库的 train_test_split 函数存在问题