Prueba de sobredispersión en regresión logística

9

R en acción (Kabacoff, 2011) sugiere la siguiente rutina para evaluar la sobredispersión en una regresión logística:

Ajustar regresión logística usando distribución binomial:

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

Ajuste de regresión logística usando distribución cuasibinomial:

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

Use chi-cuadrado para probar la sobredispersión:

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

¿Alguien podría explicar cómo y por qué la distribución de chi-cuadrado se está utilizando para probar la dispersión excesiva aquí? El valor p es 0.79: ¿cómo muestra esto que la sobredispersión no es un problema en el modelo de distribución binomial?

luciano
fuente
2
Es bastante difícil no ajustarse a la distribución de Bernoulli a menos que tenga observaciones correlacionadas. ¿Qué hay del ajuste que sospechas que es inadecuado?
Frank Harrell
Por observaciones correlacionadas, ¿quiere decir que cada ensayo de Bernoulli no es independiente?
luciano
1
Sí, por ejemplo, correlación serial o dentro del clúster; ensayos no independientes.
Frank Harrell

Respuestas:

4

El enfoque descrito requiere cálculos innecesarios. La estadística de prueba es solo

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

Esto es exactamente igual al estadístico de prueba de Pearson por falta de ajuste, por lo tanto, tiene una distribución de chi-cuadrado.χ2

La sobredispersión como tal no se aplica a los datos de Bernoulli. Un valor grande de podría indicar la falta de covariables o potencias, o términos de interacción, o los datos deben agruparse. Un valor p de 0.79 indica que la prueba no pudo encontrar ningún problema.χ2

oleh
fuente
44
¿No debería modificarse la respuesta anterior de la siguiente manera? sum(residuals(model_binom, type = "deviance")^2)/model_binom$df.residual
Steve VW