Quando la pandemia ha colpito Milano e l’Italia anche io, come molti, ho voluto guardare un po’ ai dati, per quanto incerti.
L’obiettivo non era realizzare un sistema predittivo – vi si stavano dedicando in molti, usando informazioni e modelli specifici – ma evidenziare i trend esistenti.
I dati puliti (grafico sotto) potevano infatti dare indicazioni migliori rispetto ai valori grezzi che quotidianamente si trovavano sui media.
Ho deciso di mettere online le rappresentaioni che avevo fatto, sul sito www.covcompare.com. I contenuti sono generati da un programma che quotidianamente (verso l’ora del rilascio) scarica i dati dai siti istituzionali e prepara alcuni risultati utili in seguito.
Su richiesta dell’utente si può visualizzare qualsiasi combinazione di regioni.
Si tratta sostanzialmente di 4 visualizzazioni relative ai nuovi casi di contagio da coronavirus, che permettono di confrontare ciò che succede nelle varie regioni. La prima è il numero assoluto di nuovi contagi, come divulgati dalle istituzioni, e serve più che altro a dimostrare che questo numero grezzo dice poco.
C’è poi un grafico del dato trattato – normalizzato rispetto al numero degli abitanti, logaritmo, media mobile – in cui si può effettivamente vedere cosa succede in una data regione. Infine c’è una heatmap che rappresenta tutti i giorni e tutte le regioni.
Per quanto riguarda la heatmap ho voluto ordinare le regioni in modo che mostrassero una transizione omogenea. Per farlo ho usato la Principal Component Analysis (ho sperimentato anche altre tecniche, con risultati simili) che automaticamente estrae l’ordinamento migliore delle regioni.
Infine, ho usato un algoritmo di clusterizzazione particolarmente adatto alle serie storiche per raggruppare le regioni (ci sono cluster con andamenti simili in termini di accelerazioni e frenate) e un algoritmo di ricerca dei picchi per individuare il momento culminante delle diverse ondate, nelle diverse aree.

Su Github è disponibile il codice: https://github.com/giosds/covcompare
Il backend è realizzato in Python. Ho usato Flask.