Cómo calcular la bondad de ajuste en glm (R)

21

Tengo el siguiente resultado de ejecutar la función glm.

¿Cómo puedo interpretar los siguientes valores:

  • Desviación nula
  • Desviación residual
  • AIC

¿Tienen algo que ver con la bondad del ajuste? ¿Puedo calcular alguna medida de bondad de ajuste a partir de estos resultados, como R-cuadrado o cualquier otra medida?

Call:
glm(formula = tmpData$Y ~ tmpData$X1 + tmpData$X2 + tmpData$X3 + 
    as.numeric(tmpData$X4) + tmpData$X5 + tmpData$X6 + tmpData$X7)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.52628  -0.24781  -0.02916   0.25581   0.48509  

Coefficients:
                     Estimate Std. Error  t value Pr(>|t|)    
(Intercept         -1.305e-01  1.391e-01   -0.938   0.3482    
tmpData$X1         -9.999e-01  1.059e-03 -944.580   <2e-16 ***
tmpData$X2         -1.001e+00  1.104e-03 -906.787   <2e-16 ***
tmpData$X3         -5.500e-03  3.220e-03   -1.708   0.0877 .  
tmpData$X4         -1.825e-05  2.716e-05   -0.672   0.5017    
tmpData$X5          1.000e+00  5.904e-03  169.423   <2e-16 ***
tmpData$X6          1.002e+00  1.452e-03  690.211   <2e-16 ***
tmpData$X7          6.128e-04  3.035e-04    2.019   0.0436 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for gaussian family taken to be 0.08496843)

    Null deviance: 109217.71  on 3006  degrees of freedom
Residual deviance:    254.82  on 2999  degrees of freedom
  (4970 observations deleted due to missingness)
AIC: 1129.8

Number of Fisher Scoring iterations: 2
aprendiz
fuente
Me doy cuenta de que esto se migró de SO, donde normalmente no se buscaría información sobre estos términos estadísticos. ¡Tienes un gran recurso aquí! Por ejemplo, vea lo que puede aprender de una búsqueda en algunos de sus términos, como AIC . Un poco de tiempo dedicado a esto debería responder completamente a su pregunta o al menos guiarlo a hacer una más específica.
whuber
No está relacionado con glms gaussianos, pero si tiene un gln de bernoulli ajustado a datos binarios, no puede usar la desviación residual para evaluar el ajuste del modelo, porque resulta que los datos se cancelan en la fórmula de desviación. Ahora, puede usar la diferencia de desviaciones residuales en ese caso para comparar dos modelos, pero no la desviación residual en sí.
FisherDisinformation

Respuestas:

15

glmR2glmR2R2

RsolLMETRO2=1-(yoreyo,metrooremil2)2/ /norte(yoreyo,nortetull2)2/ /norte        .=.        1-SSmi/ /norte[metrooremil]SST/ /norte[totunal]=ROLS2

Existe cierto debate sobre cómo se interpreta dicha medida en el LHS, pero solo cuando los modelos se apartan de la situación más simple de Gauss / OLS. Pero en los GLM donde la función de enlace puede no ser "identidad", como sucedió aquí, y el "error al cuadrado" puede no tener la misma interpretación clara, entonces el Criterio de información de Akaike también se informa porque parece ser más general. Hay varios otros contendientes en el sorteo GLM GOF sin un ganador claro.

R2

DWin
fuente
77
¿Dónde está exactamente el "Nagelkerke-pseudo-" R2 "" en la salida anterior?
Tom
1
Me estoy haciendo eco de la pregunta de Tom. ¿Dónde en la salida está el Nagelkerke-pseudo- "R2", o cómo lo encuentro? No busco más información sobre el valor, sino dónde puedo encontrarlo en la salida de R. No hay nada en el resultado de ejemplo de la pregunta que me parezca un valor de bondad de ajuste en el rango [0-1], así que estoy confundido.
Kevin - Restablece a Mónica el
Vea stats.stackexchange.com/questions/8511/… y stackoverflow.com/questions/6242818/… ... No veo ningún R ^ 2 ni en el objeto glm ni en el resultado resumido. Puede que haya estado pensando en la salida habitual de las funciones de resumen rms, ya que ese es mi entorno de modelado favorito.
DWin
9

Utilice la desviación nula y la desviación residual, específicamente:

1 - (Residual Deviance/Null Deviance)

Si lo piensa, está tratando de medir la relación entre la desviación de su modelo y la nula; cuánto mejor es su modelo (desviación residual) que solo la intercepción (desviación nula). Si esa proporción es pequeña, está 'explicando' la mayor parte de la desviación en el valor nulo; 1 menos que te da tu R-cuadrado.

En tu caso obtendrías .998.

Si solo llama al modelo lineal (lm) en lugar de glm, explícitamente le dará un R cuadrado en el resumen y podrá ver que es el mismo número.

noLongerRandom
fuente
5

Si está ejecutando un modelo logístico binario, también puede ejecutar la prueba de bondad de ajuste Hosmer Lemeshow en su modelo glm (). Usando la biblioteca ResourceSelection.

library(ResourceSelection)

model <- glm(tmpData$Y ~ tmpData$X1 + tmpData$X2 + tmpData$X3 + 
           as.numeric(tmpData$X4) + tmpData$X5 + tmpData$X6 + tmpData$X7, family = binomial)

summary(model)
hoslem.test(model$y, model$fitted)
dylanjm
fuente
Sin embargo, tenga en cuenta que esto solo funciona para modelos de variables dependientes binarias (por ejemplo, si OP se hubiera establecido family = "binomial. El ejemplo de OP es una regresión lineal.
Matthew
@Matthew Esto es cierto, lo siento, me perdí eso. He estado usando regresiones logísticas binarias mucho últimamente, mi cerebro simplemente fue alhoslem.test()
dylanjm
Comprensible :) Le sugerí una edición a su publicación, pero también olvidé actualizar el código R. Es posible que desee cambiar eso solo por razones de claridad.
Mateo