剧情解读(glm.model)

机器算法验证 r 物流 数据可视化 广义线性模型 QQ图
2022-02-02 17:08:55

谁能告诉我如何解释“残差与拟合”、“正常 qq”、“比例位置”和“残差与杠杆”图?我正在拟合二项式 GLM,保存它然后绘制它。

2个回答

R没有明确的plot.glm()方法。glm()当您使用并运行模型时plot(),它会调用?plot.lm,这适用于线性模型(即,具有正态分布的误差项)。

一般来说,这些图的含义(至少对于线性模型)可以在 CV 上的各种现有线程中学习(例如:残差拟合qq-plots 在几个地方:1、2、3 比例位置残差与杠杆)。但是,当所讨论的模型是逻辑回归时,这些解释通常无效。

更具体地说,情节通常会“看起来很有趣”,并导致人们认为模型完全正常时有问题。我们可以通过几个简单的模拟查看这些图来看到这一点,我们知道模型是正确的:

  # we'll need this function to generate the Y data:
lo2p = function(lo){ exp(lo)/(1+exp(lo)) }

set.seed(10)                    # this makes the simulation exactly reproducible
x  = runif(20, min=0, max=10)   # the X data are uniformly distributed from 0 to 10
lo = -3 + .7*x                  # this is the true data generating process
p  = lo2p(lo)                   # here I convert the log odds to probabilities
y  = rbinom(20, size=1, prob=p) # this generates the Y data

mod = glm(y~x, family=binomial) # here I fit the model
summary(mod)                    # the model captures the DGP very well & has no
# ...                           #  obvious problems:
# Deviance Residuals: 
#      Min        1Q    Median        3Q       Max  
# -1.76225  -0.85236  -0.05011   0.83786   1.59393  
# 
# Coefficients:
#             Estimate Std. Error z value Pr(>|z|)  
# (Intercept)  -2.7370     1.4062  -1.946   0.0516 .
# x             0.6799     0.3261   2.085   0.0371 *
# ...
# 
# Null deviance: 27.726  on 19  degrees of freedom
# Residual deviance: 21.236  on 18  degrees of freedom
# AIC: 25.236
# 
# Number of Fisher Scoring iterations: 4

现在让我们看看我们从中得到的图plot.lm()

在此处输入图像描述

Residuals vs Fitted和图看起来模型Scale-Location存在问题,但我们知道没有问题。这些用于线性模型的图在与逻辑回归模型一起使用时通常会产生误导。

让我们看另一个例子:

set.seed(10)
x2 = rep(c(1:4), each=40)                    # X is a factor with 4 levels
lo = -3 + .7*x2
p  = lo2p(lo)
y  = rbinom(160, size=1, prob=p)

mod = glm(y~as.factor(x2), family=binomial)
summary(mod)                                 # again, everything looks good:
# ...
# Deviance Residuals: 
#   Min       1Q   Median       3Q      Max  
# -1.0108  -0.8446  -0.3949  -0.2250   2.7162  
# 
# Coefficients:
#                Estimate Std. Error z value Pr(>|z|)    
# (Intercept)      -3.664      1.013  -3.618 0.000297 ***
# as.factor(x2)2    1.151      1.177   0.978 0.328125    
# as.factor(x2)3    2.816      1.070   2.632 0.008481 ** 
# as.factor(x2)4    3.258      1.063   3.065 0.002175 ** 
# ... 
# 
# Null deviance: 160.13  on 159  degrees of freedom
# Residual deviance: 133.37  on 156  degrees of freedom
# AIC: 141.37
# 
# Number of Fisher Scoring iterations: 6

在此处输入图像描述

现在所有的情节看起来都很奇怪。

那么这些图向您展示了什么?

  • 例如,该Residuals vs Fitted图可以帮助您查看是否有遗漏的曲线趋势。但是逻辑回归的拟合本质上是曲线的,因此您可以在残差中看到奇怪的趋势而没有任何问题。
  • Normal Q-Q图可帮助您检测残差是否呈正态分布。但是偏差残差不一定要服从正态分布才能使模型有效,因此残差的正态性/非正态性不一定能告诉您任何信息。
  • Scale-Location图可以帮助您识别异方差性。但是逻辑回归模型本质上几乎是异方差的。
  • 可以帮助您识别可能的Residuals vs Leverage异常值。但是逻辑回归中的异常值不一定以与线性回归相同的方式表现出来,因此该图可能有助于识别它们,也可能没有帮助。

这里简单的带回家的教训是,这些图很难用来帮助您了解逻辑回归模型的情况。人们在运行逻辑回归时可能最好不要看这些图,除非他们有相当的专业知识。

  1. 残差与拟合 - 不应该有强模式(温和模式不是问题,请参阅@gung 的回答)并且没有异常值,残差应该随机分布在零附近。
  2. 正态 QQ - 残差应该围绕对角线,即应该是正态分布的(参见wiki 的 QQ 图)。该图有助于检查它们是否大致正常。
  3. 比例位置 - 如您所见,在 Y 轴上也有残差(如残差与拟合图),但它们是按比例缩放的,因此类似于 (1),但在某些情况下效果更好。
  4. 残差与杠杆——它有助于诊断异常病例。与之前的图中一样,对异常案例进行了编号,但在此图中,如果有任何与其余数据非常不同的案例,它们将绘制在细红线下方(查看关于 Cook 距离的 wiki)。

阅读有关回归假设的更多信息,因为在许多方面都有相似之处(例如,此处,或 R 中的回归教程