glm en R: ¿qué valor representa la bondad de ajuste de todo el modelo?

10

Estoy ejecutando glms en R (modelos lineales generalizados). Pensé que conocía los valores, hasta que vi que llamar a un resumen para un glm no le da un valor de referencia superior del modelo en su conjunto, al menos no en el lugar donde lo hacen los modelos lineales.

Me pregunto si esto se da como el valor de la intersección, en la parte superior de la tabla de coeficientes. Entonces, en el siguiente ejemplo, si bien Wind.speed..knots y canopy_density pueden ser significativos para el modelo, ¿cómo sabemos si el modelo en sí es significativo? ¿Cómo sé si confiar en estos valores? ¿Tengo razón al preguntarme si Pr (> | z |) para (Intercepción) representa la importancia del modelo? ¿Es este modelo amigos importantes? ¡Gracias!

Debo tener en cuenta que ejecutar una prueba F no dará un valor, ya que recibo un mensaje de error que dice que ejecutar pruebas F en la familia binomial es inapropiado.

Call:
glm(formula = Empetrum_bin ~ Wind.speed..knots. + canopy_density, 
    family = binomial, data = CAIRNGORM)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.2327  -0.7167  -0.4302  -0.1855   2.3194  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)  
(Intercept)          1.8226     1.2030   1.515   0.1298  
Wind.speed..knots.  -0.5791     0.2628  -2.203   0.0276 *
canopy_density      -2.5733     1.1346  -2.268   0.0233 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 59.598  on 58  degrees of freedom
Residual deviance: 50.611  on 56  degrees of freedom
  (1 observation deleted due to missingness)
AIC: 56.611
Martín
fuente
1
Si recuerdo correctamente en una regresión binomial, debería usar una prueba de desviación, también conocida como prueba de probabilidad de registro, que es análoga a la prueba F utilizada en una regresión lineal. Este es el -2 * (LL nulo - LL saturado) que se ajusta a una distribución de chi-cuadrado. Aunque no puedo ver un modelo de probabilidad de registro en su resumen de salida. ¿Está en el objeto modelo pero no en la salida de resumen?
SamPassmore

Respuestas:

10

Puede hacer una prueba de chi-cuadrado asintótica de (59.598-50.611) frente a una prueba de chi-cuadrado con (58-56) df, o usar anova()en su objeto glm (que no hace la prueba directamente, pero al menos calcula ( 59.598-50.611) y (58-56) para usted).

Este es efectivamente el análisis de la desviación .

Este es el tipo de cálculos que podría hacer (en un conjunto de datos diferente, que viene con R):

spray1=glm(count~spray,family=poisson,data=InsectSprays)  # full model
spray0=glm(count~1,family=poisson,data=InsectSprays)      # null model
with(anova(spray0,spray1),pchisq(Deviance,Df,lower.tail=FALSE)[2]) 

Lo que da el valor p para una estática chi cuadrado asintótica basada en la desviación .

O puede usar las funciones deviancey df.residualpara hacer esto:

 pchisq(deviance(spray0)-deviance(spray1),
     df.residual(spray0)-df.residual(spray1),
    lower.tail=FALSE)

-

Muchas personas usarían la comparación entre AIC de modelo completo y nulo (o en algunos casos, tal vez una comparación entre un modelo de interés y el modelo saturado) para determinar si el modelo era mejor que el nulo en ese sentido.

-

¿Tengo razón al preguntarme si Pr (> | z |) para (Intercepción) representa la importancia del modelo?

No lo hace. De hecho, la intersección del valor p generalmente no es de interés directo.

Si está considerando un modelo con un parámetro de dispersión, he visto a algunas personas argumentar a favor de hacer una prueba F en lugar de un chi-cuadrado asintótico; corresponde a personas que usan una prueba t en lugar de az en los coeficientes individuales. No es probable que sea una aproximación razonable en muestras pequeñas. No he visto una derivación o simulación que sugiera que la F es necesariamente una aproximación adecuada (es decir, mejor que el resultado asintótico) en el caso de los GLM en general. Bien podría existir, pero no lo he visto.

Glen_b -Reinstate a Monica
fuente
2
También puede ejecutar Anova(fit, type = 2)desde la carbiblioteca
Algoritmático
3

Suponiendo que su modelo está en el objeto 'ajuste', podría usar este código para realizar una prueba de probabilidad de registro en su modelo binomial Como ha notado, una prueba F no es apropiada, pero esta prueba probará si su modelo se predice mejor que al azar.

LLR = -2 * (fit$null.deviance - fit$deviance)

Esta es la fórmula para la prueba de relación de probabilidad logarítmica.

pchisq(LLR, 2, lower.tail = FALSE)

Y esto te dará el valor p. Aunque no estoy 100% seguro de que sea el df correcto. Estoy bastante seguro de que es la diferencia en el número de parámetros, de los cuales tiene 2 en su modelo saturado y ninguno en el modelo nulo, ergo df = 3 - 1 = 2. Pero eso podría ser algo a lo que seguir.

SamPassmore
fuente
1

Fχ2

Alternativamente, puede mirar AIC o medidas relacionadas como BIC.

R2

Livius
fuente