【问题标题】:Problems with function MatchIt::matchit函数 MatchIt::matchit 的问题
【发布时间】:2020-05-28 12:05:06
【问题描述】:

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

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

【问题讨论】:

  • 始终明确说明任何非基础 R 函数来自哪些包。我在标题中添加了对包MatchIt 的引用(我认为这是您一直在使用的)。另请注意,使用全大写会被视为大喊大叫。
  • @MauritsEvers 感谢您的建议。但我也尝试了你提出的并没有解决问题。但是当我将变量“Treatment”更改为 0,1 时,它起作用了。
  • 我没有提出任何建议。由于缺少样本数据,您的问题/问题无法重现。始终包含最少的样本数据,以便我们重现您遇到的问题。

标签: r propensity-score-matching


【解决方案1】:

问题是您没有提供任何用于倾向得分计算的变量(即,您只提供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 是一个更全面的帮助。我建议你看看它。

祝你好运!

【讨论】:

    猜你喜欢
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多