Stima bayesiana di un conversion rate: quanto possiamo fidarci dei pochi dati che abbiamo

Abbiamo avuto modo di esaminare, nell’articolo sulle fondamenta della statistica bayesiana, come l’aggiornamento bayesiano funzioni con la simulazione: generiamo campioni dal prior, simuliamo i dati, filtriamo. Un metodo intuitivo, ma che si scontra con un limite pratico non appena i dati diventano minimamente numerosi.
In questo articolo passiamo alla soluzione analitica elegante che l’approccio bayesiano mette a disposizione per uno dei problemi più comuni nell’analisi di marketing: stimare un conversion rate con pochi dati.

Il problema nasce sempre allo stesso modo. Un piccolo e-commerce ha raccolto 23 conversioni su 412 sessioni. Il tasso grezzo è 23/412 ≈ 5,6%. Un numero preciso, apparentemente. Ma quanta fiducia gli diamo? Potremmo trovarci davanti al 3% vero o al 9% vero — con quel campione, non lo sappiamo. La stima puntuale “5,6%” non dice niente sulla propria incertezza.

Di cosa parleremo:

  • Il modello Beta-Binomiale: perché la Beta è la distribuzione naturale per un conversion rate
  • Prior non informativo: lasciar parlare i dati
  • Prior informativo: usare lo storico senza barare
  • Il posterior di oggi è il prior di domani
  • Prova tu
  • Per approfondire

Dal click singolo al tasso: il modello Beta-Binomiale

Ogni sessione è un evento binario: l’utente converte oppure no.
Con \( n \) sessioni e \( k \) conversioni, il meccanismo generativo è binomiale. Il parametro che vogliamo stimare — il vero tasso di conversione \( \theta \) — è una proporzione: un valore tra 0 e 1.

Quando il prior su \( \theta \) è una distribuzione Beta e i dati sono binomiali, accade qualcosa di molto comodo: il posterior è ancora una distribuzione Beta. Questo si chiama prior coniugato, e significa che l’aggiornamento bayesiano si riduce a una semplice operazione aritmetica sui parametri.

La regola di aggiornamento è questa: se il prior è Beta(α, β), dopo aver osservato \( k \) conversioni su \( n \) sessioni il posterior è:

\( Beta(\alpha + k,\ \beta + (n – k)) \\ \)

In parole: aggiungiamo le conversioni osservate ad α e i fallimenti osservati a β. Il prior Beta(α, β) raccoglie in α le “conversioni già viste” (o una credenza equivalente) e in β i “non-click”. Ogni nuovo dato aggiorna entrambi i contatori.


Prior non informativo: lasciar parlare i dati

Il prior più neutro possibile su una proporzione è la distribuzione uniforme su [0, 1], che corrisponde a Beta(1, 1): tutti i valori del tasso sono considerati ugualmente plausibili prima di vedere i dati.

Il nostro caso: 23 conversioni su 412 sessioni (389 non-conversioni).

Calcoliamo il posterior in R:

# Dati osservati
conv <- 23; sess <- 412; nonconv <- sess - conv

# Prior NON informativo: uniforme Beta(1,1)
a0 <- 1; b0 <- 1
a1 <- a0 + conv; b1 <- b0 + nonconv      # posterior Beta(24, 390)

cat("Non-informativo: media =", round(a1/(a1+b1), 4), "\n")
cat("  CI 95% =", round(qbeta(c(.025,.975), a1, b1), 4), "\n")

Output: media = 0.058, CI 95% = [0.0376, 0.0824].

Il posterior Beta(24, 390) ha media 5,8% e credible interval al 95% compreso tra 3,8% e 8,2%.
Il credible interval bayesiano non è un esercizio statistico astratto: significa direttamente che c’è il 95% di probabilità che il vero tasso di conversione sia tra il 3,8% e l’8,2%. Non una frequenza su ripetizioni infinite — una probabilità diretta sul parametro.

Con 412 sessioni, l’incertezza è ancora apprezzabile: quasi 5 punti percentuali di ampiezza. La stima puntuale 5,6% era fuorviante nella sua precisione.

Un avvertimento: il credible interval bayesiano e l’intervallo di confidenza frequentista hanno numeri simili ma significati profondamente diversi. Il 95% frequentista è una proprietà della procedura (“se ripetessi l’esperimento 100 volte, 95 intervalli conterrebbero il vero parametro”); il 95% bayesiano è un’affermazione diretta sul parametro nel caso specifico che stiamo analizzando.


Prior informativo: usare lo storico senza barare

Il prior non informativo è il punto di partenza onesto quando non sappiamo nulla. Ma spesso sappiamo qualcosa: anni di campagne, storico del settore, benchmark di categoria.
Il nostro e-commerce ha uno storico di quattro stagioni con un conversion rate medio intorno al 4%. Come traduciamo questa conoscenza in un prior?

