warning∞
Con datos generados a lo largo de las líneas de
x <- seq(-3, 3, by=0.1)
y <- x > 0
summary(glm(y ~ x, family=binomial))
Se hace la advertencia:
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
lo que obviamente refleja la dependencia que está integrada en estos datos.
En R, la prueba de Wald se encuentra con summary.glmo con waldtesten el lmtestpaquete. La prueba de razón de probabilidad se realiza con anovao con lrtestel lmtestpaquete. En ambos casos, la matriz de información tiene un valor infinito y no hay inferencia disponible. Más bien, R no producir una salida, pero no se puede confiar en ella. La inferencia que R produce típicamente en estos casos tiene valores p muy cercanos a uno. Esto se debe a que la pérdida de precisión en el OR es un orden de magnitud menor que la pérdida de precisión en la matriz de varianza-covarianza.
Algunas soluciones descritas aquí:
Use un estimador de un paso,
Existe mucha teoría que respalda el bajo sesgo, la eficiencia y la generalización 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 divergerá, 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
Para que pueda ver las predicciones reflejan la dirección de la tendencia. Y la inferencia es muy sugerente de las tendencias que creemos que son ciertas.

realizar una prueba de puntaje,
La estadística de Puntuación (o Rao) difiere de la razón de probabilidad y las estadísticas de wald. No requiere una evaluación de la varianza bajo la hipótesis alternativa. Encajamos el modelo debajo del nulo:
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)
χ2
> pchisq(scstat, df=1, lower.tail=F)
[,1]
[1,] 1.343494e-11
En ambos casos tienes inferencia para un OR de infinito.
, y utilice estimaciones medias imparciales para un intervalo de confianza.
Puede generar un IC del 95% imparcial, no singular para la razón de probabilidades infinita utilizando la estimación imparcial mediana. El paquete epitoolsen R puede hacer esto. Y doy un ejemplo de implementación de este estimador aquí: intervalo de confianza para el muestreo de Bernoulli