Hai tre campagne Google Ads. Oppure quattro landing page. O ancora cinque versioni di una newsletter. Le medie sembrano diverse, ma sono differenze reali o semplice rumore statistico?
È esattamente il problema che risolve l’analisi della varianza (ANOVA): stabilire se almeno uno dei gruppi è realmente diverso dagli altri, senza cadere nella trappola di eseguire decine di confronti separati.
Il termine “analisi della varianza” suona controintuitivo: stiamo confrontando medie, non varianze. Il nome deriva dal modo in cui il test usa le varianze per determinare se le medie sono diverse. ANOVA confronta la varianza delle medie tra i gruppi (componente between) con la varianza all’interno dei singoli gruppi (componente within). Se la prima è sufficientemente più grande della seconda, abbiamo evidenza che i gruppi non sono equivalenti.
L’intuizione in una metafora
Immagina tre classi scolastiche. In ogni classe gli studenti hanno voti piuttosto omogenei (bassa varianza interna), ma le medie delle tre classi sono molto diverse tra loro (alta varianza tra gruppi). In questo caso è facile concludere che le classi sono realmente differenti.
Se invece all’interno di ogni classe i voti oscillano enormemente — studenti bravissimi accanto a studenti in difficoltà — distinguere una classe dall’altra diventa molto più difficile, anche se le medie sembrano diverse. La variabilità interna “copre” le differenze tra i gruppi.
Questa è, in fondo, tutta l’ANOVA: un rapporto tra la variabilità tra i gruppi e la variabilità dentro i gruppi. Quando la prima domina nettamente sulla seconda, il valore di F cresce e abbiamo evidenza contro l’ipotesi nulla.
Quando usare ANOVA
ANOVA è un test di tipo parametrico. Richiede che siano soddisfatti alcuni requisiti:
- Normalità: i dati in ciascun gruppo devono approssimare una distribuzione normale, perché la statistica F assume che i residui seguano una distribuzione normale
- Omogeneità delle varianze: i gruppi dovrebbero avere varianze approssimativamente uguali (omoschedasticità), altrimenti la stima della varianza comune risulta distorta
- Indipendenza: le osservazioni sono indipendenti tra loro — due osservazioni non devono influenzarsi reciprocamente
- Variabile dipendente continua e variabile indipendente categoriale (il fattore, con due o più livelli)
Perché ANOVA e non una serie di t-test?
Una domanda che viene naturale: perché usare ANOVA quando potremmo semplicemente confrontare ogni coppia di gruppi con un t-test?
Il problema non è la noia di eseguire molti test. Il problema è che ogni test statistico ha una probabilità α di produrre un falso positivo (errore di Tipo I). Se eseguiamo molti test indipendenti, queste probabilità si accumulano.
Per k gruppi, il numero di confronti a coppie è:
\( n = \frac{k(k-1)}{2} \\ \)Con 4 gruppi sarebbero 6 t-test. La probabilità di commettere almeno un errore di Tipo I diventa:
\( 1 – (1 – \alpha)^n \\ \)Con α = 0,05 e n = 6:
\( 1 – (1 – 0,05)^6 = 1 – 0,735 = 0,265 \\ \)Il 26,5%: più di una volta su quattro. Inaccettabile.
Quando confrontiamo tre o più gruppi, ANOVA è da preferire perché esegue un unico test con un unico α, controllando l’errore complessivo.
Il caso più semplice: ANOVA a una via
L’ANOVA a un fattore (one-way) è la forma più semplice. I dati sono organizzati in gruppi sulla base di un’unica variabile categoriale (il fattore). La domanda è:
> Le differenze osservate tra le medie sono troppo grandi per essere attribuite al caso?
Formalizziamo le ipotesi:
\( H_0: \mu_1 = \mu_2 = \dots = \mu_k \\ \) \( H_a: \text{almeno una media è diversa dalle altre} \\ \)Attenzione: ANOVA ci dice SE esiste una differenza, non DOVE si trova. Per individuare quali gruppi differiscono serve un test post-hoc, che vedremo tra poco.
Come interpretare il valore F
Il cuore dell’ANOVA è il rapporto F:
\( F = \frac{\text{varianza tra i gruppi}}{\text{varianza dentro i gruppi}} = \frac{MS_b}{MS_e} \\ \)Se l’ipotesi nulla è vera, sia \( MS_b \) che \( MS_e \) stimano la stessa varianza, e F è vicino a 1. Se F è significativamente maggiore di 1, abbiamo evidenza che le medie non sono tutte uguali.
ANOVA è stata sviluppata da Ronald Fisher negli anni venti. La statistica F su cui si basa è chiamata proprio in suo onore distribuzione F di Fisher.

