逻辑回归中的过度分散测试

机器算法验证 r 回归 分布 物流 过度分散
2022-03-13 19:30:13

R in Action (Kabacoff, 2011) 建议使用以下例程来测试逻辑回归中的过度分散:

使用二项分布拟合逻辑回归:

model_binom <- glm(Species=="versicolor" ~ Sepal.Width,
                   family=binomial(), data=iris)

使用拟二项分布拟合逻辑回归:

model_overdispersed <- glm(Species=="versicolor" ~ Sepal.Width, 
                           family=quasibinomial(), data=iris)

使用卡方检验过度离散:

pchisq(summary(model_overdispersed)$dispersion * model_binom$df.residual, 
       model_binom$df.residual, lower = F)
# [1] 0.7949171

有人可以解释这里如何以及为什么使用卡方分布来测试过度分散吗?p 值为 0.79 - 这如何表明过度分散在二项分布模型中不是问题?

2个回答

所描述的方法需要不必要的计算。检验统计量只是

sum(residuals(model_binom, type = "deviance")^2)

这完全等于皮尔逊χ2缺乏拟合的检验统计量,因此它具有卡方分布。

这样的过度分散不适用于伯努利数据。大值χ2可能表明缺乏协变量或权力,或交互项,或数据应分组。p 值为 0.79 表示测试未能发现任何问题。

正如@oleh 所说,chi2 测试基本上是一个通用的 GOF,它会由过度分散触发,但也可能由其他问题触发。

您可以使用DHARMa R 包(免责声明:我是开发人员)专门测试二项式 GLM 中的过度分散,它将数据中的分散与拟合模型中模拟数据的分散进行比较。

model_binom <- glm(Species=="versicolor" ~ Sepal.Width,
                   family=binomial(), data=iris)
library(DHARMa)
testDispersion(model_binom)

但是,请注意,逻辑回归中的原始 0/1 响应不能过度分散,因此该测试(与任何其他分散测试一样)永远不会是阳性的。仅当您对残差进行分组时,对 0/1 响应的过度离散测试才有意义。请参阅此处DHARMa 小插图中特定于二项式响应的评论