Intervalos de confianza para predicciones de regresión logística


En R predecir.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. Según el manual, estos intervalos se basan en la varianza de error del ajuste, pero no en los intervalos de error del coeficiente.

Por otro lado predecir.glm que calcula las predicciones basadas en la regresión logística y Poisson (entre algunos otros) no tiene una opción para intervalos de confianza. E incluso tengo un es difícil imaginar cómo tales intervalos de confianza podrían computarse para proporcionar una visión significativa de Poisson y regresión logística.

¿Hay casos en los que es significativo proporcionar intervalos de confianza para tales predicciones? ¿Cómo se pueden interpretar? ¿Y cuáles son las suposiciones en estos casos?

Author: unique2, 2013-01-20

1 answers

La forma habitual es calcular un intervalo de confianza en la escala del predictor lineal, donde las cosas serán más normales (Gaussiano) y luego aplicar la inversa 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 se necesitan dos cosas;{[18]]}

  1. llame a predict() con type = "link", y
  2. llame a predict() con se.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 (ahora olvido exactamente cuál usar para qué tipo de GLM y cuáles son las propiedades) con la cobertura requerida. El 1.96 es el valor de la distribución Gaussiana dando 95% de cobertura:

> qnorm(0.975) ## 0.975 as this is upper tail, 2.5% also in lower tail
[1] 1.959964

Ahora para fit, upr y lwr tenemos que aplicar la inversa de la función de enlace a ellos.

fit2 <- mod$family$linkinv(fit)
upr2 <- mod$family$linkinv(upr)
lwr2 <- mod$family$linkinv(lwr)

Ahora puede 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") 

introduzca la descripción de la imagen aquí

 62
Author: Gavin Simpson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-12 08:15:48