Comment les erreurs types sont-elles calculées pour les valeurs ajustées à partir d'une régression logistique?

29

Lorsque vous prédisez une valeur ajustée à partir d'un modèle de régression logistique, comment les erreurs standard sont-elles calculées? Je veux dire pour les valeurs ajustées , pas pour les coefficients (ce qui implique la matrice d'information des pêcheurs).

J'ai seulement découvert comment obtenir les chiffres avec R(par exemple, ici sur r-help, ou ici sur Stack Overflow), mais je ne trouve pas la formule.

pred <- predict(y.glm, newdata= something, se.fit=TRUE)

Si vous pouviez fournir une source en ligne (de préférence sur un site Web universitaire), ce serait fantastique.

user2457873
la source

Réponses:

35

La prédiction n'est qu'une combinaison linéaire des coefficients estimés. Les coefficients sont asymptotiquement normaux, donc une combinaison linéaire de ces coefficients sera également asymptotiquement normale. Donc, si nous pouvons obtenir la matrice de covariance pour les estimations des paramètres, nous pouvons facilement obtenir l'erreur standard pour une combinaison linéaire de ces estimations. Si je dénote la matrice de covariance comme et que j'écris les coefficients de ma combinaison linéaire dans un vecteur comme alors l'erreur standard est justeΣCCΣC

# Making fake data and fitting the model and getting a prediction
set.seed(500)
dat <- data.frame(x = runif(20), y = rbinom(20, 1, .5))
o <- glm(y ~ x, data = dat)
pred <- predict(o, newdata = data.frame(x=1.5), se.fit = TRUE)

# To obtain a prediction for x=1.5 I'm really
# asking for yhat = b0 + 1.5*b1 so my
# C = c(1, 1.5)
# and vcov applied to the glm object gives me
# the covariance matrix for the estimates
C <- c(1, 1.5)
std.er <- sqrt(t(C) %*% vcov(o) %*% C)

> pred$se.fit
[1] 0.4246289
> std.er
          [,1]
[1,] 0.4246289

Nous voyons que la méthode «à la main» que je montre donne la même erreur standard que celle signalée via predict

Dason
la source
2
J'ai une question connexe. Lorsque nous prédisons une valeur et un intervalle de confiance sur une régression linéaire (non logistique), nous incorporons la variance d'erreur / l'erreur standard. Mais la régression logistique ne fonctionne pas. Cette différence vient-elle du fait que les valeurs observées de la régression logistique sont soit 0 soit 1 et qu'il est inutile d'estimer la variance d'erreur? Je pense que nous devrions au moins faire quelque chose, mais je manque peut-être quelque chose.
user2457873
3
Vieille question, mais ce fil m'a aidé tout à l'heure, alors voici: Le logit observe 0 ou 1, mais il prédit une probabilité. Lorsque vous obtenez une erreur standard d'une valeur ajustée, c'est à l'échelle du prédicteur linéaire. Vous obtenez un intervalle de confiance sur la probabilité en parlant logit (fit +/- 1,96 * se.fit)
generic_user
Sachez simplement que cela utilise la normale asymptotique approx, qui peut être assez mauvaise pour le modèle logistique (recherchez sur ce site le phénomène Hauss-Donner). Pour les coefficients, cela peut être corrigé par exemple par le profil de vraisemblance (utilisé par la fonction confint dans MASS). Ce n'est pas possible pour les prédicteurs linéaires ...
kjetil b halvorsen
2
C'est incorrect pour ce que l'OP a demandé; le GLM que vous ajustez utilise la fonction de lien d'identité, pas la fonction de lien logit. Vous auriez dû être en forme à la o <- glm(y ~ x, data = dat, family = binomial)place. Pourriez-vous s'il vous plaît réviser? Votre explication fonctionne pour estimer les log-odds SE (en utilisant l' type = "link"option), mais pas le SE lorsque vous utilisez predictl' type = "response"option.
Zhe Zhang