Atelier · Intermédiaire
La jointure qui décide d'une prévalence
Joindre 930 enfants d'une enquête SMART à la table de référence OMS 2006 sur une clé en trois parties dont l'une est un décimal arrondi et l'autre dérivée d'une troisième colonne. Quatre enfants ne s'apparient pas, et ces quatre-là sont le constat.
Une prévalence issue d’une enquête SMART repose sur une jointure. Le score z poids-pour-taille de chaque enfant provient de la recherche de sa longueur ou de sa taille dans la table de référence OMS 2006, et la clé de recherche a trois parties, dont l’une est un décimal arrondi et une autre est dérivée d’une tout autre colonne.
Ratez une seule partie de cette clé et des enfants échouent silencieusement à s’apparier. Ils sortent alors du dénominateur, et la prévalence que vous publiez est calculée sur les enfants que la jointure a bien voulu trouver.
Les fichiers
smart-nutrition-survey-2024.v1.csv — 930 enfants de 6 à 59 mois issus d’une
enquête à 30 grappes, mesurés par quatre équipes. Poids et taille bruts ; aucun
score z n’est livré, car les calculer est l’exercice.
public/datasets/reference/who-2006-weight-for-lenhei.csv — les paramètres LMS
poids-pour-longueur et poids-pour-taille de l’OMS 2006, exportés du paquet R
officiel anthro. 2 404 lignes : sexe, lorh (L pour longueur, H pour
taille), lenhei par pas de 0,1 cm, et les trois paramètres LMS.
C’est une table de référence, pas un jeu de données. Elle existe parce que R dispose du paquet officiel de l’OMS et que Python n’a pas d’équivalent maintenu qui s’installe proprement. Lisez la table ; ne réimplémentez pas l’interpolation LMS d’après un manuel.
Préparez d’abord
Un dossier de projet, les deux fichiers en lecture seule, un répertoire
outputs/, et un script qui s’exécute de bout en bout depuis un interpréteur
neuf.
La tâche
Produire les prévalences de malnutrition aiguë globale et sévère pour cette enquête, avec le nombre d’enfants au dénominateur énoncé, et un tableau de rapprochement montrant ce qu’il est advenu de chacun des 930.
Six obstacles.
La clé a trois parties. sex, le standard (L ou H), et lenhei arrondi à
une décimale. Les trois doivent être construites des deux côtés avant de pouvoir
joindre, et le standard n’est pas une colonne de l’enquête — il se dérive de
measured_lying.
Longueur et taille ne sont pas la même mesure. Un enfant mesuré couché est d’environ 0,7 cm plus long que le même enfant debout. La convention de l’OMS veut que les enfants de moins de 24 mois soient évalués selon le standard de longueur et ceux de 24 mois et plus selon le standard de taille, si bien qu’un enfant mesuré dans la position ne correspondant pas au standard de son âge exige l’application de l’ajustement de 0,7 cm avant la recherche. Attention au signe : l’inverser biaise tous les scores z de la moitié la plus jeune de l’échantillon.
Un décimal est une mauvaise clé de jointure. lenhei est stocké à une
décimale des deux côtés et il faut arrondir plutôt que se fier à l’égalité — un
86.3 issu d’un ajustement n’est pas nécessairement le même flottant qu’un 86.3
lu dans la référence. Arrondissez une fois, à une décimale, des deux côtés, dans
la même fonction.
Quatre enfants ne s’apparieront pas. Ne les supprimez pas et ne les examinez pas un par un. Faites une anti-jointure, regardez les quatre lignes ensemble, et ce qu’elles ont en commun vous sautera aux yeux. Elles sont récupérables, et les défauts connus du jeu de données disent combien d’enregistrements de ce type existent au total.
La référence ne couvre pas tout. Le standard de longueur va de 45,0 à 110,0 cm et celui de taille de 65,0 à 120,0 cm. Un enfant hors de la plage de son standard n’a pas de valeur de référence et est réellement inclassable, ce qui est différent d’un enfant dont la mesure a été mal saisie.
Deux règles de signalement, deux réponses. Les valeurs aberrantes OMS excluent les scores z hors de l’intervalle -5 à +5. Les valeurs aberrantes SMART excluent les observations à plus de 3 ET de la moyenne de l’enquête. Elles écartent des enfants différents. Dites laquelle vous avez employée.
Ce qu’il faut rendre
Un script Python, exécuté depuis un interpréteur neuf, produisant :
- un tableau de rapprochement rendant compte des 930 enfants — appariés, sans mesure, hors plage de référence, signalés, analysés — dont la colonne totalise 930
- les prévalences MAG et MAS avec le dénominateur analysé énoncé à côté de chacune
- les mêmes prévalences calculées avec les valeurs aberrantes OMS puis SMART, côte à côte
- la prévalence par équipe de mesure, avec le nombre d’enfants par équipe
- une assertion pour chaque jointure du script
Vérifiez vos chiffres
Les notes du jeu de données indiquent ce que trouve une analyse correcte.
| Attendu | |
|---|---|
| Enfants analysés après contrôles de plage et signalement | environ 874 |
| Malnutrition aiguë globale | environ 14,9 % |
| Malnutrition aiguë sévère | environ 3,9 % |
| MAG de l’équipe 3 | environ 22 % |
| MAG des autres équipes | 10 % à 16 % |
Les œdèmes priment sur l’anthropométrie : un enfant présentant des œdèmes bilatéraux prenant le godet est en malnutrition aiguë sévère quel que soit son poids-pour-taille, si bien que le numérateur de la MAS n’est pas simplement le décompte sous -3 scores z.
Si votre dénominateur vaut 915, vous avez supprimé les enfants non appariés en silence. Si la MAG est plutôt proche de 12 %, vérifiez le signe de l’ajustement longueur-taille.
Les questions à traiter en prose
Trois phrases chacune.
1. Quatre enfants ont échoué à la jointure. Dites ce qu’ils ont en commun, comment une anti-jointure les a trouvés en une ligne là où une recherche ligne à ligne n’y serait pas parvenue, et ce qu’une jointure interne aurait fait à la prévalence publiée.
2. Cette enquête se situe juste sous le seuil d’urgence de 15 %. Nommez deux décisions de jointure de votre script susceptibles de la faire franchir, et dites dans quel sens chacune la déplace.
3. La MAG de l’équipe 3 est d’environ 22 % contre 10 à 16 % pour les autres. Expliquez pourquoi c’est un constat de mesure et non un constat nutritionnel, et ce que vous inscririez à ce sujet dans le rapport d’enquête.
Comment savoir que c’est fini
Supprimez outputs/, redémarrez l’interpréteur, exécutez une fois, et tous les
tableaux sont régénérés à l’identique. Votre tableau de rapprochement totalise
exactement 930, et chaque jointure du script passe soit un argument validate=,
soit est suivie d’une assertion sur le nombre de lignes.
Ce que ce laboratoire n’est pas
Ce n’est pas de l’analyse d’enquête nutritionnelle. Ce que signifie la MAG, pourquoi les seuils IPC sont là où ils sont, et comment se juge un rapport de plausibilité SMART relèvent du contenu nutrition. Ce laboratoire porte sur la jointure — une clé composite à construire, une partie de clé dérivée, un flottant qu’il faut arrondir avant de pouvoir le comparer, et quatre lignes dont l’échec d’appariement vaut plus que les 915 qui ont réussi.