【问题标题】:Logistic regression without an intercept gives fitting warning message没有截距的逻辑回归给出了合适的警告信息
【发布时间】:2019-01-30 17:08:01
【问题描述】:

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

【问题讨论】:

    标签: r warnings logistic-regression intercept bayesglm


    【解决方案1】:

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

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

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

    【讨论】:

    • 恐怕那个页面什么也没说。它仅建议 (1) safeBinaryRegression 包,它只是最基本的“glm”模型,但问题更大;(2) hlr 包不再存在。
    【解决方案2】:

    我会尽力回答这个问题。

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

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

    我可以忽略它,否则我该如何解决? 这取决于手头的问题和问题的规模。几个来源,如John Fox,可能会认为这些观察结果可能是异常值,并且有充分的论据建议在使用影响度量(在基本 glm 的 car 包中可用)或执行一些异常值测试(也可在 @ 987654324@ 基本 glm 包),如果这是您工作领域内的一个选项。 如果这些表明它们不会影响拟合,则不会删除它们,因为这样做没有统计论据。

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

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

    【讨论】:

    • 请看下面我的回答。原则上您是正确的,但在这种特殊情况下,模型被错误指定,而逻辑回归中没有截距
    • @EdM:从我从他的文本和我发现的其他案例中读到的内容来看,说“在逻辑回归中没有截距总是错误的”是不正确的。
    • 您好 EdM,您给出的第一个链接很好地解释了完美分离,但梯形链接的说法并不完全正确。截距不仅是边际分布的估计量。要做到这一点,所有变量都必须居中,并且这些都不能成为因素。否则,边际分布是通过整合其他参数获得的(平均值可以用作经验估计)虽然这是非常不寻常且不推荐的做法,但可能存在实际应该删除截距的情况。
    • @Oliver:我同意你的观点,即在某些情况下,拦截实际上应该从我自己的经验中删除。
    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 2020-08-27
    • 2019-02-12
    • 2021-04-18
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多