Catene di Markov: Quando la Matematica Aiuta il Business
Molti pensano che prevedere il futuro sia impossibile. In realtà, se hai dei dati storici, puoi andarci molto vicino. Immagina di poter dire con precisione matematica quante probabilità ci sono che un cliente fedele ti abbandoni il mese prossimo, o sapere esattamente ogni quanti giorni il tuo magazzino resterà vuoto se non cambi strategia.
Non serve un supercomputer. Serve capire le Catene di Markov.
In questo articolo vedremo due applicazioni concrete per capire come questi modelli governano (spesso a nostra insaputa) le dinamiche di un’azienda. Prendete carta e penna: facciamo i conti.
Esercizio 1 (Livello base) – Fidelizzazione dei clienti di un e-commerce
Testo:
Un piccolo e-commerce analizza il comportamento mensile dei suoi clienti. I dati storici mostrano che:
- Un cliente che ha fatto un acquisto in un dato mese, il mese successivo farà un nuovo acquisto con probabilità del 70% (resta “cliente attivo”).
- Un cliente che non ha fatto un acquisto in un dato mese, il mese successivo ricomprerà con probabilità del 40%.
La società ha 1000 clienti totali. Questo mese, 600 di loro hanno effettuato un acquisto.
- Rappresenta la situazione con una catena di Markov a 2 stati: A (cliente attivo) e I (cliente inattivo in quel mese).
- Scrivi la matrice di transizione [math]P[/math].
- Se le probabilità restano costanti, quanti clienti attivi ci si aspetta il prossimo mese?
Risoluzione:
1. Identificazione degli stati:
- Stato A: Cliente attivo (fa un acquisto nel mese corrente).
- Stato I: Cliente inattivo (non fa acquisti nel mese corrente).
2. Matrice di transizione:
Le probabilità date sono:
- Da A ad A: 0.7
- Da A ad I: [math]1 – 0.7 = 0.3[/math]
- Da I ad A: 0.4
- Da I ad I: [math]1 – 0.4 = 0.6[/math]
La matrice di transizione [math]P[/math] (ordinata per stati A, I) è:
[math]\displaystyle P = \begin{pmatrix} 0.7 & 0.3 \\ 0.4 & 0.6 \end{pmatrix}[/math]

