Progetto Universitario

SIR Markov Chain

Simulazione di un modello epidemiologico SIR come catena di Markov a tempo discreto per lo studio della propagazione epidemica su piccola scala.

Python Probabilità Monte Carlo UniBo
🦠

SIR

Modello a 3 stati

🧪

12/12

Test superati

📊

1000

Simulazioni Monte Carlo

📈

5

Scenari di sensitività

Descrizione del Progetto

SIR Markov Chain modella la propagazione di un'epidemia su una popolazione di N=100 individui utilizzando una catena di Markov a tempo discreto con stati S (Susceptible), I (Infected), R (Recovered).

Sviluppato per il corso di Modelli Probabilistici (Università di Bologna, Prof. Salvatore Federico), il progetto applica il formalismo delle catene di Markov — non fare epidemiologia — per simulare la transizione stocastica degli individui tra i tre stati epidemiologici.

Diagramma transizioni SIR

Transizioni tra stati S, I, R nella catena di Markov

Tecnologie Utilizzate

Componente Tecnologia Versione
LinguaggioPython3.10+
Calcolo numericoNumPy1.24+
PlottingMatplotlib3.7+
Testingpytest7.x
CLIargparsestd

Architettura e Funzionalità

🧬 Modello SIR

Il nucleo src/model.py implementa la matrice di transizione e la funzione next_state() per avanzare la catena di Markov di un passo temporale.

📊 Simulazione Monte Carlo

src/simulation.py esegue M=1000 simulazioni indipendenti con CLI interattiva (argparse) per personalizzare parametri β, γ e seed.

📈 Analisi di sensitività

src/sensitivity.py valuta l'impatto dei parametri β e γ sull'evoluzione epidemica con ODE deterministica come confronto.

✅ Test Suite

12/12 test (pytest) che coprono: catena SIR, matrice P, distribuzione stazionaria, edge case (nessun infetto, tutti immuni).

Risultati

R₀ effettivo: β/γ = 2.0
Picco infetti: ~62%
Tempo estinzione: ~60 passi
Suscettibili finali: ~18%

L'analisi di sensitività mostra che valori di β > 0.3 portano a epidemia con picco superiore al 60% della popolazione. Il modello ODE deterministica conferma i risultati medi Monte Carlo.

Prova il Progetto

Il codice sorgente è disponibile su GitHub. Clona il repository ed esegui le simulazioni localmente.

📂 View on GitHub