39 votos

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

Tengo el siguiente resultado de la ejecución de la función GMS.

¿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 la bondad del ajuste a partir de estos resultados como el 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

3 votos

Me doy cuenta de que esto fue migrado desde SO, donde uno normalmente no buscaría información sobre estos términos estadísticos. Aquí tienes un gran recurso. 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, guiarle a formular una más específica.

0 votos

No está relacionado con los glm gaussianos, pero si tienes un glm bernoulli ajustado a datos binarios, no puedes usar la desviación residual para evaluar el ajuste del modelo, porque resulta que los datos se cancelan en la fórmula de la desviación. Ahora bien, se puede utilizar el diferencia de las desviaciones residuales en ese caso para comparar dos modelos, pero no la desviación residual en sí.

28voto

pjtait Puntos 21

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

1 - (Residual Deviance/Null Deviance)

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

En tu caso obtendrías 0,998.

Si simplemente llamas al modelo lineal (lm) en lugar de glm te dará explícitamente una R-cuadrada en el resumen y podrás ver que es el mismo número.

Con el estándar glm en R, puedes calcularlo como

reg = glm(...)
with(summary(reg), 1 - deviance/null.deviance)

19voto

aron Puntos 174

La familia de errores por defecto para un glm el modelo en (el lenguaje) R es gaussiano, por lo que con el código presentado se obtiene una regresión lineal ordinaria donde $R^2$ es una medida ampliamente aceptada de "bondad de ajuste". La R glm no informa de la función Nagelkerke-pseudo-" $R^2$ ", sino el AIC (Criterio de Información de Akaike). En el caso de un modelo OLS, la medida GOF de Nagelkerke será aproximadamente la misma que el $R^2$ .

$$R^2_{\mathrm{GLM}}=1-\frac{(\sum_id_{i,\mathrm{model}}^2)^{2/N} }{(\sum_id_{i,\mathrm{null}}^2)^{2/N}} ~~.=.~~ 1-\frac{\mathit{SSE}/n[\mathrm{model}]}{\mathit{SST}/n[\mathrm{total}]} = R^2_{\mathrm{OLS}}$$

Hay cierto debate sobre cómo se interpreta esa medida en el LHS, pero sólo cuando los modelos se apartan de la situación más simple de Gaussian/OLS. Sin embargo, en los GLM en los que la función de enlace puede no ser de "identidad", como ocurrió aquí, y el "error al cuadrado" puede no tener la misma interpretación clara, por lo que también se informa del Criterio de Información de Akaike porque parece ser más general. Hay varios otros contendientes en el sorteo del GLM GOF sin un claro ganador.

Podría considerar no informar de una medida GOF si va a utilizar GLMs con otras estructuras de error: ¿Qué pseudo- $R^2$ ¿es la medida a reportar para la regresión logística (Cox & Snell o Nagelkerke)?

9 votos

¿Dónde está exactamente el " Nagelkerke-pseudo-"R2"" en la salida anterior?

1 votos

Me hago eco de la pregunta de Tom. ¿En qué parte de la salida está el pseudo-"R2" de Nagelkerke, o cómo lo encuentro? No estoy buscando más información sobre el valor, sino dónde puedo encontrarlo en la salida de R. No hay nada en la salida del ejemplo de la pregunta que me parezca un valor de bondad de ajuste en el rango [0-1], así que estoy confundido.

1 votos

Ver stats.stackexchange.com/questions/8511/ y stackoverflow.com/questions/6242818/ ... No veo ninguna R^2 ni en el objeto glm ni en la salida del resumen. Puede que haya pensado en la salida habitual de las funciones de resumen rms, ya que ese es mi entorno de modelado favorito.

9voto

dylanjm Puntos 63

Si está ejecutando un modelo logístico binario, también puede ejecutar la prueba de bondad de ajuste de Hosmer Lemeshow en su modelo glm(). Utilizando 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)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X