Atelier · Intermédiaire
Le district sans défécation à l'air libre
Un tableau par district montre six districts, dont un sans aucune défécation à l'air libre et une différence significative avec son voisin. Il y a trois districts, la différence est une variante orthographique, et l'intervalle sur le zéro atteint 16 %.
Un tableau d’assainissement circule. Il contient six districts, dont un qui déclare aucune défécation à l’air libre, et un test par paires indique que ce district diffère significativement du moins bon à p = 0,027. On demande à un programme d’hygiène pourquoi un district a résolu le problème et pas les autres.
Tout ce paragraphe est arithmétiquement correct et rien n’y est vrai. Ce laboratoire applique tout le cours à un seul tableau : normaliser avant de comparer, mettre un intervalle sur un zéro, compter les comparaisons lancées, et vérifier l’unité d’analyse avant de croire quoi que ce soit.
Le fichier
wash-household-survey-2024.v1.csv — 2 403 ménages répartis sur trois districts et
dix-huit communautés, avec assainissement, traitement de l’eau et qualité de l’eau.
Synthétique.
Préparez d’abord
Un projet RStudio, le fichier en lecture seule, un répertoire outputs/, et un
script qui s’exécute de bout en bout depuis une session propre. Chaque nombre de ce
laboratoire est imprimé par ce script ; aucun n’est saisi à la main.
Partie un : le tableau tel qu’il est arrivé
Construisez le tableau de défécation à l’air libre exactement comme celui qui
circule — groupez par la colonne district telle qu’elle est stockée, et ajoutez un
intervalle de Wilson à chaque ligne.
library(dplyr)
wash |>
summarise(
k = sum(sanitation_facility == "open-defecation"),
n = n(),
.by = district
) |>
rowwise() |>
mutate(
rate = k / n,
lower = prop.test(k, n)$conf.int[1],
upper = prop.test(k, n)$conf.int[2]
)
Vous obtiendrez six lignes, dont quatre sont Nord-Ouest écrit de quatre façons
différentes, avec des effectifs de 727, 33, 22 et 20.
Avant d’aller plus loin, notez l’intervalle de la ligne à 20 ménages — le taux
vaut 0 % et l’intervalle de Wilson monte jusqu’à environ 16 %. Calculez l’intervalle
de Wald sur la même cellule et constatez qu’il vaut [0, 0]. L’un de ces deux
nombres permettrait à quelqu’un de revendiquer un district résolu ; l’autre non.
Partie deux : les comparaisons que le tableau invite
Lancez toutes les comparaisons par paires entre les six lignes — il y en a quinze — et notez le p de chacune.
# combn() over the six rows, prop.test() on each pair.
Une paire ressort significative à p = 0,027 : le NORD-OUEST à 33 ménages contre le
nord-ouest à 20 ménages, un écart de 21,2 points entre deux orthographes du même
endroit.
Appliquez la correction de la leçon 5. Quinze tests, seuil de Bonferroni 0,05/15 = 0,0033, et rien ne survit. Notez le nombre de faux positifs attendus au seuil non corrigé et comparez-le à ce que vous avez trouvé.
Partie trois : normalisez, et relancez
Regroupez les codes de district — rognez, passez en minuscules, remplacez l’espace — et reconstruisez le tableau ainsi que la famille de comparaisons.
wash <- wash |> mutate(district = gsub(" ", "-", tolower(trimws(district))))
| District | Défécation à l’air libre | n |
|---|---|---|
| centre | ? | 798 |
| nord-ouest | ? | 802 |
| sud-est | ? | 803 |
Trois lignes, trois comparaisons, et le plus grand écart entre deux districts vaut 0,21 point de pourcentage. Tous les p dépassent 0,90.
Écrivez une phrase opposant les deux versions de cette analyse. La première a produit un constat significatif sur un district qui n’existe pas ; la seconde produit la bonne réponse, à savoir que la défécation à l’air libre est uniforme sur les trois districts, autour de 13,3 %.
Partie quatre : une différence qui, elle, existe
Faites maintenant la même chose pour le traitement de l’eau à domicile, qui raconte une tout autre histoire.
wash |>
summarise(k = sum(water_treated_at_home), n = n(), .by = district)
Trois districts, trois comparaisons par paires, et les trois survivent à la correction de Bonferroni avec de la marge. Rapportez chacune avec son intervalle et sa différence, et notez que le plus petit des trois écarts vaut 12,2 points — une taille d’effet sur laquelle un budget de promotion de l’hygiène peut être affecté.
C’est le contraste pour lequel ce laboratoire existe. La même procédure qui a dissous le constat sur l’assainissement laisse celui-ci debout, ce qui rend la dissolution crédible plutôt que défensive.
Partie cinq : dix-huit communautés, non 2 403 ménages
L’enquête est un échantillon en grappes : dix-huit communautés, environ 133 ménages chacune. Appliquez la leçon 6.
by_community <- wash |>
summarise(rate = mean(water_treated_at_home), .by = c(district, community))
Calculez la corrélation intra-classe pour le traitement de l’eau, l’effet de plan et la taille d’échantillon efficace. Produisez ensuite deux intervalles sur le taux global de traitement : celui au niveau ménage, et un construit à partir des dix-huit taux communautaires.
L’erreur-type au niveau communautaire vaut environ 2,8 fois celle au niveau ménage, et l’intervalle sur le taux global passe d’environ ±2 points à environ ±6.
Relancez les trois comparaisons de districts au niveau communautaire — six communautés par district, test t de Welch — et confirmez que les trois différences y survivent aussi. Un constat qui survit à l’erreur-type honnête est un constat défendable ; le but de la calculer n’est pas d’affaiblir le résultat mais de savoir s’il faut le faire.
Vérifiez vos nombres
| Attendu | |
|---|---|
| Districts dans la colonne brute | 6 |
| Districts après normalisation | 3 |
| Défécation à l’air libre, échantillon entier | 319 sur 2 403, environ 13,3 % |
| Plus grand écart entre districts, air libre | environ 0,2 point, p > 0,9 |
| Traitement de l’eau, centre / sud-est / nord-ouest | environ 56,4 % / 44,2 % / 29,4 % |
| Plus petit écart de traitement | 12,2 points, p < 0,001 |
| Corrélation intra-classe, traitement de l’eau | environ 0,05 |
| Effet de plan, et n efficace | environ 7,9, donc environ 304 |
Si votre taux de défécation à l’air libre s’éloigne de 13,3 %, les catégories d’assainissement sont comparées à une valeur absente de la colonne. Si votre corrélation intra-classe ressort négative, vous l’avez calculée sur la défécation à l’air libre plutôt que sur le traitement de l’eau — ce qui est un vrai résultat et a sa place dans votre rédaction.
Les questions à traiter en prose
Trois phrases chacune.
1. Le tableau qui circule a produit une différence significative à p = 0,027. Nommez toutes les raisons pour lesquelles ce résultat n’aurait pas dû atteindre un rapport, dans l’ordre où un relecteur les trouverait.
2. La ligne à 20 ménages affiche 0 % de défécation à l’air libre. Expliquez à un responsable de programme pourquoi « aucun ménage ne pratique la défécation à l’air libre ici » n’est pas ce que dit cette ligne, en employant l’intervalle plutôt que les mots « taille d’échantillon ».
3. Le traitement de l’eau diffère entre districts de jusqu’à 27 points et la défécation à l’air libre ne diffère pas du tout. Les deux ont été calculés sur les mêmes 2 403 lignes. Décrivez ce qu’un programme ciblé par district devrait conclure de cette paire de résultats.
Ce qu’il faut rendre
Un script R, exécuté depuis une session propre, produisant :
- les deux tableaux par district, brut et normalisé, chaque ligne avec son intervalle de Wilson
- la famille de quinze comparaisons et celle de trois, chacune avec son nombre de tests et son seuil corrigé énoncés
- le tableau de traitement de l’eau avec les comparaisons par paires au niveau ménage et au niveau communautaire
- la corrélation intra-classe, l’effet de plan et la taille d’échantillon efficace
- un
report.txtécrit dans la forme des blocs « rapportez-le en entier » : constats dans le corps, tests en annexe, nombre total de comparaisons lancées en dernière ligne - les trois réponses en prose en bloc de commentaires en pied de fichier
Comment savoir que c’est fini
Supprimez outputs/, redémarrez R, un seul source(), tout se régénère à
l’identique. Remplacez ensuite la normalisation par un simple tolower() sans le
remplacement d’espace : Nord Ouest ressort, vous testez de nouveau quatre districts,
et le nombre de comparaisons de votre rapport change tout seul. Si ce n’est pas le
cas, le nombre de tests est codé en dur, et la leçon 5 portait précisément sur le
nombre qu’un rapport ne doit jamais coder en dur.
Ce que ce laboratoire n’est pas
Ce n’est pas un laboratoire de nettoyage — le cours EAH a déjà enseigné le défaut de codage incohérent, et il n’est ici que le mécanisme. Ce n’est pas non plus un laboratoire de plan de sondage : l’effet de plan est mesuré sur l’échantillon réalisé plutôt que planifié, et le planifier relève d’Analyse d’enquêtes et échantillonnage. Ce laboratoire porte sur l’ordre des opérations. Normaliser, puis estimer, puis comparer, puis corriger, puis vérifier l’unité — et chaque étape sautée dans cette séquence a produit en partie un un constat que la partie trois a dû retirer.