È l’ultimo giorno del mese. Stiamo preparando il report SEO per il cliente principale. Apriamo Google Search Console, impostiamo il confronto mese su mese e un brivido ci corre lungo la schiena: il CTR organico globale del sito è crollato dal 4,5% al 3,5%.
Prima di scrivere l’email con le cattive notizie e prepararci a giustificare il calo, facciamo la cosa giusta: disaggreghiamo i dati per capire dove stiamo perdendo colpi. Guardiamo le performance per dispositivo e scopriamo una cosa apparentemente impossibile:
- Il CTR su Desktop è salito dal 5,0% al 5,5%.
- Il CTR su Mobile è salito dal 2,0% al 2,5%.
Fissiamo lo schermo. Com’è matematicamente possibile che le performance siano migliorate ovunque, ma il totale generale sia crollato di un punto percentuale netto?
Non abbiamo rotto Google Search Console e non abbiamo dimenticato la matematica delle elementari. Siamo semplicemente appena diventati vittime del Paradosso di Simpson.
Cos’è il Paradosso di Simpson
Il Paradosso di Simpson è un fenomeno statistico in cui un trend che appare evidente all’interno di diversi gruppi di dati scompare — o addirittura si inverte — quando i gruppi vengono combinati in un unico totale.
Nella pratica quotidiana della SEO e del marketing questo accade quasi sempre per colpa di una variabile confondente nascosta (come dicono gli anglosassoni, una confounding variable): nel nostro caso, il peso relativo dei segmenti che stiamo analizzando. È lo stesso ragionamento che incontriamo parlando di probabilità condizionata, dove ciò che conta non è il dato marginale ma quello condizionato a un sottogruppo.
Quando lavoriamo con tassi e percentuali (il CTR, il Conversion Rate, il Bounce Rate), guardare il dato aggregato senza considerare i volumi sottostanti è una delle trappole più insidiose per chi analizza i dati.
La dimostrazione: anatomia di un finto crollo
Torniamo al nostro report mensile e mettiamo i numeri assoluti dietro a quelle percentuali. Solo così capiamo cosa è successo davvero tra il Mese 1 e il Mese 2.
| Segmento | Mese 1 (impr. · clic · CTR) | Mese 2 (impr. · clic · CTR) | Andamento |
|---|---|---|---|
| Desktop | 10.000 · 500 · 5,0% | 10.000 · 550 · 5,5% | in crescita |
| Mobile | 2.000 · 40 · 2,0% | 20.000 · 500 · 2,5% | in crescita |
| Totale aggregato | 12.000 · 540 · 4,5% | 30.000 · 1.050 · 3,5% | in calo |
Ecco il punto: non abbiamo un problema di SEO, al contrario abbiamo avuto un successo notevole. I posizionamenti su Mobile sono esplosi, portando 18.000 impression in più rispetto al mese precedente.
Il traffico Mobile, però, ha storicamente un CTR strutturalmente più basso del Desktop (più rumore in SERP, scrolling veloce, distrazioni). Quell’enorme afflusso di impression a basso CTR ha “annacquato” la media globale, trascinandola verso il basso. Il dato aggregato ci diceva “stiamo peggiorando”; il dato disaggregato ci dice “stiamo migliorando su tutta la linea, ma è cambiato il mix di traffico”.
La ragione matematica è semplice e va sempre tenuta bene a mente: il CTR aggregato non è la media dei CTR dei segmenti, ma una loro media pesata, dove i pesi sono le quote di impression di ciascun segmento. In formula:
\( \text{CTR}_{\text{agg}} = \frac{\sum_i \text{clic}_i}{\sum_i \text{impression}_i} = \sum_i w_i \cdot \text{CTR}_i, \qquad w_i = \frac{\text{impression}_i}{\sum_j \text{impression}_j} \\ \)dove \(\text{CTR}_i\) è il CTR del segmento i e \(w_i\) è il suo peso, cioè la frazione di impression che gli appartiene. Nel Mese 2 il peso del Mobile è passato da 1/6 a 2/3 del totale: anche se ogni singolo CTR è salito, la media si è spostata verso il valore (basso) del segmento diventato dominante. Non è la matematica a essere impazzita: è il mix a essere cambiato.
Ricostruiamo il tutto in R, così vediamo il meccanismo all’opera invece di prenderlo sulla fiducia:
# Ricostruisco i dati dei due mesi
dati <- data.frame(
segmento = c("Desktop", "Mobile", "Desktop", "Mobile"),
mese = c("Mese 1", "Mese 1", "Mese 2", "Mese 2"),
impression = c(10000, 2000, 10000, 20000),
clic = c(500, 40, 550, 500)
)
# CTR di ciascun segmento
dati$ctr <- dati$clic / dati$impression
# CTR aggregato per mese: media PESATA sulle impression,
# NON la media aritmetica dei CTR
agg <- aggregate(cbind(clic, impression) ~ mese, data = dati, FUN = sum)
agg$ctr_aggregato <- agg$clic / agg$impression
print(agg)Come si vede dall’output, l’aggregato scende da 4,5% a 3,5% mentre entrambi i segmenti salgono. n.b.: la media aritmetica dei due CTR del Mese 2 sarebbe il 4% (la semplice media tra 5,5% e 2,5%), ben diversa dal 3,5% reale. Tutta la differenza è nei pesi.
Altri due scenari SEO dove il paradosso colpisce
Il CTR per dispositivo è l’esempio da manuale, ma il Paradosso di Simpson si annida un po’ ovunque nelle nostre dashboard.
1. Il crollo del Conversion Rate (intento informazionale vs transazionale)
Lavoriamo su un e-commerce e il Conversion Rate organico passa dal 3% all’1,5%. Un disastro? Non necessariamente. Se abbiamo appena lanciato un blog aziendale che ha iniziato a posizionarsi bene per centinaia di keyword informazionali top-of-the-funnel, abbiamo portato sul sito migliaia di utenti lontani dall’acquisto (con un CR fisiologico vicino allo 0,1%). Il CR delle pagine prodotto può essere stabile o in crescita, ma la mole di traffico del blog ha distorto la media aggregata.
2. Cannibalizzazione o espansione del ranking?
Una nostra pagina prodotto storica rankava solo per 5 keyword transazionali esatte: 100 impression, 10 clic, CTR 10%. Decidiamo di ottimizzarne i contenuti e il mese dopo Google ne premia la semantica, posizionandola per 80 nuove keyword long-tail e correlate. Ora la pagina fa 5.000 impression e 100 clic: CTR 2%. Se guardiamo solo il CTR medio su Search Console sembra che l’ottimizzazione l’abbia distrutta; se guardiamo i clic assoluti, li abbiamo decuplicati.
Come difendersi (i takeaway per chi analizza)
Come sopravviviamo al Paradosso di Simpson quando presentiamo i dati a un cliente o a uno stakeholder? Quattro accortezze.
- Non fidiamoci mai del solo dato aggregato. Quando analizziamo metriche relative (tassi di conversione, di clic, medie), il totale globale è spesso il numero meno utile di tutti.
- Segmentiamo fino a trovare l’omogeneità. Dividiamo i dati per dimensioni logiche prima di trarre conclusioni: per dispositivo (Desktop/Mobile), per tipo di query (brand/non-brand), per tipo di pagina (blog/prodotto).
- Cerchiamo il cambiamento dei pesi. Se un tasso globale crolla ma i sottogruppi tengono, chiediamoci: “è cambiato il mix del traffico?”. Quasi sempre un segmento a bassa performance ha aumentato di colpo i propri volumi.
- Educhiamo il cliente. In un report non limitiamoci a mostrare il calo del CTR: mostriamo la tabella disaggregata. Spiegare il meccanismo non salva soltanto il report del mese, ci posiziona come analisti che ragionano sui dati invece di subirli.
I dati non mentono, ma i dati aggregati sono ottimi prestigiatori. La difesa più solida, però, non è statistica ma sperimentale: quando possiamo decidere noi come assegnare il traffico — randomizzando gli utenti tra due versioni di una pagina — il mix smette di essere una variabile fuori controllo. È esattamente ciò che facciamo con un A/B test condotto in modo rigoroso, il prossimo passo del nostro percorso: vedere come un esperimento controllato neutralizza alla radice le variabili confondenti che qui ci siamo limitati a smascherare.
Per approfondire
Se vogliamo approfondire il Paradosso di Simpson e l’arte di leggere i dati senza farci ingannare, L’arte della statistica di David Spiegelhalter è la lettura giusta: dedica pagine limpide proprio a questo paradosso — incluso il celebre caso delle ammissioni a Berkeley — mostrando come un numero aggregato possa raccontare l’esatto contrario di ciò che è successo nei dati.