3. Distribuzione iniziale:
Questo mese: 600 clienti attivi su 1000 → proporzione: 0.6 in A, 0.4 in I. Quindi il vettore di stato iniziale è:
[math]\displaystyle v_0 = (0.6, \quad 0.4)[/math]
4. Calcolo della distribuzione al mese successivo:
Usiamo la formula [math]v_1 = v_0 \cdot P[/math]:
[math]\displaystyle \begin{aligned}
v_1 &= \begin{pmatrix} 0.6 & 0.4 \end{pmatrix} \cdot \begin{pmatrix} 0.7 & 0.3 \\ 0.4 & 0.6 \end{pmatrix} \\
\\
&\text{Prima componente (prob. di essere in A):} \\
&0.6 \times 0.7 + 0.4 \times 0.4 = 0.42 + 0.16 = 0.58 \\
\\
&\text{Seconda componente (prob. di essere in I):} \\
&0.6 \times 0.3 + 0.4 \times 0.6 = 0.18 + 0.24 = 0.42 \\
\\
v_1 &= (0.58, \quad 0.42)
\end{aligned}[/math]
5. Numero atteso di clienti attivi:
Su 1000 clienti: [math]0.58 \times 1000 = 580[/math].
💡 Osservazione:
La matrice di transizione è sempre stocastica per righe: la somma degli elementi di ogni riga è 1. Questo perché da uno stato si deve andare da qualche parte (compreso rimanere nello stesso stato).
Domanda di riflessione finale:
Se la probabilità di passare da inattivo ad attivo fosse 0% (anziché 40%), cosa succederebbe a lungo termine alla base clienti attivi? Perché?
Risposta: tenderebbe a zero, perché una volta diventati inattivi non si tornerebbe più attivi (lo stato I diventerebbe uno stato assorbente), e ogni mese una frazione degli attivi diventa inattiva.
Esercizio 2 (Livello base-intermedio) – Livello di magazzino giornaliero
Testo:
Un magazzino gestisce un prodotto con scorta massima di 2 unità (stati: 0, 1, 2 pezzi a fine giornata). Ogni mattina:
- Se ci sono 0 pezzi, ne vengono ordinati e arrivano 2 pezzi entro sera (quindi a fine giornata si avranno 2 pezzi con certezza).
- Se ci sono 1 o 2 pezzi, durante la giornata può essere venduto 1 pezzo (prob. 0.6) oppure nessuno (prob. 0.4). Non possono essere venduti più di 1 pezzo al giorno.
Dinamica del magazzino:
- Se a inizio giornata ho 1 pezzo: se ne vendo 1, a fine giornata sono a 0; se non vendo, a fine giornata sono a 1.
- Se a inizio giornata ho 2 pezzi: se ne vendo 1, a fine giornata sono a 1; se non vendo, restano 2.
- Costruisci la catena di Markov con stati = numero di pezzi a fine giornata.
- Scrivi la matrice di transizione [math]3 \times 3[/math].
- Se oggi ho 2 pezzi a fine giornata, qual è la probabilità di avere 0 pezzi dopodomani (tra due giorni)?
Risoluzione:
1. Stati: [math]S = \{0, 1, 2\}[/math] (pezzi a fine giornata).
2. Transizioni:
- Da 0: domani mattina parto con 2 (per l’ordine), vendo 1 (prob 0.6) → fine giornata 1; non vendo (prob 0.4) → fine giornata 2.
[math]p_{0 \to 1} = 0.6[/math], [math]p_{0 \to 2} = 0.4[/math]. - Da 1: domani mattina parto con 1, se vendo → fine giornata 0, se non vendo → fine giornata 1.
[math]p_{1 \to 0} = 0.6[/math], [math]p_{1 \to 1} = 0.4[/math]. - Da 2: domani mattina parto con 2, se vendo 1 → fine giornata 1, se non vendo → fine giornata 2.
[math]p_{2 \to 1} = 0.6[/math], [math]p_{2 \to 2} = 0.4[/math].
3. Matrice di transizione [math]P[/math] (ordine stati 0, 1, 2):
[math]\displaystyle P = \begin{pmatrix} 0 & 0.6 & 0.4 \\ 0.6 & 0.4 & 0 \\ 0 & 0.6 & 0.4 \end{pmatrix}[/math]

