cassionAnalyse de données

Leçon 1 sur 8

Unité · L'échantillon n'est pas la population

La moyenne de votre échantillon n'est la moyenne de rien

32,8 % contre 29,1 % sur les mêmes 996 entretiens, et 62,8 % contre 69,8 % sur les mêmes ménages. L'écart, c'est le plan de sondage, et ce n'est pas du bruit.

PythonR120 minEnquête démographique et de santé (EDS)Enquête par grappes à indicateurs multiples (MICS)Enquête SMART

Deux nombres tirés d’un seul fichier

Prenez l’enquête ménage, comptez les ménages classés en insécurité alimentaire, divisez par le nombre de ménages. Cela fait 32,8 %.

Pondérez maintenant chaque ménage par le nombre de ménages qu’il représente dans la population, et le même fichier donne 29,1 %.

import pandas as pd

survey = pd.read_csv("household-survey-2025.v1.csv")
frame = pd.read_csv("household-survey-frame-2025.v1.csv")

unweighted = (survey["food_insecure"] == "true").mean()
print(f"unweighted: {unweighted:.1%}")
library(dplyr)
library(readr)

survey <- read_csv("household-survey-2025.v1.csv")
frame  <- read_csv("household-survey-frame-2025.v1.csv")

mean(survey$food_insecure == "true")

Les deux nombres sont calculés correctement. L’un est une estimation de la population et l’autre une description de qui a été interrogé, et un seul des deux est ce que le rapport prétend rapporter.

D’où vient l’écart

Rien à voir avec l’arithmétique. Tout à voir avec la façon dont l’échantillon a été tiré.

Strate Ménages dans la base Zones tirées Ménages enquêtés Insécurité alimentaire
Urbain 21 270 25 316 14,6 %
Rural accessible 28 958 25 337 36,2 %
Rural reculé 6 200 25 343 46,4 %

Lisez ensemble la première et la dernière colonne. Le rural reculé représente 11 % de la population et 34 % de l’échantillon, et c’est de loin la strate la plus touchée.

Une moyenne non pondérée des trois lignes surreprésente donc d’un facteur trois la strate la plus en difficulté. Les 32,8 % ne sont pas l’insécurité alimentaire du district ; c’est celle d’une population dont un tiers des ménages sont ruraux reculés, et cette population n’existe pas.

by_stratum = (
    survey.assign(insecure=survey["food_insecure"] == "true")
    .groupby("stratum")
    .agg(interviews=("insecure", "size"), rate=("insecure", "mean"))
)
frame_totals = frame.groupby("stratum")["households"].sum()

comparison = by_stratum.join(frame_totals.rename("frame_households"))
comparison["sample_share"] = comparison["interviews"] / comparison["interviews"].sum()
comparison["population_share"] = (
    comparison["frame_households"] / comparison["frame_households"].sum()
)
print(comparison.round(3))
survey |>
  summarise(interviews = n(), rate = mean(food_insecure == "true"), .by = stratum) |>
  left_join(summarise(frame, frame_households = sum(households), .by = stratum),
            by = "stratum") |>
  mutate(sample_share     = interviews / sum(interviews),
         population_share = frame_households / sum(frame_households))
Strate Part de l’échantillon Part de la population
Urbain 31,7 % 37,7 %
Rural accessible 33,8 % 51,3 %
Rural reculé 34,4 % 11,0 %

Lorsque ces deux colonnes diffèrent, une estimation non pondérée est biaisée, et l’ampleur comme le sens du biais se déduisent entièrement du tableau.

Pourquoi concevoir le plan ainsi

La réaction immédiate est que l’échantillon a été mal tiré. Ce n’est pas le cas, et comprendre pourquoi fait l’essentiel de cette leçon.

Une allocation égale entre strates inégales est un choix délibéré et classique, et il achète quelque chose de précis — une estimation exploitable pour chaque strate séparément. Le rural reculé compte 11 % des ménages, si bien qu’un échantillon proportionnel à la population y aurait mis environ 110 entretiens : assez pour un chiffre national, très loin d’assez pour dire quoi que ce soit de la strate elle-même.

L’arbitrage est explicite.

  • L’allocation proportionnelle donne la meilleure estimation nationale et des estimations infranationales faibles.
  • L’allocation égale donne des estimations infranationales comparables et exige une pondération pour tout chiffre national.

Les EDS, les MICS et la plupart des évaluations humanitaires choisissent la seconde, car l’objet même de l’enquête est en général de comparer des lieux. Les pondérations ne corrigent pas une erreur. Elles sont le prix du plan.

Les estimations par strate n’ont pas besoin de pondérations

Le plan a une conséquence utile qu’il vaut la peine de voir tôt.

print(by_stratum["rate"].round(3))
survey |> summarise(rate = mean(food_insecure == "true"), .by = stratum)

À l’intérieur d’une strate, ce plan est autopondéré — chaque ménage avait la même probabilité de sélection — si bien que le taux non pondéré de la strate est déjà l’estimation. Les pondérations n’interviennent qu’au moment de combiner les strates.

C’est pourquoi un rapport peut légitimement présenter des chiffres non pondérés par strate à côté d’un total pondéré, et pourquoi le faire sans préciser lequel est lequel égare tout le monde.

Le sens n’est pas toujours le même

L’insécurité alimentaire baisse quand on pondère. L’accès à une source améliorée monte, et davantage.

for outcome in ["food_insecure", "improved_water_source"]:
    print(f"{outcome:24} unweighted {(survey[outcome] == 'true').mean():.1%}")
survey |>
  summarise(across(c(food_insecure, improved_water_source), ~ mean(.x == "true")))
Résultat Non pondéré Pondéré
Insécurité alimentaire 32,8 % 29,1 %
Source d’eau améliorée 62,8 % 69,8 %

Sept points sur le second. Il n’existe aucune règle générale voulant que les estimations non pondérées soient trop hautes ou trop basses : le biais va dans le sens où la strate suréchantillonnée diffère, et il diffère d’une ampleur différente pour chaque résultat.

On ne peut donc pas corriger un chiffre non pondéré à vue de nez, et un rapport qui en présente un avec la mention « non pondéré, le vrai chiffre est donc un peu plus bas » devine.

Que faire lorsqu’il n’y a pas de base de sondage

Il arrive d’hériter d’un jeu de données sans base et sans pondérations. Trois positions honnêtes, et aucune ne consiste à rapporter la moyenne non pondérée comme une estimation.

  • Rapporter par strate seulement, si les strates sont enregistrées. Les chiffres infranationaux sont d’ailleurs souvent ce que le public voulait.
  • Reconstituer des pondérations approximatives à partir d’une source de population externe, en documentant qu’elles sont approximatives.
  • Dire que l’enquête ne permet pas d’estimation de population. C’est une vraie réponse, meilleure qu’un nombre qui sera cité pendant trois ans.

La suite

Les pondérations sont calculables, à partir de la base que ce jeu de données livre. La leçon suivante les construit depuis le début — probabilité de sélection à chaque degré, pondération de base, ajustement pour non-réponse — puis les prouve, en vérifiant qu’elles totalisent le nombre de ménages que la base déclare.

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.