pcm-dpc / COVID-19

COVID-19 Italia - Monitoraggio situazione
Other
3.87k stars 2.25k forks source link

nuovi_positivi non uguale a differenza totale_casi #850

Open maxdevblock opened 4 years ago

maxdevblock commented 4 years ago

Tipo di issue:

Dati nazionali

Riassunto

Il campo nuovi_positivi per oggi (07 Set 2020) risulta 1108 mentre

it['totale_casi'].diff()[-1]

ed

it['casi_da_sospetto_diagnostico'].diff()[-1] +\
    it['casi_da_screening'].diff()[-1]

risultano 1150

Paulsword commented 4 years ago

-- Nota del ministero della Salute per Campania: l'incremento corretto è 218, mentre la differenza con i dati di ieri è 260 poiché 42 casi positivi sono da attribuire ai giorni scorsi Il punto è: a quali giorni sono da attribuire?

maxdevblock commented 4 years ago

Esatto. Attendiamo chiarimenti e correzioni. Grazie.

Paulsword commented 4 years ago

Più in generale mi chiedevo come mai ad esempio risulta corretto a posteriori il numero dei decessi e dei casi totali di Emilia-Romagna del 5/9, coerentemente con la nota di ieri, e non risultano invece variati oggi i valori dei "giorni scorsi" per Campania (con riferimento a dpc-covid19-ita-regioni.csv)

Rabelaiss commented 4 years ago

@Paulsword ne ho parlato con umbros qui #844 è forse la prima volta che la PC corregge i dati precedenti in seguito al ricalcolo di una regione, questo evento è molto raro perché quasi sempre non si conoscono le date di diagnosi dei casi rimossi/aggiunti e quindi non si possono sapere con esattezza quanti sono i dati precedenti che vanno modificati. Come comunicato dalla stessa Emilia-Romagna il caso rimosso ieri era stato diagnosticato in data 5/9 dopo il decesso e quindi gli unici dati da modificare sono quelli relativi alla giornata del 5/9. Più grande è il ricalcolo e più diventa difficile conoscere tutte le relative date di diagnosi, non credo quindi che sapremo mai le date dei 42 casi Campani vecchi aggiunti oggi, come d'altronde non sappiamo quelle di altri 14 riconteggi avvenuti nell'ultimo mese. Per aggirare il problema io aggiungo 42 casi a tutti i dati contenuti nel periodo temporale di riferimento per le analisi.

maxdevblock commented 4 years ago

Il problema però resta. I nuovi_positivi nazionali non combaciano con la differenza del totale_casi

Rabelaiss commented 4 years ago

@maxdevblock te cosa faresti per mettere a posto i dati?

maxdevblock commented 4 years ago

@maxdevblock te cosa faresti per mettere a posto i dati?

Ormai purtroppo non si può fare molto, temo. Stavo controllando il database in generale:

image

da metà Giugno è avvenuta una serie di errori che ha portato la sommatoria cumulativa dei nuovi_positivi ad essere costantemente sopra il totale_casi (la differenza attuale è di 53).

Capisco il problema nella raccolta dati che non dev'essere affatto facile. Chiedo però ad @umbros: quale dei due totali è più corretto (se è possibile distinguerne uno)? La somma cumulativa dei nuovi_positivi o il totale_casi?

Riporto il codice usato, in caso qualcuno volesse controllare e/o riprodurre il grafico qui sopra:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import dates as mdates
from matplotlib import ticker as mtick

it = pd.read_csv(
    'https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-andamento-nazionale/dpc-covid19-ita-andamento-nazionale.csv',
    index_col='data',
    parse_dates=['data']
)
days = it.index.get_level_values('data').unique()

fig, ax = plt.subplots(1, 2, figsize=(15, 4), sharex=True)

# errore differenziale
ax[0].set_title('Errore differenziale: nuovi_positivi - $\Delta$(totale_casi)')
err_dif = it['nuovi_positivi'] - it['totale_casi'].diff()
ax[0].plot(
    days,
    err_dif,
    color='k', lw=3
)
ax[0].fill_between(days, 0, 500, color='limegreen', alpha=.1)
ax[0].fill_between(days, -500, 0, color='red', alpha=.1)
ax[0].set_yscale('symlog')
ax[0].set_xlim(days[30*3], days[-1])

# errore cumulativo
ax[1].set_title('Errore cumulativo: $\sum$(nuovi_positivi) - totale_casi')
err_cum = it['nuovi_positivi'].cumsum() - it['totale_casi']
ax[1].plot(
    days,
    err_cum,
    lw=3
)
ax[1].axhline(0, c='k', alpha=.2)
ax[1].axhline(err_cum[-1], color='r', ls=":", label=err_cum[-1])
ax[1].legend()

ax[0].xaxis.set_major_locator(mdates.MonthLocator())
ax[0].xaxis.set_major_formatter(mdates.DateFormatter('%b'))
ax[0].xaxis.set_minor_locator(mdates.DayLocator())

fig.set_facecolor('w'); plt.show();
Rabelaiss commented 4 years ago

@maxdevblock I giorni in cui l'errore differenziale (plot a sinistra) è diverso da zero corrispondono ai giorni in cui sono stati effettuati riconteggi sui dati. Ad esempio oggi la differenza è 1 (abruzzo ha rimosso 1 caso), ieri la differenza è -42 (campania ha aggiunto 42 casi) ecc.

Ho confrontato i dati (nuovi_positivi e ∆(totale_casi)) degli ultimi 30 giorni con quelli che pubblico nel mio canale, e posso dirti che i dati giornalieri corretti (ossia quelli puliti dai riconteggi) sono quelli nella serie nuovi_positivi con la sola eccezzione del dato del 15/8 in cui il numero corretto di nuovi casi è 614 e non 629. Bisogna notare, tuttavia, che nemmeno i numeri della serie nuovi_positivi sono del tutto corretti, questo perché quando avviene un riconteggio (aggiunta o rimozione di casi vecchi) bisognerebbe modificare i numeri vecchi della serie nuovi_positivi corrispondenti alle date di diagnosi dei casi rimossi/aggiunti. Questa modifica è quasi sempre impraticabile perché, come ho spiegato nel commento precedente, raramente vengono comunicate le date di diagnosi dei casi rimossi/aggiunti col riconteggio.

Ad esempio, facendo la differenza tra il totale_casi di oggi e di ieri risultano 1369 nuovi casi, ma tenendo conto del riconteggio dell'abruzzo i nuovi casi diventano 1370 come giustamente riportato nella serie nuovi_positivi. Adesso ipotiziammo che in uno dei prossimi giorni in seguito a verifica verranno rimossi 5 casi diagnosticati oggi. Quello che dovremmo fare sarebbe riprendere in mano il dato di oggi e abbassarlo da 1370 a 1365. Tuttavia, come dicevo, le date di diagnosi dei casi ricalcolati non sono quasi mai note, quindi è più probabile che quei 5 casi non sapremmo a quale numero andrebbero rimossi. Che le date di diagnosi siano note oppure no, quel che è certo è che quei 5 casi vanno rimossi dal totale che si ottiene sommando tutti i numeri della serie nuovi_positivi.

Seguendo questo ragionamento possiamo calcolare il totale dei casi a partire dalla serie nuovi_positivi. Intanto sommiamo tutti i numeri della serie nuovi_positivi, e otteniamo 280206. Poi dobbiamo sommare tutti i riconteggi, ossia sommare tutti i numeri della serie Errore differenziale {usando la tua notazione}, e otteniamo -61. Questo numero va aggiunto al totale che abbiamo calcolato poco fa, che quindi diventa 280145. Notiamo però che il primo numero della serie nuovi_positivi è 221, mentre il primo numero della serie totale_casi è 229, ossia la serie nuovi_posiivi contiene 8 casi in meno e quindi dobbiamo aggiungerli. Il totale diventa quindi 280153 che coincide con l'ultimo numero della serie totale_positivi.

Nota come 53 = |-61+8|.

TLDR: La serie nuovi_positivi è quella che ci fornisce ogni giorno il numero corretto di nuovi casi, tuttavia i numeri vecchi smettono di essere corretti nel momento in cui viene fatto un riconteggio sui casi senza che vengano comunicate le relative date di diagnosi.

LucaZeta commented 3 years ago

Il problema però resta. I nuovi_positivi nazionali non combaciano con la differenza del totale_casi

E' vero che esiste una discrepanza, non è vero che questo costituisca un problema.

Come già detto, di tanto in tanto PC deve applicare dei correttivi a conteggi già ufficializzati. Lo fa operando in +/- sulla serie totale_casi, lasciando inalterata la serie nuovi_positivi. Ne consegue che ∆(totale_casi) non sempre corrisponde a nuovi_positivi e la somma cumulata di nuovi_positivi smette di coincidere a totale_casi alla prima correzione introdotta da PC: 24-Feb-2020, dall'inizio delle pubblicazioni. Quale delle due serie deve essere considerata valida? Dipende dall'informazione che si cerca: Se si è interessati al calore cumulato dei contagi allora si faccia riferimento a totale_casi. Se si è interessati al numero di nuovi positivi giornalieri si faccia riferimento al campo nuovi_positivi. Derivare ∆(totale_casi) invece che riferire a nuovi_positivi espone a risultati negativi e dovrebbe essere evitato.

La differenza tra ∆(totale_casi) e nuovi_positivi definisce le correzioni applicate da PC. In questa tabella , osservando i valori della 'colonna correzione totale casi' si possono verificare tutti gli interventi di correzione applicati da PC durante lo svolgersi dell'epidemia.

OSSERVAZIONE: rendere coerente i valori ∆(totale_casi) e nuovi_positivi renderebbe superflua la pubblicazione di nuovi_positivi, invece mantenendo il disallineamento si può disporre di un'ulteriore informazione: le correzioni applicate da PC. Non un problema, ma un'opportunità se si è potuto fare queste considerazioni all'inizio delle proprie indagini.

maxdevblock commented 3 years ago

@LucaZeta vero. Grazie dell'analisi dettagliata.