La diffusione del contagio nelle epidemie: un modello matematico

SPECIALE CORONAVIRUS

A quale ritmo si diffonde nella popolazione il contagio durante un’epidemia? E quale frazione della popolazione viene contagiata?

Un semplice modello matematico permette di esplorare queste domande attraverso la simulazione al computer di alcuni aspetti-chiave del fenomeno.

È bene sottolineare che i dati numerici che citeremo sono puramente esemplificativi. Per avere previsioni applicabili alle epidemie reali occorre – come minimo – conoscere l’effettivo valore del tasso di contagio e la sua evoluzione nel tempo.

 

Il contagio in una popolazione che si mescola liberamente

All’inizio di un’epidemia, quando le persone infette sono poche, ognuna contagia un certo numero di persone con cui viene a contatto; ciascuna persona contagiata a sua volta ne contagia poi altre, e così via.

Questo processo «a catena» determina un aumento esponenziale del numero delle persone contagiate.

Se NC è il totale dei contagiati dall’inizio dell’epidemia, la sua evoluzione nel tempo t è descritta dall’equazione differenziale:

[1]                                                                                          dNC/dt = C·NC

dove il coefficiente C rappresenta il tasso di contagio, ossia la rapidità con cui l’infezione si diffonde.

Se per esempio come unità di tempo si sceglie Δt = 1 giorno, C = (ΔNCt)/NC misura l’aumento percentuale quotidiano del numero di contagiati.

In generale si avrà C = E·p, dove E è il numero di persone con cui ogni persona infetta viene a contatto in media ogni giorno e p è la probabilità che il singolo contatto produca un contagio.

Il modello esponenziale si applica soltanto alle prime fasi dell’epidemia. Quando una frazione significativa della popolazione è stata contagiata, infatti, il ritmo di diffusione del contagio necessariamente si riduce. Il motivo è che, tra le persone con cui ogni contagiato viene a contatto, alcune sono già infette e non possono quindi costituire nuovi contagi.

Questo effetto si può simulare modificando l’equazione differenziale del modello come segue:

[2]                                                                            dNC/dt = C·NC·(1 – NC/P)

dove nel nuovo fattore (1 – NC/P), che abbiamo aggiunto a secondo membro, P rappresenta la popolazione totale.

Il fattore tra parentesi (1 – NC/P) è praticamente uguale a 1 all’inizio dell’epidemia, quando NC/P ≪ 1; il suo valore però poi si riduce sempre più, man mano che la frazione infetta della popolazione (cioè NC/P) aumenta avvicinandosi a 1.

Nella situazione-limite in cui l’intera popolazione diventa infetta, si ha NC/P = 1 e il fattore tra parentesi si annulla: a questo punto non sono più possibili ulteriori contagi e il modello correttamente prevede che si abbia dNC/dt = 0.

La curva continua della figura A mostra la previsione del modello [2] per una popolazione di 100 000 persone in cui inizialmente ci sono 50 persone infette, con un tasso di contagio che vale C = 0.2/giorno; va sottolineato che qui C è costante nel tempo.

Il grafico mostra la frazione infetta della popolazione NC/P in funzione del tempo. L’andamento ha la caratteristica forma a S chiamata curva logistica.

 

 

Nell’esempio considerato, dopo circa 30 giorni la curva logistica inizia a discostarsi in modo significativo dalla crescita esponenziale [1] (curva tratteggiata nella figura A).

Quando poi – dopo circa 40 giorni – metà della popolazione è contagiata (NC/P = 0.5), la pendenza della curva logistica inizia a diminuire: la sua derivata è sempre positiva, ma il tasso di aumento del numero dei contagiati progressivamente si riduce.

In altre parole, si ha un punto di flesso in cui la derivata seconda di NC rispetto al tempo cambia segno, passando da positiva a negativa: la curva, che prima era concava (con NC che cresceva sempre più), dopo il flesso diventa convessa (con NC che cresce sempre meno).

Così in questo esempio, circa 40 giorni dopo l’inizio dell’epidemia, il ritmo di diffusione del contagio inizia a ridursi e in seguito rallenta sempre più.

La figura B mostra le derivate delle funzioni della figura A: qui perciò si vede come cambia nel tempo il valore dell’incremento ΔNC tra un giorno e il successivo.

A conferma di quanto detto sopra, nel caso logistico dopo circa 40 giorni si raggiunge il picco dei contagi; fino a quel momento, ogni giorno si infettavano sempre più persone; dal picco in avanti, invece, il numero delle persone contagiate ogni giorno progressivamente diminuisce.

 

 

Come abbiamo visto nella figura A, alla fine della simulazione con il modello logistico si raggiunge – in modo asintotico – il contagio dell’intera popolazione, cioè NC/P = 1.

Ricordiamo che il modello fa questa previsione nell’ipotesi che il tasso di contagio C rimanga costante nel tempo.

Vediamo ora invece che cosa può accadere se si interviene per mitigare la diffusione dell’epidemia, riducendo al passare del tempo il valore del tasso di contagio C.

 

