cassionAnalyse de données

Leçon 5 sur 8

Unité · Compter des personnes

Portée, couverture, et les personnes comptées douze fois

Trois indicateurs qui sonnent tous comme « combien de personnes avons-nous aidées », et la série mensuelle qui transforme 4 200 enfants en 50 000 dès que quelqu'un additionne la colonne.

PythonR90 minDéfinitions d'indicateurs de l'UNICEFObjectifs de développement durable (ODD)Gestion axée sur les résultats (GAR)

Trois questions qui n’en font qu’une en apparence

« Combien de personnes le programme a-t-il aidées ? » a trois réponses, et une proposition, un rapport bailleur et un taux de couverture en exigent chacun une différente.

  • La portée — combien de personnes distinctes ont reçu quelque chose, sur une période énoncée.
  • Le volume de services — combien de services ont été délivrés. Supérieur à la portée dès que quelqu’un revient.
  • La couverture — quelle part de ceux qui en avaient besoin l’ont reçu. Exige un dénominateur et seule elle dit si le programme suffit.

Les noms sont employés indifféremment en pratique, et c’est ainsi qu’un programme rapporte 50 000 enfants atteints dans un district qui en compte 4 200.

Le cumul qui fabrique des personnes

Voici le mécanisme, et c’est de loin la manière la plus courante dont ce secteur surévalue son travail.

monthly = (
    muac.assign(month=muac["screening_date"].dt.strftime("%Y-%m"))
    .groupby("month")
    .agg(screenings=("child_id", "size"),
         distinct_children=("child_id", "nunique"))
)
monthly["cumulative_naive"] = monthly["screenings"].cumsum()

print(monthly)
print("sum of monthly counts:  ", monthly["screenings"].sum())
print("distinct children, year:", muac["child_id"].nunique())
monthly <- muac |>
  mutate(month = format(screening_date, "%Y-%m")) |>
  summarise(screenings = n(), distinct_children = n_distinct(child_id), .by = month) |>
  arrange(month) |>
  mutate(cumulative_naive = cumsum(screenings))

c(sum_of_months = sum(monthly$screenings),
  distinct_year = n_distinct(muac$child_id))

Sur ce registre, les deux se trouvent proches, car il s’agit d’une campagne à un seul passage et peu d’enfants ont été dépistés deux fois. C’est l’exception. Dans un programme mensuel — soins thérapeutiques ambulatoires, transfert monétaire, formation sanitaire — un bénéficiaire apparaît chaque mois où il reçoit quelque chose, et douze décomptes mensuels additionnés font douze fois une charge de cas stable.

L’arithmétique qui dérape.

Correct Faux
Portée mensuelle, janvier personnes distinctes en janvier —
Portée annuelle personnes distinctes sur l’année somme des douze décomptes mensuels
Portée cumulée à ce jour personnes distinctes depuis le début total courant des décomptes mensuels

Une portée cumulée ne se calcule que sur des données au niveau de la personne. Si votre rapportage est fait d’agrégats mensuels, vous ne pouvez pas dédoublonner entre les mois, et le chiffre annuel honnête n’est pas disponible — il faut soit le dire, soit rapporter le mois maximal plutôt que la somme.

annual_reach = muac["child_id"].nunique()
service_volume = len(muac)
print(f"reach {annual_reach:,} children; {service_volume:,} screening events")
c(reach = n_distinct(muac$child_id), volume = nrow(muac))

Dédoublonner entre les mois, quand c’est possible

first_contact = (
    muac.sort_values("screening_date")
    .drop_duplicates(subset=["child_id"], keep="first")
    .assign(month=lambda d: d["screening_date"].dt.strftime("%Y-%m"))
)
new_by_month = first_contact.groupby("month").size()
print(new_by_month.cumsum())
first_contact <- muac |>
  arrange(screening_date) |>
  distinct(child_id, .keep_all = TRUE) |>
  mutate(month = format(screening_date, "%Y-%m"))

