16/01/2014 Test di ipotesi In una carta X -bar diremo che un processo è in controllo statistico se per ogni k , indice dei sottogruppi, xk ∈ ( LCL,UCL). Prendere questa decisione equivale ad effettuare un test di ipotesi. Per effettuare un test di ipotesi è necessario: • selezionare un campione casuale x1 , x2 ,… xn • calcolare il valore di una statistica sul campione (nel CSQ è xk ) • caratterizzare un intervallo (nel CSQ è ( LCL, UCL)) che consenta di rigettare l'ipotesi iniziale quando la statistica test non vi appartiene (nel CSQ equivale a dire che il processo non è in controllo statistico) 1 16/01/2014 In generale, si tratta di decidere se il parametro di una certa popolazione assume un determinato valore. Ad esempio, se la media della popolazione µ assume il valore µ0 . Nel caso del CSQ, si tratta di decidere se la media della popolazione assume valore pari al target. H 0 : µ = µ0 ( ipotesi nulla ) H1 : µ ≠ µ0 ( ipotesi alternativa ) Nell’esempio del contenuto dei flaconi, potremmo essere interessati a decidere se la media della popolazione coincide con il valore target 95. La media campionaria risulta essere 98.51. Il valore 98.51 è sufficientemente vicino al valore 95 per ritenere che la media della popolazione coincide con 95? Per rispondere a questo quesito, abbiamo bisogno di fissare una distanza del valore osservato per la media campionaria dal valore target 95: se 98.51 dista da 95 meno di questa distanza prefissata, allora riterremo 95 un valore credibile per la media della popolazione. In sostanza si tratta di fissare un intervallo, che contenga 95 (in genere si assume sia centrato su 95) tale che se, 98.51 appartiene a tale intervallo, si ritiene plausibile, l’ipotesi nulla: H 0 : µ = 95 ( ipotesi nulla ) 98.51 ? 95 REGIONE DI ACCETTAZIONE 2 16/01/2014 H1 : µ ≠ 95 ( ipotesi alternativa ) 95 98.51 REGIONE CRITICA ? Per evitare che questa scelta sia soggettiva, possiamo fissare a-priori la probabilità di commettere un errore prendendo una decisione sulla media della popolazione. Che tipi di errori si possono commettere? ERRORE DI I TIPO α = P ( si rigetta H 0 - a posteriori - quando H 0 è vera - a priori ) ERRORE DI I TIPO α ← livello di significatività del test La probabilità dell’evento complementare si riferisce a una decisione corretta: 1 − α = P ( si accetta H 0 - a posteriori - quando H 0 è vera - a priori ) 3 16/01/2014 ERRORE DI II TIPO β = P ( si rigetta H1 - a posteriori - quando H1 è vera - a priori ) 1 − β ← potenza del test ERRORE DI II TIPO La probabilità dell’evento complementare si riferisce a una decisione corretta: 1 − β = P ( si accetta H1 - a posteriori - quando H1 è vera - a priori ) 1 − β = P ( si rigetta H 0 - a posteriori - quando H 0 è falsa - a priori ) 7 1 − α = P ( si accetta H 0 - a posteriori - quando H 0 è vera - a priori ) si accetta H 0 quando µ =µ0 ⇒ x ∈ ( µ0 − δ , µ0 + δ ) Quando µ =µ0 , X ≈ N ( µ0 ,...) ⇒ ( µ0 − δ , µ0 + δ ) 1 − α ⇒ δ =? σ δ = zα /2 −δ µ0 n σ n δ Statistica osservata 4 16/01/2014 Regione di accettazione REGIONE DI ACCETTAZIONE α ← livello di significatività del test ? ? Quale si sceglie di fissare? P ( STATISTICA ∈ regione di accettazione ) = 1 − α α = 0.10, 0.05, 0.01 Come? σ 1 − α = P µX ∈∈Xµ ± zα /2 n σσ 1 − α = P X ∈ µ0±±zzαα/2/2 µµ==µµ00 nn ? 9 Si rigetta l’ipotesi nulla… Pertanto fissare l’errore di I tipo equivale a fissare la regione di accettazione, e viceversa. µ0 Statistica osservata 10 5 16/01/2014 L’errore di II tipo µ = µ0 µ = µ1 µ1 µ0 Statistica osservata 11 La potenza del test µ = µ0 µ = µ1 E’ un valore che può essere calcolato solo se si conosce un valore alternativo. Quale? µ0 µ1 Statistica osservata 12 6 16/01/2014 Le statistiche test vanno scelte a secondo delle informazioni che si hanno sul campione. Ad esempio, 1) il campione proviene da una popolazione gaussiana (qqnorm ) 2) la varianza è nota σ X ≈ N µ, n Ad esempio, 1) il campione proviene da una popolazione gaussiana (qqnorm ) 2) la varianza non è nota X −µ ≈ Tn −1 S n Ad esempio, 1) il campione non proviene da una popolazione gaussiana (qqnorm) 2) la varianza non è nota S 3) la taglia supera 30 X ≈ N µ, n Torniamo all’esempio dei flaconi, e verifichiamo se il campione proviene da una popolazione con media 95. Non conoscendo la varianza teorica, la statistica da utilizzare ha legge T-Student. La function è t.test(). > t.test(data,mu=95) One Sample t-test data: data t = 4.5358, df = 119, p-value = 1.379e-05 alternative hypothesis: true mean is not equal to 95 95 percent confidence interval: 96.98146 100.05187 sample estimates: A quale conclusione giungiamo? mean of x 98.51667 7 16/01/2014 Legge T-Student con 119 gradi di libertà Regione critica? Statistica test=4.53 CHE COSA E’ IL P-VALUE? Se p ≥ α ⇒ stat ∈ reg.accett. ⇒ H 0 non si rigetta Se p < α ⇒ stat ∉ reg.accett. ⇒ H 0 si rigetta L’area a destra della statistica test. Se p − value < α / 2 ⇒ si rigetta H 0 Nell’esempio, il p-value è molto inferiore a 0.025, quindi l’ipotesi nulla si rigetta. Statistica test=4.53 8 16/01/2014 Avendo stabilito che la media della popolazione non è 95, potremmo essere interessati a sapere se la media è maggiore o minore di 95. In quel caso si effettua un test a una coda. A 1 coda H 0 : µ = µ0 H1 : µ > µ 0 REGIONE DI ACCETTAZIONE > t.test(data,alternative=c("greater"),mu=95) One Sample t-test data: data t = 4.5358, df = 119, p-value = 6.895e-06 REGIONE CRITICA Si rigetta l’ipotesi nulla perché la media campionaria ha un valore che ricade nella regione critica. Si rigetta l’ipotesi nulla, in favore di quella alternativa perché il p-value é inferiore a 0.05. Potremmo usare un valore del livello di significatività diverso da 0.05. > t.test(data,alternative=c("greater"),mu=95,conf.level=0.99) One Sample t-test data: data t = 4.5358, df = 119, p-value = 6.895e-06 alternative hypothesis: true mean is greater than 95 99 percent confidence interval: 96.68839 Inf sample estimates: mean of x 98.51667 > t.test(data,alternative=c("greater"),mu=95) One Sample t-test data: data t = 4.5358, df = 119, p-value = 6.895e-06 alternative hypothesis: true mean is greater than 95 Cambia solo 95 percent confidence interval: l’intervallo di 97.23138 Inf confidenza sample estimates: mean of x 98.51667 9 16/01/2014 Per il caso 1) il campione non proviene da una popolazione gaussiana (qqnorm) 2) la varianza non è nota S 3) la taglia supera 30 X ≈ N µ, n si continua ad utilizzare il t.test() poiché la v.a. T-Student è approssimata da una v.a. gaussiana Per il caso 1) il campione proviene da una popolazione gaussiana (qqnorm ) 2) la varianza è nota σ X ≈ N µ, n In questo caso la libreria da utilizzare è BSDA (basic statistical data analysis) che a sua volta necessita di e1071, class, lattice. La function è z.test(). La sintassi è: > z.test(difetti, y = NULL, alternative = "two.sided", mu = 20, sigma.x = 7.8, sigma.y = NULL, + conf.level = 0.99) Il risultato per il dataset difetti.txt è > z.test(difetti, y = NULL, alternative = "two.sided", mu = 20, sigma.x = 7.8, sigma.y = + NULL,conf.level=0.99) One-sample z-Test data: difetti z = -5.922, p-value = 3.181e-09 alternative hypothesis: true mean is not equal to 20 99 percent confidence interval: 7.898483 15.234850 sample estimates: In tal caso il p-value è molto inferiore a 0.05. mean of x 11.56667 Pertanto l’ipotesi nulla si rigetta. > 10 16/01/2014 CURVA CARATTERISTICA OPERATIVA Diremo che il processo è in controllo statistico se per ogni i, indice dei sottogruppi, xi ∈ ( LimInf , LimSup). Regione di accettazione α = P (rigettare H 0 | µ = µ0 ) = P( xt ∉ ( LCL, UCL) | µ = µ0 ) β = P(rigettare H1 | µ ≠ µ0 ) = P( xt ∈ ( LCL, UCL) | µ ≠ µ0 ) FALSO ALLARME MANCATO ALLARME 21 Non avendo ipotesi alternative certe, immaginiamo che µ = µ1 = µ0 + kσ Se la popolazione è gaussiana, allora β = P ( xt ∈ ( LCL, UCL) | µ = µ0 + kσ ) UCL − ( µ0 + kσ ) LCL − ( µ0 + kσ ) = Φ −Φ σ/ n σ/ n Il plot dei valori assunti da questo parametro per un opportuno valore di k, si chiama curva caratteristica operativa. In R l’istruzione per effettuare questo grafico è oc.curves() > obj<-qcc(data,type='xbar') > oc.curves(obj) 11 16/01/2014 vari valori di k Specificando un valore pari a TRUE per la variabile identify, è possibile identificare interattivamente dei punti sul grafico Vari valori di beta possono essere ottenuti specificando un parametro di output: > beta<-oc.curves(obj) Se la media del processo è 95+0.4*st.dev, per n=5, la prob. di un mancato allarme è 0.98 Per valori di k inferiori, aumenta la probabilità di un mancato allarme. 12 16/01/2014 ALTRO USO DELLA CURVA OPERATIVA Nella progettazione delle carte di controllo è necessario specificare sia la dimensione del campione che la frequenza di campionamento. • Più grande è il campione più sensibile è il rilevamento di una variazione all’interno del processo. • La pratica corrente tende a diminuire la dimensione del campione e ad aumentare la frequenza di campionamento. Si fissa β , e si cerca quel valore di n tale che UCL − ( µ0 + kσ ) LCL − ( µ0 + kσ ) −Φ σ/ n σ/ n σ σ Se UCL = µ0 + 3 e LCL = µ0 − 3 , allora β = Φ n ( n ) ( β = Φ 3 − k n − Φ −3 − k n ) 25 Si fissa β , e si cerca quel valore di zβ tale che Φ ( zβ ) − Φ ( − zβ ) = β ossia, ricordando le proprietà della gaussiana... β +1 2Φ ( zβ ) − 1 = β ⇒ zβ = Φ −1 ⇒ zβ = 3 − k n 2 ⇒ è possibile ricavare n 3 − zβ ⇒n= k 2 Ad esempio per β = 0.3 > qnorm(1.3/2) [1] 0.3853205 e per k = 1 > (3-qnorm(1.3/2))^2 [1] 6.836549 n=6 13 16/01/2014 IL CONFRONTO TRA DUE POPOLAZIONI Cambiamento della macchina per imballaggio? Sono statisticamente differenti le due produzioni? 27 CONFRONTO TRA DUE POPOLAZIONI ( x1 , x2 ,… , xn ) POPOLAZIONE 1 ( y1 , y2 ,…, yn ) POPOLAZIONE 2 • I due campioni provengono dalla stessa popolazione? • Le due popolazioni hanno la stessa media? • Le due popolazioni hanno la stessa varianza? • Se provengono da popolazioni distinte, queste sono indipendenti oppure c’è una qualche forma di relazione tra loro? 14 16/01/2014 Le due popolazioni hanno la stessa varianza? Supponiamo di aver monitorato la produzione di una sbarretta metallica in una azienda in due periodi diversi dell’anno. Vogliamo verificare se la produzione è rimasta costante nel tempo. I dati sono in due files distinti: produzione1.txt e produzione2.txt > prod1<-matrix(scan('C:/Programmi/R/R-3.0.2/produzione1.txt'),ncol=1, byrow=TRUE) Read 20 items > prod2<-matrix(scan('C:/Programmi/R/R-3.0.2/produzione2.txt'),ncol=1, byrow=TRUE) Read 20 items >var.test(prod1, prod2, ratio = 1, alternative = + "two.sided", conf.level = 0.95) > var(prod1);var(prod2) F test to compare two variances [,1] data: prod1 and prod2 [1,] 1.574374 F = 1.44, num df = 19, denom df = 19, p-value = 0.4341 [,1] alternative hypothesis: true ratio of variances is not equal [1,] 1.093336 to 1 95 percent confidence interval: 0.5699588 3.6380212 Non si rigetta sample estimates: ratio of variances 1.439973 29 F-TEST DISTRIBUZIONE DI FISHER Siano χ n21 e χ n22 due var. al. con legge chi-quadrato con gradi ( ) ( di libertà rispettivamente n1 e n2 . La var. al. χ n21 / n1 / χ n22 / n2 ) ha legge di Fisher di gradi di libertà ( n1 , n2 ) . S12 ≈ Fisher ( n1 − 1, n2 − 1) S22 (n1 − 1) (n2 − 1) S12 σ 2 1 S σ 2 2 2 2 ≈ χ12 ≈ χ 22 χ12 n1 − 1 χ 22 n2 − 1 15 16/01/2014 Le due popolazioni hanno la stessa media? La function da usare è sempre la stessa, t.test() > t.test(prod1, prod2, mu = 0, alternative ="two.sided",paired = FALSE, var.equal = + TRUE, conf.level = 0.95) Two Sample t-test Non si rigetta l’ipotesi nulla. data: prod1 and prod2 t = 1.3622, df = 38, p-value = 0.1812 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -0.2418487 1.2368487 sample estimates: mean of x mean of y 100.2350 99.7375 Le procedure sono distinte a secondo che le varianze siano uguali oppure diverse. PAIRED va posto uguale a TRUE quando i due campioni casuali si riferiscono alle stesse unità statistiche e quindi c’è una forma di dipendenza tra i due campioni. In tal caso le taglie devono essere uguali. Se PAIRED è posto uguale a FALSE, le taglie dei due campioni possono essere diverse. I due campioni provengono dalla stessa popolazione? Il test di Kolmogorov-Smirnov consente di stabilire se due campioni provengono da due popolazioni aventi la medesima legge di probabilità L’idea è quella di costruire le funzioni di ripartizioni empiriche per i due campioni e poi di valutare la distanza massima tra queste ultime In R la function da usare è ks.text(). Nella variabile di input alternative è possibile specificare se l’ipotesi alternativa prevede che una funzione di ripartizione sia maggiore dell’altra o viceversa. 16 16/01/2014 > ks.test(prod1,prod2) Two-sample Kolmogorov-Smirnov test data: prod1 and prod2 D = 0.25, p-value = 0.5596 alternative hypothesis: two-sided Warning message: In ks.test(prod1, prod2) : cannot compute exact p-value with ties > plot(ecdf(prod1),xlim=range(c(prod1,prod2)), + main='Confronto f.r.empiriche') > par(new=TRUE) > plot(ecdf(prod2),add=TRUE,col='red') > legend(100,0.3,c("prod1","prod2"), + lty=c(1,1),lwd=c(2.5,2.5),col=c("black","red")) > • Se provengono da popolazioni distinte, queste sono indipendenti oppure c’è una qualche forma di relazione tra loro? Per rispondere a questo quesito, è necessario prima calcolare il coefficiente di correlazione tra i due datasets: > cor.test(prod1,prod2) Pearson's product-moment correlation data: prod1 and prod2 t = 0.9373, df = 18, p-value = 0.361 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: -0.2507354 0.6008810 sample estimates: cor 0.2157209 Non si rigetta l’ipotesi che li coefficiente di correlazione è nullo. Se le popolazioni da cui provengono i due campioni hanno legge gaussiana, allora risultano indipendenti. Poiché abbiamo mostrato che le due popolazioni hanno medesima distribuzione, basta provare per un solo campione che la popolazione da cui proviene segue una legge gaussiana. 17 16/01/2014 In questo caso, il valore del secondo parametro deve essere una stringa numerica contenente il nome della funzione distribuzione del modello teorico che si vuole testare. > ks.test(prod1,"pnorm",mean(prod1),sd(prod1)) One-sample Kolmogorov-Smirnov test data: prod1 D = 0.1326, p-value = 0.8289 alternative hypothesis: two-sided Siccome il p-value > 0.05 l’ipotesi nulla non si rigetta. Trattandosi di campioni gaussiani, con un coefficiente di correlazione quasi nullo, si può ritenere siano indipendenti. Il ks-test può essere usato solo con modelli teorici continui. Nel caso discreto, è possibile usare il test chi-quadrato. Ad esempio, potremmo essere interessati a sapere se i dati del file difetti.txt hanno effettivamente legge binomiale. TEST CHI-QUADRATO In questo test, vengono confrontati gli istogrammi costruiti sul campione con quelli che si ottengono adoperando un modello teorico. Il campione va ripartito in modalità e per ciascuna di queste va contato il numero di occorrenze nel campione. > setwd("C:/Programmi/R/R-3.0.2/") > data<-read.table("difetti.txt",header=TRUE) > attach(data) > boundaries<-seq(0,max(difetti)) > tab.out<-table(cut(difetti,boundaries)) > appoggio<-cbind(tab.out) > La function cbind crea una matrice con il risultato della function table. La function table crea una tavola di contingenza, con il risultato della function cut, che calcola le frequenze di occorrenza della modalità del campione. Il risultato è > appoggio[1:24] [1] 0 0 0 1 2 2 2 2 3 3 1 3 2 1 2 1 1 1 0 1 0 1 0 1 18 16/01/2014 Ad esempio, per il file difetti.txt, il modello teorico è quello di una binomiale di parametri n=50 e p pari alla linea centrale della carta di controllo p, ossia 0.23. Per un modello teorico discreto, l’analogo dell’istogramma è il diagramma delle frequenze assolute. Il test chi-quadrato valuta le differenze tra queste due curve, normalizzate all’ordine di grandezza delle frequenze teoriche. La libreria di riferimento è la vcd. > gf<-goodfit(difetti, type=“binomial", par = list(prob = 0.23, size = 50)) > summary(gf) Goodness-of-fit test for binomial distribution X^2 df P(> X^2) Pearson NaN 50 NaN Likelihood Ratio 34.96249 17 0.006292134 Warning message: In summary.goodfit(gf) : Chi-squared approximation may be incorrect Per ottenere il grafico , usare le variabili gf$observed; gf$count, gf$fitted che si ottengono usando str(gf). Il motivo per cui il test non restituisce un valore finito per il p-value è la presenza di troppi 0 nelle frequenze osservate. Vale infatti la cosiddetta regola empirica del pollice che prevede in ciascuna classe un numero di elementi maggiori di 5. > > > > attach(data) boundaries<-seq(0,max(difetti),3) osservate<-table(cut(difetti,boundaries)) osservate (0,3] (3,6] (6,9] (9,12] (12,15] (15,18] (18,21] (21,24] 0 5 7 7 5 3 1 2 > boundaries<-c(0,9,12,15,50) > osservate<-table(cut(difetti,boundaries)) > osservate Regola del pollice (0,9] (9,12] (12,15] (15,50] 12 7 5 6 In tal caso la function da usare è chisq.test() che prende in input le frequenze osservate ed il vettore della massa di probabilità. Quest’ ultimo viene trasformato nel vettore delle frequenze attese all’interno della function. 19 16/01/2014 Il valore 0 non è presente nel campione casuale. Posso dunque lasciare inalterato l’intervallo (0,9]. > osservate (0,9] (9,12] (12,15] (15,50] 12 7 5 6 > attese<-pbinom(boundaries[2],50,0.23) > attese[2:3]<-pbinom(boundaries[3:4],50,0.23)-pbinom(boundaries[2:3],50,0.23) > attese[4]<-1-sum(attese[1:3]) > sum(attese) [1] 1 > chisq.test(osservate, p=attese) REGOLA EMPIRICA DEL POLLICE Chi-squared test for given probabilities data: osservate X-squared = 9.0582, df = 3, p-value = 0.02853 Warning message: In chisq.test(osservate, p = attese) : Chi-squared approximation may be incorrect Supponiamo di voler verificare per questo vettore se segue una legge binomiale. ESEMPIO: 14 15 13 14 14 12 12 12 14 13 10 13 13 14 6 12 11 12 11 11 > dati<-c(14,15,13,14,14,14,13,11,12,13,14,12,12,10,6,11,12,13,12,11) I parametri n e p vengono stimati direttamente dalla function goodfit usando il metodo di massima verosimiglianza se specifichiamo un certo parametro di input: > gf<-goodfit(dati, type=“binomial", method='ML') > summary(gf) Goodness-of-fit test for binomial distribution X^2 df P(> X^2) Likelihood Ratio 10.99785 5 0.0514226 20 16/01/2014 > str(gf) List of 7 $ observed: num [1:16] 0 0 0 0 0 0 1 0 0 0 ... $ count : int [1:16] 0 1 2 3 4 5 6 7 8 9 ... $ fitted : num [1:16] 1.35e-10 9.22e-09 ….. $ type : chr "binomial" $ method : chr "ML" $ df : num 5 $ par :List of 2 ..$ prob: num 0.82 ..$ size: int 15 - attr(*, "class")= chr "goodfit" > plot(gf$count,gf$observed,type='s',col='red',main='Observed vs Theoretical') > par(new=TRUE) > plot(gf$count,gf$fitted,type='l',lwd=4,col='green',ylim=range(0,5),ylab=' ') >plot(gf) Serve a capire su quale osservazione agire per migliorare il fitting. Esempio: supponiamo di aver lanciato un dado e di voler verificare se è stato truccato. Le frequenze di occorrenza risultano: > osservate<-c(18,24,15,25,17,23) > attese<-rep(1/6,6) > sum(attese) [1] 1 > sum(osservate) [1] 122 > chisq.test(osservate, p=attese) Chi-squared test for given probabilities data: osservate X-squared = 4.2951, df = 5, p-value = 0.5078 21 16/01/2014 Esempio: supponiamo che il numero di prove necessario prima di avere un guasto in un determinato sistema risulti essere: > osservate<-c(24, 21, 15, 12, 10, 5, 4,2) > boundaries<-c(1, 2, 3, 4, 5, 6, 8, 9) Verificare se è possibile assumere valido un modello geometrico. > media<-sum(osservate*boundaries)/sum(osservate) > p<-1/media > attese<-dgeom(boundaries[1:5],p) > attese[6]<-dgeom(6,p)+dgeom(7,p) > attese[7]<-dgeom(8,p) > attese[8]<-1-sum(attese[1:7]) > sum(attese) [1] 1 > chisq.test(osservate, p=attese) Chi-squared test for given probabilities data: osservate X-squared = 54.7321, df = 7, p-value = 1.685e-09 Warning message: In chisq.test(osservate, p = attese) : Chi-squared approximation may be incorrect Z-TEST PER DUE CAMPIONI Assumiamo che nella produzione della sbarretta metallica dell’azienda presa in considerazione siano note le varianze nei due diversi periodi dell’anno. In tal caso, invece del test t conviene usare lo z-test. Per il primo dataset immaginiamo che la deviazione standard sia 1.25, per il secondo dataset immaginiamo che la deviazione standard sia 1. > z.test(prod1, prod2, alternative = "two.sided", sigma.x = 1.25, sigma.y=1) Two-sample z-Test data: prod1 and prod2 z = 1.3899, p-value = 0.1646 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -0.2040603 1.1990603 sample estimates: mean of x ; mean of y ; 100.2350 99.7375 22 16/01/2014 T-PAIRED TEST > t.test(prod1, prod2, mu = 0, alternative ="two.sided",paired = FALSE, var.equal = + TRUE, conf.level = 0.95) Quando la variabile PAIRED è posta uguale a TRUE, le unità statistiche sulle quali viene effettuato il test sono le stesse. Esempio: Una scuola ha arruolato un nuovo istruttore e vuole verificare l’efficacia di un nuovo programma di training proposto, confrontando il tempo medio di 10 atleti che corrono sui 100 metri. > a<-c(12.9, 13.5, 12.8, 15.6, 17.2, 19.2, 12.6, 15.3, 14.4, 11.3) > b<-c(12.7, 13.6, 12.0, 15.2, 16.8, 20.0, 12.0, 15.9, 16.0, 11.1) > t.test(a,b,paired=TRUE) Paired t-test data: a and b t = -0.2133, df = 9, p-value = 0.8358 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -0.5802549 0.4802549 sample estimates: mean of the differences -0.05 IL CONFRONTO TRA DUE POPOLAZIONI Cambiamento della macchina per imballaggio? Sono statisticamente differenti le due produzioni? 46 23 16/01/2014 TEST SULLE PROPORZIONI H 0 : p1 = p2 H1 : p1 > p2 Per effettuare un test sulle proporzioni è necessario usare la function prop.test() . Come parametro di input è necessario costruire una tabella a doppia entrata contenente il numero di pezzi difettosi riscontrati nel primo campione e il numero di pezzi difettosi riscontrati nel secondo campione. > sum(value[labels][1:28]) [1] 301 > sum(value[labels][29:52]) [1] 133 Yates’s correction Difettosi Totale primo 301 1400=28*50 secondo 133 1200=24*50 Totale 480 2600 > prop.test(x=c(301,133),n=c(1400,1200),correct=FALSE) 2-sample test for equality of proportions without continuity correction data: c(301, 133) out of c(1400, 1200) X-squared = 50.4187, df = 1, p-value = 1.242e-12 alternative hypothesis: two.sided 95 percent confidence interval: 0.07626364 0.13206970 sample estimates: prop 1 prop 2 0.2150000 0.1108333 ANALISI DEI RESIDUI Nella costruzione di un modello teorico lineare per descrivere la relazione esistente tra due campioni casuali, era stato tralasciato un punto che rientra nella validazione del modello: ossia provare che i residui del modello di regressione seguono una legge gaussiana di media nulla e deviazione standard pari all’errore standard residuo. Si definiscono residui le distanze tra i valori della variabile dipendente ottenuti mediante la retta di regressione e quelli osservati. ei = yi − yˆi Perchè il modello sia valido è necessario provare che ε ∼ N(0,σ 2 ) Per la varianza usiamo il valore del residual standard error che fornisce la function lm di R 24 16/01/2014 L’analisi della regressione è una tecnica statistica per modellare e investigare le relazioni tra due (o più) variabili. Nella tavola è riportata la % di purezza di ossigeno, rilasciata in un processo di distillazione chimica, e il livello di idrocarbonio, presente nel condensatore principale di unità di distillazione. Dati salvati in un file Osservazioni Liv.Idrocarbonio Purezza 1 0,99 90,01 2 1,02 89,05 3 1,15 91,43 4 1,29 93,74 5 1,46 96,73 6 1,36 94,45 7 0,87 87,59 8 1,23 91,77 9 1,55 99,42 10 1,4 93,65 11 1,19 93,54 12 1,15 92,52 13 0,98 90,56 14 1,01 89,54 15 1,11 89,85 16 1,2 90,39 17 1,26 93,25 18 1,32 93,41 19 1,43 94,98 20 0,95 87,33 49 >result<-lm(datiy ~ datix) >summary(result) Residuals: Min 1Q Median 3Q Max -1.83029 -0.73334 0.04497 0.69969 1.96809 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 74.283 1.593 46.62 < 2e-16 *** datix 14.947 1.317 11.35 1. 1.23e-09 *** --Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 1.087 on 18 degrees of freedom F-statistic: 128.9 on 1 and 18 DF, p-value: 1.227e-09 (hp_0:m=0) 25 16/01/2014 > str(result) … $ residuals : Named num [1:20] 0.9287 -0.4797 -0.0429 0.1744 0.6234 ... Dovendo dimostrare che i residui hanno legge gaussiana, un test più robusto del KS-test è il test di Shapiro-Wilk > shapiro.test(result$residuals) Shapiro-Wilk normality test data: result$residuals W = 0.9796, p-value = 0.9293 > ks.test(result$residuals,"pnorm",0,1.087) One-sample Kolmogorov-Smirnov test data: result$residuals D = 0.0904, p-value = 0.9916 alternative hypothesis: two-sided Si basa sul confronto tra la varianza campionaria e una varianza ottenuta usando dei pesi particolari. Il test di Shapiro-Wilks è molto usato per verificare se un campione casuale ha legge gaussiana. Infatti quando sussiste tale ipotesi, vi sono vari metodi che consentono di effettuare i test in condizioni di robustezza. STATISTICA PARAMETRICA Quando tale ipotesi non è verificata, i metodi cui si ricorre rientrano nell’ambito della statistica non parametrica. Ad esempio si consideri un insieme di dati aventi tendenza centrale (8), ma con legge uniforme. x<-4+8*runif(90,min=0,max=1) Come valore di riferimento della tendenza centrale usiamo la mediana H0 : M = M 0 H1 : M ≠ M 0 Ad esempio, vogliamo verificare se la mediana del dataset così costruito è 6. Se fosse 6, allora circa una metà dei valori di x dovrebbe essere inferiore a 6. 26 16/01/2014 Pertanto la probabilità che un valore di x sia inferiore a 6 dovrebbe essere circa il 50%. Ossia il numero di segni positivi e negativi del campione casuale dovrebbe essere circa lo stesso. > install.packages('plyr') > library('plyr') > count(sign(x-6)) x freq 1 -1 17 2 1 73 > Il test che verifica se il numero dei segni negativi nel campione casuale è circa la metà di tutto il campione è il sign test (o test binomiale). > binom.test(17,90) Exact binomial test data: 17 and 90 number of successes = 17, number of trials = 90, p-value = 1.948e-09 alternative hypothesis: true probability of success is not equal to 0.5 95 percent confidence interval: 0.1140597 0.2851131 sample estimates: probability of success 0.1888889 CONFRONTO TRA DUE CAMPIONI IN MANCANZA DELL’IPOTESI DI POPOLAZIONE GAUSSIANA Analogo T-test - PAIRED=FALSE Mann-Whitney test Analogo T-test - PAIRED=TRUE Wilcoxon test Ipotesi nulla: Ipotesi nulla: i due campioni provengono da una Differenze tra le osservazioni accopcomune distribuzione di probabilità piate provengono da una distribuzione di probabilità simmetrica attorno allo 0. Ipotesi alternativa: c’è un ordinamento stocastico tra le due distribuzioni di probabilità Ipotesi alternativa: Differenze tra le osservazioni accopche generano i campioni piate provengono da una distribuzione di probabilità asimmetrica. 27 16/01/2014 > wilcox.test(x,y,paired=…,alternative=‘two sided’) Se paired=FALSE, allora si ritiene che i due campioni sono indipendenti (Mann-Whitney). Se paired =TRUE, allora si ritiene che i due campioni siano accoppiati (Wilcoxon). Esempio: Un’azienda che produce scarpe da trekking vuole lanciare una nuova linea. Per questo motivo seleziona 13 scalatori, ad ognuno dei quali fa indossare una scarpa da trekking della vecchia linea produttiva ed una scarpa da trekking della nuova linea. Viene poi misurato il numero di chilometri percorsi prima che inizi il deterioramento della scarpa. Dopo aver effettuato una analisi descrittiva per entrambi i campioni, stabilire con un test di ipotesi se c’è differenza. > old<-c(460,420,520,515,490,490,500,550,480,530,518,515,475) > new<-c(530,525,500,505,520,450,495,575,474,515,490,480,493) campione casuale old campione casuale new Visto che è necessario verificare se entrambi i campioni hanno legge gaussiana, conviene usare lo Shapiro-Wilk test. > shapiro.test(old) Shapiro-Wilk normality test data: old W = 0.9553, p-value = 0.6806 > shapiro.test(new) Shapiro-Wilk normality test data: new W = 0.9634, p-value = 0.8051 28 16/01/2014 Poiché vengono usati sempre gli stessi scalatori per testare le scarpe, effettuiamo un T-paired test. > t.test(old,new, mu = 0, alternative ="two.sided", paired = TRUE) Paired t-test data: old and new t = -0.5824, df = 12, p-value = 0.5711 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -32.46024 18.76793 sample estimates: mean of the differences -6.846154 Se effettuando lo Shapiro-Wilk test uno dei due campioni fosse risultato non normale, allora la sintassi da usare sarebbe stata: > wilcox.test(old,new,paired=TRUE,alternative="two.sided") Wilcoxon signed rank test data: old and new V = 45, p-value = 1 alternative hypothesis: true location shift is not equal to 0 29