22 - Bayes con un dado truccato: aggiornare una probabilità dopo ogni osservazione
03-09-2026
Probabilità e combinatoria nei giochi — Estensioni operative
MATH
03-09-2026
Probabilità e combinatoria nei giochi — Estensioni operative
Abbiamo due dadi visivamente indistinguibili.
Il primo è un dado normale:
P(6 | normale)
=
1/6
Il secondo è truccato in modo semplice:
P(6 | truccato)
=
1/2
Per non complicare inutilmente l'esempio, distribuiamo tutta la probabilità rimanente del dado truccato sui risultati diversi da 6.
Scegliamo uno dei due dadi a caso, senza guardarlo.
Quindi, prima di qualsiasi lancio:
P(truccato)
=
1/2
P(normale)
=
1/2
Lanciamo il dado scelto.
Esce:
6
La domanda è:
Quanto è probabile adesso che abbiamo scelto il dado truccato?
Non è più 50%.
Abbiamo ricevuto una nuova informazione e dobbiamo aggiornare ciò che credevamo prima.
Se il dado è truccato:
P(6 | truccato)
=
1/2
Se è normale:
P(6 | normale)
=
1/6
Il 6 può quindi comparire in entrambi i mondi.
Ma è:
3 volte
più probabile nel mondo "dado truccato":
(1/2) / (1/6)
=
3
L'osservazione del 6 deve quindi spostare la nostra probabilità verso l'ipotesi del dado truccato.
Immaginiamo di ripetere molte volte l'esperimento.
Prendiamo un gruppo ideale di:
12 casi
In metà dei casi scegliamo il dado truccato:
6 casi
Negli altri:
6 casi
scegliamo quello normale.
Tra i 6 casi con dado truccato, metà produrrebbe 6:
3 casi
Tra i 6 casi con dado normale, un sesto produrrebbe 6:
1 caso
Quindi, tra tutti i casi in cui osserviamo effettivamente:
6
avremmo:
3 casi -> dado truccato
1 caso -> dado normale
Totale:
4 casi
La probabilità che il dado sia truccato, dato che abbiamo osservato un 6, è quindi:
3/4
=
75%
Siamo passati da:
50%
a:
75%
con una sola osservazione.
Chiamiamo:
H = il dado è truccato
D = è uscito 6
Vogliamo:
$$ P(H | D) $$
cioè:
probabilità dell'ipotesi dopo aver osservato il dato.
Il teorema di Bayes dice:
P(H | D)
=
P(D | H) · P(H)
-----------------
P(D)
Nel nostro caso:
P(6 | truccato)
=
1/2
e il prior, cioè la probabilità prima del lancio, è:
P(truccato)
=
1/2
Manca il denominatore:
$$ P(6) $$
Il 6 può essere arrivato attraverso due percorsi:
abbiamo scelto il dado truccato
e poi è uscito 6
oppure:
abbiamo scelto il dado normale
e poi è uscito 6
Quindi:
P(6)
=
P(6 | truccato)P(truccato)
+
P(6 | normale)P(normale)
ossia:
$$ P(6) = 1/2\cdot 1/2 + 1/6\cdot 1/2 $$
quindi:
$$ P(6) = 1/4 + 1/12 = 1/3 $$
Ora:
P(truccato | 6)
=
(1/2·1/2)
/
(1/3)
e otteniamo:
3/4
=
75%
lo stesso risultato trovato contando casi concreti.
Quattro termini ricorrono spesso nei problemi bayesiani.
Il prior è ciò che pensavamo prima dei nuovi dati:
P(truccato)
=
50%
La likelihood è quanto il dato osservato è compatibile con l'ipotesi:
P(6 | truccato)
=
50%
L'evidence è la probabilità complessiva di osservare quel dato:
$$ P(6) = 1/3 $$
Il posterior è ciò che crediamo dopo aver incorporato il dato:
P(truccato | 6)
=
75%
Il passaggio importante, però, arriva adesso.
Il posterior può diventare il prior del prossimo aggiornamento.
Questa distinzione merita di essere resa esplicita perché è una delle confusioni più comuni.
Nel nostro esempio:
$$ P(6\mid T)=\frac12 $$
è la likelihood del dato 6 sotto l'ipotesi del dado truccato $T$.
Non è la stessa quantità di:
$$ P(T\mid 6)=\frac34, $$
che è la probabilità a posteriori dell'ipotesi dopo aver osservato il dato.
Possiamo vedere l'aggiornamento anche confrontando direttamente quanto il 6 favorisca un'ipotesi rispetto all'altra. Se $N$ è il dado normale:
\frac{1/2}{1/6} =3. $$
Questo rapporto si chiama rapporto di verosimiglianza (likelihood ratio): il dato 6 è tre volte più compatibile con $T$ che con $N$.
Con prior uguali, le odds iniziali sono:
$$ 1:1. $$
Moltiplicandole per il rapporto di verosimiglianza otteniamo odds posteriori:
$$ 3:1, $$
che corrispondono a:
$$ P(T\mid6)=\frac{3}{3+1}=\frac34. $$
La sequenza concettuale è quindi:
likelihood del dato sotto le ipotesi
→ rapporto di verosimiglianza
→ aggiornamento delle odds
→ probabilità posteriori
Questa distinzione diventerà fondamentale anche quando incontreremo prove statistiche o giudiziarie: quanto è probabile un'evidenza se un'ipotesi è vera non coincide con quanto è probabile l'ipotesi dopo aver visto l'evidenza.
Fonti di contesto: David J. Hand, Il caso non esiste, capitoli conclusivi su verosimiglianza e Bayes; Richard A. Epstein, The Theory of Gambling and Statistical Logic, cap. 2. Le formule del nostro esempio sono derivate direttamente dal modello dei due dadi.
Non scegliamo un nuovo dado.
Lanciamo lo stesso dado una seconda volta.
Esce ancora:
6
Prima del secondo lancio non siamo più nella situazione iniziale.
Il nostro prior aggiornato è:
P(truccato)
=
3/4
P(normale)
=
1/4
Ora applichiamo nuovamente lo stesso procedimento.
La probabilità del secondo 6, tenendo conto del nuovo prior, è:
$$ P(6) = 1/2\cdot 3/4 + 1/6\cdot 1/4 $$
cioè:
3/8
+
1/24
=
10/24
=
5/12
Il nuovo posterior è:
P(truccato | 6,6)
=
(1/2·3/4)
/
(5/12)
quindi:
P(truccato | 6,6)
=
9/10
=
90%
La nostra sequenza di credenze è diventata:
prima dei lanci:
50%
dopo 6:
75%
dopo 6,6:
90%
Ogni dato coerente con l'ipotesi del dado truccato aumenta il posterior.
Per due 6 consecutivi scegliamo un numero di casi che renda interi tutti i conteggi.
Immaginiamo:
72 esperimenti
In:
36
casi abbiamo scelto il dado truccato.
La probabilità di due 6 consecutivi è:
$$ (1/2)^2 = 1/4 $$
quindi otteniamo:
36 · 1/4
=
9
sequenze 6,6.
Negli altri:
36
casi abbiamo il dado normale.
La probabilità di due 6 è:
$$ (1/6)^2 = 1/36 $$
quindi:
36 · 1/36
=
1
sequenza 6,6.
Tra tutti i casi compatibili con i dati osservati abbiamo quindi:
9 truccati
1 normale
perciò:
9/(9+1)
=
90%
Ancora Bayes, ma senza formula.
Possiamo aggiornare ancora.
Partiamo dal posterior:
90%
come nuovo prior.
Dopo un terzo 6 otteniamo:
P(truccato | 6,6,6)
=
27/28
≈
96,43%
Il dato continua a spostare la probabilità nella stessa direzione.
Ma Bayes non serve soltanto a confermare ciò che già pensiamo.
Deve anche farci cambiare idea quando arriva un dato meno compatibile.
Torniamo quindi alla situazione:
6,6
con posterior:
90%
Al terzo lancio non esce 6.
Per il dado truccato:
P(non-6 | truccato)
=
1/2
Per il dado normale:
P(non-6 | normale)
=
5/6
Questa nuova osservazione è quindi più compatibile con il dado normale.
Il nostro posterior dovrebbe scendere.
Partiamo da:
P(truccato)
=
9/10
P(normale)
=
1/10
L'evidence del non-6 è:
P(non-6)
=
1/2·9/10
+
5/6·1/10
cioè:
$$ 9/20 + 1/12 = 8/15 $$
Il posterior diventa:
P(truccato | 6,6,non-6)
=
(1/2·9/10)
/
(8/15)
quindi:
27/32
=
84,375%
Il nuovo dato ha ridotto la nostra fiducia:
90%
→
84,375%
ma non l'ha riportata al 50%.
I due 6 precedenti continuano a essere informazione.
La sequenza completa è:
prior iniziale:
50%
dopo 6:
75%
dopo 6,6:
90%
dopo 6,6,non-6:
84,375%
Questo è il senso operativo dell'aggiornamento bayesiano.
Una nuova osservazione:
non cancella la storia
ma:
ricalibra la probabilità usando tutta l'informazione disponibile
Possiamo anche calcolare la probabilità della sequenza:
6,6,non-6
sotto ciascuna ipotesi.
Se il dado è truccato:
P(6,6,non-6 | truccato)
=
1/2 · 1/2 · 1/2
=
1/8
Se è normale:
P(6,6,non-6 | normale)
=
1/6 · 1/6 · 5/6
=
5/216
Con prior 1/2 per entrambi:
P(truccato | sequenza)
=
(1/2·1/8)
/
(1/2·1/8 + 1/2·5/216)
I fattori 1/2 si cancellano:
$$ = (1/8) / (1/8 + 5/216) $$
e otteniamo ancora:
27/32
=
84,375%
Quindi aggiornare un dato alla volta o usare tutta la sequenza in un unico calcolo produce lo stesso risultato.
Immaginiamo:
432 esperimenti
Metà:
216
usano il dado truccato.
La sequenza 6,6,non-6 ha probabilità:
$$ 1/8 $$
quindi:
216 · 1/8
=
27
casi.
Gli altri:
216
usano il dado normale.
La stessa sequenza ha probabilità:
$$ 5/216 $$
quindi compare in:
5
casi.
Tra tutti i casi in cui osserviamo proprio:
6,6,non-6
abbiamo:
27 truccati
5 normali
perciò:
27/(27+5)
=
27/32
=
84,375%
Il calcolo diventa quasi visivo.
C'è un altro modo operativo di leggere lo stesso problema.
All'inizio le odds tra le due ipotesi sono:
truccato : normale
=
1 : 1
Un 6 è tre volte più probabile sotto l'ipotesi truccata:
(1/2)/(1/6)
=
3
Quindi ogni 6 moltiplica le odds per:
3
Dopo un 6:
3 : 1
che corrisponde a:
3/(3+1)
=
75%
Dopo due 6:
9 : 1
quindi:
9/10
=
90%
Un non-6 ha invece likelihood ratio:
$$ (1/2)/(5/6) = 3/5 $$
Quindi dopo:
6,6,non-6
le odds diventano:
1
· 3
· 3
· 3/5
=
27/5
cioè:
27 : 5
e quindi:
$$ 27/(27+5) = 27/32 $$
Questa forma rende molto evidente che ogni osservazione aggiunge o toglie peso alle ipotesi.
Anche dopo tre 6 consecutivi abbiamo:
P(truccato | 6,6,6)
≈
96,43%
non:
100%
Il dado normale può produrre tre 6.
È raro, ma possibile.
Bayes non trasforma l'incertezza in certezza arbitrariamente.
Quantifica quanto i dati spostano il peso tra ipotesi concorrenti.
Finora abbiamo iniziato con:
$$ 50% / 50% $$
perché sceglievamo casualmente tra due dadi, uno normale e uno truccato.
Supponiamo invece di sapere che in una scatola ci sono:
99 dadi normali
1 dado truccato
Se ne scegliamo uno a caso, il prior del dado truccato sarebbe:
1%
Un singolo 6 sarebbe ancora tre volte più compatibile con il dado truccato.
Ma partire da 1% è molto diverso dal partire da 50%.
Il posterior dopo un solo 6 resterebbe relativamente basso.
Questo è esattamente il motivo per cui Bayes non può usare soltanto la likelihood: serve anche il prior.
Lo standalone C# associato a questo articolo è:
BayesDadoTruccato.cs
Possiamo rappresentare un'ipotesi con:
readonly record struct Ipotesi(
string Nome,
double ProbabilitaSei);
e una funzione che aggiorna il posterior del dado truccato:
static double Aggiorna(
double priorTruccato,
bool esceSei)
{
double priorNormale =
1.0 - priorTruccato;
double likelihoodTruccato =
esceSei
? 1.0 / 2.0
: 1.0 / 2.0;
double likelihoodNormale =
esceSei
? 1.0 / 6.0
: 5.0 / 6.0;
double evidence =
likelihoodTruccato
* priorTruccato
+
likelihoodNormale
* priorNormale;
return
likelihoodTruccato
* priorTruccato
/
evidence;
}
Nel nostro dado truccato la probabilità di 6 e di non-6 è casualmente la stessa:
$$ 1/2 $$
ma il codice mantiene comunque espliciti i due casi.
double pTruccato =
0.5;
bool[] osservazioni =
{
true, // 6
true, // 6
false // non-6
};
foreach (bool esceSei in osservazioni)
{
pTruccato =
Aggiorna(
pTruccato,
esceSei);
Console.WriteLine(
$"{pTruccato:P6}");
}
L'output teorico è:
75,000000%
90,000000%
84,375000%
L'algoritmo non ha una formula diversa per il primo, secondo o terzo lancio.
Applica sempre la stessa regola.
Cambia soltanto il prior, perché il posterior precedente diventa il nuovo punto di partenza.
L'esempio C# allegato generalizza anche il calcolo.
Invece di codificare direttamente "normale" e "truccato", mantiene pesi per le ipotesi e, a ogni osservazione:
peso nuovo
=
peso vecchio
·
likelihood del dato
poi normalizza i pesi affinché sommino nuovamente a:
1
Questa è la stessa struttura che può essere estesa a:
più di due dadi
più modelli
più cause possibili
Bayes non è limitato a una scelta binaria.
In questo problema il calcolo esatto è semplicissimo.
Non abbiamo bisogno di Monte Carlo per conoscere:
75%
90%
84,375%
Possiamo comunque simulare molte volte la scelta nascosta del dado e filtrare gli esperimenti che producono la sequenza desiderata.
La frazione di dadi truccati tra gli esperimenti compatibili con i dati tenderà al posterior teorico.
Ma, coerentemente con quanto stabilito nell’articolo che confronta calcolo esatto e Monte Carlo:
il risultato esatto viene prima
e la simulazione è soltanto una verifica opzionale.
Bayes risponde a una domanda estremamente concreta:
Ho più ipotesi possibili e ricevo un nuovo dato. Come deve cambiare la probabilità che attribuisco a ciascuna ipotesi?
Nel nostro caso:
prior:
P(truccato)=50%
Dopo il primo 6:
posterior:
75%
Quel posterior diventa il nuovo prior.
Dopo il secondo 6:
90%
Dopo un successivo non-6:
84,375%
La nuova evidenza può quindi:
rafforzare
oppure:
indebolire
un'ipotesi.
La struttura fondamentale è:
posterior
∝
likelihood
×
prior
seguita dalla normalizzazione.
Nel prossimo articolo useremo nuovamente il complementare, ma in una situazione molto più sorprendente:
Quante persone servono perché sia più probabile che almeno due condividano il compleanno che non il contrario?
La risposta è soltanto:
23
e la faremo emergere direttamente dal conteggio.