regresion - Intervalos de confianza para predicciones de regresión logística
regresion lineal simple estadistica (1)
La forma habitual es calcular un intervalo de confianza en la escala del predictor lineal, donde las cosas serán más normales (gaussianas) y luego aplicar el inverso de la función de enlace para mapear el intervalo de confianza de la escala del predictor lineal a la escala de respuesta.
Para hacer esto necesitas dos cosas;
- llamar a
predict()
contype = "link"
, y - llamar a
predict()
conse.fit = TRUE
.
El primero produce predicciones en la escala del predictor lineal, el segundo devuelve los errores estándar de las predicciones. En pseudo código
## foo <- mtcars[,c("mpg","vs")]; names(foo) <- c("x","y") ## Working example data
mod <- glm(y ~ x, data = foo, family = binomial)
preddata <- with(foo, data.frame(x = seq(min(x), max(x), length = 100)))
preds <- predict(mod, newdata = preddata, type = "link", se.fit = TRUE)
preds
es entonces una lista con los componentes fit
y se.fit
.
El intervalo de confianza en el predictor lineal es entonces
critval <- 1.96 ## approx 95% CI
upr <- preds$fit + (critval * preds$se.fit)
lwr <- preds$fit - (critval * preds$se.fit)
fit <- preds$fit
critval
se elige de una distribución t o z (normal) según sea necesario (no recuerdo exactamente ahora qué tipo de GLM y cuáles son sus propiedades) con la cobertura requerida. El 1.96
es el valor de la distribución de Gauss que proporciona una cobertura del 95%:
> qnorm(0.975) ## 0.975 as this is upper tail, 2.5% also in lower tail
[1] 1.959964
Ahora para fit
, upr
e lwr
necesitamos aplicarles el inverso de la función de enlace.
fit2 <- mod$family$linkinv(fit)
upr2 <- mod$family$linkinv(upr)
lwr2 <- mod$family$linkinv(lwr)
Ahora puedes trazar los tres y los datos.
preddata$lwr <- lwr2
preddata$upr <- upr2
ggplot(data=foo, mapping=aes(x=x,y=y)) + geom_point() +
stat_smooth(method="glm", method.args=list(family=binomial)) +
geom_line(data=preddata, mapping=aes(x=x, y=upr), col="red") +
geom_line(data=preddata, mapping=aes(x=x, y=lwr), col="red")
En R predict.lm calcula las predicciones basadas en los resultados de la regresión lineal y también ofrece calcular los intervalos de confianza para estas predicciones. De acuerdo con el manual, estos intervalos se basan en la varianza del error de ajuste, pero no en los intervalos de error del coeficiente.
Por otro lado, predict.glm, que calcula las predicciones basadas en la regresión logística y de Poisson (entre algunas otras), no tiene una opción para los intervalos de confianza. E incluso me cuesta imaginar cómo se podrían calcular dichos intervalos de confianza para proporcionar una visión significativa para Poisson y la regresión logística.
¿Hay casos en que sea significativo proporcionar intervalos de confianza para tales predicciones? ¿Cómo pueden ser interpretados? ¿Y cuáles son las suposiciones en estos casos?