Il nostro A/B test è arrivato alla fine: la variante B mostra un tasso di conversione più alto della variante A. La tentazione di dichiarare il vincitore e implementare la modifica è forte. Ma prima c’è una domanda a cui rispondere, ed è la stessa che attraversa tutto il nostro percorso: la differenza che osserviamo è un segnale reale o solo rumore statistico?
Questo calcolatore è il complemento naturale del calcolatore di sample size: quello lavora prima del test e ci dice quanti utenti servono; questo lavora dopo e ci dice se il risultato ottenuto è statisticamente significativo. Chi ha letto l’articolo sul test delle ipotesi riconoscerà subito il meccanismo: dietro le quinte c’è un test z per il confronto tra due proporzioni.
L’uso è immediato: inseriamo visitatori e conversioni delle due varianti, scegliamo il livello di significatività, e il calcolatore restituisce p-value, verdetto e intervallo di confidenza della differenza.
I valori precaricati sono quelli dell’esempio che svolgeremo passo passo più sotto: possiamo sostituirli con i numeri del nostro test.
Il ragionamento è quello classico del test delle ipotesi. Partiamo dall’ipotesi nulla: le due varianti convertono allo stesso modo, e la differenza osservata è frutto del caso. Poi misuriamo quanto questa differenza è “sorprendente” se l’ipotesi nulla fosse vera: se è troppo sorprendente, l’ipotesi nulla non regge.
I protagonisti sono tre:
La statistica del test misura la differenza osservata in unità di errore standard:
\( z = \frac{\hat{p}_B – \hat{p}_A}{\sqrt{\hat{p}(1-\hat{p})\left(\frac{1}{n_A} + \frac{1}{n_B}\right)}} \)Il denominatore è l’errore standard della differenza: ci dice di quanto oscillerebbe la differenza tra i due tassi se ripetessimo il test molte volte, in un mondo dove le varianti sono identiche. Lo z risultante si legge sulla distribuzione normale: il p-value è la probabilità di osservare una differenza almeno così estrema, in un verso o nell’altro, per puro caso. “In un verso o nell’altro” non è un dettaglio: il test è a due code, perché prima di guardare i dati non sappiamo se B farà meglio o peggio di A.
Per orientarsi, i valori di riferimento sono sempre gli stessi:
Facciamo un esempio, con i numeri precaricati nel calcolatore. La variante A ha ricevuto 8.500 visitatori e 204 conversioni; la variante B 8.300 visitatori e 251 conversioni:
Dunque: z = 2.49 supera la soglia 1.96 e il p-value vale 0.0127. La differenza è significativa al 95% — ma, come si vede, non al 99% (0.0127 > 0.01). Lo stesso risultato, due verdetti diversi a seconda del rigore che abbiamo scelto: il livello di significatività va deciso prima di guardare i dati, non dopo.
Verifico il calcolo in R con prop.test, disattivando la correzione di continuità per restare allineati al calcolo manuale:
prop.test(c(251, 204), c(8300, 8500), correct = FALSE)
2-sample test for equality of proportions
without continuity correction
data: c(251, 204) out of c(8300, 8500)
X-squared = 6.2075, df = 1, p-value = 0.01272
alternative hypothesis: two.sided
95 percent confidence interval:
0.001325762 0.011156166
sample estimates:
prop 1 prop 2
0.03024096 0.02400000 I conti tornano: il p-value è lo stesso del calcolo manuale, e la statistica X-squared non è altro che il nostro z al quadrato (2.49² ≈ 6.21 — il test chi quadrato su una tabella 2×2 e il test z su due proporzioni sono lo stesso test, come avevamo visto nell’articolo sul chi quadrato). In più, R ci regala l’intervallo di confidenza della differenza: tra 0.13 e 1.12 punti percentuali. È l’informazione più preziosa di tutte, e vediamo subito perché.
Significativo non vuol dire importante. Va sempre tenuto bene a mente: con campioni molto grandi, anche differenze irrisorie e commercialmente irrilevanti diventano statisticamente significative. La significatività ci dice che la differenza non è frutto del caso, non che sia grande. Per capire quanto è grande, guardiamo l’intervallo di confidenza della differenza: nel nostro esempio va da +0.13 a +1.12 punti percentuali. Se anche il limite inferiore giustifica lo sforzo di implementare la modifica, possiamo procedere con fiducia; se l’intervallo include valori trascurabili, il verdetto “significativo” da solo non basta.
Il p-value vale se il test si ferma quando deciso. Il calcolo presuppone che la dimensione campionaria sia stata fissata in anticipo (con il calcolatore di sample size) e che il test si fermi lì. Controllare i risultati ogni giorno e fermarsi al primo p-value sotto 0.05 — il famigerato peeking, come dicono gli anglosassoni — gonfia drasticamente i falsi positivi: è come lanciare una moneta finché non escono tre teste di fila e dichiarare la moneta truccata. Ne abbiamo parlato nella guida ai test statistici per le analisi A/B.
n.b.: il calcolatore usa un test a due code, la scelta prudente e standard. Esistono versioni a una coda che “premiano” l’ipotesi direzionale con p-value dimezzati, ma vanno usate solo quando la direzione dell’effetto è davvero nota a priori — nella pratica quotidiana degli A/B test, quasi mai.
Il p-value risponde a una sola domanda: l’effetto esiste? Non ci dice quanto è grande, né se vale lo sforzo di implementarlo. Per quello servono altri due strumenti — l’effect size e la power analysis — ed è esattamente lì che il nostro percorso andrà nel prossimo articolo.
Il riferimento più completo sulla conduzione rigorosa di esperimenti online resta Trustworthy Online Controlled Experiments di Ron Kohavi, Diane Tang e Ya Xu: il capitolo sulle insidie dell’interpretazione dei risultati (peeking incluso) vale da solo il prezzo del libro.
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…
Una delle domande più ricorrenti quando si progetta un A/B test è: quanti utenti mi…
Tre metodi statistici per identificare valori anomali nei dati: z-score, IQR di Tukey e test…
Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, l'inferenza statistica da una prospettiva…