Programma
Ti è mai capitato di eseguire un t-test, ottenere un p-value strano e poi scoprire che i tuoi dati erano lontani dall'essere normalmente distribuiti?
È capitato a tutti, prima o poi. Il problema del t-test è che presume che i tuoi dati seguano una distribuzione normale. Quando non è così, i risultati possono essere fuorvianti. Dati asimmetrici e campioni piccoli violano tutti l'assunzione di normalità. E i dati del mondo reale si comportano raramente come dicono i libri di testo.
Il test U di Mann-Whitney risolve il problema. È un'alternativa non parametrica al t-test che confronta due gruppi in base ai ranghi anziché alle medie, quindi non si interessa della forma della distribuzione.
In questo articolo vedremo che cos'è il test U di Mann-Whitney, quando usarlo, come funziona la matematica alla base e come eseguirlo e interpretarlo sia in Python che in R.
Ma che cos'è esattamente un t-test? Se ti stai facendo questa domanda, leggi il nostro Introduzione ai t-test in Python - risponderà a tutte le tue domande.
Che cos'è il test U di Mann-Whitney?
Il test U di Mann-Whitney è un test statistico non parametrico usato per confrontare due gruppi indipendenti.
A differenza del t-test, non presume che i tuoi dati seguano una distribuzione normale. Confronta le distribuzioni di due gruppi convertendo i valori grezzi in ranghi e analizzando quelli. Questo lo rende una buona scelta quando i tuoi dati sono asimmetrici, hanno outlier o semplicemente non rispettano in altro modo il requisito di normalità.
Lo troverai anche chiamato test dei ranghi di Wilcoxon. Ai fini pratici, sono sinonimi.
Quando usare il test U di Mann-Whitney
Il test U di Mann-Whitney richiede un insieme specifico di condizioni. Dovresti usarlo solo quando tutte queste sono soddisfatte:
- Due gruppi indipendenti: I campioni non si sovrappongono e i valori di un gruppo non influenzano quelli dell'altro
- Dati ordinali o continui: Pensa a punteggi d'esame, tempi di risposta o qualsiasi valore misurato
- Distribuzione non normale: I tuoi dati sono asimmetrici, hanno code pesanti o non riesci a confermare la normalità con un campione piccolo
- Campioni di piccole dimensioni: Quando non hai abbastanza dati per fare affidamento sul teorema del limite centrale
Vediamo un esempio.
Supponi di avere due classi insegnate con metodi diversi e di voler sapere quale ha prodotto risultati d'esame migliori. Rappresenti i punteggi e vedi che non sono normalmente distribuiti: una classe ha alcuni outlier che spostano la distribuzione a destra. Il t-test confronta le medie dei gruppi, quindi quegli outlier alzano la media e fanno sembrare una classe migliore di quanto sia in realtà.
Quella media distorta entra nel calcolo del t-test e il p-value che ottieni non riflette la differenza tra i gruppi. Il test U di Mann-Whitney non mostra quel problema perché lavora con i ranghi invece che con i punteggi grezzi. Un singolo outlier può al massimo essere il valore con rango più alto, quindi non può distorcere il risultato come farebbe con una media.
È anche la scelta giusta quando lavori con dati ordinali, come le risposte a un sondaggio su una scala da 1 a 5. Questi valori non sono realmente continui, quindi calcolare una media non ha molto senso.
Formula del test U di Mann-Whitney
Il test produce due statistiche U, una per ciascun gruppo. Ecco la formula:

