• Non ci sono risultati.

Potenza dell’ANOVA

5.3 Potenza dei test statistici

5.3.3 Potenza dell’ANOVA

Siano dati r gruppi di dati, ognuno di taglia n. L’ipotesi H0 prevede che tutti i gruppi provengano

da popolazioni di uguale media µ, mentre l’ipotesi H1specifica le differenti medie µ1, . . . , µrper i vari

gruppi. Posto:

f =

rPr

i=1i− µ)2

r σ2

dove σ2 `e la varianza comune per le r popolazioni, si definisce il parametro di non centralit`a λ:

λ = n f2 (5.5)

dove n = rn`e il numero totale di dati a disposizione dello sperimentatore. Per il calcolo della potenza

del test si procede come nei casi precedenti, integrando la distribuzione di F non centrale. Esempio

Si supponga di voler discriminare fra due ipotesi per cui `e noto f = 0.2 in un disegno sperimentale

composto da 4 gruppi. Se si hanno a disposizione 20 individui per gruppo quale potenza si pu`o

raggiungere? > n1 <- 20 > r <- 4 > n <- n1*r # dati complessivi > df1 <- r-1 # gdl numeratore > df2 <- n-r # gdl denominatore > fc <- qf(0.95, df1, df2) > 1 - pf(fc, ncp=n*0.2^2, df1, df2) [1] 0.2780544

La potenza che si raggiunge con un esperimento di tal genere `e bassa, pertanto `e molto elevata la

probabilit`a di incorrere in un errore di tipo II.

Se interessa il calcolo del minimo n tale per cui si raggiunge una data potenza il procedimento

passa per la definizione della funzione di cui trovare lo zero: > f <- function(n1, nc, r, b)

+ { df1 <- r - 1;

+ df2 <- (n1*r) - r;

+ 1 - pf(qf(0.95, df1, df2), ncp=(n1*r)*nc^2, df1, df2) - b }

Ad esempio, la taglia n di ogni gruppo necessaria a raggiungere una potenza 1 − β = 0.8 risulta:

> uniroot(f, c(20,200), r=4, nc=0.2, b=0.8) $root

[1] 69.12567 [...]

Capitolo 6

Modelli lineari generalizzati (GLM)

6.1 Regressione logistica

In questa sezione viene presentata una panoramica veloce e necessariamente incompleta delle pro-blematiche connesse alla regressione logistica. Per una trattazione approfondita dell’argomento si rimanda a [35, 23].

Il modello di regressione logistica semplice `e impiegato quando la variabile dipendente Y `e dicotoma

o binaria e si ha un unico predittore X. Senza perdita di generalit`a `e possibile codificare i valori assunti

da Y con 0 e 1.

Il modello specifico pi`u utilizzato per legare la media dei valori della variabile dipendente dato il

valore del predittore, indicata con E(Y |x), `e il modello logistico:

π(x) ≡ E(Y |x) = e

β0+β1x

1 + eβ0+β1x (6.1)

Introducendo la trasformazione logit: g(x) = ln  π(x) 1 − π(x)  = β0+ β1x (6.2)

si ottiene un modello lineare che lega g(x) a x.

R mette a disposizione la funzione glm che permette di fittare un modello lineare generalizzato una volta specificata la funzione di link desiderata (in questo caso un link logit). Le tecniche utilizzate per la stima dei parametri del modello sono illustrate nel corso del seguente esempio.

Esempio

Si fa uso di un set di dati da [35], disponibile in rete all’indirizzo:

http://www.umass.edu/statdata/statdata/data/chdage.dat

Il file presenta i dati 100 pazienti in cui l’eta (variabile AGE) viene messa in relazione con la presenza o l’assenza di significativi disturbi coronarici (CHD). La variabile CHD `e codificata nel modo seguente:

• CHD = 1: disturbo presente. • CHD = 0: disturbo assente.

Dopo aver acquisito il file di dati lo si importa in R: 107

> chd <- read.table("chdage.dat", head=TRUE) > chd ID AGE CHD 1 1 20 0 2 2 23 0 3 3 24 0 4 4 25 0 [..] 100 100 69 1

Il comando read.table legge la tabella di dati passata come primo argomento. L’opzione head = T RU E specifica che nella prima riga sono contenuti i nomi dei campi.

Come primo passo si esamina il plot dei dati (i punti sono individuati da cerchi in Fig. 6.1): > attach(chd)

> plot(AGE, CHD)

La funzione attach rende disponibili le variabili contenute nella tabella chd (si pu`o quindi usare la

variabile AGE invece di dover scrivere ogni volta chd$AGE). Per meglio comprendere la natura della relazione `e opportuno suddividere i pazienti in classi d’et`a e calcolare la media della variabile dipendente in ciascuna classe. Inseriti nel vettore x i limiti delle classi d’et`a che si vogliono creare, se ne calcolano i punti di mezzo per uso futuro:

> x <- c(19.999,29,34,39,44,49,54,59,70) > mid <- c((x[2:9]+x[1:8])/2)

Per valutare il valor medio di CHD nelle classi si costruisce un vettore GRAGE, che classifica i dati per classi d’et`a, usando la funzione cut:

