-3

我正在尝试在没有截距的情况下运行逻辑回归。首先,我尝试了该功能glm,但出现以下错误:

    Warning message:        
    glm.fit: fitted probabilities numerically 0 or 1 occurred       

由于鉴于我的工作性质根本不可能更改数据集,我决定使用具有代码的不同 R 程序包bayesglm

当我使用包括拦截在内的此功能时,我没有收到上述错误消息。-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. 否则,我可以根据这个警告信息知道如何解决问题吗?

4

2 回答 2

2

这个问题的正确答案是不应在逻辑回归中删除截距。在不修复模型的错误规格的情况下修复警告消息是不合适的做法。

在正确完成逻辑回归中,当存在完美分离(完全解释手头数据样本中的类别成员的预测变量组合)时,可能会出现此错误消息,并且有很好的方法来处理这种现象,例如解释在这个页面上

但是,在逻辑回归模型中删除截距是不合适的。请参阅此页面以及有关在Cross Validated上重复发布此问题的评论中的广泛讨论,特别是https://stats.stackexchange.com/questions/11109/how-to-deal-with-perfect-separation-in-逻辑回归,其中包含许多建议。

于 2019-01-30T22:10:02.313 回答
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 的概率不太可能是精确的,并且更可能是由于数字印象,但如果这些不是您可能预测的情况,并且对模型的其余部分没有显着影响,这不一定是问题,可能会被忽略。

于 2019-01-30T21:25:16.130 回答