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.
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 :
- 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
- Un environnement virtuel, et un
requirements.txtqui en est issu - 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.