cassionAnalyse de données

Leçon 4 sur 8

Unité · Confronter à la source

Choisir les six formations sanitaires à visiter

Trois stratégies d'échantillonnage qui répondent à trois questions différentes, combien d'unités suffisent, et la phrase que vous avez le droit d'écrire sur les trente-deux formations non visitées.

PythonR75 minDéfinitions d'indicateurs de l'UNICEFGestion axée sur les résultats (GAR)Norme humanitaire fondamentale (CHS)

Vous avez une semaine et trente-huit formations sanitaires

Une visite de vérification coûte un véhicule, une journée, deux personnes et du carburant. Le budget en couvre six. Tout dans cette leçon découle de cette arithmétique, et le premier point à clarifier est que le choix des six détermine ce que votre constat aura le droit de signifier.

Trois stratégies, trois questions, et les confondre est la défaillance méthodologique la plus courante d’une évaluation.

Stratégie Répond à Ne peut pas répondre à
Aléatoire « Quelle est la qualité des données du district ? » « Où sont les problèmes ? »
Fondée sur le risque « Les formations suspectées le sont-elles vraiment ? » « Quelle est la qualité du district ? »
Recensement des plus grosses « Le total du district est-il juste ? » Quoi que ce soit sur les petites formations

Aléatoire — la seule qui se généralise

Si vous voulez une affirmation sur le district, l’échantillon doit être tiré sans référence à ce que vous vous attendez à trouver.

import pandas as pd

facilities = vax[["facility_id", "facility_type"]].drop_duplicates()

sample = facilities.sample(n=6, random_state=20260728)
print(sample)
set.seed(20260728)

sample <- facilities |> dplyr::slice_sample(n = 6)

Fixez la graine et consignez-la. Une évaluation dont l’échantillon n’est pas reproductible appelle la question de savoir si les formations ont été choisies après que quelqu’un a su ce qu’elles contenaient, et la graine y répond en une ligne.

Stratifiez lorsqu’un sous-groupe compte. Les postes de santé rapportent le moins bien, si bien qu’un simple tirage aléatoire de six pourrait n’en contenir aucun.

sample = (
    facilities.groupby("facility_type", group_keys=False)
    .apply(lambda g: g.sample(n=min(2, len(g)), random_state=20260728))
)
sample <- facilities |>
  group_by(facility_type) |>
  slice_sample(n = 2) |>
  ungroup()

Stratifier par type donne une affirmation sur chaque type en plus du district, et cela ne coûte rien.

Fondée sur le risque — là où sont les problèmes

Si le but est de corriger plutôt que de décrire, choisissez les formations que l’analyse de bureau a déjà signalées. Les deux leçons suivantes sont entièrement consacrées à produire ce classement.

risk = (
    vax.groupby("facility_id")
    .agg(reporting_rate=("reported", "mean"))
    .assign(round_share=lambda d: d.index.map(round_number_share))
)
risk["score"] = (1 - risk["reporting_rate"]) + risk["round_share"]
print(risk.sort_values("score", ascending=False).head(6))
risk <- vax |>
  summarise(reporting_rate = mean(report_submitted), .by = facility_id) |>
  left_join(round_shares, by = "facility_id") |>
  mutate(score = (1 - reporting_rate) + round_share) |>
  arrange(desc(score))

Cette approche trouve plus de problèmes par journée-véhicule que le tirage aléatoire, raison pour laquelle la plupart des évaluations réelles l’emploient. Elle ne se généralise pas, et le rapport doit le dire.

Six formations ont été retenues sur la base des signalements de l’analyse de bureau. Les constats les décrivent et ne sont pas représentatifs du district.

Tout rapport d’évaluation qui omet cette phrase puis cite un facteur de vérification au niveau du district formule une affirmation que son protocole ne soutient pas.

Recensement des plus grosses

Une troisième option, souvent la plus utile pour un total. Ordonnez les formations par volume et visitez-en assez pour couvrir l’essentiel du numérateur.

