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

时间:2019-01-30 17:08:02

标签: r warnings logistic-regression intercept bayesglm

我正在尝试在不进行拦截的情况下进行逻辑回归。首先,我尝试了函数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。否则,我是否可以根据此警告消息知道如何解决该问题?

2 个答案:

答案 0 :(得分:2)

此问题的正确答案是,在逻辑回归中不应删除截距。修正警告消息而不修正模型的错误规格是不适当的做法。

在正确完成的逻辑回归中,当存在完美的分离时(可以完全解释手头数据样本中类成员的预测变量的组合),就会显示此错误消息,并且存在解决此现象的完善方法,例如在this page上进行了解释。

但是,在逻辑回归模型中删除截距是不合适的。请参阅this page和有关在Cross Validated,尤其是https://stats.stackexchange.com/questions/11109/how-to-deal-with-perfect-separation-in-logistic-regression上重复发布此问题的评论中的广泛讨论。

答案 1 :(得分:0)

我将尝试提供该问题的答案。

警告是什么意思? 当某些观测值可能存在数值精度问题时,会发出警告。更精确地,在拟合模型返回概率为1-epsilon或等效为0 + epsilon的情况下给出。作为标准,对于标准glm.fit函数,此界限分别为1-10 ^ -8和10 ^ -8(由glm.control给出)。

何时会发生? 以我的经验,这种情况最常发生,是包括因素(或虚拟变量)的情况,在一种情况下,仅观察到一种结果。当交互作用包含在许多级别的因素中且分析的数据有限时,这种情况最经常发生。 类似地,如果与观察数相比有许多变量(将使用的变量,交互作用转换等作为单个变量进行计数,则总数将是所有这些变量的总和),则可能会获得相似的图像。在您的情况下,如果您有因子,则删除截距将为每个因子添加1级,这可能会降低精度边缘概率0和1附近的精度。 简而言之,如果对于我们的某些数据,我们没有(或很少)不确定性,那么此警告将为我们提供指示。

我可以忽略它吗,否则如何解决? 这取决于当前的问题和问题的严重程度。诸如John Fox之类的多个来源可能会认为这些观测值可能是异常值,并且有充分的论据建议在使用影响力度量(在car软件包中提供基本glm后)或进行一些异常值测试(也car软件包中提供的基本glm)(如果这是您的工作范围内的一种选择)。 如果这些结果表明它们不影响拟合,则不会删除它们,因为这样做没有统计依据。

如果在您的工作领域中不能去除异常值,那么如果这是原因,或者如果因素的数量是原因的合并水平,则简化模型(通常较少的变量)可能会有所帮助更好的结果。

其他来源可能还有其他建议,但是对于这些模型类型,John Fox是该主题的可靠来源。这变成了“是否正确指定了我的模型?”,“它对我的模型有多严重的影响?”的问题。和“您被允许从事多少工作?”,同时遵循统计信息中的一般理论和指导原则。 接近0和1的概率不太可能是精确的,而更可能是由于数字印象,但是,如果不是您可能预测的情况,并且对模型的其余部分没有明显影响,则这不一定是问题,可以忽略。