> GRAGE <- cut(AGE, breaks=x) > y <- tapply(CHD, GRAGE, mean) > y

(20,29] (29,34] (34,39] (39,44] (44,49] (49,54] (54,59] (59,70]

0.1000000 0.1333333 0.2500000 0.3333333 0.4615385 0.6250000 0.7647059 0.8000000 Si sovrappongono i valori in y al grafico precedente:

> points(mid, y, col="red", pch=3) # percentuali nelle classi

In Fig. 6.1 questi punti sono identificati dalle crocette rosse. Dall’osservazione del grafico si comincia a capire la natura della relazione.

Se le n osservazioni della variabile dipendente y sono codificate (0,1), come nel caso in questione, si ha che π(x) = E(Y |x) `e la probabilit`a condizionata che Y sia uguale a 1 dato x, cio`e P (Y = 1|x). Analogamente 1 − π(x) `e la probabilit`a che Y sia uguale a 0 dato x, cio`e P (Y = 0|x). Ne segue che la funzione di likelihood `e:

l(β) =

n

Y

i=1

π(xi)yi[1 − π(xi)]1−yi , yi= 0, 1 (6.3)

da cui si deriva l’espressione della log-likelihood: L(β) = ln l(β) =

n

X

i=1

6.1 Regressione logistica 109

La stima dei parametri ˆβsi ottiene massimizzando L(β) rispetto a β. Derivando l’Eq. (6.17) rispetto

a β e uguagliando a zero il risultato si ottengono le equazioni di likelihood: X

[yiπ(xi)] = 0 (6.5)

X

xi[yiπ(xi)] = 0 (6.6)

Tali equazioni, non lineari nei parametri, vengono risolte con tecniche iterative. In R la soluzione di queste equazioni si ottiene mediante la funzione: > mod <- glm(CHD ~ AGE, family=binomial(link=logit))

> summary(mod) [...]

Coefficients:

Estimate Std. Error z value Pr(>|z|)

(Intercept) -5.30945 1.13263 -4.688 2.76e-06 ***

AGE 0.11092 0.02404 4.614 3.95e-06 ***

[...]

Null deviance: 136.66 on 99 degrees of freedom

Residual deviance: 107.35 on 98 degrees of freedom

AIC: 111.35

Il modello stimato tramite maximum likelihood `e quindi: ˆ

g(x) = −5.30945 + 0.11092 × AGE (6.7)

La likelihood si ottiene con la chiamata: > logLik(mod)

‘log Lik.’ -53.67655 (df=2)

I valori di ˆg si ottengono come:

> mod$linear.predictors

mentre per ˆπ(x) si usa la chiamata:

> mod$fitted.values

Il grafico delle predizioni del modello, mostrato con la linea continua in Fig. 6.1 `e dato da:

> lines(AGE, mod$fitted) # fit del modello

Per interpretare le ultime linee date in output dal fit del modello `e necessario introdurre il concetto di devianza:

D(β) = −2 ln l(β) (6.8)

Si noti che la funzione D, calcolata per un modello di regressione lineare semplice, coincide con la

devianza d’errore d2

E. La statistica D `e di particolare importanza nello stabilire l’adeguatezza di un

modello; per stabilire l’adeguatezza del modello che include una data variabile si calcola l’espressione:

G = D(modello con la variabile) − D(modello senza la variabile) (6.9)

Se la variabile in questione `e continua G `e distibuito ∼ χ2(1), mentre se la variabile `e categoriale G

risulter`a distribuito come ∼ χ2(p − 1) dove p sono i livelli assunti dalla variabile in esame. In R la

20 30 40 50 60 70 0.0 0.2 0.4 0.6 0.8 1.0 AGE CHD

Figura 6.1: Modello logistico. I dati originali sono rappresentati da cerchi. Le crocette si riferiscono ai dati raggruppati in classi d’et`a e la linea continua `e il fit logistico.

> anova(mod, test="Chisq") Analysis of Deviance Table [...]

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

NULL 99 136.66

AGE 1 29.31 98 107.35 6.168e-08

Quindi si ha evidenza molto altamente significativa che la variabile AGE sia un buon predittore per CHD. I due valori di devianza (136.66 e 107.35) che appaiono nella tabella ANOVA sono gli stessi che si trovano riassunti nell’output del fit del modello.

Un seconda tecnica per valutare la significativit`a di un parametro `e quella del test di Wald. Si

calcola il valore campionario della variabile W :

w = ˆβˆ

SE( ˆβ)

la quale `e distribuita ∼ N(0, 1). Si testa quindi la significativit`a del valore campionario con un test z. R riporta questo test nelle linee in cui fornisce i parametri e il loro errore standard. I risultati sono nelle colonne “z value” e “Pr(> |z|)”. A causa della sua limitata potenza al test di Wald `e preferibile l’indagine sul rapporto di likelihood di cui sopra.