cassionAnalyse de données

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 %.

RVotre propre machine150 min

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.