Significato del predittore categorico nella regressione logistica


19

Ho problemi a interpretare i valori z per le variabili categoriali nella regressione logistica. Nell'esempio che segue ho una variabile categoriale con 3 classi e in base al valore z, CLASS2 potrebbe essere rilevante mentre le altre no.

Ma ora cosa significa?

Che potrei unire le altre classi in una?
Che l'intera variabile potrebbe non essere un buon predittore?

Questo è solo un esempio e gli attuali valori z non provengono da un vero problema, ho solo difficoltà a interpretarli.

           Estimate    Std. Error  z value Pr(>|z|)    
CLASS0     6.069e-02  1.564e-01   0.388   0.6979    
CLASS1     1.734e-01  2.630e-01   0.659   0.5098    
CLASS2     1.597e+00  6.354e-01   2.514   0.0119 *  

Risposte:


47

La seguente spiegazione non si limita alla regressione logistica ma si applica ugualmente alla normale regressione lineare e ad altri GLM. Di solito, Resclude un livello del categoriale e i coefficienti indicano la differenza di ciascuna classe rispetto a questa classe di riferimento (o talvolta chiamata classe di base) (questo è chiamato codifica fittizia o contrasti di trattamento in R, vedere qui per un'eccellente panoramica delle diverse opzioni di contrasto ). Per vedere i contrasti correnti in R, digitare options("contrasts"). Normalmente, Rordina i livelli della variabile categoriale in ordine alfabetico e prende il primo come classe di riferimento. Questo non è sempre ottimale e può essere modificato digitando (qui imposteremo la classe di riferimento su "c" nella nuova variabile)new.variable <- relevel(old.variable, ref="c")zpanova(model1, model2, test="LRT")R

mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")

mydata$rank <- factor(mydata$rank)

my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

summary(my.mod)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

rank1rankrank1rankrank1rank2-0.675rank1rank2-3.99-0.675=-4.67rank1rank1. È inoltre possibile adattare il modello senza intercettazione aggiungendo - 1alla formula del modello per visualizzare direttamente tutti i coefficienti:

my.mod2 <- glm(admit ~ gre + gpa + rank - 1, data = mydata, family = "binomial")

summary(my.mod2) # no intercept model

Coefficients:
       Estimate Std. Error z value Pr(>|z|)    
gre    0.002264   0.001094   2.070 0.038465 *  
gpa    0.804038   0.331819   2.423 0.015388 *  
rank1 -3.989979   1.139951  -3.500 0.000465 ***
rank2 -4.665422   1.109370  -4.205 2.61e-05 ***
rank3 -5.330183   1.149538  -4.637 3.54e-06 ***
rank4 -5.541443   1.138072  -4.869 1.12e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Si noti che l'intercettazione è scomparsa ora e che il coefficiente di rank1è esattamente l'intercetta del primo modello. Qui, il test Wald non controlla la differenza a coppie tra i coefficienti ma l'ipotesi che ogni singolo coefficiente sia zero. Ancora una volta, abbiamo prove che ogni coefficiente di rankdifferisce da zero. Infine, per verificare se l'intera variabile rankmigliora l'adattamento del modello, adattiamo un modello con ( my.mod1) e uno senza la variabile rank( my.mod2) e conduciamo un test del rapporto di verosimiglianza. Questo verifica l'ipotesi che tutti i coefficienti di ranksiano zero:

my.mod1 <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") # with rank
my.mod2 <- glm(admit ~ gre + gpa, data = mydata, family = "binomial") # without rank

anova(my.mod1, my.mod2, test="LRT")

Analysis of Deviance Table

Model 1: admit ~ gre + gpa + rank
Model 2: admit ~ gre + gpa
  Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
1       394     458.52                          
2       397     480.34 -3  -21.826 7.088e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Il test del rapporto di verosimiglianza è estremamente significativo e concluderemmo che la variabile rankdovrebbe rimanere nel modello.

Anche questo post è molto interessante.


Risposta molto istruttiva! Una domanda veloce: e se avessimo solo il rango di predittore? Per l'esecuzione del test LRT, il valore null sarebbe admit ~ 1vs admit ~ rank - 1?
NULL

1
@NULL Sì, o null vs. admit~ranko admit~rank - 1, sono equivalenti per quanto riguarda l'adattamento.
COOLSerdash

Grazie mille! Un'altra domanda veloce: quando sono interessato a eseguire il test Wald con una coda dei coefficienti della variabile categoriale (senza confrontarlo con la linea di base - intendo dire nessuna intercettazione), l'effetto di altri predittori come greed gpaessere influenzato da questa mancanza di inclusione dell'intercettazione?
NULL

In altre parole, se voglio eseguire un test con una coda sui coefficienti del predittore categorico mentre controllo per altre covariate, è questa la strada da percorrere? e questo sarebbe applicabile anche alla regressione lineare?
NULL

1
rankrankp

8

z

Quindi un coefficiente non significativo significa che puoi unire le categorie? No. In primo luogo, non significativo significa che non possiamo rifiutare l'ipotesi che non vi siano differenze, ma ciò non significa che tali differenze non esistano. Un'assenza di prove non è la stessa cosa di una prova di assenza. In secondo luogo, l'unione delle categorie, in particolare la categoria di riferimento, modifica l'interpretazione di tutti gli altri coefficienti. Il fatto che abbia o meno senso dipende da cosa rappresentano queste diverse classi.

Ciò significa che l'intera variabile categoriale è un predittore "cattivo" (non significativo)? No, per questo è necessario eseguire un test simultaneo per tutti i termini della CLASSE.

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.