cassionAnalyse de données

Leçon 1 sur 8

Unité · Ce que qualité veut dire ici

Cinq dimensions, cinq mesures

« Les données sont mauvaises » n'est pas un constat. Exactitude, complétude, actualité, cohérence et intégrité — chacune avec un nombre, calculée sur la même extraction, et un tableau de bord qui résiste à la contestation.

PythonR75 minDéfinitions d'indicateurs de l'UNICEFNorme humanitaire fondamentale (CHS)

La phrase qu’il faut cesser de dire

« La qualité des données est mauvaise. » Tout le monde acquiesce, rien ne se passe, et la même phrase revient au trimestre suivant.

Elle échoue parce qu’elle est inexploitable de trois façons distinctes. Elle ne dit pas quelle qualité — un rapport tardif et un rapport fabriqué sont deux problèmes aux remèdes différents. Elle ne dit pas combien — mauvaise partout ou mauvaise dans quatre formations sanitaires. Et elle ne dit pas et alors — si le défaut est assez grand pour changer le chiffre sur lequel quelqu’un va agir.

Les cinq dimensions existent pour corriger les trois d’un coup. Ce n’est pas un cadre à réciter, ce sont cinq questions dont la réponse est un nombre.

Les cinq, et la mesure de chacune

Dimension La question La mesure
Complétude Tout le monde a-t-il rapporté, et sur tout ? Taux de rapportage ; taux de valeurs manquantes par champ
Actualité Le rapport est-il arrivé à temps pour servir ? Part transmise avant l’échéance ; retard médian en jours
Exactitude Le chiffre remonté correspond-il à la source ? Facteur de vérification — recomptage sur rapporté
Cohérence Les nombres s’accordent-ils entre eux et avec le mois dernier ? Taux d’échec des règles internes ; taux d’aberrations
Intégrité La valeur vient-elle d’une mesure ou d’autre chose ? Préférence de chiffres ; attraction ; séries anormalement stables

Deux points de ce tableau méritent discussion, car les deux reviennent toujours.

L’exactitude est la seule qui exige le document source. Les quatre autres se calculent sur l’extraction que vous avez déjà, à votre bureau, cet après-midi. Cette asymétrie commande toute la conception d’une évaluation — les quatre dimensions de bureau servent à décider où dépenser la cinquième, la coûteuse.

L’intégrité n’est pas une accusation. Elle mesure si les nombres ressemblent à des mesures. Une distribution d’âges attirée par les valeurs rondes signifie généralement que personne n’a demandé d’acte de naissance, non que quelqu’un a inventé quoi que ce soit, et la leçon qui lui est consacrée passe l’essentiel de son temps sur cette distinction.

Calculez les cinq sur une seule extraction

Prenez l’extraction vaccinale de routine — 38 formations sanitaires, douze mois, six antigènes.

import pandas as pd

vax = pd.read_csv("vaccination-coverage-2024.v1.csv", parse_dates=["period"])
vax["reported"] = vax["report_submitted"] == True

scorecard = {}

# Completeness
scorecard["reporting_rate"] = vax["reported"].mean()
scorecard["field_completeness"] = 1 - vax.isna().mean().mean()

# Consistency: doses cannot exceed the target population
rule_fail = (vax["doses_administered"] > vax["target_population"]).mean()
scorecard["rule_failure_rate"] = rule_fail

# Integrity: share of reported values ending in zero
reported = vax[vax["reported"]]
scorecard["round_number_share"] = (reported["doses_administered"] % 10 == 0).mean()

print(pd.Series(scorecard).round(3))
library(dplyr)
library(readr)

vax <- read_csv("vaccination-coverage-2024.v1.csv")

scorecard <- tibble::tibble(
  reporting_rate     = mean(vax$report_submitted),
  field_completeness = 1 - mean(is.na(as.matrix(vax))),
  rule_failure_rate  = mean(vax$doses_administered > vax$target_population),
  round_number_share = mean(
    vax$doses_administered[vax$report_submitted] %% 10 == 0
  )
)

