TECH | 18 Mar 2020

L’epidemia dei dati

Come la Data Science, se conosciuta, potrebbe aiutare a interpretare il fenomeno Coronavirus

Nelle ultime settimane l’attenzione dell’intera nazione si è concentrata sull’emergenza della diffusione del Coronavirus: iniziata come una vicenda “lontana”, chiusa nello sconfinato territorio della Repubblica Popolare Cinese, questa malattia ci interessava distrattamente, episodicamente, e stavamo a guardare pensando che, come la SARS (un altro “Coronavirus” in effetti), sarebbe stata domata, con le buone o le cattive, dalla maggiore potenza commerciale del pianeta.

Soltanto quando è stata chiara la gravità della situazione in Cina, a inizio anno, e infine quando “ce la siamo trovata in casa”, l’interesse si è acuito e focalizzato: chi, come me e probabilmente come chi mi legge in questo momento, ha interesse nella tecnologia digitale e nella “scienza dei dati” si sarà certamente chiesto come applicare le sue conoscenze all’indagine di questo fenomeno che, a mia memoria (e oramai ne ho purtroppo un bel po’), ha generato un’emergenza e una necessità di reazione inedite nella storia repubblicana.

Sicuramente ci sono state altre epidemie in passato, ma la loro possibilità di diffusione era limitata: c’erano meno spostamenti in aereo, molte persone proprio non si spostavano, etc. È vero che un tempo si era meno attenti alle condizioni igienico-sanitarie, ma una situazione di “quarantena collettiva”, sebbene molto edulcorata rispetto a un vero e proprio coprifuoco quale stiamo vivendo in questi giorni, l’avevo vista soltanto nei film di fantascienza.

Anche tu Data Scientist

Sui social frequentati da professionisti, come LinkedIn, è stato tutto un fiorire di grafici, tabelle e ancora grafici e tabelle, in cui i dati di base erano sostanzialmente gli stessi: quelli rilevati dalle autorità sanitarie e di protezione civile delle nazioni interessate, oltre che dall’OMS e da alcune istituzioni particolarmente prestigiose, che esse stesse hanno prodotto dashboard interattive e navigabili per tesaurizzare al massimo questa ricchezza di dati, che spesso è una povertà di informazioni (una classifica di queste dashboard si può trovare per esempio su un articolo di technologyreview).

Ma al di là dei contributi istituzionali, molti, se non tutti, hanno cercato di partecipare usando gli strumenti a propria disposizione: oggi non solo è facile spostarsi in aereo, ma anche produrre un grafico a partire da una tabella di dati, o una mappa, o un sito interattivo, o altro. Ho visto decine di post con grafici di vario tipo, tutti molto belli dal punto di vista estetico, che miravano a una delle due conclusioni che sembravano possibili:

  1. Si tratta di una banale influenza cui si è dato risalto mediatico.
  2. Moriremo tutti.

Il punto è che dai dati bisognerebbe ottenere informazioni: invece siamo sommersi da un diluvio di dati ma abbiamo sempre sete di informazioni. È un po’ come stare con una barca in mezzo all’oceano: circondati da una immane massa d’acqua ma a rischio di morire di sete.

La diffusione della “Data Science”, o meglio la sua esplosione, è un fenomeno sicuramente più virale del Coronavirus, e il suo mezzo di diffusione sono le enormi potenzialità delle tecnologie a nostra disposizione: con poche righe di Python o R è possibile leggere dati da un foglio Excel, far calcolare una regressione lineare e produrre un grafico che ne illustri il risultato. Ma mi permetto di dire che questa non è propriamente Data Science.

Data Science implica da un lato saper collezionare dati da fonti disparate e strutturarli per fornirli a un modello il cui scopo sia produrre informazioni a partire dai dati. Non basta fare una divisione “morti/contagiati” per calcolare la letalità di una malattia, senza prima chiedersi, per esempio, come sono calcolati i contagiati, senza rapportare questo numero al tempo, col che non è più un numero ma una variabile, etc.

