
A/B testing for product
How to design, read, and govern product experiments without falling into false positives.
What you will learn
- Calcolare sample size e durata a priori con baseline, MDE, alfa e potenza
- Definire metrica primaria singola e guardrail prima del lancio
- Riconoscere peeking, HARKing e metric switching come anti-pattern
A/B testing for product
Questa lezione segue il binario ml-tabellare: prima e dopo ogni decisione c’è una riga in tabella, con ipotesi, metrica primaria, guardrail e regola di lancio tutte dichiarate in anticipo. L’A/B testing è lo strumento più potente di questo modulo e anche il più facile da usare male; la disciplina di progettazione vale più di qualsiasi codice.
L’idea in due frasi
L’A/B testing trasforma ipotesi comportamentali in decisioni di lancio con incertezza quantificata su metrica primaria e guardrail.
Il protocollo in sei passi
- Scrivi decisione, ipotesi comportamentale e regola di lancio prima di raccogliere dati.
- Fissa popolazione, unità di randomizzazione e metrica primaria singola con
guardrail. - Calcola campione e durata a priori con
baseline, effetto minimo,alfaepotenza. - Lancia varianti concorrenti senza guardare i risultati prima della scadenza.
- Leggi primaria,
guardraile segmenti pre-specificati con intervalli di confidenza. - Applica la regola fissata e archivia memo con esito e prossimo passo.
Anatomia di un esperimento solido
Un esperimento solido parte da un’ipotesi esplicita. L’ipotesi dichiara popolazione, cambiamento e effetto atteso in valore assoluto. Dichiara anche i guardrail che non devono peggiorare.
La popolazione è chi entra nel test. L’unità di randomizzazione è il livello a cui si assegna la variante. L’unità di analisi è il livello a cui si misura l’effetto. Le tre devono coincidere. In caso contrario il campione risulta gonfiato e l’inferenza è fragile.
La metrica primaria è singola. Solo quella decide lancio o stop. I guardrail duri vanno fissati prima del lancio. Esempi tipici sono ticket, churn, revenue, latenza ed errori.
Campione e durata si calcolano a priori. La durata copre almeno un ciclo settimanale completo. La regola di decisione è booleana e scritta prima dei dati.
Ron Kohavi in Microsoft racconta un cambio minimo ai titoli di Bing. Il cambio alza la revenue per ricerca del 12 percento contro ogni previsione del team. La lezione è diretta: l’intuizione sbaglia in modo sistematico e solo il controllo disciplina l’incertezza.
Sample size e segmentazione in codice
Il campione separa prove da opinioni. La baseline è il tasso di conversione attuale. L’effetto minimo è il più piccolo miglioramento che giustifica il lancio. Alfa è il rischio di falso positivo. Potenza è la probabilità di rilevare l’effetto se esiste davvero.
from statsmodels.stats.power import NormalIndPower
from statsmodels.stats.proportion import proportion_effectsize
baseline = 0.34 # activation rate attuale
mde = 0.04 # minimo effetto rilevabile: dal 34% al 38%
alpha = 0.05 # rischio falso positivo
power = 0.80 # probabilità di rilevare l'effetto se esiste
effect_size = proportion_effectsize(baseline, baseline + mde)
analysis = NormalIndPower()
n_per_variant = analysis.solve_power(
effect_size=effect_size,
power=power,
alpha=alpha,
ratio=1 # varianti uguali
)
print(round(n_per_variant)) # utenti per variante
Con questi parametri servono circa 1.500 utenti per variante. Con 5.000 utenti a settimana l’esperimento dura circa 3 settimane.
La media nasconde divergenze tra nuovi ed esistenti, mobile e desktop, free e paid. Solo l’analisi segmentata e pre-specificata le rende visibili.
SELECT
variant,
user_segment,
COUNT(*) AS users,
ROUND(AVG(converted::int) * 100, 2) AS conversion_rate,
ROUND(AVG(churned_d7::int) * 100, 2) AS churn_d7
FROM experiment_results
WHERE experiment_id = 'onboarding_simplified_v1'
GROUP BY variant, user_segment
ORDER BY user_segment, variant;
Se i nuovi su mobile mostrano più 12 percento con churn stabile e gli esistenti su desktop mostrano meno 3 percento, la decisione è lancio condizionato. Non è un on-off globale. In sintesi: i segmenti pre-specificati battono le medie aggregate perché evitano vittorie tossiche.
Verdetto: i segmenti pre-specificati battono le medie aggregate: se l’effetto regge solo su un segmento, la decisione è lancio condizionato, non un on-off globale.
Anti-pattern che sembrano ragionevoli
The peeking è guardare i dati ogni giorno e fermarsi alla prima significatività. Questa pratica porta il falso positivo oltre il 30 percento.
Lo HARKing formula l’ipotesi dopo aver visto i dati. Il metric switching sposta la vittoria sulle metriche secondarie. Entrambi trasformano rumore in presunta evidenza.
Le varianti multiple senza correzione quasi garantiscono falsi positivi. L’effetto novità della prima settimana misura curiosità e non comportamento stabile.
Chiudono la lista tre errori operativi. Lanciare un risultato non significativo spreca traffico e fiducia. La contaminazione da network effect rompe l’indipendenza tra varianti. La baseline storica sostituisce il controllo concorrente con un confronto distorto.
Google e la tonalità di blu che valeva 200 milioni
Nel 2009 Google testa 41 sfumature di blu per i link delle pagine di ricerca perché dai dati risulta che la tonalità giusta vale circa 200 milioni di dollari l’anno di ricavi pubblicitari aggiuntivi. L’episodio, raccontato dal New York Times nel 2009, mostra l’A/B testing governato con metrica primaria, campione ampio e regola di decisione prima dei dati. La lezione tabellare è netta: baseline concorrente, effetto misurato e lancio solo sopra soglia senza peeking.
Domande per l’autoverifica
- Quale decisione concreta supporta il tuo prossimo esperimento?
- Quale metrica primaria decide lancio o stop senza ambiguità?
- Quale guardrail blocca una vittoria tossica sul lungo periodo?
- Quale segmento pre-specificato può ribaltare la media?
Bloccato su questo argomento o vuoi applicarlo al tuo caso? Prenota una call di 15 minuti con un analista esperto.
Related Path
Lessons to read together
Questi collegamenti portano la lezione dentro il resto del corso: basi da riprendere, passaggi successivi e connessioni tematiche tra moduli.