round(scorecard, 3)
Mesure Valeur À lire comme
Taux de rapportage 76,5 % 642 des 2 736 couples formation-mois ne portent aucun rapport
Complétude des champs 100 % aucune case vide — ce qui n’est pas la même chose qu’aucune donnée manquante
Taux d’échec des règles 0 % aucune formation ne rapporte plus de doses que sa population cible
Part de nombres ronds 10,4 % ce que produit le hasard ; rien à voir

Lisez les lignes deux et un ensemble. La complétude des champs vaut 100 % et la complétude du rapportage 76,5 %, et seule la seconde compte. Chaque couple formation-mois sans rapport figure dans le fichier comme une ligne de zéros avec un indicateur, si bien qu’un décompte de cases vides déclare les données parfaites. C’est le défaut autour duquel tout le module tourne — un rapport manquant qui arrive sous forme de zéro.

Pondérez les dimensions par ce qu’elles coûtent

Un tableau de bord à cinq nombres égaux laisse entendre que les cinq comptent également. Ce n’est pas le cas, et laquelle prime dépend entièrement de l’usage des données.

  • Pour un taux de couverture, la complétude domine. Un taux de rapportage de 76,5 % fait de tout total de district une borne inférieure, et aucune exactitude dans les rapports reçus n’y remédie.
  • Pour une charge de cas servant à approvisionner, l’exactitude domine. Commander des aliments thérapeutiques sur une charge surestimée gaspille de l’argent ; sur une charge sous-estimée, des enfants n’en reçoivent pas.
  • Pour un indicateur d’alerte précoce, l’actualité domine. Un rapport parfaitement exact arrivant six semaines après l’épidémie ne vaut rien.

Dites quelle dimension vous avez pondérée et pourquoi, dans le rapport. Un score composite qui cache sa pondération est le même défaut qu’un indicateur qui cache son dénominateur.

Ne réduisez pas à un seul nombre

Quelqu’un demandera un score unique sur 100. Résistez, et proposez le tableau de bord à la place, pour une raison précise — les cinq dimensions ont des remèdes différents, et le nombre unique ne dit rien sur celui à appliquer.

Un district à 82 % parce qu’il est en retard se corrige en déplaçant une échéance. Un district à 82 % parce qu’un tiers de ses formations ne rapportent jamais se corrige en cherchant pourquoi elles ont cessé. Les deux font 82. Un seul se corrige par un atelier de formation, et aucun ne se corrige par l’atelier que quelqu’un va proposer.

Si un composite est réellement exigé — certains modèles bailleurs l’imposent — publiez-le à côté de ses composantes, jamais à leur place.

scorecard_table = pd.DataFrame({
    "dimension": ["Completeness", "Timeliness", "Accuracy", "Consistency", "Integrity"],
    "measure": ["Reporting rate", "Submitted by deadline", "Verification factor",
                "Rule failure rate", "Round-number share"],
    "value": [0.765, None, None, 0.0, 0.104],
    "source": ["extract", "submission log", "facility visit", "extract", "extract"],
})
print(scorecard_table)
scorecard_table <- tibble::tribble(
  ~dimension,     ~measure,                ~value, ~source,
  "Completeness", "Reporting rate",         0.765, "extract",
  "Timeliness",   "Submitted by deadline",     NA, "submission log",
  "Accuracy",     "Verification factor",       NA, "facility visit",
  "Consistency",  "Rule failure rate",       0.000, "extract",
  "Integrity",    "Round-number share",      0.104, "extract"
)

C’est la colonne source qui est utile. Elle dit immédiatement quels nombres vous pouvez produire aujourd’hui et lesquels exigent un déplacement, et c’est la forme de tout plan d’évaluation.

La suite

Deux des cinq dimensions ne sont presque jamais rapportées, et toutes deux se calculent sur des données que vous détenez déjà. La leçon suivante les calcule correctement — complétude et promptitude du rapportage, chacune avec son propre dénominateur, et le piège consistant à diviser par les formations qui ont rapporté.

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.