没有截距的逻辑回归给出拟合警告消息

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,其中包含许多建议。