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