Carte d’évolution de la mortalité des plus de 65 ans en France. Période Janvier à Mars 2020
Présentation
Cette animation a été générée à partir des données open source de l’Insee listées ci-dessous.
Elle représente l’évolution de la mortalité des plus de 65 ans en France sur la période Janvier à mars 2020. La précision géographique est meilleure que le département (basée sur le découpage en communes). La variabilité géographique des valeurs est ainsi plus marquée et met en valeur de nouveaux évènements.
L’échelle à gauche du graphique représente le code couleur avec une échelle en facteur multiplicatif. On y retrouve :
- la barre horizontale est le niveau de mortalité moyen par rapport aux 5 années précédentes ( uniquement période février à mai)
- l’ovale fixé sur la barre représente l’écart type, donc la variabilité des valeurs géographiquement
- la barres arrondie en haut le maximum de taux de mortalité
Attention les données en fin de période ne sont pas 100% exactes. Il semblerait que l’INSEE ait du mal à récolter les dernières données venant des communes en temps et en heure pour les livrer vers le 15 du mois d’après.
Analyse à chaud
Les éléments étonnants que j’ai pu détecter sur cette animation.
Je ne suis pas un spécialiste du domaine, j’intègre ces éléments pour présenter le type d’informations qu’on peut en tirer.
Les sources de données
- INSEE : Recensement de la population 2016
- Base des tableaux détaillés. https://www.insee.fr/fr/statistiques/4171341?sommaire=4171351
- POP1A – Population par sexe et âge regroupé. https://www.insee.fr/fr/statistiques/fichier/4171341/BTX_TD_POP1A_2016.zip
- decoupage-administratif-communal-francais-issu-d-openstreetmap
- Contour de l’europe
- Site Web de génération de fichiers JSON : https://geojson-maps.ash.ms/
- Données des décès en France :
-
- FIchers historiques et mensuels : https://www.data.gouv.fr/fr/datasets/fichier-des-personnes-decedees/
-
La méthodologie
Les données sont traitées de la façon suivante pour être affichées :
- population sommée temporellement sur 7 jours pour avoir une représentativité statistique minimale, la fenêtre temporelle est décalée jour après jour pour générer l’animation
- sur un regroupement initiale de communes proches permettant d’atteindre une population de référence minimale représentative (4 décès/semaine historiquement). La base de découpage est constituée de communes.
Au final ce sont 846 regroupements qui constitue la base d’affichage. La précision est donc bien meilleure qu’un découpage par département. Ces regroupements peuvent être très étendus géographiquement (densité de population faible par exemple), ou représenter une unique commune. - sur une référence de mortalité sur 5 ans issue d’une moyenne (2015 -2019) et uniquement les mois de février à Mai. Cela permet de lisser l’effet d’éventuelles épidémies de grippe ou autre qui auraient eu lieu sur cette période de référence. Cette référence ne bouge plus ensuite pour l’affichage temporel de la vidéo.
sur un « regroupement de regroupement » variable suivant la période d’analyse glissante et cela pour atteindre une population minimale de 20 décès sur la semaine, soit 5% d’erreur. On regroupe ainsi dynamiquement les communes avec une faible mortalité, en gardant la visibilité sur les communes avec forte mortalité. Ce regroupement se fait sur un critère de proximité (regroupement limitrophe) en privilégiant les éléments qui ont des taux de mortalité proche.
On aboutit dans cette vidéo à environ 130 à 160 « regroupements de regroupement » affichés suivant l’image
Les outils
J’ai développé le code sur Jupyter. L’installation sur serveur est expliquée ici.
La programmation est en Python.Utilisation des librairies numpy, pandas, geopandas, matplotlib.
Historiquement j’ai démarré ce sujet technique personnel pour analyser de la donnée domotique, mais les circonstances m’ont fait changer de voie.
Python génère des images qui sont ensuite rassemblées et interpolées par Image Magick sous linux puis la vidéo est générée par ffmpeg.
Postez un commentaire si vous souhaitez en savoir plus ou contactez moi. Le code est devenu au cours du temps assez complexe, peu lisible il faut bien le dire, donc difficile à présenter.
Je suis également à disposition pour générer d’autres animations si cela intéresse (zoom sur région, sur période, etc…)
Très beau travail et très intéressant 😉
Par contre, attention aux biais surtout pour ceux qui vont interpréter ta représentation.
En effet, tu as choisi (ce qui est légitime) une profondeur de vert/ rouge pour déterminer les écarts à la moyenne les plus importants. Et nous recherchons volontairement ou non les zones rouges qui vont apparaître.
Et donc remarquer, par exemple, comme tu l’expliques pour les sables d’Olonne, qu’il y a un phénomène anormal dans cette zone.
Mais on fera abstraction du fait que pour le mois de janvier, la ville était majoritairement « verte ». Et donc conclure qu’il y a eu une épidémie et ce n’est pas si sûr.
D’autre part, il faut garder à l’esprit qu’une fréquence d’échantillonnage (ici quotidienne) permet de visualiser les extrêmes et non une tendance. Il se peut que statiquement, la semaine soit « normale » mais que les décès non eu lieu que sur deux jours et dans ce cas il y aura 5 jours verts et 2 rouges bien que la moyenne soit respectée.
Il y a plusieurs solutions pour éviter ce biais, comme par exemple faire, une moyenne glissante (moyenne mobile pour les habitués de la finance) qui permettra de lisser les extrêmes (ou diminuer la fréquence).
Tu calcul (sauf erreur de ma part) un taux de mortalité. Tu ne le précise pas mais il faut que tu calculs ton taux que par rapport à la population de plus de 65 ans (peux être le fais-tu déjà) car le ratio 65+/population n’est pas le même à la Courneuve et à Cannes. D’autre part, il faut prendre le nombre de personne de plus de 65 ans des années précédentes.
Je m’explique, par exemple, dans certaines régions, le nombre de décès de la grippe 2004 à été moins forte qu’en 2003 car la canicule avait dèjà pris les personnes fragiles (toutes choses égales par ailleurs).
Tu fais une moyenne sur les 5 dernières, mais je pense que tu biaises ton analyse, le nombre de décès est une sinusoïde avec un offset qui augmente d’année en année (le taux de mortalité diminue mais la population des 65 ans+ augmente plus vite, ce qui augmente le nombre de décès).
Cela ne pose pas un grand biais jusqu’à mars mais va être réel en avril.
Ce post n’a pas pour but de critiquer ton travail, bien au contraire, c’est juste pour améliorer celui-ci car nous insérons tous dans nos modèles inconsciemment des biais et c’est un sujet complexe qui demande beaucoup de réserve dans les retranscriptions.
Bonjour,
Merci pour le commentaire constructif.
Effectivement je me suis lancé dans un début d’analyse, par « extension » de la génération de carte, mais ne suis pas forcément légitime sur cette partie. J’atténuerai cette partie la prochaine fois.
Pour les sables d’Olonne il se passe quelque chose dans les chiffres qu’on ne voit pas ailleurs en France , mais je ne parle pas pour autant d’épidémie. Est ce qu’il s’agit d’un problème de données, de retranscription, d’analyse, sanitaire, … ? Je ne suis pas en mesure de le dire.
Concernant la façon de constituer la carte :
– effectivement l’échelle de couleur a été choisie pour faire ressortir les zones de surmortalité. Ca peut être vu comme un biais, en tout cas c’est volontaire donc assumé.
– je te confirme qu’il s’agit d’une moyenne glissante sur 1 semaine, moyenne que je glisse jours par jours, ce qui génère 2 images par secondes (donc 2 périodes d’une semaine qui se décalent d’un jours par seconde de vidéo). Sur ce point je pense être bon.
– le taux de mortalité est calculé sur les regroupements de communes par rapport à une moyenne sur les 5 dernières années. Dans les 2 cas la population a été réduite aux personnes de plus de 65 ans. Là aussi je suis bon.
– j’en profite pour préciser mon choix de l’âge de 65 ans qui est liée aux catégories INSEE de comptage de la population (0,3,6,11,18,25,40,55,65,80 ans). A l’origine je calculais le taux de mortalité sur la base du recensement de 2016 mais le résultat n’était pas probant. Par ailleurs, j’ai pensé que limiter aux personnes de plus de 80 ans aurait trop réduit la population.
– j’ai pris soin de faire les algorithmes qui permettent d’avoir un résultat qui n’introduit pas trop d’erreur : 20 décès cumulés sur les 5 dernières années (soit 5% d’erreur) est le critère initial de regroupement des communes, 20 décès à minima sur une période d’analyse de 7 jours qui génère un regroupement de regroupements de communes. Au total on peut estimer l’erreur à l’affichage à 10% ce qui me semble raisonnable pour ce type de graphique colorisé.
– je suis plus circonspect sur le fait de faire varier les valeurs de référence des 5 dernières années dans le temps. Oui le taux de mortalité est plus fort en hiver qu’au printemps ou en été, je ne savais pas qu’il s’agissait d’une sinusoïde. Mais peut-on estimer que l’année 2020 de confinement suivra vraiment cette loi ? Pas d’épidémie de grippe et de gastro-entérite ou très peu, temps clément, températures élevées, plus d’activités physiques à risque comme le sport … Par rapport à cela je préfére finalement garder une référence unique tout le long de l’animation ce qui permet de comparer statistiquement directement une image à la suivante. Par contre je ferai varier les mois de moyennage sur les prochaines pour coller à la période analysée. Ca semble un bon compromis, non ?