Formula del test U di Mann-Whitney
Dove:
-
n1en2sono le dimensioni campionarie del gruppo 1 e del gruppo 2 -
R1eR2sono le somme dei ranghi per ciascun gruppo - la somma di tutti i ranghi assegnati alle osservazioni di ogni gruppo
La somma dei ranghi si calcola combinando tutti i valori di entrambi i gruppi, ordinandoli dal più basso al più alto e assegnando un rango a ciascun valore. Il valore più piccolo ottiene rango 1, il successivo rango 2 e così via. Poi sommi separatamente i ranghi appartenenti a ciascun gruppo.
La statistica test è la più piccola tra U1 e U2. La confronti quindi con un valore critico o la usi per calcolare un p-value.
La buona notizia è che non devi calcolarla a mano. Sia Python che R lo fanno per te, come ti mostrerò tra poco.
Assunzioni del test U di Mann-Whitney
Il test U di Mann-Whitney è più flessibile del t-test, ma ha comunque tre assunzioni da rispettare:
- Campioni indipendenti: I due gruppi non si influenzano a vicenda. Le osservazioni di un gruppo non hanno relazione con quelle dell'altro
- Dati ordinali o continui: I tuoi dati devono avere un ordine naturale: puoi dire che un valore è maggiore o minore di un altro
- Forme di distribuzione simili: Se vuoi interpretare i risultati come confronto tra mediane, entrambi i gruppi dovrebbero avere distribuzioni con una forma approssimativamente simile. Se le forme sono diverse, il test funziona comunque, ma stai confrontando i ranghi medi piuttosto che le mediane
La terza assunzione è quella che crea più confusione.
Il test U di Mann-Whitney è spesso descritto come un test per le mediane, ma ciò è vero solo quando le due distribuzioni hanno una forma simile. Se non ce l'hanno, il risultato ti dice qualcosa di più generale: se i valori in un gruppo tendono a essere più alti dei valori nell'altro.
Test U di Mann-Whitney in Python
Il modulo scipy.stats di Python ha una funzione per il test U di Mann-Whitney. Ecco un semplice esempio con i punteggi d'esame di due classi.
from scipy.stats import mannwhitneyu
class_a = [72, 85, 90, 65, 78, 88, 95, 70, 83, 76]
class_b = [60, 55, 74, 68, 80, 58, 63, 71, 66, 59]
stat, p_value = mannwhitneyu(class_a, class_b, alternative="two-sided")
print(f"U statistic: {stat}")
print(f"P-value: {p_value:.4f}")

Test U di Mann-Whitney in Python
L'argomento alternative="two-sided" indica al test che stai verificando se i due gruppi differiscono in entrambe le direzioni. Non stai assumendo a priori che un gruppo abbia punteggi più alti dell'altro. Se avessi un'ipotesi direzionale, useresti "less" o "greater".
Qui il p-value è 0,0046, inferiore alla soglia standard di 0,05. Ciò significa che puoi rifiutare l'ipotesi nulla, poiché c'è una differenza statisticamente significativa tra le distribuzioni dei punteggi delle due classi.
La statistica U di per sé non dice molto senza contesto. Puoi concentrarti sul p-value per decidere se la differenza è statisticamente significativa e guardare i dati grezzi o le mediane per capire la direzione di tale differenza.
Test U di Mann-Whitney in R
R esegue il test U di Mann-Whitney tramite la funzione wilcox.test(). Userò lo stesso esempio di prima sui punteggi d'esame.
class_a <- c(72, 85, 90, 65, 78, 88, 95, 70, 83, 76)
class_b <- c(60, 55, 74, 68, 80, 58, 63, 71, 66, 59)
wilcox.test(class_a, class_b, alternative = "two.sided")

