• Non ci sono risultati.

Vediamo ora come si possono costruire intervalli di confidenza per la media di una popolazione.

Riprendiamo in esame l’insieme di dati babyboom della precedente lezione. Se non era stato salvato, bisogna rileggerlo da file:

> babies <- read.table("babyboom.dat", col.names = c("tempo", + "sesso", "peso", "minuti"))

> babies$sesso[babies$sesso == 1] <- "F"

> babies$sesso[babies$sesso == 2] <- "M"

> babies$sesso <- factor(babies$sesso)

> babies$sesso

[1] F F M M M F F M M M M M F F M F F M M M M F F F F M M M [29] F M F M M M M M F M M M M F F F

Levels: F M

> attach(babies)

Ci interessa la variabile peso. Supponiamo che sia distribuita secondo una variabile casuale di tipo normale avente parametri µ e σ2 e costruiamo un intervallo di con-fidenza per la media µ al livello 0.95, supponendo dapprima che la varianza σ2 sia nota e successivamente che sia incognita. Come sappiamo, nel primo caso in cui la varianza `e nota la variabile casuale

Xn− µ σ/√

n

si distribuisce come una normale di media 0 e varianza 1. Nel secondo caso, in cui l’ignota varianza `e stimata da

Sn2 = 1 n− 1

n

X

i=1

(Xi− Xn)2,

la variabile casuale

Xn− µ Sn/√

n

`e una t di Student con n− 1 gradi di libert`a. In questi due casi alternativi gli intervalli di confidenza al livello (1− α) sono rispettivamente:

1. xnσnz1−α/2, xn+ σnz1−α/2

2. xnsnntn−1,1−α/2, xn+snntn−1,1−α/2

dove z1−α/2 e tn−1,1−α/2 sono i quantili di livello 1− α/2 della normale e della t di Student con n− 1 gradi di libert`a.

Supponiamo prima che la varianza sia nota (pari a 278818.3) e che α sia 0.05. Calcol-iamo dunque il quantile della normale e gli estremi inferiore e superiore dell’intervallo di confidenza,

> mean(peso) [1] 3275.955

> qnorm(0.975) [1] 1.959964

> mean(peso) - qnorm(0.975) * sqrt(278818.3/44) [1] 3119.934

> mean(peso) + qnorm(0.975) * sqrt(278818.3/44)

CAPITOLO 5. LA STIMA PUNTUALE E LA STIMA INTERVALLARE 63 [1] 3431.975

Esercizio: Costruire una funzione che, a partire da un vettore di dati, calcoli intervalli di confidenza per la media a qualunque livello, per un valore noto di σ.

Nel caso in cui la varianza sia ignota, si procede calcolando il quantile della t con (44-1) gradi di libert`a e stimando la varianza dai dati:

> qt(0.975, 43) [1] 2.016692

> mean(peso) - qt(0.975, df = 43) * sqrt(var(peso)/44) [1] 3115.418

> mean(peso) + qt(0.975, df = 43) * sqrt(var(peso)/44) [1] 3436.491

Esercizio: Verificare che l’intervallo di confidenza si allarga all’aumentare del livello di confidenza.

Osserviamo che nel linguaggio R `e presente un insieme di funzioni grazie alle quali

`e possibile ridurre il numero di istruzioni per calcolare intervalli di confidenza e per condurre, come vedremo, verifiche d’ipotesi. Quindi, ad esempio, si ha

> peso.test <- t.test(peso, alternative = "two.sided", + conf.level = 0.95)

> peso.test

One Sample t-test data: peso

t = 41.1532, df = 43, p-value < 2.2e-16

alternative hypothesis: true mean is not equal to 0 95 percent confidence interval:

3115.418 3436.491 sample estimates:

mean of x 3275.955

> peso.test$conf.int [1] 3115.418 3436.491 attr(,"conf.level") [1] 0.95

Per finire, facciamo una simulazione che aiuta a capire l’esatta interpretazione da dare agli intervalli di confidenza, in particolare al livello di confidenza.

A tale scopo, riconsideriamo i dati relativi ai laureati in Economia. Da un certo nu-mero di campioni (ncampioni) di nunu-merosit`a n estratti dall’insieme dei 467 laureati, costruiamo intervalli di confidenza per la media

> ncampioni <- 100

> stima <- numeric(ncampioni)

> varianza <- numeric(ncampioni)

> n <- 50

> for (i in 1:ncampioni) {

+ ind <- sample(1:nobs, n, replace = TRUE) + stima[i] <- mean(voto[ind])

+ varianza[i] <- var(voto[ind]) + }

> mean(stima) [1] 83.03253

> mean(voto) [1] 83.06138

Costruiamo adesso una matrice con 2 righe e ncampioni colonne, nella j-esima colon-na la prima riga rappresenta l’estremo inferiore mentre la seconda riga rappresenta l’estremo superiore dell’intervallo di confidenza relativo al j-esimo campione.

> zeta <- qt(0.975, df = n - 1)

> lim <- matrix(0, 2, ncampioni)

> lim[1, ] <- stima - zeta * sqrt(varianza)/sqrt(n)

> lim[2, ] <- stima + zeta * sqrt(varianza)/sqrt(n)

Possiamo controllare che percentuale di tali intervalli contiene la (vera) media della popolazione (di 467 unit`a):

