# Notes techniques — Tableau de bord de programme nutritionnel

Documentation technique du projet *Tableau de bord de programme nutritionnel*. Le
notebook applique ces décisions ; ce document est là où elles sont argumentées.
Si un chiffre du tableau de bord est contesté, la réponse est ici.

- **Jeu de données source :** `muac-screening-artibonite-2024.v1.csv`
  (4 218 enregistrements de dépistage, 12 communes, janv.–déc. 2024)
- **Analyse :** `notebooks/nutrition-dashboard.python.fr.ipynb`
- **Décision éclairée :** vers lesquels des douze sites PCIMA réaffecter le stock
  d'ATPE avant l'ouverture du prochain trimestre
- **Normes appliquées :** standards de croissance OMS (seuils de PB), GAR

Tous les jeux de données de cette plateforme sont synthétiques. Aucun enfant réel
n'y est décrit, et ces chiffres ne doivent pas être cités comme une situation
nutritionnelle réelle.

---

## 1. Définitions des indicateurs

Le tableau de bord affiche ce tableau à côté des chiffres. Un nombre et sa
définition voyagent ensemble, sinon la dispute mensuelle sur le dénominateur
recommence.

| Indicateur | Numérateur | Dénominateur | Valeur |
| --- | --- | --- | ---: |
| MAG | PB < 125 mm **ou** œdèmes bilatéraux prenant le godet | Enfants avec une mesure de PB ou une évaluation d'œdèmes saisie | 8,5 % |
| MAS | PB < 115 mm **ou** œdèmes bilatéraux prenant le godet | Enfants avec une mesure de PB ou une évaluation d'œdèmes saisie | 2,3 % |
| Taux d'évaluation | Enfants avec PB ou œdèmes saisis | Enfants dépistés | 0,997 au niveau district |

**Désagrégation.** Valide au niveau commune et mois. Non valide en dessous de la
commune : le registre ne porte aucun identifiant de site plus fin que la commune,
et un taux communal présenté comme un taux de site est une autre affirmation.

**Les œdèmes priment sur l'anthropométrie.** Un enfant présentant des œdèmes
bilatéraux prenant le godet est un cas de MAS quelle que soit la valeur du PB.
C'est pourquoi le numérateur est une disjonction et pourquoi le dénominateur
compte un enfant évalué pour les œdèmes sans mesure de PB.

**Le dénominateur n'est pas « enfants dépistés ».** 14 enfants n'ont ni PB
exploitable ni évaluation d'œdèmes saisie. Les compter au dénominateur ferait
rapporter une prévalence plus basse pour une raison sans rapport avec la
nutrition. Le taux d'évaluation existe pour que cette exclusion soit visible
plutôt que silencieuse.

---

## 2. Ce qu'aucun de ces indicateurs n'est

**La couverture du programme.** Ce registre contient les enfants venus se faire
dépister, non les enfants qui existent. Rien ici n'estime la part des cas que le
programme atteint — cela demande un dénominateur populationnel et une enquête de
couverture (SQUEAC/SLEAC). Tout rapport utilisant ces chiffres doit le dire.

**Un résultat de traitement.** Les taux de guérison, d'abandon et de décès
proviennent du registre de traitement, non du registre de dépistage. Le cas
d'usage du projet porte sur l'allocation de stock, et le dépistage en est
l'indicateur avancé.

---

## 3. Décisions de nettoyage

Chaque règle ci-dessous correspond à un défaut documenté dans les `knownIssues`
du jeu de données. Les effets sont mesurés sur le fichier v1 commité.

| N° | Règle | Justification | Effet |
| --- | --- | --- | ---: |
| 1 | PB < 40 → multiplier par 10 | Des valeurs proches de 12,5 sont des centimètres saisis dans un champ en millimètres. Laissées telles quelles, chacune devient un cas de MAS | 7 corrigés |
| 2 | PB hors 80–220 mm → manquant | Hors de la plage physiologique pour la tranche d'âge dépistée ; non récupérable par une règle | 0 en v1 |
| 3 | `-99` → manquant à la lecture | Sentinelle de valeur manquante propre au registre ; lue comme un nombre, c'est un cas de MAS sévère | appliqué au chargement |
| 4 | Codes texte d'œdèmes harmonisés (`Y`/`y`/`yes`/`true`/`TRUE` → vrai, et les négatifs) | Un site a saisi `Y`/`N`. Une conversion booléenne les transforme silencieusement en manquants | — |
| 5 | Lignes strictement dupliquées supprimées | Formulaires resoumis ; un doublon exact n'est pas un second dépistage | 12 supprimés |

**La règle 1 est celle à défendre.** Multiplier par dix est une inférence, non une
observation. Elle ne s'applique qu'en dessous de 40 mm — seuil qu'aucun PB
plausible n'atteint, donc aucune mesure authentique n'est réécrite — et le
décompte est affiché par le notebook pour qu'un relecteur voie quelle part de la
charge de cas en dépend. Sept enregistrements sur 4 218.

**La règle 2 met à manquant plutôt que de supprimer la ligne.** L'enfant a été
dépisté ; seule la mesure est inexploitable. Supprimer la ligne réduirait le
nombre de dépistages et surestimerait le taux d'évaluation.

44 enregistrements restent sans évaluation d'œdèmes après la règle 4. Ils sont
conservés, et comptés au dénominateur lorsqu'un PB existe — un enfant à 130 mm
sans vérification d'œdèmes n'est pas un cas, et les exclure gonflerait tous les
taux.

Lignes analysées après nettoyage : **4 206**. Enfants évalués : **4 204**.

---

## 4. Pourquoi le tableau de bord affiche un intervalle

