massacarrara
skyline
facebook twitter youtube Feed RSS

 

X
  • Notice: Undefined variable: node in theme_fb_social_comments_block_comments_view() (line 116 of /var/www/pressflow/sites/all/modules/fb_social/modules/fb_social_comments/fb_social_comments.module).
  • Notice: Trying to get property of non-object in theme_fb_social_comments_block_comments_view() (line 116 of /var/www/pressflow/sites/all/modules/fb_social/modules/fb_social_comments/fb_social_comments.module).
La rubrica del fisico apuano Simone Ragoni

Un’iniziazione alla modellizzazione dell’andamento del Covid-19 con Python

  • Notice: Undefined variable: node in theme_fb_social_comments_block_comments_view() (line 116 of /var/www/pressflow/sites/all/modules/fb_social/modules/fb_social_comments/fb_social_comments.module).
  • Notice: Trying to get property of non-object in theme_fb_social_comments_block_comments_view() (line 116 of /var/www/pressflow/sites/all/modules/fb_social/modules/fb_social_comments/fb_social_comments.module).
Immagine articolo - ilsitodiFirenze.it

Inauguriamo oggi la rubrica, a cadenza variabile, del Dott. Simone Ragoni, fisico nucleare apuano che si divide tra la Svizzera e il Regno Unito. Oggi affronterà il delicato tema del Covid, in relazione alla sua disciplina. 

 

 

Di questi tempi il Covid e il suo andamento giorno per giorno sono stati argomento costante delle nostre conversazioni e dei nostri pensieri. Spesso abbiamo avuto anche il desiderio o l’esigenza di poter operare previsioni per i giorni futuri. Il seguito fornirà un approccio prettamente didattico per andare a soddisfare questa esigenza che potremmo sentire. Verranno introdotti due tipi di descrizione, e si fornirà anche una base matematica per iniziare a pensare come effettivamente lo studioso possa approcciarsi al problema col calcolatore. Inoltre, verrà reso disponibile anche una sorta di tutorial per proseguire nel raffinamento del modello in esame.

-Vari tipi di modellizzazione

I fisici sono specializzati nell’analisi dei dati e nella modellizzazione dei trend. Sono tanti i colleghi che hanno messo a frutto le arti imparate a fatica per il bene della comunità e dare una descrizione dei trend della pandemia che oramai è l’argomento principe delle nostre vite. Nella mia ottica, due sono i tipi principali di descrizione:

  1. Un modello non dipendente dal tempo, con un numero arbitrario di parametri, che sicuramente descriverà i dati se il numero di parametri liberi è sufficientemente elevato. Sfortunatamente questa tipologia di modelli non ha potere preditivo su fenomeni intrinsicamente dipendenti dal tempo.

  2. Un modello dipendente dal tempo, che deve per forza essere descritto da equazioni differenziali ordinarie (ODE) nel tempo.

 

- Il più semplice dei modelli SIR

Il modello SIR (descritto ad esempio in: https://arxiv.org/pdf/2005.08724.pdf ), è il modello forse più semplice per la descrizione di un fenomeno pandemico. Il modello può essere descritto con il seguente sistema di equazioni differenziali:

Dove la popolazione di N individui è divisa in tre categorie: gli S, suscettibili alla diffusione, gli I infetti, e gli R, i rimossi, per sopraggiunta immunità o per, ehm, mancata immunità. Il modello può essere ancora semplificato con semplici ipotesi. Questo può essere utile per fini puramente didattici. Infatti, può essere un primo esercizio per avvicinare il lettore alle equazioni differenziali, o a Python, che oggi sfrutteremo per risolverle al nostro posto!

Con l’assunto che i dati si riferiscano ad un limitato lasso temporale e.g. due settimane, che la popolazione sia grande (si spera!) e che il numero di infettati al giorno non sia di ordine di grandezza comparabile alla popolazione e.g. 60 milioni di abitanti e 100 mila infettati al giorno sembra ancora ragionevole. Ma questo è esattamente il caso dell’Italia! Che fortuna. Si può allora semplificare ancora il nostro problema puramente didattico a:

- Chiediamo aiuto a Python

Ho prodotto un codice in Python, veramente semplice, che risolva il problema in esame. Il codice è in Jupyter-Notebook, disponibile qui: https://github.com/siragoni/Miscellaneous/blob/main/SimplifiedSIR.ipynb

Usiamo Numpy e Scipy, delle librerie open-source di Python:

In [54] : import numpy as np

              import scipy.optimize as scopt

              import scipy.integrate as scint

             import scipy.optimize as scopt

def SimplifiedSIR(Y, t, beta, tau, gamma):

      I, R = y

      dydt= [ 8 beta *np.exp(-t/tau) - gamma)*I, gamma*I]

      return dydt

 

Veramente semplice.

Applicando le funzioni di Scipy si possono prendere i dati relativi al period 26 febbraio – 11 marzo per decessi e infezioni e risolvere il tutto. Si ottiene una descrizione abbastanza buona del trend (fit) anche con un modello così semplice! Siete ora in grado di complicare il modello a vostro piacimento per arrivare alla descrizione che più vi aggrada…

 

 

 

 

 

 

Manda i tuoi comunicati stampa a: [email protected]
Quotidiano Apuano - vecchio sito