Per confrontare due campioni
indipendenti [1] è necessario impiegare:
→ un metodo parametrico, il test t di Student, quando i dati sono distribuiti in modo gaussiano;
→ metodi non parametrici, come il test di Wilcoxon per campioni
indipendenti (in genere meglio noto come test U di Mann-Whitney) e il
test di Kruskall-Wallis, quando i
dati non sono distribuiti in modo gaussiano.
Tuttavia
per confrontare più di due campioni indipendenti non è corretto applicare un test per due campioni indipendenti
ripetitivamente a tutte le diverse possibili coppie di campioni: così, ad esempio, nel caso più semplice, quello di tre campioni, non è corretto confrontare mediante l'ordinario test t di Student (assumendo che si tratti di distribuzioni gaussiane) il primo
campione con il secondo campione, il primo campione con il terzo e il secondo
campione con il terzo. Questo perché la
probabilità di commettere un errore di primo tipo [2], cioè la
probabilità di considerare la differenza tra le medie di due campioni significativa
quando invece non è significativa (probabilità di un falso
positivo), nel caso di confronti multipli viene moltiplicata per il numero di confronti
effettuati.
In altre parole un valore del test t di Student che nel caso di due campioni (per i quali un solo confronto è possibile) corrisponde a una probabilità di commettere un errore di primo tipo del 5%:
→ nel caso di tre campioni (essendo 3 il numero di confronti possibili) corrisponde a una probabilità di commettere un errore di primo tipo del 3 x 5% = 15%;
→ nel caso di quattro campioni (essendo 6 il numero di confronti possibili) corrisponde a una probabilità di commettere un errore di primo tipo del 6 x 5% = 30%;
→ nel caso di cinque campioni (essendo 10 il numero di confronti possibili) corrisponde a una probabilità di commettere un errore di primo tipo del 10 x 5% = 50%;
e così via.
Reciprocamente se nel confronto tra due campioni si assume come valore soglia per la significatività il classico p = 0.05 è indispensabile ricordarsi che questo valore:
→ quando si confrontano tre campioni deve essere sostituito con p = 0.017 (cioè 0.05/3);
→ quando si confrontano quattro campioni deve essere sostituito con p = 0.008 (cioè 0.05/6);
→ quando si confrontano cinque campioni deve essere sostituito con p = 0.005 (cioè 0.05/10);
e così via.
Anche se si potrebbe procedere seguendo queste semplici regole, di fatto sono disponibili test che, nel caso di confronti multipli, applicano automaticamente le correzioni necessarie per controbilanciare l'aumento dei falsi positivi, cioè l'aumento della probabilità di considerare la differenza tra le medie di due campioni significativa quando invece non è significativa.
Copiate lo script che segue, incollatelo nella Console di R e premete ↵ Invio:
In altre parole un valore del test t di Student che nel caso di due campioni (per i quali un solo confronto è possibile) corrisponde a una probabilità di commettere un errore di primo tipo del 5%:
→ nel caso di tre campioni (essendo 3 il numero di confronti possibili) corrisponde a una probabilità di commettere un errore di primo tipo del 3 x 5% = 15%;
→ nel caso di quattro campioni (essendo 6 il numero di confronti possibili) corrisponde a una probabilità di commettere un errore di primo tipo del 6 x 5% = 30%;
→ nel caso di cinque campioni (essendo 10 il numero di confronti possibili) corrisponde a una probabilità di commettere un errore di primo tipo del 10 x 5% = 50%;
e così via.
Reciprocamente se nel confronto tra due campioni si assume come valore soglia per la significatività il classico p = 0.05 è indispensabile ricordarsi che questo valore:
→ quando si confrontano tre campioni deve essere sostituito con p = 0.017 (cioè 0.05/3);
→ quando si confrontano quattro campioni deve essere sostituito con p = 0.008 (cioè 0.05/6);
→ quando si confrontano cinque campioni deve essere sostituito con p = 0.005 (cioè 0.05/10);
e così via.
Anche se si potrebbe procedere seguendo queste semplici regole, di fatto sono disponibili test che, nel caso di confronti multipli, applicano automaticamente le correzioni necessarie per controbilanciare l'aumento dei falsi positivi, cioè l'aumento della probabilità di considerare la differenza tra le medie di due campioni significativa quando invece non è significativa.
I principali test per il confronto tra più di due campioni indipendenti li vediamo ora, applicati ai valori di concentrazione dell'emoglobina nel sangue rilevata in 202 atleti australiani e riportata nella variabile hg della tabella ais inclusa nel pacchetto DAAG. Accertatevi di avere installato il pacchetto o in alternativa procedete come indicato in [3].
#
CONFRONTARE TRA DI LORO PIU' CAMPIONI con un metodo parametrico
# test t di Student con la correzione di Bonferroni per confronti multipli
#
library(DAAG) # carica il pacchetto DAAG che include il set di dati ais
#
boxplot(hg~sport,
data=ais, horizontal=FALSE, notch=FALSE, col="green",
las=2, xlab="Sport praticato", ylab="Emoglobina nel
sangue (g/dL)") # boxplot della concentrazione di
emoglobina per sport praticato
#
pairwise.t.test(ais$hg,
ais$sport, p.adjust.method="bonferroni") # test
t di Student per campioni indipendenti con la correzione di
Bonferroni per confronti multipli
#
Realizziamo un grafico a scatola con i baffi per la concentrazione hg
dell'emoglobina nel sangue (espressa in g/dL) aggregando
i valori in base allo sport praticato (hg~sport).
Ora, per avere un riscontro quantitativo e oggettivo delle differenze rilevate nel grafico, impiegando la funzione pairwise.t.test() impieghiamo il più classico test parametrico, con la più tradizionale correzione per confronti multipli, il test t di Student con la correzione di
Bonferroni (method=”bonferroni”):
Pairwise comparisons using t tests with pooled SD
data: ais$hg and ais$sport
data: ais$hg and ais$sport
B_Ball Field Gym Netball Row Swim T_400m T_Sprnt Tennis
Field 0.0023 - - - - - - - -
Gym 1.0000 0.1012 - - - - - - -
Netball 0.0050 2.4e-11 1.0000 - - - - - -
Row 1.0000 0.1676 1.0000 6.5e-07 - - - - -
Swim 1.0000 1.0000 1.0000 2.3e-06 1.0000 - - - -
T_400m 1.0000 0.8321 1.0000 2.7e-07 1.0000 1.0000 - - -
T_Sprnt 0.0015 1.0000 0.0606 5.1e-11 0.0928 0.5925 0.4455 - -
Tennis 1.0000 0.2188 1.0000 0.0178 1.0000 1.0000 1.0000 0.1213 -
W_Polo 0.0036 1.0000 0.1078 8.8e-11 0.2180 1.0000 0.9715 1.0000 0.2490
P value adjustment method: bonferroni
P value adjustment method: bonferroni
Il
test t di Student con la correzione di Bonferroni conferma che le atlete (sono solo donne) che praticano Netball
hanno in comune una bassa concentrazione dell'emoglobina, e che
la concentrazione media di questo gruppo si discosta significativamente dalle concentrazioni medie dei rimanenti gruppi di
atleti, con la sola eccezione (p = 1.0000) del gruppo delle atlete che pratica la ginnastica (Gym). Questo è il dato certamente più rilevante, con poche altre differenze significative che sono evidenziate nella tabella.
Da
notare che la funzione pairwise.t.test()
prevede le seguenti correzioni alternative meno conservative [4] di
quella di Bonferroni: secondo Holm (1979) (method="holm"),
Hochberg (1988) (method="hochberg"),
Hommel (1988) (method="hommel"),
Benjamini & Hochberg (1995) (method="BH"
o method="fdr"),
Benjamini & Yekutieli (2001) (method="BY"),
e method="none" per
nessuna correzione (ovviamente sconsigliato).
Vediamo ora alcuni metodi non parametrici, contenuti nel pacchetto PMCMRplus [5], che è necessario scaricare e installare dal CRAN. Copiate lo script che segue, incollatelo nella Console di R e premete ↵ Invio:
Vediamo ora alcuni metodi non parametrici, contenuti nel pacchetto PMCMRplus [5], che è necessario scaricare e installare dal CRAN. Copiate lo script che segue, incollatelo nella Console di R e premete ↵ Invio:
#
CONFRONTARE TRA DI LORO PIU' CAMPIONI con metodi non parametrici
#
library(DAAG) # carica il pacchetto DAAG che include il set di dati ais
library(DAAG) # carica il pacchetto DAAG che include il set di dati ais
#
boxplot(hg~sport,
data=ais, horizontal=FALSE, notch=FALSE, col="green",
las=2, xlab="Sport praticato", ylab="Emoglobina nel
sangue (g/dL)") # boxplot della concentrazione di
emoglobina per sport praticato
#
library(PMCMRplus)
# carica il pacchetto
spearmanTest(hg~sport,
data=ais) # rho di Spearman (test omnibus, non
parametrico)
kwAllPairsConoverTest(hg~sport,
data=ais) # test di Conover (non parametrico)
kwAllPairsDunnTest(hg~sport,
data=ais) # test di Dunn (non parametrico)
kwAllPairsNemenyiTest(hg~sport,
data=ais) # test di Nemenyi (non parametrico)
#
Quelli che qui impieghiamo sono tutti test non parametrici che quindi non prevedono che i dati siano distribuiti in modo gaussiano e che sono eseguiti mediante:
→ la
funzione spearmanTest(),
per il test ρ (rho) di Spearman [6], un
test non parametrico che riporta un risultato unico per tutte le
coppie di campioni (test omnibus);
→ la
funzione kwAllPairsConoverTest()
per il test di Conover, un test non parametrico basato sui ranghi di
tipo Kruskal, che riporta un risultato per ogni coppia di campioni;
→ la
funzione kwAllPairsDunnTest()
per il test di Dunn, un test non parametrico basato sui
ranghi di tipo Kruskal, che riporta un risultato per ogni coppia di
campioni;
→ la
funzione kwAllPairsNemenyiTest()
per il test di Nemenyi, un test non parametrico basato sul confronto
tra i ranghi, che riporta un risultato per ogni coppia di campioni.
I test di Conover, di Dunn e di Nemenyi, che riportano un risultato per ogni coppia di campioni, forniscono risultati sostanzialmente sovrapponibili, qui riporto per semplicità solamente i risultati dell'ultimo di questi.
> kwAllPairsNemenyiTest(hg~sport, data=ais) # test di Nemenyi (non parametrico)
Pairwise comparisons using Tukey-Kramer-Nemenyi all-pairs test with Tukey-Dist approximation
data: hg by sport
B_Ball Field Gym Netball Row Swim T_400m T_Sprnt Tennis
Field 0.023 - - - - - - - -
Gym 0.997 0.152 - - - - - - -
Netball 0.028 4.3e-09 0.996 - - - - - -
Row 0.981 0.201 0.905 8.6e-05 - - - - -
Swim 0.867 0.697 0.785 7.8e-05 1.000 - - - -
T_400m 0.844 0.578 0.785 2.0e-05 1.000 1.000 - - -
T_Sprnt 0.133 1.000 0.279 5.9e-07 0.573 0.934 0.891 - -
Tennis 1.000 0.196 0.997 0.158 0.999 0.981 0.981 0.441 -
W_Polo 0.018 1.000 0.126 5.0e-09 0.160 0.614 0.494 1.000 0.158
P value adjustment method: single-step
alternative hypothesis: two.sided
Messaggio di avvertimento:
In kwAllPairsNemenyiTest.default(c(12.3, 12.7, 11.6, 12.6, 14, 12.5, :
Ties are present, p-values are not corrected.
Il pacchetto PMCMRplus include tra le molte altre anche la funzione tukeyTest()
per il test di Tukey, un test parametrico,per il confronto di
campioni con distribuzione gaussiana e con uguale varianza, che
riporta un risultato per ogni coppia di campioni, un test sovrapponibile per applicazione e conclusioni al test t di Student
con la correzione di Bonferroni, anche se meno conservativo. La
sintassi è sempre la stessa, per visualizzarne i risultati copiate e incollate nella Console di R questa riga di codice e premete ↵ Invio:
tukeyTest(hg~sport,
data=ais) # test
di Tukey (parametrico)
Questo test fornisce risultati quasi identici a quelli del test t di Student con la correzione di Bonferroni:
Pairwise comparisons using Tukey's test
data: hg by sport
B_Ball Field Gym Netball Row Swim T_400m T_Sprnt Tennis
Field 0.0020 - - - - - - - -
Gym 0.9982 0.0671 - - - - - - -
Netball 0.0043 2.4e-11 0.9553 - - - - - -
Row 0.8104 0.1028 0.8151 6.4e-07 - - - - -
Swim 0.6798 0.4141 0.7173 2.3e-06 1.0000 - - - -
T_400m 0.5633 0.3463 0.6829 2.7e-07 1.0000 1.0000 - - -
T_Sprnt 0.0013 1.0000 0.0429 5.1e-11 0.0623 0.2739 0.2224 - -
Tennis 1.0000 0.1278 0.9871 0.0142 0.9993 0.9920 0.9872 0.0784 -
W_Polo 0.0031 1.0000 0.0709 8.8e-11 0.1275 0.4467 0.3833 1.0000 0.1418
P value adjustment method: single-step
alternative hypothesis: two.sided
In conclusione: nel nostro caso i risultati dei due classici test parametrici per il confronto tra medie, il test t di Student con la correzione di Bonferroni e il test di Tukey, sono molto simili a quelli dei principali test non parametrici per il confronto tra mediane (test ρ di Spearman, test di Conover, di Dunn, di Nemenyi). Questo supporta il fatto che i dati originali sono distribuiti in modo gaussiano: per definizione in distribuzioni perfettamente gaussiane i risultati dei test parametrici e dei test non parametrici coincidono, e coincidono medie e mediane. Tuttavia va sottolineato che un
approccio rigoroso e puntuale deve prevedere una verifica preliminare della
gaussianità dei dati che in questo caso viene lasciata come esercizio rimandando ai
metodi che trovate descritti in altri post [7].
----------
[2] Wikipedia. Type I and type II errors. URL consultato il 10/01/2020: http://bit.ly/2R1VdyF
[3] Vedere il post Il set di dati ais. La concentrazione dell'emoglobina viene espressa in grammi per decilitro di sangue (g/dL). Nel post trovate anche come caricare i dati della tabella senza impiegare il pacchetto DAAG.
[4] Un metodo statistico “meno conservativo” a parità di condizioni riporta più frequentemente differenze significative. Personalmente preferisco in ogni caso impiegare i metodi più conservativi, in quanto riducono la probabilità di considerare significativa una differenza che invece non è significativa (ovvero riducono la probabilità di un falso positivo).
[5]
PMCMR è l'acronimo di Calculate Pairwise Multiple
Comparisons of Mean Rank Sums Extended. Si
tratta di un pacchetto che include una serie molto ampia sia di test omnibus (che forniscono un solo risultato per tutti i confronti
effettuati), sia per il confronto tra tutte le coppie di campioni,
sia parametrici, sia non parametrici. Vedere sul CRAN il
reference manual PMCMRplus: Calculate Pairwise Multiple
Comparisons of Mean Rank Sums Extended. URL consultato il
18/12/2019: http://bit.ly/2EwRymI
[6] Per il test ρ (rho) di Spearman vedere anche il post Coefficienti di correlazione parametrici e non parametrici.
[7] Vedere:
→ il post Test di normalità (gaussianità)
Nessun commento:
Posta un commento