L’effetto di una limitazione dei contatti tra le persone

Finora abbiamo considerato una popolazione che durante l’epidemia si mescola liberamente, nel senso che le persone continuano a incontrarsi in modo casuale (e quindi potenzialmente a contagiarsi a vicenda) come avveniva prima dell’infezione.

Se invece all’inizio dell’epidemia si prendono misure per limitare i contatti tra le persone, l’effetto sarà quello di ridurre il tasso di contagio C.

La figura C riassume le previsioni di diverse versioni del modello matematico per questo tipo di situazione. Ora i grafici mostrano di nuovo il totale dei contagiati dall’inizio dell’epidemia.

 

 

In questa figura la curva logistica discussa sopra (il grafico blu con C = costante) è messa a confronto con due modelli in cui C si riduce nel tempo:

  • la curva rossa mostra ciò che accade se si suppone che durante l’epidemia C si riduca linearmente nel tempo (C = 0.2·(1-t/T), dove t è l’istante di tempo considerato eT è la durata dell’epidemia). Questo è ciò che potrebbe succedere se le persone, impaurite del contagio, smettono gradualmente di frequentare altre persone. In tale scenario la diffusione del contagio viene rallentata e nel nostro esempio si stabilizza quando è stato infettato il 70% della popolazione. Questo valore potrebbe poi non crescere più se, grazie all’isolamento, le persone infette guariscono e sviluppano una resistenza verso il patogeno prima di contagiare altri; in tal caso può instaurarsi una «immunità di gregge» (herd immunity) che protegge il resto della popolazione dal contagio. L’immunità di gregge più efficace è quella raggiunta attraverso la somministrazione su larga scala di un vaccino;
  • la curva gialla mostra invece ciò che accade se, circa 30 giorni dopo l’inizio dell’epidemia, il valore di C si riduce nell’arco di pochi giorni di un fattore 10; è ciò che potrebbe succedere se si limita in modo radicale la libertà di movimento della popolazione (per esempio chiedendo alle persone di restare in casa, salvo che in casi di emergenza). In questo scenario la diffusione del contagio rallenta ancora di più: in pratica la curva blu viene «stirata» su tempi 10 volte più lunghi, così da alleggerire la pressione immediata sul sistema sanitario e da guadagnare tempo per lo sviluppo di cure o vaccini.

Nel caso della curva rossa il picco dei contagi si sposta in avanti nel tempo rispetto al caso della curva logistica e la sua altezza si riduce.

Nel caso della curva gialla il picco dei contagi viene raggiunto poco dopo l’entrata in vigore delle misure restrittive, poi il numero dei contagi giornalieri si riduce e infine riprende a salire, ma molto lentamente.

 

Come fare la simulazione numerica con Octave/MATLAB

Il modello logistico [2] è un’equazione differenziale del primo ordine, che diventa un problema di Cauchy nel momento in cui si sceglie il valore iniziale della soluzione (nel nostro caso, il numero delle persone inizialmente infette).

L’equazione si può risolvere numericamente usando il metodo di Eulero in avanti, per esempio scrivendo in Octave o MATLAB le istruzioni:

                          h = (T-t0) /N; t = t0:h:T; Nc(1) = Nc0;

                          for n=1:N

                                       funz(n)= C.*Nc(n).*(1-Nc(n)/P);

                                       Nc(n+1) = Nc(n) + h*funz(n);

                          endfor

Qui h è il time step, per noi un giorno; il numero N dei time step è quindi pari alla durata in giorni dell’epidemia.

Nc(n) è il numero delle persone contagiate al giorno n e, in particolare, Nc0 è il numero delle persone contagiate quando scoppia l’epidemia.

Negli esempi visti sopra abbiamo usato il valore iniziale Nc0=50 e una popolazione di P=10^5 persone.

La prima istruzione del ciclo for definisce il secondo membro dell’equazione logistica allo step n del calcolo; la seconda istruzione definisce il valore della soluzione allo step n+1.

Chi lo desidera può scaricare il file .m con il codice usato nelle simulazioni mostrate qui.

Per capire a fondo i modelli e le loro implicazioni, è consigliabile fare esperimenti numerici in Octave o MATLAB, variando sia i parametri generali (come Nc0, P o N) sia le istruzioni che determinano l’evoluzione nel tempo del tasso di contagio C.

In particolare, un utile esercizio consiste nel raffinare il modello tenendo conto del fatto che i contagiati dopo un certo tempo guariscono, cioè sviluppano immunità al patogeno, e non possono quindi più trasmettere il contagio. Come cambierà allora la forma del picco dei contagi? Si veda a questo proposito anche la matematica del modello SIR.

 

Un utile completamento su YouTube

Un efficace approfondimento del tema della modellazione delle epidemie si trova nel video Exponential Growth and epidemics (in inglese con opzione di sottotitoli in italiano).

Mettiti alla prova con gli esercizi dello SPECIALE CORONAVIRUS sulla piattaforma ZTE.

Per la lezione

Prosegui la lettura

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *