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.