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.
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.
Transizioni tra stati S, I, R nella catena di Markov
Tecnologie Utilizzate
| Componente | Tecnologia | Versione |
|---|---|---|
| Linguaggio | Python | 3.10+ |
| Calcolo numerico | NumPy | 1.24+ |
| Plotting | Matplotlib | 3.7+ |
| Testing | pytest | 7.x |
| CLI | argparse | std |
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
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.