• Nenhum resultado encontrado

Regressione logistica multipla

Anche in questo caso si fa uso di un set di dati da [31], disponibile in rete all’indirizzo:

http://www-unix.oit.umass.edu/∼statdata/statdata/data/lowbwt.dat

Lo scopo dello studio, condotto al Baystate Medical Center (Springfield, Massachusetts) durante il 1986 `e stato quello di identificare i fattori di rischio associati con il partorire bambini di peso inferiore ai 2500 grammi (low birth weight). I dati si riferiscono a 189 donne. Le variabili contenute nel file sono presentate in Tab. 6.1.

L’analisi si inizia importando i dati:

> lw <- read.table("lowbwt.dat", head=TRUE)

> attach(lw)

La variabile dipendente `e in questo caso LOW. Delle altre variabili contenute nel file si usano – nel corso dell’esempio – AGE, LW T, F T V (contine) e RACE (discreta a 3 livelli). Il modello di interesse si fitta facilmente:

> RACE <- factor(RACE) # tratto la variabile RACE come categoriale

> mod.low <- glm(LOW ~ LWT + RACE + AGE + FTV, family=binomial(link=logit))

> summary(mod.low)

6.2 Regressione logistica multipla 115 Coefficients:

Estimate Std. Error z value Pr(>|z|) (Intercept) 1.295366 1.071203 1.209 0.2266 LWT -0.014245 0.006539 -2.178 0.0294 * RACE2 1.003897 0.497798 2.017 0.0437 * RACE3 0.433108 0.362165 1.196 0.2317 AGE -0.023823 0.033722 -0.706 0.4799 FTV -0.049308 0.167201 -0.295 0.7681 [...]

Null deviance: 234.67 on 188 degrees of freedom Residual deviance: 222.57 on 183 degrees of freedom

Come per il caso di regressione logistica semplice la bont`a del modello pu`o essere valutata calco-lando la statisticaG, che in questo caso ci si attende distribuita∼χ2(5):

> G <- mod.low$null.deviance - mod.low$deviance

> G

[1] 12.09909

> P <- 1 - pchisq(G, 5) # valore P

> P

[1] 0.03345496

Si conclude che il modello contiene almeno una variabile che predice in modo adeguato il valore di LOW. Per analizzare il contributo alla significativit`a del modello delle singole variabili si usa la chiamata:

> anova(mod.low)

Analysis of Deviance Table Model: binomial, link: logit Response: LOW

Terms added sequentially (first to last)

Df Deviance Resid. Df Resid. Dev P(>|Chi|)

NULL 188 234.672

LWT 1 5.981 187 228.691 0.014

RACE 2 5.432 185 223.259 0.066

AGE 1 0.598 184 222.661 0.439

FTV 1 0.088 183 222.573 0.767

Se ci si attiene alla sola significativit`a statistica si conclude che `e possibile fittare un modello pi`u

“parsimonioso”, contenente la sola variabile indipendenteLW T. Tuttavia, come nel caso di regressione lineare multipla, l’inclusione di una variabile nel modello pu`o avvenire per motivi differenti, ad esempio in questo caso la variabileRACE`e considerata in letteratura come importante nel predire l’effetto in questione, quindi la si include nel modello ristretto. Nel valutare i risultati della tabella ANOVA si deve sempre ricordare che l’ordine in cui le variabili entrano nel modello altera i valori che vi appaiono.

Si verifica quindi che il modello contenente solamente LW T e RACE sia altrettanto buono del modello completo:

> mod.low2 <- glm(LOW ~ LWT + RACE, family=binomial(link=logit))

> anova(mod.low2, mod.low, test="Chisq") Analysis of Deviance Table

Model 1: LOW ~ LWT + RACE

Model 2: LOW ~ LWT + RACE + AGE + FTV

Resid. Df Resid. Dev Df Deviance P(>|Chi|)

1 185 223.259

2 183 222.573 2 0.686 0.710

Quindi il modello ristretto si comporta altrettanto bene del modello completo, e se lo scopo della ricerca `e costruire il modello pi`u semplice possibile sar`a quello adottato. Il risultato del fit finale `e quindi:

> summary(mod.low2) Coefficients:

Estimate Std. Error z value Pr(>|z|) (Intercept) 0.805754 0.844982 0.954 0.3403 LWT -0.015223 0.006438 -2.365 0.0180 * RACE2 1.081066 0.487994 2.215 0.0267 * RACE3 0.480603 0.356593 1.348 0.1777 [...]

Null deviance: 234.67 on 188 degrees of freedom Residual deviance: 223.26 on 185 degrees of freedom

