cassionAnalyse de données

Atelier · Débutant

Le mois où personne n'a rapporté

La couverture penta3 d'un district semble s'effondrer en août. Construisez le script qui détermine s'il s'agit d'un échec du programme ou d'un échec de la notification, et faites-le survivre à l'export du trimestre suivant sans modification.

PythonVotre propre machine90 min

En août, la couverture penta3 de ce district tombe sous le tiers. Quelqu’un vous demandera, en réunion, si la campagne s’est effondrée. La réponse honnête tient en une quarantaine de lignes de Python, et chacune d’elles est une décision que l’on peut manquer sans s’en apercevoir.

Cet atelier s’exécute sur votre propre machine, pas dans Colab. C’est précisément l’intention : la leçon 1 a été consacrée à un environnement réinstallable sans internet et la leçon 8 à un script qui tourne sur l’ordinateur d’un collègue ; un atelier qui vous offrirait un environnement hébergé vous permettrait d’escamoter les deux.

Le fichier

vaccination-coverage-2024.v1.csv — 2 736 lignes, 38 formations sanitaires, six antigènes, douze mois de notification agrégée au format DHIS2. Synthétique. Téléchargez-le depuis la page du jeu de données et placez-le à côté de votre script.

À installer d’abord

Avant d’écrire la moindre analyse :

  1. Un répertoire de projet organisé comme le décrit la leçon 2, les données dans leur propre dossier et aucun chemin absolu dans le code
  2. Un environnement virtuel, et un requirements.txt qui en est issu
  3. Un script qui reçoit le chemin du CSV en argument, et non en constante

Si vous sautez cette étape pour ouvrir un notebook, la suite de l’atelier fonctionnera quand même et vous en aurez retiré moins de la moitié de ce qu’il vise.

Le travail

Produire un seul tableau : la couverture penta3 du district, par mois, corrigée de la complétude de la notification. À côté, la valeur non corrigée, afin que l’écart se voie au lieu d’être affirmé.

Quatre décisions vous séparent de ce tableau.

Le dénominateur est annuel. target_population est la population cible de l’année. Un taux de couverture mensuel se divise par un douzième de cette valeur. Diviser par la valeur entière sous-estime la couverture d’un facteur douze, produit des chiffres autour de 6 % qui ressemblent à une catastrophe, et constitue l’erreur la plus fréquente sur des données de cette forme.

Une formation sanitaire qui n’a pas rapporté n’est pas une formation sanitaire qui n’a vacciné personne. Une structure non déclarante apparaît sous forme de ligne avec report_submitted à faux et doses_administered à zéro. Ces zéros ne sont pas des mesures. Sommer la colonne sans filtrer revient à traiter le silence comme un échec — ce qui produit très exactement la falaise d’août.

La complétude est la correction. Pour chaque mois, calculez la part des formations sanitaires ayant rapporté. Ajustez ensuite le dénominateur à la population réellement couverte par ces structures déclarantes, plutôt qu’à celle du district entier. Indiquez en commentaire laquelle des deux vous avez retenue, et pourquoi.

Le taux d’abandon est un contrôle annuel, pas mensuel. Un penta3 supérieur au penta1 est impossible sur une cohorte et signale une erreur de données. Le bruit d’un mois à l’autre place le penta3 au-dessus du penta1 au moins une fois dans 37 des 38 formations sanitaires : un contrôle mensuel signale donc presque tout le monde et n’apprend rien. Appliquez-le aux totaux annuels.

Ce qu’il faut rendre

Un script unique, lancé par python coverage.py data/vaccination-coverage-2024.v1.csv, qui affiche :

  • la complétude de la notification par mois, en pourcentage
  • la couverture penta3 par mois, non corrigée et corrigée, côte à côte
  • le taux d’abandon penta1-penta3 de chaque formation sanitaire, sur totaux annuels
  • les formations sanitaires dont l’abandon annuel est négatif, nommées

Vérifiez vos chiffres

Les notes du jeu de données indiquent ce que trouve une analyse correcte. Votre script doit s’accorder avec les quatre valeurs :

Attendu
Complétude de la notification, année entière environ 77 %
Complétude de la notification, août 29 %
Couverture penta3 corrigée de 70 à 75 %, toute l’année
Formations sanitaires à abandon annuel négatif six

Si votre couverture d’août reste une falaise après correction, c’est que la correction ne s’applique pas au dénominateur. Si vous relevez trente-sept formations sanitaires signalées, c’est que vous contrôlez au mois.

Les questions à traiter en prose

Trois phrases chacune. Le script est le moyen d’y parvenir ; ces questions sont l’atelier.

1. Après correction, la couverture d’août rejoint celle du reste de l’année. Que cela vous autorise-t-il à dire en réunion, et — c’est la moitié la plus difficile — que cela ne vous autorise-t-il pas à dire des enfants des neuf formations sanitaires qui n’ont pas rapporté ?

2. Vous avez retenu l’un des deux dénominateurs possibles pour la correction de complétude. Nommez l’autre, et dites ce qu’il aurait surestimé.

3. Six formations sanitaires déclarent plus de penta3 que de penta1 sur l’année. S’agit-il d’une décision de nettoyage, d’une question de saisie ou d’un problème de supervision ? Dites à qui vous transmettriez le cas et ce que vous lui demanderiez.

Comment savoir que c’est terminé

Un collègue clone votre projet, crée l’environnement à partir de votre requirements.txt, lance votre script sur le même CSV et obtient les quatre mêmes sorties. Si votre script contient un chemin commençant par /Users ou C:, ou un 2024 écrit en dur, il n’est pas terminé — l’export du trimestre prochain portera sur 2025 et il devra tourner quand même.

Ce que cet atelier n’est pas

Il ne vous demande pas de décider si la correction de complétude doit être transmise au ministère. C’est une discussion de définition d’indicateur, et sa place est dans Fondamentaux de l’analyse de données. Ici, vous vous assurez seulement que les deux chiffres sont calculés assez correctement pour qu’on puisse en discuter.