cassionAnalyse de données

Leçon 3 sur 8

Unité · Ce que Sphère demande et qu'une échelle ne dit pas

Quinze litres, trente minutes, cinq cents mètres

13,4 % de ces ménages passent sous le minimum Sphère de quantité. Deux des colonnes qui produisent ce nombre portent des erreurs d'unité, et l'une d'elles fait monter un ménage d'un échelon plutôt que sortir d'un graphique.

PythonR120 minStandards SphèreNorme humanitaire fondamentale (CHS)Objectifs de développement durable (ODD)

Ce que Sphère ajoute à l’échelle

Les échelles du JMP classent un service. Les standards minimaux Sphère y mettent des nombres, et les trois sur lesquels un programme d’eau est jugé sont :

Standard Seuil Dans ce fichier
Quantité Au moins 15 litres par personne et par jour litres_per_person_day
Temps d’attente 30 minutes au plus Inclus dans round_trip_minutes
Distance 500 m au plus jusqu’au point le plus proche Non enregistrée ; le temps sert de proxy

Les seuils sont des minimums pour survivre dans la dignité, non des cibles. Un programme à 15,2 litres a atteint le standard et ne se porte pas bien, et un rapport qui n’imprime que la part au-dessus du seuil masque où se situe réellement la distribution.

import pandas as pd

households = pd.read_csv("wash-household-survey-2024.v1.csv")
litres = households["litres_per_person_day"]

print(f"median {litres.median():.1f} L/p/d")
print(f"below Sphere minimum: {(litres < 15).mean():.1%}")
print(litres.describe().round(1))
library(dplyr)

households |> summarise(
  median = median(litres_per_person_day),
  below_15 = mean(litres_per_person_day < 15),
  n = n()
)

13,4 % sous 15 litres, avec une médiane de 23,7. Les deux nombres ont leur place dans le rapport : le premier est le standard, le second dit que le ménage médian dispose d’environ la moitié en plus de ce qu’il lui faut et que le problème est de répartition plutôt que de volume total.

Deux erreurs d’unité, et une seule est visible

print(litres.nlargest(8).round(1).tolist())
households |> slice_max(litres_per_person_day, n = 8) |>
  select(household_id, household_size, litres_per_person_day)

Onze ménages dépassent 80 litres par personne et par jour, jusqu’à 277,6. C’est implausible dans ce contexte et ce n’est pas une faute de frappe — c’est la consommation totale du ménage saisie dans une colonne par personne. Divisez par la taille du ménage et chacun d’eux retombe dans une plage normale.

suspect = households[litres > 80]
recovered = suspect["litres_per_person_day"] / suspect["household_size"]
print(recovered.round(1).describe())
households |>
  filter(litres_per_person_day > 80) |>
  mutate(recovered = litres_per_person_day / household_size) |>
  summarise(min = min(recovered), max = max(recovered))

La seconde erreur est la dangereuse, parce qu’elle rend une valeur plus petite et non plus grande. Onze ménages ont un temps de collecte saisi en heures, si bien qu’un aller-retour de 90 minutes est enregistré comme 2. Il n’y a aucune valeur aberrante à attraper : 2 minutes est une valeur parfaitement ordinaire, et 85 ménages déclarent légitimement moins de 8 minutes.

short = households[households["round_trip_minutes"].between(1, 8)]
print(f"{len(short)} households report a round trip of 1 to 8 minutes")
print(short["water_source"].value_counts())
households |> filter(between(round_trip_minutes, 1, 8)) |> count(water_source)

Une erreur qui ramène une valeur dans la plage normale ne se trouve pas en cherchant des valeurs aberrantes. Elle se trouve par une règle qui lie deux champs — un aller-retour de moins de dix minutes vers une source qui n’est ni sur place ni une borne publique de la même communauté mérite une vérification — ou elle s’évite à la saisie par une étiquette d’unité sur le formulaire.

Sa conséquence ici n’est pas une moyenne fausse. C’est un échelon faux : chacun de ces ménages est classé en service élémentaire alors qu’il est limité.

L’attente est incluse dans l’aller-retour, et c’est un problème

Sphère fixe l’attente séparément du temps de collecte parce que les deux ont des causes et des remèdes différents. Une longue marche appelle un nouveau point d’eau ; une longue file appelle davantage de robinets au point existant, ou une plage horaire plus large.

Cette enquête n’enregistre que l’aller-retour, qui contient les deux. Le rapport honnête dit donc ce qu’il peut et ne peut pas séparer :

print("round_trip_minutes includes walking, queueing and return.")
print(f"over 30 minutes: {(households['round_trip_minutes'] > 30).mean():.1%}")
print("Queue time alone: not collected. Recommend adding it to the next round.")
# One line in the limitations section beats a queue statistic that is a walk.

39,3 % dépassent trente minutes, et rien de ce nombre ne peut être attribué à l’attente ou à la distance sans la ventilation. Dites laquelle des deux vous ne voyez pas, car l’action corrective diffère et un programme qui devine construira la mauvaise chose.

La distance n’est pas du tout dans le fichier

Le standard des 500 mètres exige une coordonnée ou une distance mesurée, et cette enquête n’a ni l’une ni l’autre. Le temps en est un proxy et un mauvais : trente minutes font un kilomètre sur une route et trois cents mètres dans un ravin.

Là où un standard nomme une unité dont vous ne disposez pas, rapportez le proxy sous son propre nom. Rapporter le temps d’aller-retour comme s’il s’agissait du standard de distance est la façon dont une évaluation conclut qu’une communauté est à moins de 500 mètres de l’eau alors qu’elle en est très loin.

Rapportez la distribution face au seuil

Water quantity, 2,403 households

  Median                       23.7 L/person/day
  Below Sphere minimum (15 L)  13.4%    323 households
  Below 7.5 L                   2.2%     54 households

  Collection time
  Over 30 minutes              39.3%    944 households
  Queue time not separated from walking time in this round.
  Distance not recorded; time is the proxy and is not equivalent.

  11 records held household total litres in the per-person column and were
  corrected; 11 held collection time in hours and were corrected.

Le seuil, la distribution, et les corrections énoncées avec leurs effectifs. Un journal de nettoyage n’est pas un aveu — c’est ce qui permet au lecteur de voir que 13,4 % vient après correction de deux erreurs connues et non avant.

La suite

La quantité et le temps disent si l’eau est arrivée et à quel prix d’effort. Ils ne disent rien de sa potabilité, et la leçon suivante est celle où le dénominateur change sous vos pieds.

Animer cette leçon

La leçon en diaporama, la prose étant reléguée dans les notes du présentateur plutôt que projetée. Produit à partir de cette page, dont il ne peut donc pas s'écarter.

Lancer le diaporamaLire les diapositives

Le PDF ne requiert aucun logiciel et se projette depuis n'importe quel poste. Le fichier PowerPoint est fait pour être modifié : appliquez la charte de votre organisation, retirez une section pour une séance plus courte, ou fusionnez deux leçons en atelier.