• Nenhum resultado encontrado

Rdispone di numerosi test non parametrici da utilizzare quando le ipotesi che sono alla base dei test parametrici classici sono violate in modo grave.

5.2 Metodi non parametrici 97

−3 −2 −1 0 1 2 3

0.00.20.40.60.81.0

ECDF

x

Fn(x)

Figura 5.2: Test di Kolmogorov-Smirnov per il confronto di due serie osservate dell’esempio 5.1.2.

5.2.1 Test di Wilcoxon

Questo test `e disponibile nelle due varianti di test di Wilcoxon dei ranghi con segno (equivalente al testtper dati appaiati) e test di Wilcoxon della somma dei ranghi (equivalente al testtper campioni indipendenti).

Si considerino per cominciare due campioni AeB appaiati. Se non `e possibile utilizzare il testt per verificare se vi sia una differenza significativa fra le loro medie si ricorre al test di Wilcoxon dei ranghi con segno.

Esempio

Si vuole stabilire l’efficacia di un farmaco. Su un campione di 8 pazienti si misura su una scala da 1 a 5 la gravit`a delle lesioni prima della cura (A). Gli stessi pazienti vengono valutati a trattamento concluso (B). I dati suggeriscono che la cura ha avuto un effetto significativo?

Il test di Wilcoxon, appropriato per una situazione di questo genere si esegue con le chiamate:

> A <- c(2,2,3,4,4,2,3,5)

> B <- c(3,1,3,5,4,3,4,4)

> wilcox.test(A, B, paired=TRUE, correct=FALSE) Wilcoxon signed rank test

data: A and B

V = 7, p-value = 0.4142

alternative hypothesis: true mu is not equal to 0

Si conclude che non vi `e evidenza di effetto significativo del farmaco. L’opzionepaired = T RU E specifica che i campioni vanno trattati come dati appaiati, mentre correct = F ALSE specifica di non utilizzare la correzione di continuit`a nell’approssimazione normale alla distribuzione di Wilcoxon, usata per calcolare il valorep. Per quanto riguarda questo calcolo, per campioni di taglia inferiore a 50 e in assenza di ties il valorepviene calcolato in modo esatto, altrimentiRricorre all’approssimazione

normale.

Nel caso di campioni indipendenti si ricorre al test di Wilcoxon della somma dei ranghi (equivalente al testU di Mann-Whitney). Usando i dati dell’esempio precedente la chiamata sar`a semplicemente:

[...]

> wilcox.test(A, B, correct=FALSE) Wilcoxon rank sum test

data: A and B

W = 26.5, p-value = 0.55

alternative hypothesis: true mu is not equal to 0

5.2.2 Test di Kruskal-Wallis

Nel caso di pi`u di due serie di dati indipendenti, se non `e possibile ricorrere ad una ANOVA, si utilizza il test di Kruskal-Wallis, che nel caso di due sole serie di dati fornisce un risultato analogo a quello del test di Wilcoxon della somma dei ranghi. In questo caso `e necessario unire tutti i dati in un unico vettore e utilizzare un vettore complementare in cui tenere traccia del gruppo di provenienza:

> A <- c(2,2,3,4,4,2,3,5)

> B <- c(3,1,3,5,4,3,4,4)

> dati <- c(A, B)

> g <- rep(1:2, each=8)

o in alternativa riunirli in una lista:

> dati2 <- list(g1=A, g2=B)

Quest’ultima chiamata crea un oggetto di tipo lista (l’equivalente di una struttura C) che contiene due variabili: la prima, chiamata “g1”, contenente il vettoreAe la seconda, di nome “g2”, contenente il vettoreB.

Si procede quindi con il test:

> kruskal.test(dati, g) # usando i vettori

> kruskal.test(dati2) # usando la lista Kruskal-Wallis rank sum test

data: dati2

Kruskal-Wallis chi-squared = 0.3573, df = 1, p-value = 0.55

Come si vede il valore p`e identico a quello ottenuto nel caso di test di Wilcoxon della somma dei ranghi.

