cassionAnalyse de données

Leçon 1 sur 8

Unité · Ce qu'il ne faut pas collecter

Les colonnes qui n'y sont pas

Ce jeu de données a quatorze colonnes et aucun nom, aucune coordonnée, aucun texte libre, aucune date d'incident, aucune localisation sous le district et aucun détail sur l'auteur. Chacune de ces absences est une décision, et chacune se justifie par ce dont l'analyse a besoin.

PythonR120 minNorme humanitaire fondamentale (CHS)Définitions d'indicateurs de l'UNICEF

Commencez par le schéma, non par les données

import pandas as pd

referrals = pd.read_csv("protection-referrals-2024.v1.csv")
print(referrals.columns.tolist())
print(f"{len(referrals):,} cases, {len(referrals.columns)} columns")
library(dplyr)

referrals |> glimpse()

Quatorze colonnes pour 1 850 cas de protection. Listez maintenant ce que contient un système de gestion de cas et que cet extrait ne contient pas :

Absent Pourquoi
Nom, coordonnées Ne sortent jamais du système de gestion de cas, en aucune circonstance
Récit en texte libre Identifiant par construction, et aucune analyse ne le lit
Date de l’incident Jointe à une zone et à une catégorie, fréquemment identifiante
Localisation sous l’admin2 Un village plus une catégorie, c’est une personne
Âge exact La tranche d’âge répond à toutes les questions de désagrégation que l’âge peut traiter
Type d’incident, lien avec l’auteur Ne sont pas partagés du tout hors de l’agence de gestion de cas

Chaque ligne de ce tableau est une décision que quelqu’un a prise, et chacune se défend en nommant l’analyse qu’elle n’empêche pas. C’est le test : non pas « est-ce sensible » mais « que serais-je incapable de calculer sans cela ».

Le principe, énoncé comme une règle sur des colonnes

Les principes de gestion de l’information VBG s’enseignent habituellement comme de l’éthique. Ce sont aussi, concrètement, des instructions sur un schéma :

  • Collecter le minimum nécessaire. Si aucun indicateur n’a besoin d’un champ, le conserver n’est que du risque.
  • Partager moins que ce que l’on détient. L’extrait d’analyse n’est pas le dossier. Chaque pas vers l’extérieur retire des champs.
  • Ne jamais partager de données au niveau de l’incident hors de l’agence de gestion de cas. Agréger ou ne pas envoyer.
  • Le consentement gouverne l’usage. Une personne qui consent à un référencement n’a pas consenti à un jeu de données de recherche.
  • La sécurité d’abord, toujours. Là où une analyse et la sécurité d’une survivante s’opposent, c’est l’analyse qui cède.
minimum = {
    "who": ["age_band", "sex", "disability_reported"],
    "where": ["admin1", "admin2"],
    "when": ["referral_month"],
    "what": ["case_category", "service_requested"],
    "pathway": ["consent_to_refer", "referral_made", "referral_accepted",
                "days_to_first_service", "case_status"],
}
print({k: len(v) for k, v in minimum.items()})
# Five groups of fields, each earning its place by an indicator that needs it.

Chaque champ de cet extrait correspond à un indicateur. days_to_first_service existe parce que le standard clinique de 72 heures pour les soins de santé VBG l’exige ; disability_reported existe parce que l’écart d’équité est le constat que ce jeu de données a été bâti pour faire apparaître. Un champ sans indicateur derrière lui n’a rien à faire dans l’extrait.

Ce que coûte le grossissement, mesuré

L’affirmation selon laquelle le grossissement ne coûte rien doit être vérifiée plutôt qu’assénée.

print(referrals["age_band"].value_counts(dropna=False))
print(referrals["referral_month"].nunique(), "distinct periods")
print(referrals["admin2"].nunique(), "areas")
referrals |> count(age_band)
referrals |> summarise(periods = n_distinct(referral_month),
                       areas = n_distinct(admin2))

Cinq tranches d’âge, douze mois, six zones. Demandez maintenant ce qu’ajouteraient un âge exact et une date exacte :

  • Promptitude : mesurée en jours du référencement au service, ce qui est déjà une durée et n’exige aucune date de calendrier.
  • Saisonnalité : le mois est la résolution la plus fine à laquelle se lit une tendance de protection, et une série hebdomadaire sur 1 850 cas serait du bruit.
  • Désagrégation par âge : les tranches sont les catégories de rapportage. Un enfant, un adolescent, un adulte en âge de travailler et une personne âgée sont les quatre distinctions que fait tout indicateur de protection.

Le grossissement ne coûte donc rien que quiconque ait demandé. C’est ce qui le rend défendable, et c’est pourquoi l’argument est analytique plutôt que simplement prudent.

Celle qui est une vraie perte

Toutes les omissions ne sont pas gratuites, et prétendre le contraire est la façon dont un argument de protection des données perd sa crédibilité.

Retirer le type d’incident empêche de dire quelles formes de violence le circuit de référencement sert le plus mal. C’est une perte analytique réelle, et la réponse n’est pas que cela n’a pas d’importance. La réponse est que cette analyse a sa place à l’intérieur de l’agence de gestion de cas, conduite par ceux qui détiennent les données, et que ce qui en sort est la conclusion et non le fichier.

print("Question: does the pathway serve some incident types worse than others?")
print("Where it can be answered: inside the case management agency")
print("What leaves the agency: the finding, not the disaggregation")
# The right answer to "we need incident type" is often "we will run it and
# send you the result", not "no".

« Vous ne pouvez pas avoir le fichier, et voici la réponse à votre question » est la réponse professionnelle, et elle est disponible bien plus souvent qu’un refus sec ou qu’une remise discrète.

Les 62 tranches d’âge vides

missing = referrals["age_band"].isna()
print(f"{missing.sum()} cases with no age band ({missing.mean():.1%})")
print(referrals.loc[missing, "case_category"].value_counts())
referrals |> filter(is.na(age_band)) |> count(case_category)

La tranche d’âge est à la fois la désagrégation la plus employée et le champ le plus souvent manquant dans les données d’admission réelles, parce qu’elle se demande à un moment où la demander est intrusive. Soixante-deux cas font 3,4 % et ne sont pas répartis uniformément, si bien qu’un tableau désagrégé par âge a un dénominateur plus petit que le tableau de circuit à côté de lui et doit le dire.

L’envie d’imputer est ici mauvaise pour une raison propre à ce secteur : une tranche d’âge imputée, rattachée à un cas réel dans un jeu de données de protection, est un attribut fabriqué d’une personne identifiable.

Ce qu’il faut écrire dans la note méthodologique

Data handling

  Analysis extract holds 14 fields for 1,850 cases. It contains no name,
  contact detail, free text, incident date, location below admin2, exact age,
  incident type or perpetrator detail.

  Age is recorded in five bands and time in months. Both are sufficient for
  every indicator reported here, and both reduce the risk that a row can be
  matched to a person.

  Incident-level fields remain in the case management system. Analyses
  requiring them are run by the case management agency and reported as
  findings rather than shared as data.

  62 cases (3.4%) have no age band. Age-disaggregated figures are computed on
  1,788 cases and are labelled accordingly.

Écrivez ceci avant les résultats, non en annexe. Un rapport de protection dont la section de traitement des données est à la fin a invité chaque lecteur à sauter la seule partie qui gouverne ce que le reste a le droit de dire.

La suite

Retirer des colonnes réduit le risque sans l’éliminer. La leçon suivante porte sur ce qui arrive quand on croise les colonnes restantes, et sur le point où un jeu de données parfaitement anonyme produit un tableau qui identifie quelqu’un.

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.