Leçon 1 sur 8
D'où viennent les données de programme
La structure des exports CommCare, KoboToolbox et DHIS2, la manière dont chacun vous résiste différemment, et les questions à poser avant d'écrire la moindre ligne de code.
Les trois exports que vous rencontrerez
La plupart des chargés de suivi-évaluation héritent de données issues de l’un de ces trois systèmes. Chacun a ses habitudes, et les connaître fait gagner une demi-journée.
CommCare exporte une ligne par soumission de formulaire, les groupes répétés
étant aplatis en colonnes numérotées (child_1_muac, child_2_muac, et ainsi
de suite jusqu’à la largeur du formulaire le plus fourni du fichier). Défaire
cet aplatissement est la première opération à mener. Cela signifie aussi que le
nombre de colonnes change d’un export à l’autre : un mois où un ménage comptait
neuf enfants produit neuf jeux de colonnes, et le fichier du mois suivant en
comporte sept.
KoboToolbox exporte une structure proche du XLSForm, les répétitions se
trouvant dans des feuilles distinctes reliées par _index et _parent_index.
C’est plus honnête que la structure CommCare, mais cela veut dire qu’une analyse
qui ignore la seconde feuille analyse en réalité des ménages et non des
personnes.
DHIS2 exporte des données agrégées — déjà sommées par période et par unité d’organisation. La question n’est donc que rarement « comment nettoyer ceci », mais presque toujours « qu’a-t-on exactement compté ». On ne récupère pas un individu à partir d’un tableau croisé DHIS2, et on ne recalcule pas un dénominateur figé en amont de soi.
L’unité d’observation décide de tout
Avant toute chose, répondez à une question : qu’est-ce qu’une ligne ?
| Export | Une ligne représente | Le piège |
|---|---|---|
| Extraction CommCare | Une soumission de formulaire | Un formulaire peut couvrir plusieurs enfants |
| Feuille principale Kobo | Un entretien | Les membres sont dans la feuille de répétition |
| Feuille de répétition Kobo | Un membre | Aucun contexte ménage avant la jointure |
| Tableau croisé DHIS2 | Une unité d’organisation, une période, un élément | Les individus ont définitivement disparu |
Se tromper ici produit une analyse cohérente avec elle-même et entièrement fausse. Un registre de dépistage où une ligne est une soumission et non un enfant rapportera une charge de cas trop faible d’exactement le nombre de ménages à plusieurs enfants, et rien dans le résultat n’aura l’air anormal.
Posez la question à voix haute avant d’ouvrir le fichier, et inscrivez la réponse en commentaire en tête de votre script. La plupart des désaccords abordés plus loin dans cette formation viennent de deux personnes qui n’y répondaient pas de la même manière.
À quoi ressemble un vrai export
Cette formation s’appuie sur un registre synthétique de dépistage du PB dans l’Artibonite, en Haïti. Une ligne correspond à un enfant dépisté. Voici sa structure :
child_id,commune,screening_date,age_months,sex,muac_mm,oedema,outcome
CH00854,Terre-Neuve,2024-01-15,22,m,133,false,no-action
CH01439,Verrettes,2024-01-15,16,f,143,false,no-action
Huit colonnes, 4 218 lignes, une année de dépistage de masse communautaire sur
douze communes. Le fichier est assez petit pour être lu et assez imparfait pour
enseigner : il porte des valeurs manquantes codées -99, des mesures restées en
centimètres, des doubles enregistrements et des décisions de référencement qui
contredisent la mesure inscrite juste à côté.
Rien de tout cela n’est décoratif. Chacun de ces défauts se rencontre dans de vrais registres de campagne, et il a été introduit délibérément pour que vous le croisiez ici plutôt que la semaine précédant une échéance de rapport.
Le périmètre brachial, en un paragraphe
Le périmètre brachial (PB) est une mesure de dépistage prise avec un ruban à code couleur autour du bras de l’enfant. On l’utilise parce qu’il ne demande ni balance, ni toise, ni plus d’une quarantaine de minutes de formation. Pour les enfants de 6 à 59 mois, les seuils de l’OMS sont les suivants :
- En dessous de 115 mm — malnutrition aiguë sévère (MAS)
- De 115 mm à moins de 125 mm — malnutrition aiguë modérée (MAM)
- 125 mm et au-delà — pas de malnutrition aiguë selon cette mesure
Les œdèmes bilatéraux prenant le godet signent une MAS quelle que soit la
mesure. C’est la raison d’être de la colonne oedema, et la raison pour
laquelle une analyse filtrant sur le seul muac_mm sous-estime la charge de
cas.
La malnutrition aiguë globale (MAG) est la somme de la MAS et de la MAM. Vous la calculerez en leçon 7, et le débat sur son dénominateur constitue la leçon 8.
Les trois questions à poser à la personne qui vous envoie le fichier
Les données de routine arrivent bien plus souvent sans dictionnaire des variables qu’avec. Ces trois questions récupèrent l’essentiel de ce qu’un dictionnaire vous aurait appris.
- Que signifie une case vide ici ? Non mesuré, mesuré à zéro, refus, ou la tablette a planté ? Ce sont quatre choses différentes, fréquemment stockées toutes les quatre sous la forme d’une cellule vide.
- Quelque chose a-t-il déjà été nettoyé ou supprimé ? Si quelqu’un a retiré les lignes qu’il jugeait erronées, votre nombre de lignes n’est pas la charge de cas et votre taux de complétude est une fiction.
- Quelle période couvre ce fichier, et selon quelle date ? Date de dépistage, date de soumission et date de synchronisation peuvent différer de plusieurs semaines sur une mauvaise connexion. Un rapport mensuel construit sur la mauvaise date déplace des cas d’un mois à l’autre.
Vous n’obtiendrez pas toujours de réponse. Consigner que vous avez posé la question, et ce que vous avez supposé faute de réponse, est ce qui distingue une analyse défendable d’une analyse qui ne l’est pas.
La suite
La leçon suivante met en place un environnement de travail en Python et en R — délibérément un environnement qui fonctionne hors ligne, car une grande partie de ce public travaille sur une connexion dont on ne peut pas attendre qu’elle installe un paquet au moment précis où il devient nécessaire.