Insomma ci vuole un modello, e non necessariamente sempre dello stesso tipo: potrebbe essere un modello statistico, un modello di ottimizzazione (un cui caso particolare sono Machine Learning e Intelligenza Artificiale in generale), un modello deterministico, etc. Oggi siamo abituati a strumenti di programmazione, come quelli citati, che offrono l’imbarazzo della scelta per i modelli, così come per la rappresentazione dei dati (chi fra noi conosce tutte le funzioni e le classi di SciPy scagli la prima pietra), il che implica che bisogna conoscere bene sia le possibili strutture di dati sia i possibili modelli da applicare per poter trarre delle conclusioni ragionevolmente sensate.

E solitamente i modelli per un problema specifico già ci sono! Nel caso della diffusione epidemica, di cui l’emergenza del Covid-19 (chiamiamolo col suo nome!) è un esempio, ci sono modelli consolidati da quasi un secolo. Vediamo come funzionano.

Compartimenti non stagni…

Un modello epidemiologico ha solitamente lo scopo di descrivere la curva degli infetti, cioè la numerosità al variare del tempo di quante persone in una popolazione sono infette. Al momento in cui scrivo, il numero di infetti cresce ogni giorno in Italia, quindi la curva che lo sottende ha un andamento crescente: se questo andamento non dovesse mai cambiare, prima o poi ci infetteremmo tutti. Ma quel che si nota di solito è che queste epidemie hanno un “picco” di infetti che poi tende a decrescere, fino a stabilizzarsi su un valore, sperabilmente zero (il che vorrebbe dire che l’epidemia è stata debellata completamente). La curva somiglia quindi al profilo di una montagna, con una dorsale crescente fino al picco e la dorsale dal lato opposto che riscende verso valle, nella nostra metafora, verso la normalità.

Ma le persone che sono infette, prima erano sane, quindi questa curva degli infetti è legata a una curva dei sani, che sono le persone suscettibili di ammalarsi: i modelli epidemiologici operano quindi una partizione della popolazione sotto osservazione in diversi compartimenti, dove un singolo individuo, a un dato istante, può stare in un solo compartimento, e dove la totalità dei compartimenti esaurisce l’intera popolazione.

I compartimenti che tipicamente si considerano sono:

  1. il compartimento S dei “suscettibili”, cioè le persone non infette ma che sono suscettibili di contrarre l’infezione
  2. il compartimento I degli “infetti”, che hanno contratto la malattia
  3. il compartimento R dei “rimossi”, cioè delle persone che hanno contratto la malattia ma che non sono più né nel compartimento S né nel compartimento I: per esempio chi, sventuratamente, è deceduto, chi è guarito sviluppando una immunità, etc.

Ci sono anche altri compartimenti che si possono considerare, come per esempio il compartimento “E” degli “esposti”, cioè i suscettibili che, per esempio avendo avuto contati con degli infetti, possono essere stati contagiati senza ancora averne i sintomi. Ma qui concentriamoci sul modello più semplice, la cui dinamica è schematizzabile come

S → I→ R

Dunque in questo modello, la popolazione a ogni istante è suddivisa in suscettibili S, infetti I e rimossi R, e la dinamica al variare del tempo si basa su due assunzioni:

  1. uno o più individui del compartimento S possono passare nel compartimento I
  2. uno o più individui del compartimento I possono passare nel compartimento R.

Queste due regole qualitative si precisano specificando, a ogni istante, quanti membri del compartimento S passano in I e quanti del compartimento I passano in R: questi due passaggi sono determinati dai valori correnti dei numeri degli S, dei I e degli R e da due parametri “interni” al modello i cui valori determinano l’andamento qualitativo delle curve dei suscettibili, degli infetti e dei rimossi.

Interpretare il modello

Un modello epidemiologico di questo tipo ha sempre un valore di “soglia critica” che è maggiore di 0, e tale che, se maggiore di 1, gli infetti crescono fino al picco per poi calare, altrimenti decrescono sempre.

L’andamento delle curve dei suscettibili, degli infetti e dei rimossi è pertanto determinato da questa soglia (che dipende dai parametri interni del modello cui accennavamo), e viene illustrato nella figura seguente nei suoi casi possibili (in questa simulazione supponiamo che inizialmente S sia l’80% della popolazione e I il 20%). Per esempio ecco il caso di soglia maggiore di 1 (in orizzontale l’asse dei tempi, per esempio i giorni, in verticale l’asse del numero di persone coinvolte):