4. Probabilità in due passi:
La probabilità [math]P^2[/math] dà le probabilità a due giorni. Calcoliamo la probabilità di passare dallo stato 2 allo stato 0 in due passi:
[math]\displaystyle \begin{aligned}
p_{20}^{(2)} &= \sum_{k=0}^{2} p_{2k} \cdot p_{k0} \\
&= (p_{20} \cdot p_{00}) + (p_{21} \cdot p_{10}) + (p_{22} \cdot p_{20}) \\
&= (0 \cdot 0) + (0.6 \cdot 0.6) + (0.4 \cdot 0) \\
&= 0 + 0.36 + 0 = 0.36
\end{aligned}[/math]
La probabilità di avere 0 pezzi dopodomani è del 36%.
💡 Osservazione:
La catena è irriducibile perché tutti gli stati comunicano tra loro (lo stato 0 comunica con 1 e 2, e da 1 si può tornare in 0). In futuro, potremmo calcolare la distribuzione stazionaria per capire il livello medio di magazzino nel lungo periodo.
Domanda di riflessione:
Perché la matrice ha degli zeri? Cosa rappresentano?
Risposta: Rappresentano transizioni impossibili in un solo giorno. Ad esempio, [math]p_{20} = 0[/math] perché è impossibile passare da 2 pezzi a 0 pezzi in un giorno solo, dato che si può vendere al massimo 1 pezzo al giorno.
Calcolo della Distribuzione Stazionaria ([math]\pi[/math])
In una catena di Markov irriducibile e aperiodica, la distribuzione stazionaria rappresenta la probabilità di trovarsi in uno stato nel lungo periodo, indipendentemente dallo stato iniziale. In termini pratici, ci dice quale percentuale di giorni il magazzino finirà con 0, 1 o 2 pezzi.
Il Sistema di Equazioni
Dobbiamo trovare un vettore [math]\pi = (\pi_0, \pi_1, \pi_2)[/math] tale che:
[math]\displaystyle \begin{cases} \pi \cdot P = \pi \\ \sum \pi_i = 1 \end{cases}[/math]
Riprendendo la matrice [math]P[/math] dell’esercizio precedente:
[math]\displaystyle P = \begin{pmatrix} 0 & 0.6 & 0.4 \\ 0.6 & 0.4 & 0 \\ 0 & 0.6 & 0.4 \end{pmatrix}[/math]
Passaggi per la risoluzione:
Scriviamo il sistema basato sulla moltiplicazione riga per colonna ([math]\pi P = \pi[/math]):
[math]\displaystyle \begin{aligned}
1) \quad & 0.6\pi_1 = \pi_0 \\
2) \quad & 0.6\pi_0 + 0.4\pi_1 + 0.6\pi_2 = \pi_1 \\
3) \quad & 0.4\pi_0 + 0.4\pi_2 = \pi_2 \\
4) \quad & \pi_0 + \pi_1 + \pi_2 = 1 \text{ (Condizione di normalizzazione)}
\end{aligned}[/math]
Risolviamo per sostituzione:
- Dalla (1) ricaviamo immediatamente: [math]\pi_0 = 0.6\pi_1[/math].
- Dalla (3) isoliamo [math]\pi_2[/math]:
[math]\displaystyle \begin{aligned}
&0.4\pi_0 = \pi_2 – 0.4\pi_2 \\
&0.4\pi_0 = 0.6\pi_2 \\
&\pi_2 = \frac{0.4}{0.6}\pi_0 = \frac{2}{3}\pi_0
\end{aligned}[/math]
Sostituendo [math]\pi_0 = 0.6\pi_1[/math], otteniamo:
[math]\pi_2 = \frac{2}{3}(0.6\pi_1) = 0.4\pi_1[/math].
Applichiamo la condizione di normalizzazione (4):
[math]\displaystyle \begin{aligned}
&0.6\pi_1 + \pi_1 + 0.4\pi_1 = 1 \\
&2\pi_1 = 1 \\
&\pi_1 = 0.5
\end{aligned}[/math]
Troviamo gli altri valori:
- [math]\pi_0 = 0.6 \times 0.5 = 0.3[/math]
- [math]\pi_2 = 0.4 \times 0.5 = 0.2[/math]
Risultato Finale e Interpretazione
Il vettore stazionario è:
[math]\displaystyle \pi = (0.3, \quad 0.5, \quad 0.2)[/math]
Cosa significa questo per il magazzino?
Nel lungo periodo, se osserviamo il magazzino a fine giornata in un giorno qualsiasi:
- Il 30% dei giorni sarà vuoto (0 pezzi).
- Il 50% dei giorni avrà 1 pezzo residuo.
- Il 20% dei giorni avrà 2 pezzi residui.
Domanda di riflessione:
Perché la condizione [math]\pi_0 + \pi_1 + \pi_2 = 1[/math] è indispensabile per risolvere il sistema?
Risposta: Perché le equazioni derivate da [math]\pi P = \pi[/math] sono linearmente dipendenti (il sistema ha infinite soluzioni). La condizione di normalizzazione ci permette di selezionare l’unica distribuzione di probabilità valida tra le infinite rette possibili.
Tempo Medio di Ritorno allo Stato 0
In una catena di Markov irriducibile e stazionaria, il tempo medio di ritorno ad uno stato [math]i[/math] (indicato come [math]E[T_i][/math] o [math]\mu_i[/math]) rappresenta il numero medio di passaggi (giorni, in questo caso) necessari affinché il sistema torni in quello stato, essendone appena uscito.
La Relazione Fondamentale
Esiste una relazione matematica molto semplice e potente che lega la distribuzione stazionaria [math]\pi[/math] al tempo medio di ritorno:
[math]\displaystyle E[T_i] = \frac{1}{\pi_i}[/math]
Questa formula ci dice che il tempo medio di ritorno è l’inverso della probabilità stazionaria di trovarsi in quello stato nel lungo periodo.
Calcolo per lo Stato “Magazzino Vuoto” (Stato 0)
Dal calcolo precedente della distribuzione stazionaria, abbiamo ottenuto i seguenti valori:
- [math]\pi_0 = 0.3[/math] (30% di probabilità di avere 0 pezzi)
- [math]\pi_1 = 0.5[/math] (50% di probabilità di avere 1 pezzo)
- [math]\pi_2 = 0.2[/math] (20% di probabilità di avere 2 pezzi)
Per calcolare dopo quanti giorni il magazzino tornerà ad essere vuoto, applichiamo la formula allo stato 0:
[math]\displaystyle \begin{aligned}
E[T_0] &= \frac{1}{\pi_0} \\
&= \frac{1}{0.3} \\
&= 3.33 \dots \text{ giorni}
\end{aligned}[/math]
💡 Interpretazione Pratica:
In media, il magazzino torna ad essere completamente vuoto a fine giornata ogni 3 giorni e un terzo. Questo dato è vitale per la logistica, poiché permette di prevedere la frequenza media dei cicli di riordino completo.
Confronto con gli altri stati
Possiamo calcolare i tempi medi di ritorno anche per gli altri livelli di scorta:
- Stato 1: [math]E[T_1] = \frac{1}{0.5} = 2[/math] giorni. (Lo stato più frequente, ci si torna in media ogni 2 giorni).
- Stato 2: [math]E[T_2] = \frac{1}{0.2} = 5[/math] giorni. (Lo stato meno frequente, ci si torna in media ogni 5 giorni).
Domanda di riflessione:
Se la probabilità stazionaria di uno stato fosse molto vicina a zero (es. [math]\pi_i = 0.001[/math]), cosa potremmo dire del suo tempo medio di ritorno?
Risposta: Il tempo medio di ritorno sarebbe altissimo ([math]1000[/math] giorni). Questo significa che lo stato è un evento raro: anche se il sistema può tecnicamente tornarci, lo farà molto raramente nel tempo.
Simulazione: Espansione del Magazzino a Capacità 3
Cosa succede se aumentiamo la scorta massima a 3 unità? In questo scenario, gli stati diventano [math]S = \{0, 1, 2, 3\}[/math].
Nuove Regole del Modello
- Stato 0: Si ordinano 3 pezzi. La mattina dopo si parte con 3. Se ne vendiamo 1 (0.6), a fine giornata restano 2. Se ne vendiamo 0 (0.4), restano 3.
- Stati 1, 2, 3: Si vende 1 pezzo (0.6) o nessuno (0.4). Non si effettuano ordini finché non si arriva a 0.
La Nuova Matrice di Transizione [math]P[/math]
[math]\displaystyle P = \begin{pmatrix}
0 & 0 & 0.6 & 0.4 \\
0.6 & 0.4 & 0 & 0 \\
0 & 0.6 & 0.4 & 0 \\
0 & 0 & 0.6 & 0.4
\end{pmatrix}[/math]
Calcolo della Nuova Distribuzione Stazionaria [math]\pi[/math]
Risolvendo il sistema [math]\pi P = \pi[/math] con la condizione [math]\sum \pi_i = 1[/math]:
[math]\displaystyle \begin{aligned}
1) \quad & 0.6\pi_1 = \pi_0 \\
2) \quad & 0.6\pi_2 = \pi_1 – 0.4\pi_1 \implies 0.6\pi_2 = 0.6\pi_1 \implies \pi_2 = \pi_1 \\
3) \quad & 0.6\pi_0 + 0.6\pi_3 = \pi_2 – 0.4\pi_2 \implies 0.6\pi_0 + 0.6\pi_3 = 0.6\pi_2 \\
4) \quad & 0.4\pi_0 + 0.4\pi_3 = \pi_3 – 0.4\pi_3 \implies 0.4\pi_0 = 0.2\pi_3 \implies \pi_3 = 2\pi_0
\end{aligned}[/math]
Sostituendo tutto in funzione di [math]\pi_0[/math]:
- [math]\pi_1 = \pi_0 / 0.6 = \frac{5}{3}\pi_0[/math]
- [math]\pi_2 = \pi_1 = \frac{5}{3}\pi_0[/math]
- [math]\pi_3 = 2\pi_0[/math]
Dalla condizione di normalizzazione [math]\pi_0 + \frac{5}{3}\pi_0 + \frac{5}{3}\pi_0 + 2\pi_0 = 1[/math]:
[math]\displaystyle \frac{3+5+5+6}{3}\pi_0 = 1 \implies \frac{19}{3}\pi_0 = 1 \implies \pi_0 = \frac{3}{19} \approx 0.158[/math]
Confronto dei Tempi Medi di Ritorno ([math]E[T_0][/math])
| Capacità Massima | Probabilità [math]\pi_0[/math] | Tempo di Ritorno [math]1/\pi_0[/math] |
|---|---|---|
| 2 Unità | 0.300 (30%) | 3.33 giorni |
| 3 Unità | 0.158 (15.8%) | 6.33 giorni |
💡 Analisi del Risultato:
Aumentando la capacità di una sola unità, il tempo medio in cui il magazzino rimane vuoto è quasi raddoppiato (da 3.33 a 6.33 giorni). Questo dimostra come la resilienza del magazzino alle vendite non cresca in modo lineare, ma segua la dinamica stocastica della catena.
Domanda di riflessione:
Aumentare la capacità riduce il rischio di “stock-out” (magazzino vuoto), ma quali potrebbero essere i costi nascosti di questa scelta?
Risposta: I costi di mantenimento (holding costs) aumentano, così come il rischio di obsolescenza del prodotto, poiché i pezzi rimangono in media più a lungo sugli scaffali prima di essere venduti.
Tempo Medio di Primo Passaggio (MFPT)
Il tempo medio di primo passaggio [math]m_{i \to j}[/math] è il numero atteso di passi necessari per raggiungere lo stato [math]j[/math] partendo dallo stato [math]i[/math]. Nel nostro caso, vogliamo calcolare quanto tempo serve per svuotare il magazzino partendo da scorte piene (stato 2), ovvero [math]m_{2 \to 0}[/math].
Impostazione del Sistema
Definiamo [math]E_i[/math] come il tempo atteso per raggiungere lo stato 0 partendo dallo stato [math]i[/math]. Per definizione, [math]E_0 = 0[/math] (siamo già a destinazione).
Utilizziamo la matrice [math]P[/math] della configurazione a 2 unità:
[math]\displaystyle P = \begin{pmatrix} 0 & 0.6 & 0.4 \\ 0.6 & 0.4 & 0 \\ 0 & 0.6 & 0.4 \end{pmatrix}[/math]
Le Equazioni del Tempo Atteso
Per ogni stato [math]i \neq 0[/math], la formula è: [math]E_i = 1 + \sum_{k} p_{ik} E_k[/math].
[math]\displaystyle \begin{cases}
E_1 = 1 + p_{10}E_0 + p_{11}E_1 + p_{12}E_2 \\
E_2 = 1 + p_{20}E_0 + p_{21}E_1 + p_{22}E_2
\end{cases}[/math]
Sostituendo i valori della matrice e ricordando che [math]E_0 = 0[/math]:
[math]\displaystyle \begin{aligned}
1) \quad & E_1 = 1 + 0.4E_1 + 0E_2 \\
2) \quad & E_2 = 1 + 0.6E_1 + 0.4E_2
\end{aligned}[/math]
Risoluzione:
Dalla prima equazione:
[math]\displaystyle \begin{aligned}
E_1 – 0.4E_1 &= 1 \\
0.6E_1 &= 1 \\
E_1 &= \frac{1}{0.6} = 1.67 \text{ giorni}
\end{aligned}[/math]
Sostituendo [math]E_1[/math] nella seconda equazione:
[math]\displaystyle \begin{aligned}
E_2 – 0.4E_2 &= 1 + 0.6(1.67) \\
0.6E_2 &= 1 + 1 \\
0.6E_2 &= 2 \\
E_2 &= \frac{2}{0.6} = 3.33 \text{ giorni}
\end{aligned}[/math]
Interpretazione dei Risultati:
- Partendo da 1 pezzo: Ci vorranno in media 1.67 giorni per svuotare il magazzino.
- Partendo da 2 pezzi (scorte piene): Ci vorranno in media 3.33 giorni per arrivare a zero.
Domanda di riflessione:
Perché il tempo [math]E_2[/math] (3.33) è esattamente il doppio di [math]E_1[/math] (1.67) in questo modello specifico?
Risposta: Perché la dinamica di vendita è costante (0.6 pezzi/giorno). Per passare da 2 a 1 pezzo serve lo stesso “sforzo” stocastico necessario per passare da 1 a 0. In un modello con probabilità di vendita diverse tra i vari stati, questa linearità sparirebbe.
Perché questi esercizi sono fondamentali nel mondo reale?
Quelli che abbiamo analizzato potrebbero sembrare semplici problemi da libro di testo, ma in realtà toccano il cuore pulsante di due settori globali: il Marketing Analytics e la Supply Chain Management.
1. Marketing & Customer Lifetime Value (CLV)
L’esercizio sulla fidelizzazione è la base del calcolo del CLV. Le aziende moderne non usano matrici [math]2 \times 2[/math], ma sistemi enormi che includono stati come:
- Cliente VIP (alta frequenza, alto valore)
- Cliente a rischio (segni di inattività)
- Cliente dormiente (da riattivare)
Capire la matrice di transizione permette di rispondere a domande miliardarie: “Se investo 1.000€ in una campagna per abbassare la probabilità di abbandono dal 60% al 50%, quanto guadagnerò l’anno prossimo?”
2. Logistica e Supply Chain
L’esercizio sul magazzino dimostra una verità controintuitiva della logistica: le performance non sono lineari.
Abbiamo visto che passare da una capacità di 2 a 3 unità non migliora le cose semplicemente del 33%, ma raddoppia la stabilità del sistema (l’autonomia passa da 3.33 a 6.33 giorni). Senza un modello di Markov, un manager potrebbe sottostimare enormemente i benefici di un piccolo ampliamento strutturale.
“Prevedere non è tirare a indovinare. È guardare i numeri finché non confessano cosa succederà dopo.”
Cosa abbiamo imparato:
- La distribuzione stazionaria ci dice chi saremo nel lungo periodo.
- Il tempo di primo passaggio ci dice quanto tempo abbiamo prima di un’emergenza (es. magazzino vuoto).
- I modelli stocastici catturano l’incertezza del mercato trasformandola in rischio calcolabile.
👉 Cosa sono le catene di Markov e come usarle (esempi reali e calcoli)
👉 Modello meteorologico con catene di Markov e Random Forest
👉 Stati ricorrenti e transitori: 6 esercizi pratici sulle catene di Markov
👉 Catene di Markov in Python: modellare funnel, retention e churn
👉 Ottimizzazione call center con CTMC: guida al modello nascita-morte
👉 A cosa servono le matrici: 9 esempi reali (Instagram, AI, videogiochi)





