cassionAnalyse de données

Retour à la leçonLeçon 1 sur 8L'échantillon n'est pas la population

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

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.

Diapositives · PDFDiapositives · PowerPoint

  1. Diapositive 1 / 18

    Ce que couvre cette leçon

    • Deux nombres tirés d'un seul fichier
    • D'où vient l'écart
    • Pourquoi concevoir le plan ainsi
    • Les estimations par strate n'ont pas besoin de pondérations
    • Le sens n'est pas toujours le même
    • Que faire lorsqu'il n'y a pas de base de sondage
    • La suite
    Notes du présentateur
    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.
  2. Diapositive 2 / 18

    Deux nombres tirés d'un seul fichier — En Python

    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%}")
    Notes du présentateur
    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 %.
  3. Diapositive 3 / 18

    Deux nombres tirés d'un seul fichier — En R

    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")
    Notes du présentateur
    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.
  4. Diapositive 4 / 18

    D'où vient l'écart

    StrateMénages dans la baseZones tiréesMénages enquêtésInsécurité alimentaire
    Urbain21 2702531614,6 %
    Rural accessible28 9582533736,2 %
    Rural reculé6 2002534346,4 %
    Notes du présentateur
    Rien à voir avec l'arithmétique. Tout à voir avec la façon dont l'échantillon a été tiré.
  5. Diapositive 5 / 18

    D'où vient l'écart — En Python

    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))
    Notes du présentateur
    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.
  6. Diapositive 6 / 18

    D'où vient l'écart — En R

    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))
  7. Diapositive 7 / 18

    D'où vient l'écart

    StratePart de l'échantillonPart de la population
    Urbain31,7 %37,7 %
    Rural accessible33,8 %51,3 %
    Rural reculé34,4 %11,0 %
  8. Diapositive 8 / 18

    D'où vient l'écart

    • Lorsque ces deux colonnes diffèrent, une estimation non pondérée est biaisée — et l'ampleur comme le sens du biais se…
    Notes du présentateur
    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.
  9. Diapositive 9 / 18

    Pourquoi concevoir le plan ainsi

    • 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…
    Notes du présentateur
    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. 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.
  10. Diapositive 10 / 18

    Les estimations par strate n'ont pas besoin de pondérations — En Python

    print(by_stratum["rate"].round(3))
    Notes du présentateur
    Le plan a une conséquence utile qu'il vaut la peine de voir tôt.
  11. Diapositive 11 / 18

    Les estimations par strate n'ont pas besoin de pondérations — En R

    survey |> summarise(rate = mean(food_insecure == "true"), .by = stratum)
    Notes du présentateur
    À 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.
  12. Diapositive 12 / 18

    Le sens n'est pas toujours le même — En Python

    for outcome in ["food_insecure", "improved_water_source"]:
        print(f"{outcome:24} unweighted {(survey[outcome] == 'true').mean():.1%}")
    Notes du présentateur
    L'insécurité alimentaire baisse quand on pondère. L'accès à une source améliorée monte, et davantage.
  13. Diapositive 13 / 18

    Le sens n'est pas toujours le même — En R

    survey |>
      summarise(across(c(food_insecure, improved_water_source), ~ mean(.x == "true")))
  14. Diapositive 14 / 18

    Le sens n'est pas toujours le même

    RésultatNon pondéréPondéré
    Insécurité alimentaire32,8 %29,1 %
    Source d'eau améliorée62,8 %69,8 %
  15. Diapositive 15 / 18

    Le sens n'est pas toujours le même

    • 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 «…
    Notes du présentateur
    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.
  16. Diapositive 16 / 18

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

    • Rapporter par strate seulement, si les strates sont enregistrées. Les chiffres infranationaux sont d'ailleurs…
    • Reconstituer des pondérations approximatives à partir d'une source de population externe, en documentant qu'elles…
    • Dire que l'enquête ne permet pas d'estimation de population. C'est une vraie réponse, meilleure qu'un nombre qui…
    Notes du présentateur
    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.
  17. Diapositive 17 / 18

    La suite

    • Les pondérations sont calculables, à partir de la base que ce jeu de données livre.
    Notes du présentateur
    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.
  18. Diapositive 18 / 18

    La suite

    Lire la leçon complète, avec le code exécutable Retour à la leçon