Come si vede, in questo caso la curva degli infetti cresce esponenzialmente salvo poi raggiungere il suo punto di massimo (il picco dell’infezione) per poi decrescere fino a portarsi a zero dopo 60 giorni. La curva dei suscettibili decresce esponenzialmente (in quanto cresce quella degli infetti) fino al picco dell’infezione, poi sostanzialmente si stabilizza. Invece la curva dei rimossi cresce sempre più lentamente fino a esaurire l’intera popolazione.

Se invece la soglia critica nel modello è minore di 1 abbiamo una continua decrescita degli infetti fino al loro esaurimento:

Notiamo che in questo secondo grafico gli infetti finiscono tutti nel compartimento R, che però non invade tutta la popolazione, di cui oltre la metà rimane suscettibile, cioè non è toccata dal virus.

Questi due scenari sostanzialmente esauriscono le possibilità di questo modello: chiaramente i numeri specifici possono cambiare e di molto, ma gli andamenti possibili sono i due che abbiamo illustrato.

Resta quindi da capire, per poter applicare il modello:

  1. come determinare i parametri dai quali dipende (e quindi la soglia critica che ne determina l’andamento qualitativo del modello)?
  2. che affidabilità porre nel risultato?

Queste domande valgono per qualsiasi modellizzazione di un fenomeno, e richiedono teoria e pratica per poter essere evase: in generale alla 1 si risponde utilizzando delle tecniche di “stima dei parametri”, che utilizzano una serie storica di dati reali, anche parziale, dei valori S, I e R, e cercano, con tecniche di ottimizzazione (per esempio di Machine Learning) di determinare i valori dei parametri ai quali corrispondono curve del modello il più simili possibili alle curve della serie storica reale.

Alla seconda domanda si risponde solitamente con metodi statistici che vanno a legare la sensibilità del modello all’errore commesso nello stimarne i parametri con l’accuratezza delle sue conclusioni.

Va osservato che, se questi parametri sono considerati costanti dal modello, in realtà variano, anzi la battaglia che al momento stiamo tutti combattendo consiste proprio nel cercare di abbassare la soglia critica: in questo caso, infatti, il numero degli infetti comincerebbe immediatamente a decrescere, e vorrebbe dire che ci siamo lasciati il picco dietro le spalle.

E quindi?

Per concludere queste chiacchiere sui modelli epidemici lascio alcuni punti sui quali riflettere e che è sempre bene tenere presente prima di imbarcarsi in deduzioni affrettate:

  • Sebbene il modello SIR che ho qui presentato non sia fra i più sofisticati, rende l’idea di come sono i modelli realmente utilizzati: la cosa sorprendente è che risale al 1927!!! Ma ciò è moneta corrente: gran parte delle nozioni che oggi si ritengono “nuove” e sulle quali si basa l’innovazione ha in realtà radici lontane, basti pensare ai metodi di ottimizzazione che risalgono al 1700!
  • Un modello non è mai complesso quanto la realtà che vuole descrivere: questa ovvietà si può ancor meglio declinare dicendo che in un modello descriviamo della realtà solo pochissime caratteristiche, sulle quali in qualche modo “puntiamo” per poter efficacemente affrontare un problema: ma potremmo aver scelto le caratteristiche e quindi il modello sbagliati.
  • Bisogna sempre, con umiltà, rivolgersi in primis a chi studia il dominio sul quale vogliamo far girare il nostro modello: per quanto possiamo essere maghi dei numeri e degli algoritmi, di epidemie se ne intendono virologi ed epidemiologi, e alcune informazioni di base, che pure esulano apparentemente dal dato quantitativo, sono sempre utili; in questo caso si potrebbe saperne di più leggendo questa paginetta a proposito dei vari Coronavirus e le loro caratteristiche.
  • I dati vanno trasformati in informazioni prima di essere trattati: per esempio si fa presto a parlare di mortalità, letalità e altro, quando invece le problematiche epidemiologiche attorno a questi termini sono non banali (cfr. per esempio questa voce della Treccani on line).
  • Prima di produrre un grafico dovremmo sempre avere un modello, un algoritmo o comunque un metodo ripetibile e replicabile da chiunque per rispondere a delle domande chiare: non si passa dal dato alla risposta, di mezzo c’è il modello, che è poi il secondo termine nella locuzione Data Science.

Per un approfondimento tecnico, con simulazioni in Python, mi permetto di rimandare al seguente repository github.

Paolo Caressa