Le classement des sites porte un intervalle de confiance à 95 %, calculé par la
méthode de Clopper-Pearson (binomiale exacte) sur les cas de MAG et les enfants
évalués du site.

Clopper-Pearson plutôt que l'approximation normale car plusieurs sites comptent
moins de 20 cas, où l'intervalle normal est trop étroit et peut descendre sous
zéro.

| Commune | Évalués | MAG | IC 95 % |
| --- | ---: | ---: | --- |
| Anse-Rouge | 228 | 15,4 % | 10,9 – 20,7 % |
| Gros-Morne | 361 | 13,6 % | 10,2 – 17,5 % |
| L-Estère | 189 | 12,7 % | 8,3 – 18,3 % |
| Ennery | 261 | 8,8 % | 5,7 – 12,9 % |
| Terre-Neuve | 241 | 8,7 % | 5,5 – 13,0 % |
| Marmelade | 255 | 8,2 % | 5,2 – 12,3 % |
| Gonaïves | 767 | 7,3 % | 5,6 – 9,4 % |
| Saint-Michel | 332 | 7,2 % | 4,7 – 10,6 % |
| Desdunes | 196 | 7,1 % | 4,0 – 11,7 % |
| Saint-Marc | 630 | 7,1 % | 5,3 – 9,4 % |
| Verrettes | 297 | 6,7 % | 4,2 – 10,2 % |
| Dessalines | 447 | 5,4 % | 3,5 – 7,9 % |

**Le classement n'est pas une file d'attente.** Les intervalles d'Ennery jusqu'à
Dessalines se recouvrent largement ; l'ordre entre eux n'est pas soutenu par le
dépistage. Seuls trois sites — Anse-Rouge, Gros-Morne, L-Estère — ont une borne
basse supérieure au taux médian du district, et ce sont aussi les seuls dont
l'intervalle atteint le seuil d'urgence de 15 %.

**Cet ensemble de trois est la réponse du tableau de bord**, non le haut de la
liste triée. Un gestionnaire allouant du stock sur le seul ordre de rang
traiterait l'écart entre Ennery (8,8 %) et Terre-Neuve (8,7 %) comme une
information. Il ne l'est pas.

---

## 5. Traitement des périodes de rapportage

Le dépistage court du 15 janvier au 13 décembre 2024. Les premier et dernier mois
sont donc partiels : décembre porte 156 dépistages contre une moyenne mensuelle
proche de 375.

Le tableau de bord **étiquette** les mois partiels plutôt que de les supprimer ou
de laisser un lecteur prendre la chute pour une baisse réelle. Une prévalence
calculée sur un mois à moitié rapporté est précisément l'échec que ce projet
existe pour prévenir, et masquer le mois laisserait un gestionnaire se demander
où sont passées les données.

---

## 6. Panneau de qualité des données

Le panneau qui rend le tableau de bord digne de confiance plutôt
qu'impressionnant. Il classe les sites par largeur d'intervalle de confiance,
pour que le gestionnaire voie quels taux sont trop imprécis pour agir.

Une commune se détache nettement sur l'âge manquant : **Gros-Morne, 17,7 %**,
contre 3 à 6 % partout ailleurs — une seule semaine de campagne avec un
formulaire mal configuré. Cela n'affecte pas l'indicateur PB, qui ne requiert
aucun âge, et le tableau de bord le dit plutôt que d'écarter le site. L'âge ne
compte que si le registre sert plus tard à une analyse poids-pour-taille, où la
règle longueur/taille bascule à 24 mois.

---

## 7. Rafraîchissement et hypothèses d'exploitation

- **Cadence.** Le tableau de bord est reconstruit depuis l'export courant ; le
  délai de rapportage de six semaines que ce projet existe pour supprimer est une
  contrainte de processus, non une contrainte technique.
- **Idempotence.** Toute la chaîne est déterministe et rejouable — les règles 1
  à 5 appliquées au même export produisent toujours les mêmes chiffres.
- **Mode de défaillance à surveiller.** Un site qui cesse de transmettre apparaît
  comme moins de dépistages, non comme une lacune signalée. Surveiller le nombre
  mensuel de dépistages par site à côté des taux.

---

## 8. Limites

1. Le dépistage n'est pas une enquête. Les enfants amenés à un dépistage ne sont
   pas un échantillon aléatoire d'enfants, et l'auto-sélection va plausiblement
   vers les plus fragiles. La prévalence ici n'est pas la prévalence
   communautaire.
2. Le PB et le poids-pour-taille identifient des enfants qui se recoupent sans se
   confondre. Une MAG par PB n'est pas comparable à une MAG par Z poids-taille
   d'enquête SMART ; voir le projet *Analyse d'enquête SMART*.
3. Aucun appariement au niveau de l'enfant. Un enfant dépisté deux fois lors de
   mois différents compte deux fois ; le registre n'a pas d'identifiant de suivi.
4. `-99` est la seule sentinelle traitée. Si un futur export en introduit une
   autre, la règle 3 doit être étendue — c'est une liste d'autorisation, non une
   heuristique.

---

## 9. Reproduire cette analyse

```bash
pnpm examples:build
```

Puis exécuter `notebooks/nutrition-dashboard.python.fr.ipynb`. Il requiert
pandas, numpy et scipy (pour l'intervalle binomial exact) et lit le CSV en HTTPS.

Le jeu de données est versionné par nom de fichier et immuable ; une correction
est publiée en `.v2.csv` avec ce document révisé en même temps.

---

## 10. Journal des versions

| Date | Modification |
| --- | --- |
| 27/07/2026 | Première émission, sur le jeu de données v1. |
