En el caso de los modelos logísticos para la inferencia, es importante subrayar en primer lugar que no hay ningún error. El warning
en R le informa correctamente de que el estimador de máxima verosimilitud se encuentra en la frontera del espacio de parámetros. La razón de momios de $\infty$ es fuertemente sugerente de una asociación. El único problema es que dos métodos habituales de elaboración de pruebas: la prueba de Wald y la prueba de la razón de verosimilitud requieren una evaluación de la información bajo la hipótesis alternativa.
Con los datos generados en la línea de
x <- seq(-3, 3, by=0.1)
y <- x > 0
summary(glm(y ~ x, family=binomial))
La advertencia está hecha:
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
lo que refleja de forma muy evidente la dependencia que se ha incorporado a estos datos.
En R la prueba de Wald se encuentra con summary.glm
o con waldtest
en el lmtest
paquete. La prueba de razón de verosimilitud se realiza con anova
o con lrtest
en el lmtest
paquete. En ambos casos, la matriz de información tiene un valor infinito y no se puede hacer ninguna inferencia. En cambio, R hace producir resultados, pero no se puede confiar en ello. La inferencia que R suele producir en estos casos tiene valores p muy cercanos a uno. Esto se debe a que la pérdida de precisión en la OR es órdenes de magnitud menores que la pérdida de precisión en la matriz de varianza-covarianza.
Algunas soluciones se esbozan aquí:
Utilice un estimador de un solo paso,
Hay mucha teoría que apoya el bajo sesgo, la eficiencia y la generalizabilidad de los estimadores de un paso. Es fácil especificar un estimador de un paso en R y los resultados suelen ser muy favorables para la predicción y la inferencia. Y este modelo nunca divergirá, porque el iterador (Newton-Raphson) simplemente no tiene la oportunidad de hacerlo.
fit.1s <- glm(y ~ x, family=binomial, control=glm.control(maxit=1))
summary(fit.1s)
Da:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.03987 0.29569 -0.135 0.893
x 1.19604 0.16794 7.122 1.07e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Así, se puede ver que las predicciones reflejan la dirección de la tendencia. Y la inferencia es altamente sugerente de las tendencias que creemos que son verdaderas.
realizar una prueba de puntuación,
El Estadística de puntuación (o Rao) difiere de los estadísticos de razón de verosimilitud y de Wald. No requiere una evaluación de la varianza bajo la hipótesis alternativa. Ajustamos el modelo bajo la nula:
mm <- model.matrix( ~ x)
fit0 <- glm(y ~ 1, family=binomial)
pred0 <- predict(fit0, type='response')
inf.null <- t(mm) %*% diag(binomial()$variance(mu=pred0)) %*% mm
sc.null <- t(mm) %*% c(y - pred0)
score.stat <- t(sc.null) %*% solve(inf.null) %*% sc.null ## compare to chisq
pchisq(score.stat, 1, lower.tail=F)
Da como medida de asociación una significación estadística muy fuerte. Obsérvese, por cierto, que el estimador de un paso produce un $\chi^2$ y la prueba de puntuación produce una estadística de prueba de 45,75
> pchisq(scstat, df=1, lower.tail=F)
[,1]
[1,] 1.343494e-11
En ambos casos tienes inferencia para un OR de infinito.
y utilizar estimaciones medianas insesgadas para un intervalo de confianza.
Puede producir un IC del 95% insesgado y no singular para la razón de momios infinita utilizando la estimación insesgada de la mediana. El paquete epitools
en R puede hacer esto. Y doy un ejemplo de implementación de este estimador aquí: Intervalo de confianza para el muestreo Bernoulli
4 votos
Relacionado pregunta
2 votos
Pregunta relacionada y demostración sobre la regularización aquí
0 votos
¿Responde esto a su pregunta? La regresión logística en R dio como resultado una separación perfecta (fenómeno Hauck-Donner). ¿Y ahora qué?