Pourquoi y a-t-il une différence entre le calcul manuel d'un intervalle de confiance de 95% selon la régression logistique et l'utilisation de la fonction confint () dans R?

34

Cher tout le monde - J'ai remarqué quelque chose d'étrange que je ne peux pas expliquer, pouvez-vous? En résumé: l'approche manuelle pour calculer un intervalle de confiance dans un modèle de régression logistique et la fonction R confint()donnent des résultats différents.

Je suis passé par la régression logistique appliquée de Hosmer & Lemeshow (2e édition). Dans le troisième chapitre, vous trouverez un exemple de calcul du rapport de cotes et d'un intervalle de confiance à 95%. En utilisant R, je peux facilement reproduire le modèle:

Call:
glm(formula = dataset$CHD ~ as.factor(dataset$dich.age), family = "binomial")

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-1.734  -0.847  -0.847   0.709   1.549  

Coefficients:
                             Estimate Std. Error z value Pr(>|z|)    
(Intercept)                   -0.8408     0.2551  -3.296  0.00098 ***
as.factor(dataset$dich.age)1   2.0935     0.5285   3.961 7.46e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 136.66  on 99  degrees of freedom
Residual deviance: 117.96  on 98  degrees of freedom
AIC: 121.96

Number of Fisher Scoring iterations: 4

Cependant, lorsque je calcule les intervalles de confiance des paramètres, j'obtiens un intervalle différent de celui indiqué dans le texte:

> exp(confint(model))
Waiting for profiling to be done...
                                 2.5 %     97.5 %
(Intercept)                  0.2566283  0.7013384
as.factor(dataset$dich.age)1 3.0293727 24.7013080

Hosmer & Lemeshow suggèrent la formule suivante:

e[β^1±z1-α/2×SE^(β^1)]

et ils calculent l'intervalle de confiance pour as.factor(dataset$dich.age)1être (2.9, 22.9).

Cela semble simple à faire dans R:

# upper CI for beta
exp(summary(model)$coefficients[2,1]+1.96*summary(model)$coefficients[2,2])
# lower CI for beta
exp(summary(model)$coefficients[2,1]-1.96*summary(model)$coefficients[2,2])

donne la même réponse que le livre.

Cependant, aucune idée sur pourquoi confint()semble donner des résultats différents? J'ai vu beaucoup d'exemples de personnes utilisant confint().

Andrew
la source
1
Souhaitez-vous ajouter la référence exacte de la littérature pour Hosmer & Lemeshow? Je cherche la suggestion dans leurs publications et leurs livres depuis un certain temps, mais je ne l’ai pas encore trouvée.
DavidR

Réponses:

36

Après avoir récupéré les données sur le site Web qui les accompagne , voici comment je procéderais:

chdage <- read.table("chdage.dat", header=F, col.names=c("id","age","chd"))
chdage$aged <- ifelse(chdage$age>=55, 1, 0)
mod.lr <- glm(chd ~ aged, data=chdage, family=binomial)
summary(mod.lr)

Les IC à 95% basés sur la probabilité de profil sont obtenus avec

require(MASS)
exp(confint(mod.lr))

C'est souvent la valeur par défaut si le MASSpaquet est chargé automatiquement. Dans ce cas, je reçois

                2.5 %     97.5 %
(Intercept) 0.2566283  0.7013384
aged        3.0293727 24.7013080

Maintenant, si je voulais comparer avec des IC à 95% de Wald (basés sur la normalité asymptotique) comme celui que vous avez calculé à la main, je l’utiliserais à la confint.default()place; cela donne

                2.5 %     97.5 %
(Intercept) 0.2616579  0.7111663
aged        2.8795652 22.8614705

Les IC de Wald sont bons dans la plupart des situations, bien que le profil fondé sur la probabilité puisse être utile avec des stratégies d'échantillonnage complexes. Si vous souhaitez comprendre leur fonctionnement, voici un bref aperçu des principes essentiels: Intervalles de confiance selon la méthode du vraisemblance du profil, avec applications en épidémiologie vétérinaire . Vous pouvez également consulter le livre MASS de Venables et Ripley, §8.4, p. 220-221.

chl
la source
25

Suivi: les intervalles de confiance du profil sont plus fiables (le choix du seuil approprié pour la vraisemblance implique une hypothèse asymptotique (échantillon large), mais il s'agit d'une hypothèse beaucoup plus faible que l'hypothèse de surface de probabilité quadratique sous-jacente aux intervalles de confiance de Wald). Autant que je sache, les statistiques de Wald ne présentent aucun argument quant aux intervalles de confiance des profils, si ce n’est que les statistiques de Wald sont beaucoup plus rapides à calculer et peuvent être "assez bonnes" dans de nombreuses circonstances (mais parfois très éloignées: regardez la Hauck- Effet Donner).

Ben Bolker
la source
2
Merci pour cela et de m'avoir suggéré de rechercher l'effet Hauck-Donner. L'effet n'est pas beaucoup traité dans les manuels mais semble assez important!
Andrew
18

Je crois que si vous consultez le fichier d’aide de confint (), vous constaterez que l’intervalle de confiance en cours de construction est un intervalle de "profil" au lieu d’un intervalle de confiance de Wald (votre formule est HL).

B_Miner
la source
5
Ahh Cela répond à la question. Cependant, cela nous amène au suivant - lequel est préféré?
Andrew