Per quanto riguarda la valutazione degliOR, il predittoreRACE `e discreto a 3 livelli. In questo caso il livello 1 (RACE = White) viene assunto come categoria di riferimento. Si ha:

OR(RACE2 = Black, RACE1 = White) = exp(1.081) = 2.95 OR(RACE3 = Other, RACE1 = White) = exp(0.4806) = 1.62

6.2.1 Tabelle di classificazione

Un modo spesso utilizzato per presentare i risultati di un fit tramite regressione logistica sono le tabelle di classificazione. In queste tabelle i dati vengono classificati secondo due chiavi: il valore della variabile dipendente dicotomay e il valore di una variabile dicotoma ymod derivato dalla stima della probabilit`a ottenuta dal modello.

I valori di questa variabile si ottengono confrontando il valore della probabilit`a con un cut-off pointc∈[0,1]; se il valore della probabilit`a stimata dal modello superacaymodsi assegna il valore 1, altrimenti il valore 0. Molto spesso si sceglie percil valore 0.5. Nel caso del modello a due predittori fittato nel paragrafo precedente si ha:

> tab <- table(mod.low2$fitted > 0.5, lw$LOW)

> tab

0 1

FALSE 124 53

TRUE 6 6

dove il fattore di riga `e la classificazione operata dal modello confrontata con quella reale (fattore di colonna). Il numero di casi classificati correttamente si ottiene con la chiamata:

> sum(diag(tab))/sum(tab) [1] 0.6878307

quindi circa il 70% dei casi sono classificati in modo corretto.

Questo approccio apparentemente semplice e comodo risente tuttavia del fatto che `e frequente il caso in cui a modelli che ben si adattano a descrivere i dati corrispondono tabelle che predicono assai male l’appartenenza ai gruppiy= 0,1 (si veda [31] pag. 156 e seguenti per una spiegazione dettagliata del fenomeno). Inoltre risulta che la corrispondenza `e sempre migliore nel gruppo pi`u numeroso. Per quasti motivi tale tecnica `e da sconsigliarsi come unico metodo per testare l’adeguatezza del modello.

6.2 Regressione logistica multipla 117

0.1 0.2 0.3 0.4 0.5 0.6

0123456

pi

zj^2

21 3

4 5 6

87 9 10 11

12 13 14 1615 17 18 19

20 21 22 2423 25

26 27 28 29 30

31 32 33

34 35

36 37

38 39

4140 42

4443 45 4746 48 49 50

5251 53

54

5655 57 58

59 60

6261 63

64 65

67 66 69 68 70 71

72

74 73

75

76 7877 79

80 81 82

83

84 85

86 87 88

89 90

9291 9493 95

96 97 98

99 100 101 102

103 104 105

107106 108 109

Figura 6.4: Analisi dei quadrati dei residui.

6.2.2 Calcolo dei residui

Il calcolo dei residui richiede sempre di classificare i dati percovariate pattern. A differenza di quanto visto precedentemente, la procedura coinvolge ora pi`u di una variabile. La funzionecovariate`e dise-gnata per trattare problemi di questo genere e pu`o quindi essere impiegata anche nel caso multivariato.

La chiamata:

> cp <- covariate(mod.low2)

> cp

n Y X.1 X.2 X.3 fitted h rj zj

1 3 0 90 0 0 0.36254716 0.07744969 -1.306227580 -1.359952751 2 1 1 91 0 0 0.35903641 0.02503489 1.336126054 1.353171668 3 1 1 92 0 0 0.35554070 0.02427579 1.346334849 1.362980198 [...]

109 1 0 250 0 1 0.07450801 0.05497125 -0.283736459 -0.291872136

produce in output un data frame contenente tre colonne X.1, X.2 e X.3, relative alle tre variabili che entrano nel modello. Dato che l’ordine in cui sono inserite `e esattamente quello in cui vengono specificate al momento del fit del modello, la prima sar`a relativa al predittoreLW T e le altre due al predittoreRACE (tenendo conto che RACE `e discreto a tre livelli e quindi ha 2 gradi di libert`a a cui sono associate due variabili dummy).

Per verificare qualicovariate patternforniscono i residui maggiori `e spesso usato il plot dizj2contro i valori di ˆπj (in Fig. 6.4), che si pu`o ottenere con le chiamate:

> plot(cp$fitted, cp$zj^2, type="n", xlab="pi", ylab="zj^2")

> text(cp$fitted, cp$zj^2)

dove al posto dei punti `e sostituito il numero dicovariate patternper meglio identificarlo.

Dall’analisi del grafico risulta che icovariate pattern42 e 71 si adattano piuttosto male al modello.

Per verificare a quali casi si riferiscano si pu`o usare la chiamata:

> cp[c(42,71), ]

n Y X.1 X.2 X.3 fitted h rj zj

42 1 1 165 0 0 0.1536757 0.01595530 2.346745 2.365693 71 2 2 187 1 0 0.2768981 0.10243189 2.285361 2.412243