> vero <- mean(voto)

> ok <- (lim[1, ] < vero) & (lim[2, ] > vero)

> mean(ok) [1] 0.93

In effetti, il 93% degli intervalli contiene la vera media della popolazione. Questo valore `e vicino al valore nominale 95%. Per ottenere una valutazione pi`u accurata avrei dovuto fare una simulazione con pi`u campioni.

Con i comandi seguenti possiamo visualizzare i 100 intervalli di confidenza:

CAPITOLO 5. LA STIMA PUNTUALE E LA STIMA INTERVALLARE 65

> y <- seq(1, ncampioni)

> y <- matrix(y, ncampioni, 2)

> lim2 <- t(lim)

> plot(y, lim2)

> abline(h = vero, col = "green")

> segments(y[ok], lim2[ok, 1], y[ok], lim2[ok, 2])

> segments(y[!ok], lim2[!ok, 1], y[!ok], lim2[!ok, + 2], col = "red", lty = "dashed")

Gli intervalli tratteggiati sono quelli che non contengono il vero valore del parametro.

Il comando segments() produce segmenti che collegano i vertici indicati (guardate l’help per capire la sintassi).

Esercizio: Per l’insieme di dati nel file homedata.dat trovare un intervallo di con-fidenza al 90% per la media di entrambe le variabili, y1970, y2000. Utilizzare il comando t.test() dopo averne discusso l’appropriatezza (normalit`a dei dati).

La verifica d’ipotesi

6.1 Il test t ad un campione

Si supponga di aver determinato il peso, espresso in grammi, di alcuni granelli di polvere rilevati su una piastra di silicio. Si suppone che il peso sia distribuito secondo una variabile casuale normale di parametri µ e σ2. I dati sono contenuti nel file polveri.dat.

> polveri <- scan("polveri.dat")

Vogliamo effettuare un test sulla media della popolazione per verificare l’ipotesi che la media incognita sia pari a 1.07. Scegliamo un’alternativa bilaterale

 H0 : µ = 1.07 H1 : µ6= 1.07

Supporremo di non conoscere il valore della varianza σ2 e quindi il test sar`a basato sulla statistica

t= X− µ S/√

n

che sotto l’ipotesi nulla si distribuisce come una v.c. t di Student con 11 gradi di libert`a. Determiniamo la regione di rifiuto per tale test usando i quantili della distribuzione e calcoliamo il valore della statistica test.

> test <- (mean(polveri) - 1.07)/sqrt(var(polveri)/12)

> test

[1] 2.310533

Il quantile 0.975 della distribuzione `e dato da

> qt(0.975, 11) [1] 2.200985

e pertanto rifiutiamo l’ipotesi nulla ad un livello di significativit`a prefissato di 0.05.

Il livello di significativit`a osservato `e dato da 66

CAPITOLO 6. LA VERIFICA D’IPOTESI 67

> 2 * (1 - pt(test, 11)) [1] 0.04125998

La medesima verifica d’ipotesi pu`o essere condotta utilizzando il comando t.test()

> t.test(polveri, mu = 1.07, conf.level = 0.95) One Sample t-test

data: polveri

t = 2.3105, df = 11, p-value = 0.04126

alternative hypothesis: true mean is not equal to 1.07 95 percent confidence interval:

1.099159 2.270841 sample estimates:

mean of x 1.685

R permette di effettuare anche test unilaterali del tipo

 H0 : µ = 1.07 H1 : µ > 1.07

e  H0 : µ = 1.07

H1 : µ < 1.07 ed i comandi relativi sono

> t.test(polveri, mu = 1.07, alternative = "greater", + conf.level = 0.95)

One Sample t-test data: polveri

t = 2.3105, df = 11, p-value = 0.02063

alternative hypothesis: true mean is greater than 1.07 95 percent confidence interval:

1.206985 Inf

sample estimates:

mean of x 1.685

> t.test(polveri, mu = 1.07, alternative = "less", + conf.level = 0.95)

One Sample t-test data: polveri

t = 2.3105, df = 11, p-value = 0.9794

alternative hypothesis: true mean is less than 1.07 95 percent confidence interval:

-Inf 2.163015 sample estimates:

mean of x 1.685

Quale sar`a la vostra decisione in questo caso?

Esercizio: Una libreria universitaria ritiene che in media uno studente paghi 101.75$

per ogni libro di testo. Un gruppo di studenti intende valutare questa affermazione selezionando a caso 10 corsi e valutando il costo dei libri di testo per ognuno di questi. I dati raccolti sono:

140 125 150 124 143 170 125 94 127 53

Effettuare un test di significativit`a per saggiare l’ipotesi nulla H0 : µ = 101.74 contro l’alternativa H1 : µ > 101.74.

Esercizio: Il file nortemp.dat contiene le temperature corporee (variabile temperature) misurate su 130 individui sani. Si pu`o considerare che la temperatura corporea di un individuo sano sia 98.6 oF?

Documenti correlati