Nell’aeronautica militare israeliana, racconta Daniel Kahneman, gli istruttori erano convinti di una cosa: lodare un allievo dopo una manovra eccellente lo peggiorava, sgridarlo dopo una pessima lo migliorava.
L’avevano osservato mille volte sul campo, quindi doveva essere vero: con i piloti la severità funziona, i complimenti rovinano.
Solo che non era vero. Una manovra eccezionale — in un senso o nell’altro — è in parte bravura e in parte fortuna; e la fortuna, alla prova successiva, non si ripete. Dopo un volo splendido si tende a tornare verso la propria media (e sembra che la lode abbia nuociuto), dopo un volo disastroso si torna verso la media (e sembra che la sgridata abbia giovato). Gli istruttori stavano attribuendo a sé stessi un effetto che era solo regressione verso la media.
Lo stesso identico inganno ci aspetta ogni volta che guardiamo i dati di un sito e decidiamo se un nostro intervento “ha funzionato”.
Vale la pena chiarire subito una cosa sul nome, perché trae in inganno: la regressione verso la media non ha niente a che vedere con la regressione lineare, il modello che traccia una retta tra due variabili. Qui “regressione” va inteso nel senso comune di ritorno, rientro: i valori estremi che tornano indietro verso la loro media. Sono due cose diverse che condividono solo una parola.
Il meccanismo è semplice, e una volta visto non si riesce più a non vederlo.
Quasi ogni numero che misuriamo è la somma di due parti: un valore “vero”, stabile, e una dose di rumore — fluttuazione casuale del momento. La posizione media in SERP di una pagina in un certo mese dipende dalla sua reale rilevanza, ma anche dal caso: l’algoritmo che oscilla, un competitor che quel mese ha spinto, la stagionalità della query, un pugno di clic in più o in meno.
Ora, quando isoliamo i casi estremi — le pagine messe peggio, il mese andato peggio — stiamo quasi sempre selezionando situazioni in cui il rumore ha spinto tutto nella stessa direzione sfavorevole.
Alla misura successiva quel rumore non si ripeterà identico, e il valore tenderà a risalire verso la sua media vera — senza che nessuno abbia fatto nulla. È un fatto puramente statistico, non un fenomeno SEO: più una misura è estrema, più è probabile che la prossima sia meno estrema.
Vediamo cosa combina questo meccanismo nel lavoro di tutti i giorni. Immaginiamo di tenere d’occhio la posizione media in SERP di 300 pagine per due mesi consecutivi. Simulo in R lo scenario, dando a ogni pagina una posizione “vera” stabile e aggiungendo a ciascun mese una fluttuazione casuale:
set.seed(48)
# 300 pagine, ognuna con la sua posizione "vera" in SERP (stabile nel tempo)
pos_vera <- runif(300, 3, 40)
# due mesi consecutivi: stessa posizione vera, rumore casuale diverso
mese1 <- pos_vera + rnorm(300, 0, 8)
mese2 <- pos_vera + rnorm(300, 0, 8)
# le 60 pagine messe peggio nel mese 1 (in SERP "peggio" = numero più alto)
peggiori <- order(mese1, decreasing = TRUE)[1:60]
round(mean(mese1[peggiori]), 1) # posizione media di partenza
# [1] 39.1 Le nostre 60 pagine peggiori partono da una posizione media di 39,1: roba da fondo della terza pagina. Decidiamo di intervenire — riscriviamo i title, aggiorniamo i contenuti, sistemiamo i link interni — e il mese dopo ricontrolliamo.
Ecco il risultato, senza che nel frattempo l’algoritmo sia cambiato e, soprattutto, senza che nella simulazione io abbia toccato davvero nulla:
round(mean(mese2[peggiori]), 1) # un mese dopo
# [1] 33 Da 39,1 a 33: circa sei posizioni guadagnate. Un balzo che in un report farebbe un figurone, e che chiunque sarebbe tentato di attribuire all’ottimizzazione appena fatta.
Peccato che nel codice non ci sia nessuna ottimizzazione: le pagine sono migliorate da sole, perché erano state scelte proprio in quanto estreme e il rumore che le aveva affossate nel mese 1 non si è ripetuto. Per dare la misura: la posizione media di tutte le 300 pagine è circa 22, ed è verso quel valore che le peggiori stanno rientrando.
Se il miglioramento arriva comunque, come facciamo a sapere se la nostra ottimizzazione ha avuto un qualche effetto reale?
La risposta è la stessa che useremmo per un farmaco: serve un gruppo di controllo. Dividiamo le 60 pagine peggiori in due metà a caso: una la “ottimizziamo”, l’altra la lasciamo deliberatamente in pace. Poi confrontiamo quanto migliorano:
# divido le 60 peggiori in due gruppi casuali
gruppo <- sample(rep(c("ottimizzate", "controllo"), each = 30))
# miglioramento medio (mese1 - mese2) nei due gruppi
round(tapply(mese1[peggiori] - mese2[peggiori], gruppo, mean), 1)
# controllo ottimizzate
# 6.0 6.1 Il gruppo “ottimizzato” guadagna 6,1 posizioni, quello di controllo — lasciato intatto — ne guadagna 6,0.
Praticamente lo stesso identico miglioramento. La nostra ottimizzazione, nella simulazione, non ha aggiunto nulla: tutto il guadagno era regressione verso la media, e il controllo lo smaschera mostrando che sarebbe successo comunque.
La lezione è questa: un miglioramento, da solo, non prova niente.
Quando intervieni proprio sulle pagine (o sulle campagne) che andavano peggio, una parte della loro ripresa è garantita a prescindere da te. Senza un confronto con ciò che non hai toccato, non puoi sapere quanto del risultato è merito tuo e quanto è solo rientro verso la media.
È lo stesso ragionamento, va detto, che sta dietro a un A/B test fatto come si deve: confrontare la variante con un controllo concorrente, non con il “prima”. Ed è cugino stretto della trappola che abbiamo visto parlando di correlazione e causazione: anche qui scambiamo una sequenza temporale (“ho agito, poi è migliorato”) per un nesso causale.
Per fissare il meccanismo, prova a ricostruire lo scenario cambiando un solo dettaglio: invece delle 60 pagine peggiori, seleziona le 60 migliori del mese 1 (order(mese1)[1:60], senza decreasing) e guarda come si comportano nel mese 2.
Cosa aspettarti: anche le campionesse rientrano verso la media, ma peggiorando — le posizioni di vertice contengono fortuna che non si ripete. È la faccia speculare dello stesso fenomeno, e spiega perché “quel mese d’oro” o “quella pagina che volava” così spesso non si riescono a replicare: non avevi perso il tocco magico, stavi solo tornando verso la tua media.
C’è una variante ancora più insidiosa di questa trappola, perché si nasconde dentro gli strumenti che usiamo proprio per decidere con rigore. Se guardiamo un test mentre è ancora in corso e ci fermiamo appena i numeri ci piacciono, stiamo selezionando un istante estremo esattamente come abbiamo selezionato le pagine peggiori — e ci faremo ingannare allo stesso modo. È il peeking problem, ed è il prossimo passo del nostro viaggio tra i tranelli dei dati di marketing.
Il racconto degli istruttori di volo con cui abbiamo aperto viene da Pensieri lenti e veloci di Daniel Kahneman, premio Nobel per l’economia: è il libro che ha reso popolari la regressione verso la media e decine di altri bias del nostro ragionamento, raccontati con esempi che restano addosso. Se di questo articolo vuoi tenere una cosa sola, tienilo: è una vaccinazione contro l’illusione di aver capito perché i numeri si muovono.
Chi guarda i dati di un sito lo fa di continuo, spesso senza nemmeno accorgersene,…
Abbiamo chiuso l'articolo sul calcolatore di significatività con una promessa. Dicevamo che il p-value risponde…
Il nostro A/B test è arrivato alla fine: la variante B mostra un tasso di…
C'è una domanda che torna, puntuale, ogni volta che pubblico un articolo di questo percorso:…
È l'ultimo giorno del mese. Stiamo preparando il report SEO per il cliente principale. Apriamo…
In questo articolo: Come scegliere chi misurare: i tipi di campionamento La dimensione campionaria: la…