没有截距的逻辑回归给出拟合警告消息
Logistic regression without an intercept gives fitting warning message
我正在尝试 运行 没有拦截的逻辑回归。首先,我尝试了 glm
函数,但出现以下错误:
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
鉴于我的工作性质,根本无法更改数据集,因此我决定使用代码为 bayesglm
的不同 R 程序包。
当我使用包括拦截在内的这个函数时,我没有收到上述错误消息。 但是,当我通过在末尾添加 -1
来排除拦截时我的函数我仍然得到上面相同的错误,输出如下:
> regress=bayesglm(y~x1*x2+x3+x4-1, data = DATA, family=binomial(link="logit"))
> summary(regress)
Call:
bayesglm(formula = y ~ x1 * x2 + x3 + x4 - 1, family = binomial(link = "logit"),
data = DATA, maxit = 10000)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.01451 -0.43143 -0.22778 -0.05431 2.89066
Coefficients:
Estimate Std. Error z value Pr(>|z|)
x1 -20.45537 9.70594 -2.108 0.03507 *
x2 -7.04844 2.87415 -2.452 0.01419 *
x1:x2 0.13409 17.57010 0.008 0.99391
x3 -0.17779 0.06377 -2.788 0.00531 **
x4 -0.02593 0.05313 -0.488 0.62548
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 494.91 on 357 degrees of freedom
Residual deviance: 124.93 on 352 degrees of freedom
(165 observations deleted due to missingness)
AIC: 134.93
Number of Fisher Scoring iterations: 123
并得到如下相同的错误:
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
如果我不添加 -1
来删除截距,我就不会得到。
因此,我有两个问题想请教:
1。我可以忽略此警告消息吗?
2。否则,我可以知道如何根据此警告消息解决问题吗?
我会尽量回答这个问题。
警告是什么意思?
当某些观察的数值精度可能有问题时,会发出警告。更准确地说,它给出了在拟合模型的情况下,returns 概率为 1 - epsilon 或等价于 0 + epsilon。作为标准,对于标准 glm.fit 函数,此界限分别为 1-10^-8 和 10^-8(由 glm.control 给出)。
什么时候会发生?
根据我的经验,这种情况最常发生的情况是包含因素(或虚拟变量)的情况,在一个类别中只观察到一个结果。当交互包含在多个级别的因素中并且分析的数据有限时,这种情况最常发生。
类似地,如果与观察的数量相比有很多变量(将使用的变量、交互转换等计算为单个变量,因此总数将是所有这些的总和),将可能得到类似的图像。在您的情况下,如果您有因素,则删除截距将为每个因素增加 1 个级别,这可能会降低概率边缘情况 0 和 1 附近的精度。
简而言之,如果对于我们数据的某些部分,我们没有(或很少)不确定性,那么这个警告会给我们一个指示。
我可以忽略它吗,否则我该如何解决它?
这取决于手头的问题和问题的规模。一些来源,如 John Fox,可能会考虑这些观察可能的离群值,并且有充分的理由建议在使用影响措施(可在基础 glm 的 car
包中获得)或执行一些离群值测试(也在基础 glm 的 car
包中可用),如果这是您工作领域内的一个选项。
如果这些表明它们不影响拟合,则您不会删除它们,因为这样做没有统计依据。
如果离群值移除不是您工作领域的一个选项,那么如果这是原因,或者如果因素的数量是原因,则简化模型(通常变量较少)可能会有所帮助给出一些更好的结果。
其他来源可能有其他建议,但 John Fox 是关于这些模型类型的主题的可靠来源。它成为 'Is my model correctly specified?'、'How severely does it affect my model?' 和 'How much are you allowed to do in your line of work?' 的问题,同时遵循统计中的一般理论和准则。
接近 0 和 1 的概率不太可能是精确的,更可能是由于数字印象,但如果这些不是您可能预测的情况,并且对模型的其余部分没有显着影响,则此不一定是问题,可以忽略。
这个问题的正确答案是逻辑回归中不应删除截距。修复警告消息而不修复模型的错误规格是不合适的做法。
在正确完成的逻辑回归中,当存在完美分离(完全解释手头数据样本中 class 成员资格的预测变量组合)时,可能会出现此错误消息,并且有完善的方法处理这种现象,例如 this page 上的解释。
但是,在逻辑回归模型中删除截距是不合适的。请参阅 this page and the extensive discussion in comments on the duplicate posting of this question on Cross Validated, in particular https://stats.stackexchange.com/questions/11109/how-to-deal-with-perfect-separation-in-logistic-regression,其中包含许多建议。
我正在尝试 运行 没有拦截的逻辑回归。首先,我尝试了 glm
函数,但出现以下错误:
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
鉴于我的工作性质,根本无法更改数据集,因此我决定使用代码为 bayesglm
的不同 R 程序包。
当我使用包括拦截在内的这个函数时,我没有收到上述错误消息。 但是,当我通过在末尾添加 -1
来排除拦截时我的函数我仍然得到上面相同的错误,输出如下:
> regress=bayesglm(y~x1*x2+x3+x4-1, data = DATA, family=binomial(link="logit"))
> summary(regress)
Call:
bayesglm(formula = y ~ x1 * x2 + x3 + x4 - 1, family = binomial(link = "logit"),
data = DATA, maxit = 10000)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.01451 -0.43143 -0.22778 -0.05431 2.89066
Coefficients:
Estimate Std. Error z value Pr(>|z|)
x1 -20.45537 9.70594 -2.108 0.03507 *
x2 -7.04844 2.87415 -2.452 0.01419 *
x1:x2 0.13409 17.57010 0.008 0.99391
x3 -0.17779 0.06377 -2.788 0.00531 **
x4 -0.02593 0.05313 -0.488 0.62548
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 494.91 on 357 degrees of freedom
Residual deviance: 124.93 on 352 degrees of freedom
(165 observations deleted due to missingness)
AIC: 134.93
Number of Fisher Scoring iterations: 123
并得到如下相同的错误:
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
如果我不添加 -1
来删除截距,我就不会得到。
因此,我有两个问题想请教:
1。我可以忽略此警告消息吗?
2。否则,我可以知道如何根据此警告消息解决问题吗?
我会尽量回答这个问题。
警告是什么意思? 当某些观察的数值精度可能有问题时,会发出警告。更准确地说,它给出了在拟合模型的情况下,returns 概率为 1 - epsilon 或等价于 0 + epsilon。作为标准,对于标准 glm.fit 函数,此界限分别为 1-10^-8 和 10^-8(由 glm.control 给出)。
什么时候会发生? 根据我的经验,这种情况最常发生的情况是包含因素(或虚拟变量)的情况,在一个类别中只观察到一个结果。当交互包含在多个级别的因素中并且分析的数据有限时,这种情况最常发生。 类似地,如果与观察的数量相比有很多变量(将使用的变量、交互转换等计算为单个变量,因此总数将是所有这些的总和),将可能得到类似的图像。在您的情况下,如果您有因素,则删除截距将为每个因素增加 1 个级别,这可能会降低概率边缘情况 0 和 1 附近的精度。 简而言之,如果对于我们数据的某些部分,我们没有(或很少)不确定性,那么这个警告会给我们一个指示。
我可以忽略它吗,否则我该如何解决它?
这取决于手头的问题和问题的规模。一些来源,如 John Fox,可能会考虑这些观察可能的离群值,并且有充分的理由建议在使用影响措施(可在基础 glm 的 car
包中获得)或执行一些离群值测试(也在基础 glm 的 car
包中可用),如果这是您工作领域内的一个选项。
如果这些表明它们不影响拟合,则您不会删除它们,因为这样做没有统计依据。
如果离群值移除不是您工作领域的一个选项,那么如果这是原因,或者如果因素的数量是原因,则简化模型(通常变量较少)可能会有所帮助给出一些更好的结果。
其他来源可能有其他建议,但 John Fox 是关于这些模型类型的主题的可靠来源。它成为 'Is my model correctly specified?'、'How severely does it affect my model?' 和 'How much are you allowed to do in your line of work?' 的问题,同时遵循统计中的一般理论和准则。 接近 0 和 1 的概率不太可能是精确的,更可能是由于数字印象,但如果这些不是您可能预测的情况,并且对模型的其余部分没有显着影响,则此不一定是问题,可以忽略。
这个问题的正确答案是逻辑回归中不应删除截距。修复警告消息而不修复模型的错误规格是不合适的做法。
在正确完成的逻辑回归中,当存在完美分离(完全解释手头数据样本中 class 成员资格的预测变量组合)时,可能会出现此错误消息,并且有完善的方法处理这种现象,例如 this page 上的解释。
但是,在逻辑回归模型中删除截距是不合适的。请参阅 this page and the extensive discussion in comments on the duplicate posting of this question on Cross Validated, in particular https://stats.stackexchange.com/questions/11109/how-to-deal-with-perfect-separation-in-logistic-regression,其中包含许多建议。