5.2.3 Test di Friedman

Questo test `e l’analogo non parametrico dell’analisi della varianza a due fattori a blocchi randomizzati.

Esempio

A 6 psicologi vengono richieste le valutazioni (con un punteggio da 0 a 5 in ordine crescente di validit`a) di 4 terapie. Si stabilisca se vi sono delle differenze di valutazione fra le 4 diverse terapie.

Il modo pi`u rapido di procedere `e inserire i dati relativi alle valutazioni dei 6 medici e unirli in una matrice:

> c1 <- c(4, 3, 0, 2)

> c2 <- c(4, 2, 2, 2)

> c3 <- c(3, 2, 2, 1)

> c4 <- c(5, 1, 2, 2)

> c5 <- c(3, 4, 1, 2)

5.2 Metodi non parametrici 99

> c6 <- c(5, 4, 3, 3)

> mat <- rbind(c1, c2, c3, c4, c5, c6)

La funzionerbindunisce i vettori in una matrice disponendoli per riga. Il test si esegue semplicemente con la chiamata:

> friedman.test(mat)

Friedman rank sum test data: mat

Friedman chi-squared = 11.3774, df = 3, p-value = 0.00985

Si evidenzia una differenza altamente significativa fra i 4 tipi terapia.

In alternativa `e sempre possibile trasformare i dati all’interno di ciascun blocco in ranghi ed eseguire una ANOVA a due vie sui dati trasformati. Il processo risulta pi`u lungo e macchinoso:

> dati <- c(c1, c2, c3, c4, c5, c6)

> gruppo <- factor(rep(1:4, 6))

> blocco <- factor(rep(1:6, each=4))

> rg <- tapply(dati, blocco, rank) # calcolo i ranghi nei blocchi

> ranghi <- stack(rg)[[1]] # concateno la lista ed estraggo la prima colonna

> anova(aov(ranghi ~ gruppo + blocco)) Analysis of Variance Table

Response: ranghi

Df Sum Sq Mean Sq F value Pr(>F) gruppo 3 16.7500 5.5833 8.5897 0.001474 **

blocco 5 5.017e-30 1.003e-30 1.544e-30 1.000000 Residuals 15 9.7500 0.6500

Si noti che il valore di significativit`a `e diverso dalla tecnica precedente.

5.2.4 Correlazione non parametrica

Per valutare l’associazione fra due serie di dati, inR sono disponibili due misure non parametriche:

ρ di Spearman e τ di Kendall. Entrambe sono accessibili dalla funzione cor.test (vedi Sezione 2.3) specificando l’opzionemethod appropriata.

Esempio

Si studia la correlazione non parametrica tra i valori degli indici di soddisfazioneIS degli abitanti di sette citt`a (espressi in una scala da 1 a 10) e l’area media (in km2) di zone verdi disponibili nel centro urbano.

Si inseriscono i dati:

> IS <- c(1, 2, 3, 4, 5, 6, 8, 10)

> ZV <- c(0.7, 0.4, 1.0, 1.0, 1.1, 1.2, 1.2, 1.2) Per eseguire il test di Spearman si usa la chiamata:

> cor.test(IS, ZV, method="spearman") Spearman’s rank correlation rho

data: IS and ZV S = 4, p-value = 0.002171 alternative hypothesis: true rho is not equal to 0 sample estimates:

rho 0.94523

Per il test di Kendall la sintassi `e:

> cor.test(IS, ZV, method="kendall") Kendall’s rank correlation tau data: IS and ZV

z.tau = 2.9399, p-value = 0.003283

alternative hypothesis: true tau is not equal to 0 sample estimates:

tau 0.8486684

La conclusione in entrambi i casi `e che esiste evidenza di associazione altamente significativa fra i due indici considerati.