Retour à la leçon·Leçon 1 sur 8·Ce qu'il ne faut pas collecter
Les colonnes qui n'y sont pas
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.
Ce que couvre cette leçon
- Commencez par le schéma, non par les données
- Le principe, énoncé comme une règle sur des colonnes
- Ce que coûte le grossissement, mesuré
- Celle qui est une vraie perte
- Les 62 tranches d'âge vides
- Ce qu'il faut écrire dans la note méthodologique
- La suite
Notes du présentateur
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.Commencez par le schéma, non par les données — En Python
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")Commencez par le schéma, non par les données — En R
library(dplyr) referrals |> glimpse()Commencez par le schéma, non par les données
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 Notes du présentateur
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 :Commencez par le schéma, non par les données
- 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…
Notes du présentateur
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
- 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…
- 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…
- La sécurité d'abord, toujours. Là où une analyse et la sécurité d'une survivante s'opposent, c'est l'analyse qui…
Notes du présentateur
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 :Le principe, énoncé comme une règle sur des colonnes — En Python
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()})Le principe, énoncé comme une règle sur des colonnes — En R
# Five groups of fields, each earning its place by an indicator that needs it.Le principe, énoncé comme une règle sur des colonnes
- Chaque champ de cet extrait correspond à un indicateur —
days_to_first_serviceexiste parce que le standard clinique…
Notes du présentateur
Chaque champ de cet extrait correspond à un indicateur.days_to_first_serviceexiste parce que le standard clinique de 72 heures pour les soins de santé VBG l'exige ;disability_reportedexiste 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.- Chaque champ de cet extrait correspond à un indicateur —
Ce que coûte le grossissement, mesuré — En Python
print(referrals["age_band"].value_counts(dropna=False)) print(referrals["referral_month"].nunique(), "distinct periods") print(referrals["admin2"].nunique(), "areas")Notes du présentateur
L'affirmation selon laquelle le grossissement ne coûte rien doit être vérifiée plutôt qu'assénée.Ce que coûte le grossissement, mesuré — En R
referrals |> count(age_band) referrals |> summarise(periods = n_distinct(referral_month), areas = n_distinct(admin2))Ce que coûte le grossissement, mesuré
- 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…
- Saisonnalité : le mois est la résolution la plus fine à laquelle se lit une tendance de protection, et une série…
- Désagrégation par âge : les tranches sont les catégories de rapportage. Un enfant, un adolescent, un adulte en âge…
- Le grossissement ne coûte donc rien que quiconque ait demandé — C'est ce qui le rend défendable, et c'est pourquoi…
Notes du présentateur
Cinq tranches d'âge, douze mois, six zones. Demandez maintenant ce qu'ajouteraient un âge exact et une date exacte : 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
- Retirer le type d'incident empêche de dire quelles formes de violence le circuit de référencement sert le plus mal —…
Notes du présentateur
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.Celle qui est une vraie perte — En Python
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")Celle qui est une vraie perte — En R
# The right answer to "we need incident type" is often "we will run it and # send you the result", not "no".Celle qui est une vraie perte
- « Vous ne pouvez pas avoir le fichier, et voici la réponse à votre question » est la réponse professionnelle — et elle…
Notes du présentateur
« 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 — En Python
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())Les 62 tranches d'âge vides — En R
referrals |> filter(is.na(age_band)) |> count(case_category)Notes du présentateur
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 — Exemple
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.Ce qu'il faut écrire dans la note méthodologique
- Écrivez ceci avant les résultats, non en annexe — Un rapport de protection dont la section de traitement des données…
Notes du présentateur
É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.
Notes du présentateur
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.