Un esempio passo-passo
Prendiamo un caso concreto. Vogliamo sapere se il tipo di dispositivo (desktop, mobile, tablet) influenza gli obiettivi completati sul sito. Seguiamo i dati mensili per 6 mesi:
| Desktop | Mobile | Tablet |
|---|---|---|
| 39 | 45 | 30 |
| 67 | 54 | 45 |
| 78 | 64 | 22 |
| 59 | 52 | 39 |
| 42 | 46 | 38 |
| 51 | 35 | 41 |
Calcoliamo le medie di gruppo:
\( \bar{x}_{\text{desktop}} = 56 \quad \bar{x}_{\text{mobile}} = 49,3 \quad \bar{x}_{\text{tablet}} = 35,8 \\ \)E la grande media (media di tutte le osservazioni): \( \bar{x} = 47 \).
Per capire da dove nasce la statistica F, dobbiamo scomporre la variabilità totale in due parti: la variabilità tra i gruppi e la variabilità dentro i gruppi. Senza entrare nei singoli calcoli — nessuno li fa più a mano, come vedremo tra poco — da queste si ottengono le rispettive varianze (Mean Squares) e infine il rapporto F.
| Fonte | SQ | df | MQ | F | p |
|---|---|---|---|---|---|
| Device (between) | 1266,4 | 2 | 633,2 | 4,86 | 0,0236 |
| Residuo (within) | 1954,2 | 15 | 130,3 | ||
| Totale | 3220,6 | 17 |
Il valore F = 4,86 supera il valore critico (3,68 per df = 2,15 e α = 0,05). Con un p-value di 0,0236, rifiutiamo l’ipotesi nulla: almeno un dispositivo ha una media diversa dagli altri.
Come interpretare il p-value
Il p-value in ANOVA si legge come in ogni test di ipotesi: è la probabilità di osservare un valore di F uguale o più estremo di quello ottenuto, assumendo che H₀ sia vera. Un p-value piccolo (tipicamente < 0,05) ci dice che le differenze osservate sono difficilmente attribuibili al caso.
Ma attenzione: significatività statistica non significa importanza pratica. Un p-value molto piccolo può nascondere un effetto trascurabile, se il campione è grande. Per questo serve l’effect size.
L’effect size: l’η² (eta-quadro)
Il p-value ci dice se una differenza esiste. L’eta-quadro ci dice quanto è grande.
\( \eta^2 = \frac{SS_b}{SS_{\text{totale}}} = \frac{1266,4}{3220,6} \approx 0,39 \\ \)Un p-value molto piccolo ci dice che una differenza probabilmente esiste. Ma non ci dice se quella differenza è grande oppure trascurabile. Per questo è buona pratica accompagnare sempre ANOVA con una misura dell’ampiezza dell’effetto.
Regole di thumb per η²:
- 0,01: effetto piccolo
- 0,06: effetto medio
- 0,14: effetto grande
Il nostro η² = 0,39 è un effetto molto grande: il tipo di dispositivo spiega il 39% della variabilità negli obiettivi.
Cosa fare dopo ANOVA: i test post-hoc
ANOVA ci dice che esiste una differenza, ma non quali gruppi differiscono tra loro. Per rispondere a questa domanda servono i test post-hoc.
Il più comune è il Tukey HSD (Honestly Significant Difference), che confronta tutte le coppie di medie correggendo per i confronti multipli.
Nel nostro esempio, Tukey HSD ci direbbe che la differenza significativa è tra tablet e desktop, mentre le altre coppie non raggiungono la significatività.
Un caso pratico SEO: il tempo sulla pagina dipende dal canale?
Mettiamo ANOVA al lavoro su una domanda che chiunque guardi i dati di un sito si pone: gli utenti che arrivano da canali diversi si comportano in modo diverso?
Abbiamo il tempo sulla pagina (in secondi) di 8 sessioni per ciascuno di quattro canali:
organico <- c(98, 112, 85, 105, 92, 120, 88, 101)
diretto <- c(90, 102, 78, 95, 110, 84, 99, 88)
paid <- c(72, 65, 80, 58, 70, 75, 62, 68)
social <- c(55, 48, 62, 50, 44, 58, 52, 46)
tempo <- c(organico, diretto, paid, social)
canale <- factor(rep(c("organico","diretto","paid","social"), each = 8))Calcoliamo in R:
summary(aov(tempo ~ canale)) Df Sum Sq Mean Sq F value Pr(>F)
canale 3 11913 3971 46.82 4.89e-11 ***
Residuals 28 2375 85Il valore di F è 46,82 e il p-value è dell’ordine di 10⁻¹¹: ben al di sotto di qualsiasi soglia. Rifiutiamo l’ipotesi nulla: almeno un canale si comporta diversamente.
Guardiamo le medie:
tapply(tempo, canale, mean) diretto organico paid social
93.2 100.1 68.8 51.9L’organico è il canale più coinvolto (100 secondi), seguito dal diretto (93). Il social si ferma a 52 secondi — il traffico da feed tende a rimbalzare in fretta.
Calcoliamo l’η² per capire la grandezza dell’effetto:
11913 / (11913 + 2375) # ≈ 0,830,83: il canale spiega l’83% della variabilità nei tempi. Un effetto enorme. In ambito reale valori così elevati sono piuttosto rari: l’esempio è volutamente costruito per rendere evidente il funzionamento del metodo.
TukeyHSD(aov(tempo ~ canale)) diff lwr upr p adj
diretto-organico -6.875 -24.423 10.6730 0.7165876
paid-organico -31.250 -48.798 -13.7020 0.0003217
social-organico -48.250 -65.798 -30.7020 0.0000001
paid-diretto -24.375 -41.923 -6.8270 0.0041674
social-diretto -41.375 -58.923 -23.8270 0.0000073
social-paid -17.000 -34.548 0.5480 0.0598936Il test post-hoc conferma che le differenze significative sono tutte quelle che coinvolgono paid e social rispetto a organico e diretto. Tra organico e diretto, invece, la differenza non è statisticamente significativa.
Ipotesi del test ANOVA: verifica
Prima di fidarsi dei risultati, è bene verificare le assunzioni:
Normalità dei residui:
modello <- aov(tempo ~ canale)
shapiro.test(residuals(modello))Omogeneità delle varianze (omoschedasticità):
bartlett.test(tempo ~ canale)Se queste assunzioni sono violate, si possono usare alternative non parametriche come il test di Kruskal-Wallis.
Nella pratica quotidiana
Nessuno calcola a mano una tabella ANOVA. Programmi come R, Python (scipy.stats), SPSS o Jamovi eseguono il calcolo in pochi istanti. Comprendere cosa rappresentano le diverse componenti — la scomposizione della varianza, il rapporto F, i gradi di libertà — rimane essenziale per interpretare correttamente il risultato.
Prova tu
Un e-commerce ha fatto girare tre campagne (A, B, C) e vuole sapere se il valore medio dell’ordine cambia in modo significativo.
camp_A <- c(42, 38, 45, 50, 41, 47, 39, 44)
camp_B <- c(48, 52, 46, 55, 50, 53, 49, 51)
camp_C <- c(44, 40, 49, 43, 46, 41, 45, 47)
valore <- c(camp_A, camp_B, camp_C)
campagna <- factor(rep(c("A","B","C"), each = 8))
summary(aov(valore ~ campagna))Esegui il test, leggi F e p-value, calcola η².
F = 10,77, p = 0,0006, η² = 0,44. La campagna B (media 50,5 €) performa meglio di A (43,2 €) e C (44,4 €), e la differenza è statisticamente significativa. Tukey HSD lo confermerebbe puntando il dito su B.
FAQ
ANOVA funziona con soli due gruppi?
Sì, ma in quel caso è equivalente al t-test a due code (e F = t²).
Cosa significa “a una via” e “a due vie”?
A una via: un solo fattore (es. canale). A due vie: due fattori contemporaneamente (es. canale × dispositivo), che permette di studiare anche l’interazione tra loro.
Posso usare ANOVA con campioni piccoli?
Sì, ma verifica normalità e omoschedasticità. Con gruppi di dimensione diversa, ANOVA è comunque robusta se gli scarti non sono estremi.
ANOVA è una di quelle idee che, una volta capite, si vedono ovunque: ogni volta che confrontiamo una metrica continua tra più gruppi — canali, dispositivi, varianti, periodi — è lo strumento giusto per non confondere il rumore con il segnale. E non è un’isola: sotto il cofano, l’analisi della varianza e la regressione lineare sono lo stesso identico modello, visto da due angolazioni diverse. Una curiosità interessante: ANOVA e regressione lineare non sono tecniche separate. Cambia il modo di codificare le variabili, ma il cuore del metodo rimane identico. È da quel modello — il modello lineare — che passa la parte più potente della statistica applicata, ed è lì che il nostro percorso continua.
Per approfondire
L’analisi della varianza è trattata in tutte le sue forme — a una via, a due vie, con misure ripetute — in Statistica di Newbold, Carlson e Thorne, per chi vuole andare oltre l’introduzione di questo articolo. Amazon