Perché c'è una differenza tra il calcolo manuale di un intervallo di confidenza della regressione logistica del 95% e l'uso della funzione confint () in R?


34

Carissimi, ho notato qualcosa di strano che non posso spiegare, vero? In sintesi: l'approccio manuale al calcolo di un intervallo di confidenza in un modello di regressione logistica e la funzione R confint()danno risultati diversi.

Ho attraversato la regressione logistica applicata di Hosmer & Lemeshow (2a edizione). Nel terzo capitolo c'è un esempio di calcolo del rapporto di probabilità e dell'intervallo di confidenza al 95%. Utilizzando R, posso facilmente riprodurre il modello:

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

Tuttavia, quando calcolo gli intervalli di confidenza dei parametri, ottengo un intervallo diverso da quello indicato nel testo:

> 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 e Lemeshow suggeriscono la seguente formula:

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

e calcolano l'intervallo di confidenza per as.factor(dataset$dich.age)1essere (2.9, 22.9).

Questo sembra semplice da fare in 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])

dà la stessa risposta del libro.

Tuttavia, qualche idea sul perché confint()sembra dare risultati diversi? Ho visto molti esempi di persone che usano confint().


1
Ti dispiacerebbe aggiungere l'esatto riferimento bibliografico per Hosmer & Lemeshow? Ho cercato il suggerimento nei loro allievi e libri da un po 'di tempo, ma non l'ho ancora trovato.
David R

Risposte:


36

Dopo aver recuperato i dati dal sito Web di accompagnamento , ecco come lo farei:

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)

Si ottengono gli IC del 95% in base alla probabilità del profilo

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

Questo è spesso il valore predefinito se il MASS pacchetto viene caricato automaticamente. In questo caso, capisco

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

Ora, se volessi fare un confronto con gli IC del Wald al 95% (basati sulla normalità asintotica) come quello che hai calcolato a mano, userei confint.default() invece; questo cede

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

Gli elementi della configurazione Wald sono validi nella maggior parte delle situazioni, sebbene la verosimiglianza basata sul profilo possa essere utile con strategie di campionamento complesse. Se vuoi capire l'idea di come funzionano, ecco una breve panoramica dei principi principali: Intervalli di confidenza con il metodo di verosimiglianza del profilo, con applicazioni in epidemiologia veterinaria . Puoi anche dare un'occhiata al libro MASS di Venables e Ripley, §8.4, pp. 220-221.


25

Seguito: gli intervalli di confidenza del profilo sono più affidabili (la scelta del cutoff appropriato per la probabilità implica un presupposto asintotico (campione ampio), ma si tratta di un presupposto molto più debole rispetto al presupposto della superficie di probabilità quadratica alla base degli intervalli di confidenza di Wald). Per quanto ne so, non vi è alcun argomento per le statistiche Wald sugli intervalli di confidenza del profilo, tranne che le statistiche Wald sono molto più veloci da calcolare e possono essere "abbastanza buone" in molte circostanze (ma a volte molto lontano: cercare Hauck- Effetto Donner).


2
Grazie per questo e per avermi suggerito di cercare l'effetto Hauck-Donner. L'effetto non ottiene molto trattamento nei libri di testo ma sembra piuttosto importante!
Andrew,

18

Credo che se guardi nel file di aiuto per confint () scoprirai che l'intervallo di confidenza che si sta costruendo è un intervallo di "profilo" invece di un intervallo di confidenza di Wald (la tua formula da HL).


5
Ahh. Questo risponde alla domanda. Tuttavia, porta al prossimo - quale è preferito?
Andrew,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.