La siguiente explicación no se limita a la regresión logística, sino que se aplica igualmente en la regresión lineal normal y otros GLM. Por lo general, R
excluye un nivel de lo categórico y los coeficientes denotan la diferencia de cada clase con esta clase de referencia (o a veces llamada clase de referencia) (esto se denomina codificación ficticia o contrastes de tratamiento R
, consulte aquí para obtener una excelente descripción de las diferentes opciones de contraste ) Para ver los contrastes actuales R
, escriba options("contrasts")
. Normalmente, R
ordena los niveles de la variable categórica alfabéticamente y toma el primero como clase de referencia. Esto no siempre es óptimo y se puede cambiar escribiendo (aquí, estableceríamos la clase de referencia en "c" en la nueva variable)new.variable <- relevel(old.variable, ref="c")
. Para cada coeficiente de cada nivel de la variable categórica, se realiza una prueba de Wald para probar si la diferencia por pares entre el coeficiente de la clase de referencia y la otra clase es diferente de cero o no. Esto es lo que son los valores y en la tabla de regresión. Si solo una clase categórica es significativa, esto no implica que toda la variable no tenga sentido y deba eliminarse del modelo. Puede comprobar el efecto global de la variable mediante la realización de una prueba de razón de verosimilitud : fit dos modelos, una con y otra sin la variable y el tipo en (ver ejemplo a continuación). Aquí hay un ejemplo:zpaganova(model1, model2, test="LRT")
R
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)
my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
summary(my.mod)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.989979 1.139951 -3.500 0.000465 ***
gre 0.002264 0.001094 2.070 0.038465 *
gpa 0.804038 0.331819 2.423 0.015388 *
rank2 -0.675443 0.316490 -2.134 0.032829 *
rank3 -1.340204 0.345306 -3.881 0.000104 ***
rank4 -1.551464 0.417832 -3.713 0.000205 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
El nivel rank1
se ha omitido y cada coeficiente de rank
denota la diferencia entre el coeficiente de rank1
y el rank
nivel correspondiente . Entonces, la diferencia entre el coeficiente de rank1
y rank2
sería . El coeficiente de es simplemente la intersección. Entonces el verdadero coeficiente de sería . Las pruebas de Wald aquí prueban si la diferencia entre el coeficiente de la clase de referencia (aquí ) y los niveles correspondientes difieren de cero. En este caso, tenemos evidencia de que los coeficientes de todas las clases difieren del coeficiente de . También puede ajustar el modelo sin interceptar agregando- 0.675- 3.99 - 0.675 = - 4.67rank1
rank2
- 3.99 - 0.675 = - 4.67rank1
rank1
- 1
a la fórmula del modelo para ver todos los coeficientes directamente:
my.mod2 <- glm(admit ~ gre + gpa + rank - 1, data = mydata, family = "binomial")
summary(my.mod2) # no intercept model
Coefficients:
Estimate Std. Error z value Pr(>|z|)
gre 0.002264 0.001094 2.070 0.038465 *
gpa 0.804038 0.331819 2.423 0.015388 *
rank1 -3.989979 1.139951 -3.500 0.000465 ***
rank2 -4.665422 1.109370 -4.205 2.61e-05 ***
rank3 -5.330183 1.149538 -4.637 3.54e-06 ***
rank4 -5.541443 1.138072 -4.869 1.12e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Tenga en cuenta que la intersección ya no existe y que el coeficiente de rank1
es exactamente la intersección del primer modelo. Aquí, la prueba de Wald verifica no la diferencia por pares entre los coeficientes, sino la hipótesis de que cada coeficiente individual es cero. Nuevamente, tenemos evidencia de que cada coeficiente de rank
difiere de cero. Finalmente, para verificar si la variable completa rank
mejora el ajuste del modelo, ajustamos un modelo con ( my.mod1
) y uno sin la variable rank
( my.mod2
) y realizamos una prueba de razón de probabilidad. Esto prueba la hipótesis de que todos los coeficientes de rank
son cero:
my.mod1 <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") # with rank
my.mod2 <- glm(admit ~ gre + gpa, data = mydata, family = "binomial") # without rank
anova(my.mod1, my.mod2, test="LRT")
Analysis of Deviance Table
Model 1: admit ~ gre + gpa + rank
Model 2: admit ~ gre + gpa
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1 394 458.52
2 397 480.34 -3 -21.826 7.088e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
La prueba de razón de probabilidad es altamente significativa y concluiríamos que la variable rank
debe permanecer en el modelo.
Esta publicación también es muy interesante.
admit ~ 1
vsadmit ~ rank - 1
?admit~rank
oadmit~rank - 1
, son equivalentes con respecto al ajuste.gre
ygpa
se ve afectada por esta falta de inclusión de intercepción?rank
son cero. Si desea realizar Wald-pruebas individuales en cada uno de los coeficientes derank
, se puede ajustar el modelo sin intercepción y observe el -valores. Para pruebas unilaterales, vea esta publicación aquí . Y sí, todo lo anterior se aplica también a la regresión lineal, como se indica al comienzo de la respuesta.El valor es solo el estadístico de prueba para una prueba estadística, por lo que si tiene problemas para interpretarlo, su primer paso es averiguar cuál es la hipótesis nula. La hipótesis nula para la prueba de CLASS0 es que su coeficiente es 0. El coeficiente de CLASS0 es la diferencia en log (odds) entre CLASS0 y la clase de referencia (CLASS3?) Es cero, o equivalente, que la razón de las probabilidades para CLASS0 y la clase de referencia es 1. En otras palabras, no hay diferencia en las probabilidades de éxito entre CLASS0 y la clase de referencia.z
Entonces, ¿un coeficiente no significativo significa que puede fusionar categorías? No. Primero, no significativo significa que no podemos rechazar la hipótesis de que no hay diferencia, pero eso no significa que no existan tales diferencias. La ausencia de evidencia no es lo mismo que la evidencia de ausencia. En segundo lugar, la fusión de categorías, especialmente la categoría de referencia, cambia la interpretación de todos los demás coeficientes. Si eso tiene sentido o no depende de lo que representan esas diferentes clases.
¿Significa eso que toda la variable categórica es un predictor "malo" (no significativo)? No, para eso necesitaría realizar una prueba simultánea para todos los términos de CLASE.
fuente