volume = (
    vax[vax["reported"]]
    .groupby("facility_id")["doses_administered"].sum()
    .sort_values(ascending=False)
)
share = volume.cumsum() / volume.sum()
print(share.head(10).round(3))
volume <- vax |>
  filter(report_submitted) |>
  summarise(doses = sum(doses_administered), .by = facility_id) |>
  arrange(desc(doses)) |>
  mutate(cumulative = cumsum(doses) / sum(doses))

Si huit formations représentent la moitié des doses, vérifier ces huit borne l’erreur du total du district quoi que fassent les trente autres. C’est le bon protocole quand la question est « puis-je me fier au total que je remonte au bailleur » — et le mauvais quand la question porte sur la qualité du service dans les postes reculés, puisqu’il les ignore systématiquement.

Combien suffisent

Il n’y a pas de réponse unique, mais il y a une façon d’y penser qui résiste à la contestation.

Pour une question par oui ou non — le rapportage de cette formation est-il acceptable — vous estimez une proportion, et la précision s’améliore comme la racine carrée de l’échantillon. Six formations sur trente-huit donnent un intervalle de confiance si large que presque aucun résultat ne se distingue d’un autre. Soyez honnête là-dessus plutôt que de rapporter « 33 % des formations présentent des constats » à partir d’un échantillon de six.

Pour détecter si un problème existe, les petits échantillons sont bien plus capables. Si 30 % des formations ont un défaut, la probabilité que six formations tirées au hasard n’en contiennent aucune est d’environ 12 % — un échantillon de six sans constat est donc un indice raisonnable de l’absence d’un problème répandu, et aucun indice sur un problème rare.

p = 0.30
n = 6
print(f"chance of finding none: {(1 - p) ** n:.1%}")
(1 - 0.30)^6

Cette seule ligne mérite de figurer dans le rapport. Elle convertit « nous en avons visité six sans rien trouver » en une affirmation assortie d’un nombre.

LQAS — conçu exactement pour cela

L’échantillonnage par lots pour l’assurance qualité formalise le paragraphe précédent, et ce secteur l’emploie déjà pour les enquêtes de couverture. L’idée est de cesser de vouloir estimer et de commencer à vouloir décider — fixer un seuil, une taille d’échantillon et une règle de décision, puis accepter ou rejeter.

Visiter 12 formations. Si 3 ou plus ont un facteur de vérification hors de 0,95-1,05, le rapportage du district est classé comme nécessitant une action corrective.

L’avantage est que l’échantillon peut être petit parce que la question l’est. Le coût est que vous obtenez un verdict et non un chiffre, et que quelqu’un réclamera le chiffre malgré tout. Dites d’emblée pour lequel vous avez conçu.

Combinez, et étiquetez

Les évaluations réelles emploient souvent les trois, et c’est très bien tant que le rapport les sépare.

plan = pd.DataFrame({
    "facility_id": ["FAC012", "FAC033", "FAC004", "FAC019", "FAC007", "FAC021"],
    "reason": ["random", "random", "risk: reporting 58%", "risk: round numbers",
               "volume: top 5", "volume: top 5"],
})
plan <- tibble::tribble(
  ~facility_id, ~reason,
  "FAC012", "random",
  "FAC033", "random",
  "FAC004", "risk: reporting 58%",
  "FAC019", "risk: round numbers",
  "FAC007", "volume: top 5",
  "FAC021", "volume: top 5"
)

La colonne reason est la section méthodologie. Avec elle, un lecteur sait quels constats se généralisent et lesquels non. Sans elle, le rapport a un échantillon et trois affirmations incompatibles, et un relecteur qui le remarque les écartera toutes.

La suite

L’échantillonnage fondé sur le risque exige un classement de risque, et vous n’avez pour l’instant que des taux de rapportage. Les deux leçons suivantes construisent le reste à partir de l’extraction que vous détenez déjà — des tendances qui bougent de façon impossible, des valeurs qui se répètent, et des chiffres qui trahissent un nombre que personne n’a mesuré.

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.