解释 glm.diag.plots

机器算法验证 r 广义线性模型 数据可视化 诊断
2022-03-31 18:59:24

众所周知,对 GLM 结果的解释非常棘手。我是 GLM 的新手,偶然发现了 R 中引导包中的 glm.diag.plots 函数,它有望让事情变得更容易。然而,文档很少,我不完全确定如何理解结果,尤其是它们如何与线性回归图进行比较。

例如,考虑下面的两个图:如何解释我运行的两个 logit 模型的结果?

示例图 1

示例图 2

1个回答

GLM 的诊断图与 LM 的诊断图非常相似,因为 GLM 的残差应该是同方差的,独立于均值,并且渐近接近正态性,即在泊松或二项式的大量计数的情况下(这的二元或二项式;又名标准逻辑回归)响应的用处要小得多;例如,请参见此CV 答案N=1

我并不完全清楚为什么会有单独boot::glm.diag.plots()的底层boot::glm.diag()函数与内置函数stats::plot.lm()(也处理glm模型)有很大的重叠;我的猜测是包的作者 (A. Canty) 的偏好与 的作者略有不同stats::plot.lm(),或者更可能的是该boot包是在 1997 年开发的,当时 R 项目刚刚开始,所以这些函数是写在平行。

plot.lm()以下是和之间的一些异同glm.diag.plots()

  • 线性预测器(又名“拟合”)与残差:与 中的第一个图(或which=1)相同plot.lm(),除了glm.diag.plots()使用折刀偏差残差,我无法在任何地方找到定义(它可能在 Davison 和 Snell 章节中作为参考给出?glm.diag),但计算为偏差残差sign(dev) * sqrt(dev^2 + h * rp^2)在哪里;是帽子值;是标准化的皮尔逊残差(皮尔逊残差除以尺度参数,如果有,除以)。devhrpsqrt(1-h)
  • 有序偏差残差与标准正态分位数:“QQ 图”,与 中的第三个图 ( which=3)相同plot.lm()两者都使用标准化偏差残差,尽管您必须查看代码才能找到答案。ri/(hi(1hi))
  • h/(1h) vs. Cook 统计:用来which=6plot.lm()是“杠杆”)得到这个。使用更保守的经验法则来决定哪些点可能是“有影响力的”。h/(1h)glm.diag.plots()
  • which=4案例与库克统计:与中相同plot.lm()

plot.lm()似乎有一些优点,因为它(1)更稳健地处理零权重和无限情况,(2)在图形中添加一些平滑线和轮廓以帮助解释。car软件包具有一些扩展功能(例如qqPlot),并且该DHARMa软件包使用模拟残差来为逻辑回归和其他 GLM 获得更多可解释的残差图。mgcv::qq.gam还通过残差模拟生成改进的 QQ 图。

您的第一个案例看起来不错:没有明显的模式,线性 QQ 情节,几个“影响”点。我肯定会仔细检查具有高库克距离和线性预测值 >15 的两个点......我无法从图中真正看出,但看起来您的数据中可能有许多重复值?

第二种情况:与第一种情况相同,只是你有更多的点(例如,情节 1 中的聚类模式要强得多)。QQ 情节看起来很不稳定,但我不确定我会为此担心多少。尝试使用模拟残差(DHARMa包)...