Test U di Mann-Whitney in R
La statistica W è la stessa della statistica U: R la etichetta semplicemente in modo diverso. L'interpretazione è la stessa che in Python: un p-value di 0,0029 è inferiore a 0,05, quindi c'è una differenza statisticamente significativa tra i due gruppi.
Potresti anche vedere un avviso relativo ai pareggi (ties) nei tuoi dati.
Ciò accade quando due o più valori sono identici tra i due gruppi, il che influisce su come vengono assegnati i ranghi. R gestisce la cosa per te, ma se hai molti pareggi, vale la pena verificare se i tuoi dati rispettano le assunzioni del test.
Come interpretare i risultati del test U di Mann-Whitney
L'ipotesi nulla del test U di Mann-Whitney è che i due gruppi provengano dalla stessa distribuzione, in altre parole che non ci sia differenza tra loro. Il tuo compito è trovare evidenze contro questa ipotesi.
Il p-value serve a questo:
- p < 0,05: Rifiuti l'ipotesi nulla. I due gruppi sono distribuiti in modo diverso e la differenza è statisticamente significativa
- p >= 0,05: Non hai abbastanza evidenze per rifiutare l'ipotesi nulla. Non significa che i gruppi siano identici, significa solo che i dati non mostrano una differenza chiara
Ricorda che il test U di Mann-Whitney confronta le distribuzioni. Un risultato significativo ti dice che i valori in un gruppo tendono a posizionarsi più in alto nei ranghi rispetto all'altro, non che la media sia più alta. Se vuoi descrivere la direzione della differenza, guarda le mediane di ciascun gruppo, non le medie.
Test U di Mann-Whitney vs t-test
Questi due test risolvono lo stesso problema (confrontare due gruppi) ma lo fanno in modo diverso, e scegliere quello sbagliato influenzerà i risultati.
t-test
Il t-test confronta le medie di due gruppi. Si basa sull'assunzione che i tuoi dati seguano una distribuzione normale, e quando ciò è vero è un buon test.
Il problema è proprio quell'assunzione. Se i tuoi dati sono asimmetrici o provengono da un campione piccolo in cui è difficile confermare la normalità, i risultati del t-test possono diventare inaffidabili. La media è influenzata dai valori estremi e il p-value lo riflette.
Usa il t-test quando:
- I tuoi dati sono normalmente distribuiti
- Hai un campione abbastanza grande
- Stai lavorando con dati continui senza forte asimmetria o outlier
Test U di Mann-Whitney
Il test U di Mann-Whitney confronta le distribuzioni piuttosto che le medie. Classifica insieme tutti i valori dei due gruppi e verifica se un gruppo si posiziona costantemente più in alto dell'altro. Poiché lavora con i ranghi, outlier e asimmetrie non distorcono il risultato allo stesso modo.
Quando i tuoi dati sono effettivamente normalmente distribuiti, il t-test rileva le differenze in modo più affidabile. Il test U di Mann-Whitney è più flessibile, ma rinunci a un po' di sensibilità.
Usa il test U di Mann-Whitney quando:
- I tuoi dati non sono normalmente distribuiti
- Stai lavorando con dati ordinali
- Hai un campione piccolo e non puoi confermare la normalità
- Sono presenti outlier e non puoi rimuoverli
Ecco un rapido confronto tra i due:

