Leçon 2 sur 8
Unité · De l'intention à l'indicateur
L'anatomie d'un indicateur
Quatre familles, une unité de mesure, un sens, et les trois questions à trancher avant d'écrire du code. Plus la raison pour laquelle 4 218 dépistages, 4 206 enregistrements et le nombre d'enfants sont trois indicateurs différents.
De quoi il est fait
Retirez le vocabulaire des cadres et un indicateur a cinq parties.
- Une population — qui ou quoi est compté.
- Une condition — ce qui doit être vrai d’eux pour figurer au numérateur.
- Un dénominateur — ce à quoi on les rapporte, sauf s’il s’agit d’un simple décompte.
- Une période — sur quelle durée.
- Une unité de mesure — personnes, doses, épisodes, pourcentage, litres par personne et par jour.
Omettez-en une et l’indicateur est ambigu. Omettez la dernière et il est inutilisable dans une phrase, or c’est là qu’il finira.
Quatre familles, et le choix entre elles
| Famille | Forme | Exemple | À surveiller |
|---|---|---|---|
| Décompte | Un nombre de choses | Enfants dépistés | Pas de dénominateur ; incomparable entre lieux |
| Proportion | Partie sur tout, mêmes unités | Part d’enfants avec un PB sous 125 mm | Le numérateur doit être inclus dans le dénominateur |
| Taux | Événements sur population-temps | Nouvelles admissions pour 1 000 moins de cinq ans par mois | L’unité de temps doit figurer dans le libellé |
| Rapport / indice | Deux quantités non emboîtées | Abandon penta1-penta3 ; score de consommation alimentaire | Peut dépasser 1 ; le sens n’est pas évident |
L’erreur de conception la plus fréquente est de rapporter un décompte là où le public lira une proportion. « 375 enfants référés » sonne comme beaucoup ou peu selon le nombre d’enfants dépistés, et le lecteur fournira son propre dénominateur si vous ne le faites pas.
screened = len(muac)
referred = muac["outcome"].str.startswith("referred").sum()
print(f"{referred} referred of {screened} screened = {referred / screened:.1%}")
screened <- nrow(muac)
referred <- sum(startsWith(muac$outcome, "referred"))
sprintf("%d referred of %d screened = %.1f%%", referred, screened, 100 * referred / screened)
375 sur 4 218, soit 8,9 %. Rapportez les deux. Le décompte est ce sur quoi un logisticien commande les intrants ; la proportion est ce qui dit si cette commune va plus mal que celle-là.
Trois nombres qui ressemblent à un seul
Voici l’ambiguïté qui coûte le plus de temps en pratique. Le registre de dépistage soutient trois indicateurs différents de « nombre d’enfants ».
print("screening events: ", len(muac))
print("distinct child_id: ", muac["child_id"].nunique())
c(events = nrow(muac), ids = dplyr::n_distinct(muac$child_id))
- 4 218 événements de dépistage. Ce que les agents de santé communautaires ont fait. Le bon numérateur pour la charge de travail, la consommation d’intrants et la rémunération.
- 4 206 identifiants distincts. Douze formulaires ont été envoyés deux fois sur une mauvaise connexion, donc douze événements doublonnent un événement existant.
- Environ 4 200 enfants. Six enfants de plus ont été réinscrits sous un nouvel identifiant — repérables seulement par l’appariement d’enregistrements du cours de nettoyage, et jamais connus exactement.
Trois nombres défendables, un registre, et l’écart entre le plus grand et le plus petit est de 0,4 %. La taille de l’écart n’est pas le sujet. Le sujet est que « enfants dépistés » ne dit pas lequel, et dès qu’un bailleur compare votre chiffre à celui d’un partenaire, celui des trois que chacun a choisi décide de votre accord.
Le nom de l’indicateur doit donc le porter — screening_events,
children_screened_deduplicated. Jamais children_screened tout seul.
L’unité de mesure appartient au nom
indicators = {
"children_screened_count": screened,
"gam_prevalence_percent": round(100 * gam_cases / assessed, 1),
"admissions_per_1000_under5_per_month": round(1000 * admissions / under5 / 12, 2),
}
indicators <- list(
children_screened_count = screened,
gam_prevalence_percent = round(100 * gam_cases / assessed, 1),
admissions_per_1000_under5_per_month = round(1000 * admissions / under5 / 12, 2)
)
Des noms longs, et ils le valent. Une colonne nommée rate dans un tableur
circulant entre quatre organisations sera multipliée par 100 par quelqu’un,
divisée par 12 par un autre, et comparée par un troisième à un chiffre au
dénominateur différent. Le nom est la défense la moins chère disponible.
Le sens — dites de quel côté est le mieux
Tout indicateur a besoin d’un sens énoncé, car un nombre surprenant d’entre eux sont ambigus.
- Plus haut est mieux — couverture, achèvement, assiduité.
- Plus bas est mieux — abandon, taux de défaillants, prévalence de la malnutrition aiguë.
- Ni l’un ni l’autre, en soi — les décomptes de référencements. Davantage de référencements peut signifier un meilleur dépistage ou une situation qui se dégrade, et l’indicateur ne peut pas trancher.
Cette troisième catégorie est plus grande qu’on ne le croit et c’est là que les tableaux de bord déraillent — un feu tricolore appliqué à un indicateur sans sens produit une alerte dont personne ne sait dire ce qu’elle veut dire. Si vous ne pouvez pas dire de quel côté est le mieux, l’indicateur a besoin d’un indicateur partenaire, pas d’une couleur.
Avancé et retardé
Une distinction voisine qui décide de l’utilité d’un indicateur pour le pilotage.
- Retardé — dit ce qui s’est passé. Prévalence de la MAG, taux de guérison, couverture annuelle. Exact, indispensable à la redevabilité, inutile au pilotage, car le trimestre est fini quand il bouge.
- Avancé — bouge tôt et annonce. Jours de rupture de stock, taux de défaillants dans les deux premières semaines de traitement, absences consécutives avant qu’un enfant décroche.
Un système de suivi entièrement fait d’indicateurs retardés rend fidèlement compte de choses que plus personne ne peut changer. Visez au moins un indicateur avancé par effet, et attendez-vous à ce qu’il soit plus bruité — c’est l’échange que vous faites.
Trois questions avant tout code
Répondez-y par écrit avant d’ouvrir un éditeur. Cela prend cinq minutes et évite la réécriture.
1. Quelle décision ce chiffre éclaire-t-il ? Si la réponse est « le bailleur le demande », dites-le honnêtement et gardez-le bon marché. Si deux décisions distinctes en sortent, vous avez deux indicateurs sous un seul nom.
2. Qu’est-ce qui le ferait bouger, autre que ce qui m’intéresse ? La couverture bouge avec le dénominateur, avec la complétude du rapportage, avec les mouvements de population, et occasionnellement avec la vaccination. Lister les alternatives est la manière de savoir quoi rapporter à côté.
3. Qui d’autre le calcule déjà, et comment ? Presque toujours quelqu’un le fait — UNICEF, l’OMS, le cluster, le ministère. La leçon 6 y est entièrement consacrée, et la réponse modifie votre définition plus souvent qu’elle ne la confirme.
Un indicateur incalculable n’est pas un indicateur
Le dernier contrôle, et il tue plus d’indicateurs proposés que tous les autres.
Avant l’entrée dans un cadre logique, confirmez que la donnée existe — quel système la détient, à quelle granularité, à quelle fréquence, et qui l’extrait. Un indicateur dont le moyen de vérification est « les registres du programme » est une promesse que personne n’a vérifiée.
REQUIRED = {"child_id", "commune", "screening_date", "muac_mm", "oedema", "outcome"}
missing = REQUIRED - set(muac.columns)
assert not missing, f"indicator cannot be computed; missing {missing}"
REQUIRED <- c("child_id", "commune", "screening_date", "muac_mm", "oedema", "outcome")
stopifnot(all(REQUIRED %in% names(muac)))
Le cours Évaluation de la qualité des données a trouvé la promptitude non mesurable parce qu’un champ n’était pas dans l’export. C’est ce contrôle-ci, découvert dix-huit mois trop tard.
Un indicateur est la promesse qu’un nombre peut être produit, de façon répétée, selon la même définition. Tout le reste de ce cours consiste à tenir cette promesse.
La suite
Vous avez l’anatomie. La leçon suivante en fait l’artefact autour duquel ce cours est bâti — la fiche de référence, champ par champ, et le test qui dit si la vôtre est terminée.