first_contact |> count(month) |> arrange(month) |> mutate(cumulative = cumsum(n))

Compter chaque personne dans le mois de son premier contact donne une série cumulée qui monte jusqu’à la vraie portée sans jamais la dépasser. Cela produit aussi un nombre de gestion réellement utile — les nouveaux bénéficiaires par mois, qui distingue un programme qui croît d’un programme qui sert les mêmes personnes à répétition.

Rapportez toujours les deux — nouveaux ce mois-ci et total servi ce mois-ci. Ils répondent à des questions différentes et chacun seul induit en erreur.

La portée n’est pas la couverture, et la différence est le dénominateur

La portée compte qui vous avez servi. La couverture dit quelle fraction de ceux qui avaient besoin du service l’ont reçu, et c’est la seule des trois qui puisse dire qu’un programme est insuffisant.

reached = muac["child_id"].nunique()
under5_population = 21500      # from the administrative frame, projected

print(f"screening coverage: {reached / under5_population:.1%}")
c(coverage = n_distinct(muac$child_id) / 21500)

Deux erreurs à éviter, toutes deux assez fréquentes pour avoir un nom.

Admissions sur charge attendue n’est pas la couverture. Diviser les enfants admis en traitement par la charge que vous attendiez dit la qualité de votre prévision, non la part des enfants malnutris que vous avez atteinte. La vraie couverture exige le nombre d’enfants malnutris, qui exige une enquête — d’où l’existence des enquêtes de couverture comme méthodologie distincte.

Une portée rapportée à une population n’est pas non plus une couverture, sauf si cette population est la population dans le besoin. Dépister 4 200 des 21 500 moins de cinq ans est une couverture de dépistage. Cela ne dit rien de la part des enfants malnutris qui ont été trouvés.

Les cumuls dans les propositions

Les propositions pluriannuelles demandent « les personnes atteintes sur la durée du projet », et c’est là que le double comptage devient un sujet de conformité plutôt que de méthode.

Trois règles qui le maintiennent honnête.

  • Énoncez le niveau de dédoublonnage. « Individus uniques, dédoublonnés à l’intérieur de l’année, non entre années » est un compromis défendable et courant. Un dédoublonnage non documenté ne l’est pas.
  • N’additionnez jamais la portée entre secteurs. Un ménage recevant de l’eau, de la nourriture et un service de protection est un ménage, et additionner trois portées sectorielles le compte trois fois. Rapportez par secteur, et ne donnez un total dédoublonné que si vous pouvez réellement le calculer.
  • Dites quand vous ne pouvez pas. « Les chiffres agrégés ne sont pas dédoublonnés entre partenaires ; la portée unique réelle est inférieure » est une phrase que les bailleurs lisent constamment et respectent. L’alternative est un nombre qui s’effondre à l’audit.

Lequel a sa place dans votre cadre logique

Si la ligne porte sur Employez
L’effort et le coût du programme Le volume de services
Les personnes servies La portée, avec le niveau de dédoublonnage énoncé
La suffisance de la réponse La couverture, avec un dénominateur fondé sur les besoins
L’achèvement par ceux qui commencent Un taux d’achèvement ou d’abandon

La dernière ligne est la plus souvent absente, et elle est fréquemment la plus informative — la leçon sur la théorie du changement l’a montré avec l’abandon de 13,8 % entre penta1 et penta3, qu’aucun chiffre de portée ou de couverture n’aurait révélé.

La portée dit ce que vous avez fait. La couverture dit si c’était suffisant. Un rapport qui n’a que la première est une description d’activité, et tout lecteur le sait.

La suite

Presque tout indicateur de cette leçon possède déjà une définition officielle publiée par quelqu’un — UNICEF, OMS, le cluster, le cadre des ODD. La leçon suivante montre comment la trouver, l’adopter, et dire précisément où la vôtre s’en écarte.

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.