Leçon 4 sur 8
Unité · Ce qui voyage avec le nombre
Le panneau qui a attrapé un nombre faux dans ce cours
Deux artefacts de cette plateforme ont calculé la couverture en eau améliorée depuis le même fichier et obtenu 82,3 % et 79,7 %. La documentation technique avait raison et la leçon avait tort, et rien d'autre qu'un panneau de définitions et un second calcul ne l'aurait trouvé.
Ce qui s’est passé
Le projet EAH porte un document de définitions d’indicateurs depuis sa rédaction. Il énonce la couverture en eau améliorée à 82,3 % et le service de base à 56,3 %, avec le numérateur, le dénominateur et le standard de chacun.
La leçon du cours EAH, la figure commitée et la première version du tableau de bord du projet disaient toutes 79,7 % et 54,7 %.
# What the lesson had
IMPROVED = {
"piped-into-dwelling", "piped-into-yard", "public-tap",
"borehole", "protected-well", "protected-spring",
}
# What the JMP definition actually lists
improved <- c("piped-into-dwelling", "piped-into-yard", "public-tap",
"borehole", "protected-well", "protected-spring",
"tanker-truck") # packaged or delivered water
La liste améliorée du JMP inclut l’eau conditionnée ou livrée, c’est-à-dire
tanker-truck dans ce jeu de données. La leçon l’avait omise — dans un cours qui
nomme explicitement l’échelle JMP et l’ODD 6.1.1 — et sous-estimait la couverture
améliorée de 2,6 points et le service de base de 1,6.
Rien ne l’a détecté pendant des mois. La leçon était cohérente avec elle-même, la figure s’accordait avec la leçon parce qu’elle employait le même ensemble, les tests passaient, et le nombre était plausible. Cela a surgi le jour où un second artefact a calculé le même indicateur depuis le même fichier et n’était pas d’accord.
Pourquoi c’est la documentation qui avait raison
Parce qu’elle énonçait la définition au lieu de l’implémenter.
### 2.1 Improved source
| Numerator | Households whose main drinking water source is piped, borehole,
| | protected well, protected spring, rainwater or packaged water
| Denominator | All surveyed households
| Value | 0.823
| Valid at | Household, community, district
| Standard | WHO/UNICEF JMP service ladders
Écrire « ou eau conditionnée » en prose l’a rendue vérifiable contre le standard. Un ensemble Python de six chaînes ne se lit comme rien ; un numérateur écrit en phrase peut être comparé à la définition qu’il prétend implémenter.
C’est tout l’argument en faveur du panneau. Ce n’est pas la documentation du code — c’est la spécification que le code est censé satisfaire, écrite sous une forme qu’un spécialiste du secteur peut auditer sans lire de Python.
Ce que contient une entrée de définition
Six champs, et les deux derniers sont ceux qui manquent d’ordinaire.
| Champ | Exemple |
|---|---|
| Numérateur | Ménages avec une source améliorée et un trajet aller-retour de 30 minutes ou moins |
| Dénominateur | Tous les ménages enquêtés |
| Valeur | 0,563 |
| Valide à | Ménage, communauté, district |
| Standard | Échelles de service JMP ; ODD 6.1.1 |
| Décision éclairée | Quelles communautés reçoivent la réhabilitation |
« Valide à » prévient le mésusage le plus courant. Un nombre calculé au niveau district et cité au niveau communauté est la même arithmétique répondant à une autre question, et énoncer le niveau est ce qui l’arrête.
« Décision éclairée » est ce qui justifie l’existence de l’indicateur. La documentation EAH écrit « Aucune. Reporté pour que le rapport puisse montrer ce qui a changé » face à la couverture améliorée — entrée d’une honnêteté inhabituelle et exactement juste : le chiffre est conservé pour quantifier un écart, non pour être employé.
Où vit le panneau
Trois endroits, et ce ne sont pas des alternatives.
| Où | Ce qu’il contient |
|---|---|
| Sur le tableau de bord | Une proposition par tuile — « améliorée et à 30 min ou moins » |
| Dans la documentation technique | L’entrée complète, six champs, par indicateur |
| Dans le code | Un commentaire nommant le standard et la raison |
# The JMP improved list, which includes packaged or delivered water —
# `tanker-truck` here. Omitting it understates improved coverage by 2.6
# points and disagrees with the project's own indicator documentation.
IMPROVED = {...}
# The comment is what makes the next reader check rather than assume.
La proposition de la tuile est ce que voit un lecteur ; le document est ce que lit un contestataire ; le commentaire est ce qu’édite le prochain analyste. Les trois, ou les trois dérivent.
La vérification que le panneau rend possible
Calculez l’indicateur deux fois, depuis des codes différents, et comparez. C’est ce qui a trouvé l’erreur ici, et c’est une vérification qu’on peut faire délibérément plutôt que par accident.
from_pipeline = summary["basic_service"]
from_documentation = 0.563 # the value the definition panel states
assert abs(from_pipeline - from_documentation) < 0.001, (
f"pipeline {from_pipeline:.3f} disagrees with the definition panel"
)
stopifnot(abs(basic_service - 0.563) < 0.001)
Une valeur énoncée dans le panneau de définitions est un jeu d’essai. Une fois que le panneau porte le nombre, toute chaîne qui le calcule autrement échoue bruyamment — c’est la règle du cours sur les chaînes reproductibles arrivant là où personne ne l’attend.
Et quand ils divergent, décidez lequel fait autorité avant d’en changer un. Ici le standard a tranché : le JMP liste l’eau livrée, donc la documentation avait raison et quatre autres artefacts ont été corrigés pour s’aligner.
La dispute que cela prévient chaque mois
Le panneau de définitions d’indicateurs existe à cause d’une réunion récurrente précise.
« La couverture vaut 82 %. » — « Nous avons rapporté 76 % le trimestre dernier. » — « C’était une autre définition. » — « Laquelle est la bonne ? »
Les deux sont bonnes et ce sont des indicateurs différents. Sans panneau, cette conversation prend vingt minutes chaque trimestre et n’est jamais tranchée ; avec un panneau, elle prend le temps d’ouvrir le document.
Les trois désaccords les plus courants de ce secteur, tous réglés par un panneau :
Source contre service. Source améliorée, 82,3 %. Service de base, 56,3 %. Vingt-six points, et les deux sont justes.
Population du numérateur contre celle du dénominateur. Un taux brut de scolarisation de 109,2 % est un dénominateur projeté, non plus d’enfants qu’il n’en existe.
Dépistage contre enquête. Un taux de dépistage n’est pas une estimation de prévalence, et le tableau de bord nutrition d’ici le dit dans sa propre section « ce que cette page ne montre pas ».
Rapportez-le en entier
Indicator definitions
Full definitions in docs/indicator-definitions.md: numerator, denominator,
the level it is valid at, the standard applied, and the decision it
informs, for each of the nine indicators in this report.
Each dashboard tile carries the definition compressed to one clause.
The pipeline asserts its computed values against the values stated in the
definitions document. A disagreement fails the build rather than reaching
a report.
Change log: 2026-07-29, improved source corrected from 79.7% to 82.3%.
Delivered water (tanker truck) was omitted from the JMP improved list.
The definitions document had it right; the analysis code did not.
L’entrée du journal des modifications est la partie à copier. Un indicateur qui a changé de définition exige une ligne datée disant ce qui a changé et dans quel sens, sans quoi toute comparaison avec un rapport antérieur est silencieusement fausse.
La suite
Le tableau de bord répond à une question. Le rapport est là où la réponse se discute, et la leçon suivante porte sur la rédaction d’un rapport dont les constats, les limites et la recommandation peuvent être lus séparément — parce qu’ils le seront.