Pruebe el modelo de regresión logística utilizando la desviación residual y los grados de libertad.


8

Estaba leyendo esta página en Princeton.edu . Están realizando una regresión logística (con R). En algún momento, calculan la probabilidad de obtener una desviación residual mayor que la que obtuvieron en una con grados de libertad iguales a los grados de libertad del modelo. Copiar-pegar desde su sitio web ...χ2

> glm( cbind(using,notUsing) ~ age + hiEduc + noMore, family=binomial)

Call:  glm(formula = cbind(using, notUsing) ~ age + hiEduc + noMore,      
     family = binomial) 

Coefficients:
(Intercept)     age25-29     age30-39     age40-49       hiEduc       noMore  
    -1.9662       0.3894       0.9086       1.1892       0.3250       0.8330  

Degrees of Freedom: 15 Total (i.e. Null);  10 Residual
Null Deviance:      165.8 
Residual Deviance: 29.92        AIC: 113.4 

La desviación residual de 29.92 en 10 df es altamente significativa:

> 1-pchisq(29.92,10)
[1] 0.0008828339

entonces necesitamos un mejor modelo


¿Por qué tiene sentido calcular 1-pchisq(29.92,10)y por qué una baja probabilidad indica que algo va mal con su modelo?

Respuestas:


7

Están utilizando una prueba de desviación que se muestra a continuación:

re(y)=-2(β^;y)+2(θ^(s);y)

Aquí representa el modelo ajustado de interés y representa el modelo saturado. La probabilidad logarítmica para el modelo saturado es (la mayoría de las veces) , por lo tanto, queda la desviación residual del modelo que ajustaron ( ). Esta prueba de desviación es aproximadamente chi-cuadrado con grados de libertad ( siendo las observaciones siendo el número de variables ajustadas). Tiene y por lo que la prueba será aproximadamenteβ^θ^(s)0 029,92norte-pagsnortepagsnorte=dieciséispags=6 6χ102. Lo nulo de la prueba es que su modelo ajustado se ajusta bien a los datos y no hay desajustes, no se ha perdido ninguna fuente de variación. En la prueba anterior, rechaza el valor nulo y, como resultado, se ha perdido algo en el modelo que instaló. La razón para usar esta prueba es que el modelo saturado se ajustará perfectamente a los datos, por lo que si se encontraba en el caso en el que no rechaza el valor nulo entre su modelo ajustado y el modelo saturado, indica que no se ha perdido grandes fuentes de datos variación en su modelo.


3

Su pregunta, como se dijo, ha sido respondida por @ francium87d. La comparación de la desviación residual con la distribución de chi-cuadrado apropiada constituye la prueba del modelo ajustado con el modelo saturado y muestra, en este caso, una falta de ajuste significativa.


Aún así, podría ser útil observar más a fondo los datos y el modelo para comprender mejor lo que significa que el modelo no se ajusta:

d = read.table(text=" age education wantsMore notUsing using 
   <25       low       yes       53     6
   <25       low        no       10     4
   <25      high       yes      212    52
   <25      high        no       50    10
 25-29       low       yes       60    14
 25-29       low        no       19    10
 25-29      high       yes      155    54
 25-29      high        no       65    27
 30-39       low       yes      112    33
 30-39       low        no       77    80
 30-39      high       yes      118    46
 30-39      high        no       68    78
 40-49       low       yes       35     6
 40-49       low        no       46    48
 40-49      high       yes        8     8
 40-49      high        no       12    31", header=TRUE, stringsAsFactors=FALSE)
d = d[order(d[,3],d[,2]), c(3,2,1,5,4)]

library(binom)
d$proportion = with(d, using/(using+notUsing))
d$sum        = with(d, using+notUsing)
bCI          = binom.confint(x=d$using, n=d$sum, methods="exact")

m     = glm(cbind(using,notUsing)~age+education+wantsMore, d, family=binomial)
preds = predict(m, new.data=d[,1:3], type="response")

windows()
  par(mar=c(5, 8, 4, 2))
  bp = barplot(d$proportion, horiz=T, xlim=c(0,1), xlab="proportion",
               main="Birth control usage")
  box()
  axis(side=2, at=bp, labels=paste(d[,1], d[,2], d[,3]), las=1)
  arrows(y0=bp, x0=bCI[,5], x1=bCI[,6], code=3, angle=90, length=.05)
  points(x=preds, y=bp, pch=15, col="red")

ingrese la descripción de la imagen aquí

La figura muestra la proporción observada de mujeres en cada conjunto de categorías que usan anticonceptivos, junto con el intervalo exacto de confianza del 95%. Las proporciones previstas del modelo se superponen en rojo. Podemos ver que dos proporciones predichas están fuera del IC del 95%, y otras cinco están en o muy cerca de los límites de los respectivos IC. Eso es siete de dieciseis ( ) que están fuera del objetivo. Por lo tanto, las predicciones del modelo no coinciden muy bien con los datos observados. 44%

¿Cómo podría encajar mejor el modelo? Quizás haya interacciones entre las variables que sean relevantes. Agreguemos todas las interacciones bidireccionales y evalúemos el ajuste:

m2 = glm(cbind(using,notUsing)~(age+education+wantsMore)^2, d, family=binomial)
summary(m2)
# ...
#     Null deviance: 165.7724  on 15  degrees of freedom
# Residual deviance:   2.4415  on  3  degrees of freedom
# AIC: 99.949
# 
# Number of Fisher Scoring iterations: 4
1-pchisq(2.4415, df=3)  # [1] 0.4859562
drop1(m2, test="LRT")
# Single term deletions
# 
# Model:
# cbind(using, notUsing) ~ (age + education + wantsMore)^2
#                     Df Deviance     AIC     LRT Pr(>Chi)  
# <none>                   2.4415  99.949                   
# age:education        3  10.8240 102.332  8.3826  0.03873 *
# age:wantsMore        3  13.7639 105.272 11.3224  0.01010 *
# education:wantsMore  1   5.7983 101.306  3.3568  0.06693 .

El valor p para la prueba de falta de ajuste para este modelo ahora es . ¿Pero realmente necesitamos todos esos términos de interacción adicionales? El comando muestra los resultados de las pruebas de modelo anidadas sin ellos. La interacción entre y no es bastante significativa, pero estaría bien con ella en el modelo de todos modos. Entonces, veamos cómo las predicciones de este modelo se comparan con los datos: 0,486drop1()educationwantsMore

ingrese la descripción de la imagen aquí

Estos no son perfectos, pero no debemos suponer que las proporciones observadas son un reflejo perfecto del verdadero proceso de generación de datos. Me parecen que están rebotando alrededor de la cantidad apropiada (más correctamente que los datos están rebotando alrededor de las predicciones, supongo).


2

No creo que la estadística de desviación residual tenga una . Creo que es una distribución degenerada porque la teoría asintótica no se aplica cuando los grados de libertad aumentan a la misma velocidad que el tamaño de la muestra. En cualquier caso, dudo que la prueba tenga suficiente potencia, y aliento a las pruebas dirigidas, como las pruebas de linealidad utilizando splines de regresión y pruebas de interacción.χ2


1
Creo que porque en este caso todos los predictores son categóricos, el no. los grados de libertad del modelo saturado no aumentarían con el tamaño de la muestra, por lo que el enfoque asintótico tiene sentido. Sin embargo, el tamaño de la muestra sigue siendo bastante pequeño.
Scortchi - Restablece a Monica

No estoy seguro de que sea eso. El df de los parámetros del modelo es fijo, pero el df del residual " " es menos eso. χ2norte
Frank Harrell

En este caso, los datos consisten en 1607 individuos en una tabla de contingencia y la prueba compara un modelo de 6 parámetros con el modelo saturado de 16 parámetros (en lugar de un modelo de 1607 parámetros).
Scortchi - Restablece a Monica

Entonces no debe etiquetarse como residual . χ2
Frank Harrell

1
Estoy de acuerdo con que esta terminología es desafortunada: glmda una "desviación residual" diferente cuando los datos se agrupan de cuando no lo están, y una "desviación nula" diferente para el caso.
Scortchi - Restablece a Monica
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.