Quando i Dati Sono Imperfetti, la Tua Analisi Non Deve Esserlo
I tuoi dati non seguono una curva a campana perfetta. I campioni sono piccoli, magari raccolti da un sondaggio su Instagram o da un primo test utente. L’idea di usare un classico t-test ti preoccupa, perché i suoi presupposti sembrano un dogma invalicabile. E ora?
Questa non è la fine della tua analisi, è l’inizio. Esiste uno strumento robusto, flessibile e sorprendentemente intuitivo, pensato proprio per queste situazioni “imperfette” ma incredibilmente comuni. È il test di Mann-Whitney U, un coltellino svizzero della statistica che non ti chiede di forzare i tuoi dati in stampi innaturali. Invece di medie e varianze, parla il linguaggio dei ranghi, permettendoti di scoprire se due gruppi sono realmente diversi, anche quando i numeri sono pochi e bizzarri.
Attraverso 6 esercizi pratici, passeremo dal mondo dei social media a quello delle smart home, mostrando non solo come si calcola, ma perché è la scelta giusta in contesti reali. 💡
6 Esercizi Svolti sul Test di Mann-Whitney U
Ecco sei esercizi pratici con soluzioni passo-passo per capire a fondo il test.
Esercizio 1: Confrontare il tempo di risposta sui social media (Livello Facile)
Contesto: Come Social Media Manager, vuoi sapere se il tempo di risposta ai commenti è diverso tra Instagram e TikTok. Affrontiamo uno scenario classico: pochi dati, nessuna garanzia di normalità. Qui il Mann-Whitney U brilla.
Dati:
- Instagram (n₁=5): 45, 60, 32, 55, 48
- TikTok (n₂=5): 28, 35, 40, 22, 30
- Livello di significatività (α): 0.05
1. Ordinamento e Ranghi:
- Dati combinati: 22(T), 28(T), 30(T), 32(I), 35(T), 40(T), 45(I), 48(I), 55(I), 60(I)
- Ranghi: 1(T), 2(T), 3(T), 4(I), 5(T), 6(T), 7(I), 8(I), 9(I), 10(I)
2. Somma dei Ranghi (R):
- R₁ (Instagram): 4 + 7 + 8 + 9 + 10 = 38
- R₂ (TikTok): 1 + 2 + 3 + 5 + 6 = 17
3. Calcolo di U:
[math]\displaystyle \begin{aligned}
U_1 &= (n_1 \cdot n_2) + \frac{n_1(n_1+1)}{2} – R_1 \\
&= (5 \cdot 5) + \frac{5(6)}{2} – 38 \\
&= 25 + 15 – 38 = 2
\end{aligned}[/math]
[math]\displaystyle \begin{aligned}
U_2 &= (n_1 \cdot n_2) + \frac{n_2(n_2+1)}{2} – R_2 \\
&= (5 \cdot 5) + \frac{5(6)}{2} – 17 \\
&= 25 + 15 – 17 = 23
\end{aligned}[/math]
Si sceglie il valore minimo: U = 2.
4. Decisione:
Il valore critico per n₁=5, n₂=5 e α=0.05 (test a due code) è 2.
Poiché U = 2 ≤ 2 (il nostro valore è uguale o inferiore al valore critico), rifiutiamo l’ipotesi nulla (H₀).
Conclusione: C’è una differenza statisticamente significativa nei tempi di risposta tra le due piattaforme.
Esercizio 2: Valutare l’efficacia di un’app per il fitness (Livello Facile-Medio)
Contesto: Come Product Manager, stai valutando se una nuova versione “premium” di un’app di fitness porta a bruciare più calorie rispetto alla versione “base”.
Dati (calorie bruciate):
- Base (n₁=5): 250, 300, 280, 320, 270
- Premium (n₂=5): 220, 350, 290, 310, 260
- Livello di significatività (α): 0.05
1. Ordinamento e Ranghi:
- Dati combinati: 220(P), 250(B), 260(P), 270(B), 280(B), 290(P), 300(B), 310(P), 320(B), 350(P)
- Ranghi: 1(P), 2(B), 3(P), 4(B), 5(B), 6(P), 7(B), 8(P), 9(B), 10(P)
2. Somma dei Ranghi (R):
- R₁ (Base): 2 + 4 + 5 + 7 + 9 = 27
- R₂ (Premium): 1 + 3 + 6 + 8 + 10 = 28
3. Calcolo di U:
[math]\displaystyle \begin{aligned}
U_1 &= (5 \cdot 5) + \frac{5(6)}{2} – 27 \\
&= 25 + 15 – 27 = 13
\end{aligned}[/math]
[math]\displaystyle \begin{aligned}
U_2 &= (5 \cdot 5) + \frac{5(6)}{2} – 28 \\
&= 25 + 15 – 28 = 12
\end{aligned}[/math]
Si sceglie il valore minimo: U = 12.
4. Decisione:
Il valore critico per n₁=5, n₂=5 e α=0.05 è 2.
Poiché U = 12 > 2, non rifiutiamo l’ipotesi nulla (H₀).
Conclusione: Non c’è una differenza statisticamente significativa tra la versione base e quella premium.
Esercizio 3: Analisi di recensioni su e-commerce (Livello Medio)
Contesto: Come E-commerce Analyst, devi capire se i prodotti “eco-friendly” ricevono valutazioni (da 1 a 5 stelle) diverse da quelli tradizionali. I dati sono ordinali, quindi il Mann-Whitney è la scelta ideale.
Dati (stelle):
- Eco (n₁=6): 4, 3, 5, 2, 4, 3
- Tradizionali (n₂=6): 1, 2, 3, 4, 2, 1
- Livello di significatività (α): 0.01
1. Ordinamento e Ranghi (con ties):
- Dati combinati: 1(T), 1(T), 2(T), 2(T), 2(E), 3(T), 3(E), 3(E), 4(T), 4(E), 4(E), 5(E)
- Assegnazione Ranghi (con media per i pareggi):
- Due ‘1’: rango [math]\frac{1+2}{2} = 1.5[/math]
- Tre ‘2’: rango [math]\frac{3+4+5}{3} = 4[/math]
- Tre ‘3’: rango [math]\frac{6+7+8}{3} = 7[/math]
- Tre ‘4’: rango [math]\frac{9+10+11}{3} = 10[/math]
- Un ‘5’: rango 12
2. Somma dei Ranghi (R):
- R₁ (Eco): 4 (per il ‘2’) + 7 + 7 (per i ‘3’) + 10 + 10 (per i ‘4’) + 12 (per il ‘5’) = 50
- R₂ (Tradizionali): 1.5 + 1.5 (per i ‘1’) + 4 + 4 (per i ‘2’) + 7 (per il ‘3’) + 10 (per il ‘4’) = 28
3. Calcolo di U:
[math]\displaystyle \begin{aligned}
U_1 &= (6 \cdot 6) + \frac{6(7)}{2} – 50 \\
&= 36 + 21 – 50 = 7
\end{aligned}[/math]
[math]\displaystyle \begin{aligned}
U_2 &= (6 \cdot 6) + \frac{6(7)}{2} – 28 \\
&= 36 + 21 – 28 = 29
\end{aligned}[/math]
Si sceglie il valore minimo: U = 7.
4. Decisione:
Il valore critico per n₁=6, n₂=6 e α=0.01 (due code) è 3.
Poiché U = 7 > 3, non rifiutiamo l’ipotesi nulla (H₀).
Conclusione: Non c’è una differenza statisticamente significativa nelle recensioni tra i due tipi di prodotto a questo livello di significatività.
Esercizio 4: Studio sui consumi energetici in smart home (Livello Medio)
Contesto: Come Data Scientist in ambito IoT, confronti i consumi (kWh) di case con e senza un sistema AI di gestione energetica.
Dati (kWh/giorno):
- Con AI (n₁=6): 8, 10, 7, 9, 11, 6
- Senza AI (n₂=6): 12, 14, 13, 15, 10, 11
- Livello di significatività (α): 0.05
1. Ordinamento e Ranghi (con ties):
- Dati combinati: 6(A), 7(A), 8(A), 9(A), 10(A), 10(S), 11(A), 11(S), 12(S), 13(S), 14(S), 15(S)
- Ranghi (con media):
- Due ’10’: rango [math]\frac{5+6}{2} = 5.5[/math]
- Due ’11’: rango [math]\frac{7+8}{2} = 7.5[/math]
2. Somma dei Ranghi (R):
- R₁ (Con AI): 1 + 2 + 3 + 4 + 5.5 + 7.5 = 23
- R₂ (Senza AI): 5.5 + 7.5 + 9 + 10 + 11 + 12 = 55
3. Calcolo di U:
[math]\displaystyle \begin{aligned}
U_1 &= (6 \cdot 6) + \frac{6(7)}{2} – 23 \\
&= 36 + 21 – 23 = 34
\end{aligned}[/math]
[math]\displaystyle \begin{aligned}
U_2 &= (6 \cdot 6) + \frac{6(7)}{2} – 55 \\
&= 36 + 21 – 55 = 2
\end{aligned}[/math]
Si sceglie il valore minimo: U = 2.
4. Decisione:
Il valore critico per n₁=6, n₂=6 e α=0.05 (due code) è 5.
Poiché U = 2 < 5, rifiutiamo l’ipotesi nulla (H₀).
Conclusione: I consumi energetici sono significativamente diversi; le case con AI consumano di meno.
Esercizio 5: Confronti in telemedicina (Livello Medio-Difficile)
Contesto: Come Analista Sanitario, vuoi testare l’ipotesi specifica che i tempi di attesa in telemedicina siano inferiori per i pazienti urbani rispetto a quelli rurali. Questa è un’ipotesi direzionale.
Dati (minuti di attesa):
- Urbani (n₁=7): 5, 8, 10, 6, 12, 7, 9
- Rurali (n₂=7): 15, 20, 18, 22, 16, 19, 17
- Livello di significatività (α): 0.05, test unilaterale
1. Ordinamento e Ranghi:
I due gruppi non si sovrappongono.
- Ranghi Urbani: 1, 2, 3, 4, 5, 6, 7
- Ranghi Rurali: 8, 9, 10, 11, 12, 13, 14
2. Somma dei Ranghi (R):
- R₁ (Urbani): 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28
- R₂ (Rurali): 8 + 9 + 10 + 11 + 12 + 13 + 14 = 77
3. Calcolo di U:
[math]\displaystyle \begin{aligned}
U_1 &= (7 \cdot 7) + \frac{7(8)}{2} – 28 \\
&= 49 + 28 – 28 = 49
\end{aligned}[/math]
[math]\displaystyle \begin{aligned}
U_2 &= (7 \cdot 7) + \frac{7(8)}{2} – 77 \\
&= 49 + 28 – 77 = 0
\end{aligned}[/math]
U = 0.
4. Decisione:
Il valore critico per n₁=7, n₂=7 e α=0.05 (test unilaterale) è 11.
Poiché U = 0 < 11, rifiutiamo l’ipotesi nulla (H₀).
Conclusione: I tempi di attesa per i pazienti urbani sono significativamente inferiori a quelli dei pazienti rurali.
Esercizio 6: Impatto ambientale di veicoli (Livello Difficile)
Contesto: Come Analista Ambientale, confronti le emissioni di CO₂ (g/km) tra veicoli elettrici e ibridi. Con campioni un po’ più grandi, possiamo introdurre l’approssimazione a Z.
Dati (g/km CO₂):
- Elettrici (n₁=7): 20, 25, 18, 30, 22, 28, 15
- Ibridi (n₂=8): 35, 40, 32, 45, 38, 42, 50, 33
- Livello di significatività (α): 0.05
1. Ordinamento e Ranghi:
Anche qui, i due gruppi non si sovrappongono.
- Ranghi Elettrici: 1, 2, 3, 4, 5, 6, 7
- Ranghi Ibridi: 8, 9, 10, 11, 12, 13, 14, 15
2. Somma dei Ranghi (R):
- R₁ (Elettrici): 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28
- R₂ (Ibridi): 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 = 92
3. Calcolo di U:
[math]\displaystyle \begin{aligned}
U_1 &= (7 \cdot 8) + \frac{7(8)}{2} – 28 \\
&= 56 + 28 – 28 = 56
\end{aligned}[/math]
[math]\displaystyle \begin{aligned}
U_2 &= (7 \cdot 8) + \frac{8(9)}{2} – 92 \\
&= 56 + 36 – 92 = 0
\end{aligned}[/math]
U = 0.
4. Approssimazione a Z (per campioni più grandi):
Media di U ([math]\mu_U[/math]):
[math]\displaystyle \mu_U = \frac{n_1 \cdot n_2}{2} = \frac{7 \cdot 8}{2} = 28[/math]
Deviazione standard di U ([math]\sigma_U[/math]):
[math]\displaystyle \sigma_U = \sqrt{\frac{n_1 \cdot n_2(n_1+n_2+1)}{12}} = \sqrt{\frac{7 \cdot 8(7+8+1)}{12}} \approx 8.64[/math]
Calcolo Z:
[math]\displaystyle Z = \frac{U – \mu_U}{\sigma_U} = \frac{0 – 28}{8.64} \approx -3.24[/math]
5. Decisione:
Per α=0.05 (due code), il valore critico di Z è ±1.96.
Poiché [math]|Z| = 3.24 > 1.96[/math], rifiutiamo l’ipotesi nulla (H₀).
Conclusione: Le emissioni dei veicoli elettrici sono significativamente inferiori a quelle dei veicoli ibridi.
Risorse Pratiche: Codice e Strumenti Utili 💻
Calcolare il test a mano è fondamentale per capirne la logica, ma nella pratica quotidiana userai quasi sempre un software statistico. Ecco come eseguire il test in Python :
Snippet di Codice in Python
In Python, la libreria più comune per le operazioni statistiche è SciPy. La funzione da usare è scipy.stats.mannwhitneyu.
Prendiamo i dati dell’Esercizio 1 (Social Media):
- Instagram: [45, 60, 32, 55, 48]
- TikTok: [28, 35, 40, 22, 30]
Python
# Importa la funzione necessaria dalla libreria SciPy
from scipy.stats import mannwhitneyu
Definisci i dati dei due campioni
instagram_tempi = [45, 60, 32, 55, 48]
tiktok_tempi = [28, 35, 40, 22, 30]
Esegui il test di Mann-Whitney U (bilaterale di default)
statistica_u, p_value = mannwhitneyu(instagram_tempi, tiktok_tempi, alternative='two-sided')
print(f"Statistica U: {statistica_u}")
print(f"P-value: {p_value}")
Interpreta il risultato in base al livello di significatività (alpha)
alpha = 0.05
if p_value < alpha:
print("Poiché il p-value è minore di alpha, rifiutiamo l'ipotesi nulla: c'è una differenza significativa.")
else:
print("Poiché il p-value non è minore di alpha, non possiamo rifiutare l'ipotesi nulla.")
Output Atteso:
Statistica U: 2.0
P-value: 0.027773229878200878
Poiché il p-value è minore di alpha, rifiutiamo l'ipotesi nulla: c'è una differenza significativa.
Nota: Il valore statistica_u (2.0) corrisponde esattamente a quello che abbiamo calcolato a mano. Il p-value (≈0.028) è inferiore al nostro α di 0.05, confermando la decisione di rifiutare H₀.
Risorse Raccomandate per Tabelle di Valori Critici
Tabella completa per test a due code, con valori critici per n₁ e n₂ da 3 a 20 e α = 0.05, 0.02, 0.01.
Include anche una sezione per test unilaterale. È una risorsa chiara e compatta, ideale per gli esercizi dell’articolo (es. n=5-7).
Perché Questi Esercizi Sono Importanti:
- Esercizio 1 (Social Media): È l’entry-level perfetto. Mostra come, anche con pochi dati raccolti in un pomeriggio, si possa trarre una conclusione statistica valida senza complicazioni.
- Esercizio 2 (Fitness App): Insegna una lezione di umiltà statistica. Il risultato non è significativo, ricordandoci che una differenza apparente non è sempre una differenza reale. Fondamentale nell’A/B testing.
- Esercizio 3 (E-commerce): Introduce due sfide comuni: dati ordinali (le stelle) e valori uguali (ties). Mostra come il test si adatti elegantemente a dati non numerici, un caso d’uso frequentissimo.
- Esercizio 4 (Smart Home): Sottolinea l’importanza del disegno sperimentale. La nota sul test di Wilcoxon per dati appaiati (es. stesse case prima e dopo) chiarisce che la scelta del test dipende da come sono stati raccolti i dati, non solo dalla loro natura.
- Esercizio 5 (Telemedicina): Illustra la potenza del test unilaterale. Quando si ha un’ipotesi direzionale (“inferiore a” o “superiore a”), questo test è più potente e specifico. Il risultato estremo (U=0) lo rende un esempio chiarissimo.
- Esercizio 6 (Veicoli): Fa da ponte verso l’analisi statistica su larga scala. Introduce l’approssimazione a Z, che è la logica usata da tutti i software statistici per calcolare il p-value con campioni più grandi. Stimola anche una riflessione più profonda: ci interessa solo la mediana (Mann-Whitney) o l’intera forma della distribuzione (Kolmogorov-Smirnov)?
📚 Approfondimenti da La Scienza dei Dati
- Test di Mann-Whitney U: guida pratica per dati non normali
- Test di Mann-Whitney U: i limiti che nessuno ti dice e come evitare errori di interpretazione
- 👨💻 Episodio 4: test parametrici fuori controllo
- Statistica inferenziale: 6 esercizi svolti per capire il mondo dei dati
- Test t di Welch: guida completa con esercizi risolti per studenti e professionisti
- Test di autovalutazione: domina la probabilità (guida completa per data analyst)