t-test confrontato con test U di Mann-Whitney
Nel dubbio, controlla prima la tua distribuzione. Se è in qualche modo normale, usa il t-test. Se non lo è, il test U di Mann-Whitney è la scelta più sicura.
Errori comuni con il test U di Mann-Whitney
La maggior parte degli errori con questo test deriva dal non capire cosa faccia realmente. Ecco quelli che compaiono più spesso.
Presumere che confronti le medie
Questo è il più comune. Il test U di Mann-Whitney confronta le distribuzioni, non le medie. Un risultato significativo ti dice che i valori di un gruppo tendono a posizionarsi più in alto nei ranghi, non che la media sia maggiore. Se devi descrivere la differenza, riporta le mediane, non le medie.
Ignorare le differenze nella forma delle distribuzioni
Se i due gruppi hanno forme di distribuzione diverse — uno è asimmetrico a destra, l'altro è simmetrico — non puoi interpretare il risultato come un confronto di mediane. Il test si esegue comunque, ma l'output mostra una differenza nelle distribuzioni complessive, non uno spostamento del centro. Controlla le distribuzioni prima di trarre conclusioni sulle mediane.
Interpretare male i p-value
Un p-value inferiore a 0,05 significa che la differenza è statisticamente significativa. Non ti dice quanto sia grande la differenza o se abbia rilevanza pratica. Un campione molto grande può produrre un p-value significativo anche quando la differenza effettiva tra i gruppi è minima. Se nella tua analisi conta la dimensione dell'effetto, calcolala separatamente.
Usarlo per dati appaiati
Il test U di Mann-Whitney è per due gruppi indipendenti. Se i tuoi dati sono appaiati — stessi soggetti misurati due volte o coppie abbinate — ti serve invece il test dei ranghi con segno di Wilcoxon.
Quando non dovresti usare il test U di Mann-Whitney
Il test U di Mann-Whitney non è lo strumento giusto per ogni situazione. Ecco quando dovresti scegliere altro.
I tuoi dati sono appaiati
Se gli stessi soggetti compaiono in entrambi i gruppi — misurazioni prima e dopo, o coppie abbinate — i due campioni non sono indipendenti. Il test U di Mann-Whitney presume che lo siano, quindi usarlo qui ignora la relazione tra le osservazioni e fornisce risultati inaffidabili. Usa invece il test dei ranghi con segno di Wilcoxon.
Hai più di due gruppi
Il test U di Mann-Whitney confronta solo due gruppi alla volta. Se stai confrontando tre o più gruppi, usa il test di Kruskal-Wallis, l'equivalente non parametrico di un'ANOVA a una via, che può gestire più gruppi.
Hai un campione grande con dati normali
Il principale vantaggio del test U di Mann-Whitney è che non presume la normalità. Se i tuoi dati sono normalmente distribuiti e il campione è abbastanza grande da confermarlo, il t-test è la scelta migliore. Ha maggiore potenza statistica in quella situazione, il che significa che è più probabile che rilevi una differenza reale quando esiste.
Conclusione
Il test U di Mann-Whitney è un'ottima soluzione quando i tuoi dati non sono normalmente distribuiti e quindi il t-test non è adatto.
Funziona con i ranghi anziché con i valori grezzi, quindi evita le assunzioni che rendono inaffidabili i test parametrici su dati asimmetrici o con campioni piccoli. Questo lo rende un buon test per le analisi del mondo reale, dove i dati raramente si comportano come vorresti.
La lezione più importante qui è la selezione del test. Nessun test funziona per ogni dataset. Dovresti sempre controllare prima i tuoi dati — la distribuzione, la struttura e la dimensione del campione — e lasciare che siano queste caratteristiche a guidare la tua scelta. Quello giusto è quello che si adatta ai tuoi dati.
Se sei alle prime armi con la statistica o vuoi approfondire davvero l'argomento, il nostro percorso Statistician in R ti aiuterà a diventare pronto per il lavoro con appena 52 ore di materiali.
FAQs
A cosa serve il test U di Mann-Whitney?
Il test U di Mann-Whitney viene utilizzato per confrontare due gruppi indipendenti quando non puoi assumere che i dati seguano una distribuzione normale. Classifica insieme tutti i valori dei due gruppi e verifica se un gruppo si posiziona costantemente più in alto dell'altro. Funziona sia con dati ordinali sia con dati continui.
In cosa il test U di Mann-Whitney è diverso dal t-test?
Il t-test confronta le medie di due gruppi e presume la distribuzione normale. Il test U di Mann-Whitney confronta le distribuzioni usando i ranghi, quindi non fa tale assunzione. Quando i tuoi dati sono asimmetrici o provengono da un campione piccolo, il test U di Mann-Whitney è la scelta più sicura.
Quando dovrei usare il test U di Mann-Whitney?
Usalo quando hai due gruppi indipendenti, i tuoi dati sono ordinali o continui e non puoi confermare la normalità. È anche adatto quando la dimensione del campione è piccola e sono presenti outlier. Se i tuoi dati sono normalmente distribuiti e il campione è grande, il t-test in genere fornirà risultati migliori.
Cosa indica il p-value in un test U di Mann-Whitney?
Un p-value inferiore a 0,05 indica che c'è una differenza statisticamente significativa tra le distribuzioni dei due gruppi. Non ti dice quanto è grande tale differenza o se è significativa nella pratica. Per questo, dovresti calcolare separatamente la dimensione dell'effetto e guardare le mediane di ciascun gruppo.
Posso usare il test U di Mann-Whitney per dati appaiati?
No. Il test U di Mann-Whitney presume che i due gruppi siano indipendenti, ovvero che i valori di un gruppo non influenzino quelli dell'altro. Se i tuoi dati sono appaiati — pensa a misurazioni prima e dopo sugli stessi soggetti — usa invece il test dei ranghi con segno di Wilcoxon. Usare il test U di Mann-Whitney su dati appaiati ignora la relazione tra le osservazioni e produce risultati inaffidabili.


