Intervalles de confiance pour les prédictions de la régression logistique

In.prict.lm calcule les prévisions basées sur les résultats de la régression linéaire et propose également de calculer les intervalles de confiance pour ces prédictions. Selon le manuel, ces intervalles sont basés sur la variance d’erreur de l’ajustement, mais pas sur les intervalles d’erreur du coefficient.

D’un autre côté, predict.glm, qui calcule des prédictions basées sur la régression logistique et de Poisson (parmi quelques autres), n’a pas d’option pour les intervalles de confiance. Et j’ai même du mal à imaginer comment de tels intervalles de confiance pourraient être calculés pour fournir un aperçu significatif de la régression de Poisson et de la régression logistique.

Existe-t-il des cas où il est utile de fournir des intervalles de confiance pour de telles prévisions? Comment peuvent-ils être interprétés? Et quelles sont les hypothèses dans ces cas?

La méthode habituelle consiste à calculer un intervalle de confiance à l’échelle du prédicteur linéaire, où les choses seront plus normales (gaussienne), puis à appliquer l’inverse de la fonction de liaison pour mapper l’intervalle de confiance à l’échelle de réponse.

Pour ce faire, vous avez besoin de deux choses;

  1. appel predict() avec type = "link" , et
  2. appelez se.fit = TRUE predict() avec se.fit = TRUE .

Le premier produit des prévisions à l’échelle du prédicteur linéaire, le second renvoie les erreurs standard des prédictions. En pseudo code

 ## 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 est alors une liste avec des composants fit et se.fit .

L'intervalle de confiance sur le prédicteur linéaire est alors

 critval <- 1.96 ## approx 95% CI upr <- preds$fit + (critval * preds$se.fit) lwr <- preds$fit - (critval * preds$se.fit) fit <- preds$fit 

critval est choisi parmi une dissortingbution t ou z (normale), selon les besoins (j'oublie exactement maintenant quel type de GLM utiliser et quelles sont les propriétés) avec la couverture requirejse. Le 1.96 est la valeur de la dissortingbution gaussienne donnant une couverture de 95%:

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

Maintenant, pour l' fit , upr et lwr doivent leur appliquer l'inverse de la fonction de lien.

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

Vous pouvez maintenant tracer les trois et les données.

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

entrer la description de l'image ici