SUPERCAT.DEV

Benvenut* sul mio blog

MATH

22 - Bayes con un dado truccato: aggiornare una probabilità dopo ogni osservazione

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.

Il 6 è più compatibile con un dado che con l'altro

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.

Prima della formula: contiamo casi ipotetici

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.

Ora compare Bayes

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) $$

Da dove viene 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.

Prior, likelihood, evidence e posterior

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.

Likelihood non significa posterior

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{P(6\mid T)}{P(6\mid N)}

\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.

Lanciamo di nuovo lo stesso dado

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.

Secondo aggiornamento

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.

Verifichiamo con frequenze naturali

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.

E se arriva un terzo 6?

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.

Dopo due 6 esce un non-6

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.

Aggiorniamo con il dato contrario

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.

Bayes non dimentica i dati precedenti

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

Verifica diretta dell'intera sequenza

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.

Frequenze naturali per 6,6,non-6

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.

Una scorciatoia potente: le odds bayesiane

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.

Non stiamo dimostrando che il dado è truccato

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.

Il prior conta

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.

Il C# come aggiornamento iterativo

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.

Aggiorniamo una sequenza

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.

Possiamo aggiornare due ipotesi qualsiasi

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.

Simulazione o calcolo esatto?

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.

Il punto pratico

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.