【问题标题】:Warning in the Matchit package ("Glm.fit: fitted probabilities numerically 0 or 1 occurred") How to deal with that?Matchit 包中的警告(“Glm.fit:出现数字 0 或 1 的拟合概率”)如何处理?
【发布时间】:2020-01-10 14:41:02
【问题描述】:

我正在运行一个包含大约 200.000 个观察值的代码,其中 10.000 个被处理,其余的我正在尝试使用包 MatchIt 进行匹配。

由于这些变量之一,出现了一条警告消息,我不知道是否应该忽略它。消息是:Glm.fit:拟合概率为 0 或 1

我正在运行的代码类似于下面的代码:

m.out <- matchit(var ~ VAR1 + VAR2 + VAR3 + VAR4 + VAR5, data = mydata, method = "nearest", exact = c("VAR1", "VAR3", "VAR5"))

为了说明,假设有问题的变量是“VAR5”。这个变量是一个字符变量,包含大约 200 个不同的文本。所以,我的问题是,这个警告是否是一个真正的问题,或者仅仅是因为这个变量中有太多选项与我的数据大小相比,并且因此无法找到治疗/控制预测?无论如何,我能做些什么来避免这个警告吗?

最好的,

【问题讨论】:

  • 感谢您的链接,但我仍然感到困惑。对不起,我是编码初学者。我看到他们提供了一些回归函数的解决方案,但是我不知道如何在 MatchIt 包中实现这些解决方案!
  • ,,, 我也不行。快速浏览一下文档,我想知道是否有一种方法可以使用 gam 距离(即"GAMlogit"),它允许您通过matchit 使用gam 参数(paraPen)来惩罚系数论据distance.options。但我认为这可能最好转移到统计网站stats.stackexchange.com

标签: r propensity-score-matching


【解决方案1】:

MatchIt 默认情况下通过glm 函数使用逻辑回归来估计倾向得分。此警告意味着逻辑回归模型已经过拟合,其中一些变量完美地预测了治疗状态。这可能表明违反了积极性(即,您的两个群体彼此根本不同),但是,正如您所提到的,可能只是一个相对不重要的特征有很多类别,其中一些与治疗完全重叠。有几种方法可以处理这个问题;其中一个确实是放弃 VAR5,但您也可以尝试使用不受此问题影响的方法估计自己在 MatchIt 之外的倾向得分,然后通过 distance 将这些倾向得分提供给 matchit()论据。

想到了两种方法。第一种是使用brglm2,这是一个实现拟合逻辑回归模型的替代方法的包,这样拟合的概率永远不会是0或1。这种方法很容易实现,因为它只是使用了glm函数的轻微变化.

第二个是使用机器学习方法执行正则化(即变量选择),以便只包括对分析很重要的因素的变量和水平。您可以使用glmnet 执行套索或弹性网络逻辑回归,您可以使用gbmtwang 进行广义增强建模,或者您可以使用SuperLearner 堆叠几种机器学习方法并从中获取最佳预测他们。然后,您可以将预测值提供给matchit()

【讨论】:

    猜你喜欢
    • 2021-07-25
    • 1970-01-01
    • 2012-01-25
    • 2016-02-29
    • 2022-11-04
    • 2013-04-21
    • 2016-03-12
    • 2017-05-28
    • 2019-10-24
    相关资源
    最近更新 更多