cassionAnalyse de données

Retour à la leçonLeçon 3 sur 8Ce que Sphère demande et qu'une échelle ne dit pas

Quinze litres, trente minutes, cinq cents mètres

Le même diaporama que les téléchargements, rendu sous forme de page. Lancez le diaporama pour le présenter en plein écran — les flèches ou un clic avancent d'une diapositive, Échap quitte.

Diapositives · PDFDiapositives · PowerPoint

  1. Diapositive 1 / 19

    Ce que couvre cette leçon

    • Ce que Sphère ajoute à l'échelle
    • Deux erreurs d'unité, et une seule est visible
    • L'attente est incluse dans l'aller-retour, et c'est un problème
    • La distance n'est pas du tout dans le fichier
    • Rapportez la distribution face au seuil
    • La suite
    Notes du présentateur
    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.
  2. Diapositive 2 / 19

    Ce que Sphère ajoute à l'échelle

    StandardSeuilDans ce fichier
    QuantitéAu moins 15 litres par personne et par jourlitres_per_person_day
    Temps d'attente30 minutes au plusInclus dans round_trip_minutes
    Distance500 m au plus jusqu'au point le plus procheNon enregistrée ; le temps sert de proxy
    Notes du présentateur
    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 :
  3. Diapositive 3 / 19

    Ce que Sphère ajoute à l'échelle — En Python

    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))
    Notes du présentateur
    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.
  4. Diapositive 4 / 19

    Ce que Sphère ajoute à l'échelle — En R

    library(dplyr)
    
    households |> summarise(
      median = median(litres_per_person_day),
      below_15 = mean(litres_per_person_day < 15),
      n = n()
    )
  5. Diapositive 5 / 19

    Ce que Sphère ajoute à l'échelle

    • 13,4 % sous 15 litres — avec une médiane de 23,7
    Notes du présentateur
    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.
  6. Diapositive 6 / 19

    Deux erreurs d'unité, et une seule est visible — En Python

    print(litres.nlargest(8).round(1).tolist())
  7. Diapositive 7 / 19

    Deux erreurs d'unité, et une seule est visible — En R

    households |> slice_max(litres_per_person_day, n = 8) |>
      select(household_id, household_size, litres_per_person_day)
  8. Diapositive 8 / 19

    Deux erreurs d'unité, et une seule est visible — En Python

    suspect = households[litres > 80]
    recovered = suspect["litres_per_person_day"] / suspect["household_size"]
    print(recovered.round(1).describe())
    Notes du présentateur
    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.
  9. Diapositive 9 / 19

    Deux erreurs d'unité, et une seule est visible — En R

    households |>
      filter(litres_per_person_day > 80) |>
      mutate(recovered = litres_per_person_day / household_size) |>
      summarise(min = min(recovered), max = max(recovered))
  10. Diapositive 10 / 19

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

    • La seconde erreur est la dangereuse — parce qu'elle rend une valeur plus petite et non plus grande
    Notes du présentateur
    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.
  11. Diapositive 11 / 19

    Deux erreurs d'unité, et une seule est visible — En Python

    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())
  12. Diapositive 12 / 19

    Deux erreurs d'unité, et une seule est visible — En R

    households |> filter(between(round_trip_minutes, 1, 8)) |> count(water_source)
  13. Diapositive 13 / 19

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

    • Une erreur qui ramène une valeur dans la plage normale ne se trouve pas en cherchant des valeurs aberrantes — Elle se…
    Notes du présentateur
    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é.
  14. Diapositive 14 / 19

    L'attente est incluse dans l'aller-retour, et c'est un problème — En Python

    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.")
    Notes du présentateur
    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 :
  15. Diapositive 15 / 19

    L'attente est incluse dans l'aller-retour, et c'est un problème — En R

    # One line in the limitations section beats a queue statistic that is a walk.
    Notes du présentateur
    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.
  16. Diapositive 16 / 19

    La distance n'est pas du tout dans le fichier

    • Là où un standard nomme une unité dont vous ne disposez pas, rapportez le proxy sous son propre nom — Rapporter le…
    Notes du présentateur
    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.
  17. Diapositive 17 / 19

    Rapportez la distribution face au seuil — Exemple

    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.
    Notes du présentateur
    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.
  18. Diapositive 18 / 19

    La suite

    • La quantité et le temps disent si l'eau est arrivée et à quel prix d'effort.
    Notes du présentateur
    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.
  19. Diapositive 19 / 19

    La suite

    Lire la leçon complète, avec le code exécutable Retour à la leçon