La distribuzione Beta(8, 192) ha media esattamente 8/(8+192) ≈ 4% e — grazie alla somma α+β = 200 — ha una concentrazione che equivale a “credere” ai nostri dati quanto si crede a 200 sessioni fittizie di storico. Non è un numero arbitrario: è una scelta dichiarata e verificabile.

Calcoliamo il posterior informativo in R:

# Prior INFORMATIVO da storico: media ~4% -> Beta(8, 192)
a0i <- 8; b0i <- 192
a1i <- a0i + conv; b1i <- b0i + nonconv  # posterior Beta(31, 581)

cat("Informativo: media =", round(a1i/(a1i+b1i), 4), "\n")
cat("  CI 95% =", round(qbeta(c(.025,.975), a1i, b1i), 4), "\n")

Output: media = 0.0507, CI 95% = [0.0347, 0.0694].

Il posterior informativo Beta(31, 581) dà media 5,1% e credible interval al 95% tra 3,5% e 6,9%.
Due cose da notare. Prima: la media scende leggermente da 5,8% a 5,1% — il prior “tira” la stima verso il 4% dello storico. Seconda: l’intervallo si stringe (da 4,6 a 3,4 punti percentuali) — lo storico vale come informazione aggiuntiva, quindi l’incertezza cala.

Con pochi dati, il prior informativo aiuta: aggiunge informazione dove i dati non bastano. Con molti dati — migliaia di sessioni — il prior viene sommerso dai dati e la differenza tra prior informativo e non informativo diventa trascurabile. Questa è una caratteristica fondamentale dell’inferenza bayesiana: il prior conta quando i dati sono pochi; i dati vincono sempre, alla lunga.


Il posterior di oggi è il prior di domani

L’eleganza più pratica dell’approccio bayesiano è l’aggiornamento sequenziale. Dopo un mese arrivano nuovi dati: 15 conversioni su 300 sessioni aggiuntive. Non dobbiamo ricominciare da zero — il posterior che abbiamo calcolato diventa il nuovo prior.

Aggiorniamo in R:

# Nuovi dati: 15 conversioni su 300 sessioni aggiuntive
conv2 <- 15; sess2 <- 300
a2 <- a1i + conv2; b2 <- b1i + (sess2 - conv2)   # Beta(46, 866)

cat("Dopo update: media =", round(a2/(a2+b2), 4), "\n")
cat("  CI 95% =", round(qbeta(c(.025,.975), a2, b2), 4), "\n")

Output: media = 0.0504, CI 95% = [0.0372, 0.0655].

Tre stadi a confronto:

StadioDati accumulatiMediaCI 95%
Prior puro (prima dei dati)4,0%[1,8%, 7,1%]
Dopo primo mese23/4125,1%[3,5%, 6,9%]
Dopo secondo mese38/7125,0%[3,7%, 6,6%]

Il credible interval si è ristretto ad ogni stadio: 5,3 punti percentuali nel prior puro, 3,4 dopo il primo mese, 2,8 dopo l’aggiornamento. La media è rimasta stabile: i nuovi dati confermano la stima precedente invece di spostarla, e l’incertezza cala come atteso.
Questo è il vero vantaggio operativo: non occorre aspettare che si accumuli un campione “abbastanza grande” prima di fare qualsiasi stima. Si parte da una stima incerta e la si affina progressivamente, con ogni nuovo dato.


Prova tu

Un sito di lead generation ha un tasso di conversione storico intorno al 2%. Dopo una campagna di ottimizzazione, su 150 sessioni si osservano 8 conversioni.

1. Costruisci un prior informativo che rifletta il 2% storico: prova Beta(4, 196) — ha media esattamente 2%. 2. Calcola il posterior dopo le 8 conversioni su 150 sessioni. 3. Calcola il credible interval al 95%. 4. Calcola poi con prior non informativo Beta(1, 1): il posterior cambia molto? Perché?

Suggerimento: la formula è sempre la stessa — qbeta(c(.025, .975), a0 + conv, b0 + nonconv). L’unica cosa che cambia è il punto di partenza.


Quello che abbiamo costruito finora è la stima di un tasso su una singola variante. Il passo successivo è confrontare due varianti — una pagina di controllo e una pagina modificata — e calcolare la probabilità bayesiana che una superi l’altra. È esattamente quello che faremo nel prossimo articolo: l’A/B test bayesiano.


Per approfondire

Se vuoi capire come il ragionamento bayesiano entra nelle decisioni pratiche — dalla previsione dei mercati alla stima dell’incertezza nei dati reali — Il segnale e il rumore di Nate Silver è il libro che consiglio. Silver dedica capitoli espliciti all’aggiornamento bayesiano, mostrandolo in contesti concreti (previsioni meteorologiche, politica, sport) che rendono immediato il concetto di “aggiornare le credenze con nuovi dati”. È divulgativo ma rigoroso, e si legge d’un fiato.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *