rozierguillaume / covid-19

How does COVID-19 spread around the world? Charts, data, dashboards and interpretations...
MIT License
307 stars 35 forks source link

Sur mortalité: bug aux alentours du 29 février? #18

Open MCMic opened 3 years ago

MCMic commented 3 years ago

Dans la courbe de surmortalité, on voit un truc étrange sur les courbes de 2019 et 2021. Je peux me tromper mais il semble que c’est aux alentours du 29 février et que le problème n’est pas présent sur la courbe de 2020 qui est bissextile.

https://htmlpreview.github.io/?https://raw.githubusercontent.com/rozierguillaume/covid-19/master/images/html_exports/france/mortalite.html

paul2t commented 3 years ago

Je pense aussi que c'est un problème d'année bissextile. Quand on multiplie les chiffres des dates qui posent problème par 7/6, on obtient des chiffres cohérents. Dans les données : deces_quotidiens_departement_csv.csv On peut voir que le 29 février 2019, a le même total de décès que le 28 février 2019. Ce qui est logique puisque ce jour n'existe pas. Mais dans le code, ceci n'est pas pris en compte : covid19_france_insee.py df_mortalite_france["Total_deces_2019"].diff().rolling(window=window, center=True).mean() La diff pour le 29 février est donc de 0. Mais ce 0 est pris en compte dans la moyenne. Ce qui fait un jour de plus mais avec aucun mort. Ça explique donc le ratio de 7/6 observé précédemment.

lgostiau commented 3 years ago

J'ai à dispo une modif de covid19_france_insee.ipynb qui évite ce souci d'affichage, et qui fait aussi proprement le merge des deux dataframes (cellule 3 initialement commentée) mortalite

Rade-Mathis commented 3 years ago

Since the bug is still in production, and that last comment is 1.5 month old, I propose here a quick and dirty fixup.

Pros

Cons

Code

In covid19_france_insee.py (or covid19_france_insee.ipynb, I don't know how this thing works)

Replace:

df_mortalite_france.loc[:,"Total_deces_2019_diff"] = df_mortalite_france["Total_deces_2019"].diff().rolling(window=window, center=True).mean()
df_mortalite_france.loc[:,"Total_deces_2020_diff"] = df_mortalite_france["Total_deces_2020"].diff().rolling(window=window, center=True).mean()
df_mortalite_france.loc[:,"Total_deces_2021_diff"] = df_mortalite_france["Total_deces_2021"].diff().rolling(window=window, center=True).mean()

With:

for i in range (2019, 2022) :
    annee = "Total_deces_{}".format(i)
    diff = df_mortalite_france[annee].diff()
    fix_29_02_gap = diff.replace (0.0, diff[58])  # If 29th feb == 0, then 29 feb = 28 feb  (That's dirty)
    df_mortalite_france.loc[:, annee + "_diff"] = fix_29_02_gap.diff().rolling(window=window, center=True).mean()

PS