cassionAnalyse de données

Retour à la leçonLeçon 6 sur 8Estimer correctement

Les ménages que vous n'avez pas eus

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 / 23

    Ce que couvre cette leçon

    • La non-réponse n'est pas une donnée manquante
    • L'ajustement, et l'hypothèse qui le porte
    • Ajustez au bon niveau
    • Les grappes de remplacement
    • Les taux de réponse ont leur place dans le rapport
    • Quand la réponse est assez mauvaise pour s'arrêter
    • La suite
    Notes du présentateur
    Cinquante-quatre entretiens manquants concentrés dans la strate la moins semblable aux autres, deux grappes de remplacement qui changent une probabilité que personne ne recalcule, et l'hypothèse sur laquelle repose tout ajustement.
  2. Diapositive 2 / 23

    La non-réponse n'est pas une donnée manquante — En Python

    selected = frame[frame["selected"] == True]
    
    response = selected.groupby("stratum").agg(
        selected=("households_selected", "sum"),
        interviewed=("households_interviewed", "sum"),
    )
    response["rate"] = response["interviewed"] / response["selected"]
    print(response)
    Notes du présentateur
    Une valeur manquante est une question sans réponse. La non-réponse est un ménage tiré et jamais enquêté, et la différence compte car la non-réponse ne laisse aucune ligne — le cas le plus difficile du cours de nettoyage, dans un décor où la base de sondage dit exactement combien de lignes devraient s'y trouver.
  3. Diapositive 3 / 23

    La non-réponse n'est pas une donnée manquante — En R

    frame |>
      filter(selected) |>
      summarise(selected = sum(households_selected),
                interviewed = sum(households_interviewed), .by = stratum) |>
      mutate(rate = interviewed / selected)
  4. Diapositive 4 / 23

    La non-réponse n'est pas une donnée manquante

    StrateTirésEnquêtésRéponse
    Urbain35031690,3 %
    Rural accessible35033796,3 %
    Rural reculé35034398,0 %
    Notes du présentateur
    996 sur 1 050. Un taux de réponse global de 95 % se lit comme excellent, et le fait utile n'est pas la moyenne — c'est que le déficit se concentre en zone urbaine, qui est aussi la moins touchée par l'insécurité alimentaire, de vingt points. Une analyse non ajustée sous-représente donc exactement la strate qui tirerait l'estimation vers le bas. Le sens du biais se déduit de ce seul tableau, avant toute modélisation.
  5. Diapositive 5 / 23

    L'ajustement, et l'hypothèse qui le porte — En Python

    survey["nr_adjustment"] = 14 / survey["ea_id"].map(
        selected.set_index("ea_id")["households_interviewed"]
    )
    print(survey.groupby("stratum")["nr_adjustment"].mean().round(3))
    Notes du présentateur
    L'ajustement de la leçon 2 gonfle la pondération de chaque ménage répondant pour qu'il porte les non-répondants de sa propre zone.
  6. Diapositive 6 / 23

    L'ajustement, et l'hypothèse qui le porte — En R

    survey |> summarise(mean_adjustment = mean(14 / households_interviewed), .by = stratum)
  7. Diapositive 7 / 23

    L'ajustement, et l'hypothèse qui le porte

    • L'hypothèse est que les non-répondants ressemblent aux répondants de la même zone — Elle n'est pas gratuite et n'est…
    Notes du présentateur
    L'hypothèse est que les non-répondants ressemblent aux répondants de la même zone. Elle n'est pas gratuite et n'est pas testable depuis l'enquête, donc elle a sa place dans la section des limites, en toutes lettres.
  8. Diapositive 8 / 23

    L'ajustement, et l'hypothèse qui le porte

    La non-réponse a été ajustée à l'intérieur de chaque zone de dénombrement. La réponse urbaine était de 90,3 % contre 96 à 98 % en rural. Si les non-répondants urbains sont systématiquement mieux lotis que les répondants urbains — les concessions fermées et l'absence en journée le suggèrent — l'estimation ajustée reste légèrement trop élevée.
    Notes du présentateur
    Remarquez ce que fait ce paragraphe. Il nomme le sens du biais résiduel après ajustement, ce qui est le maximum qu'une enquête puisse honnêtement offrir.
  9. Diapositive 9 / 23

    Ajustez au bon niveau

    • Dans la zone. Ce que fait cette enquête. Le meilleur quand la réponse varie entre zones, ce qui est toujours le cas.
    • Dans la strate. Plus grossier, et cela jette l'information selon laquelle une zone a eu quatre refus et sa voisine…
    • Dans une classe de réponse. Regroupez les zones selon un facteur prédictif de la réponse — densité urbaine, jour de…
    Notes du présentateur
    Trois niveaux sont possibles et ils ne se valent pas. Ce dernier point compte ici — une zone à très peu d'entretiens aboutis reçoit un gros ajustement issu d'un petit dénominateur, et une seule zone de ce type peut déplacer l'estimation d'une strate. Vérifiez.
  10. Diapositive 10 / 23

    Ajustez au bon niveau — En Python

    weights_by_area = survey.groupby("ea_id")["weight"].first().sort_values()
    print(weights_by_area.tail(3))
    print(f"largest weight / smallest: {weights_by_area.max() / weights_by_area.min():.1f}x")
  11. Diapositive 11 / 23

    Ajustez au bon niveau — En R

    survey |>
      summarise(weight = first(weight), n = n(), .by = ea_id) |>
      arrange(desc(weight)) |>
      head(3)
  12. Diapositive 12 / 23

    Ajustez au bon niveau

    • Écrêtez ou signalez toute pondération très éloignée des autres — Une pondération valant trois fois la base de sa strate…
    Notes du présentateur
    Écrêtez ou signalez toute pondération très éloignée des autres. Une pondération valant trois fois la base de sa strate est une zone faisant le travail de trois, et elle gonfle la variance sans ajouter d'information. L'écrêtage est un jugement assorti d'un coût — il introduit un léger biais pour retirer une grande variance — et comme tout jugement de ce cours il s'écrit avec son seuil.
  13. Diapositive 13 / 23

    Les grappes de remplacement — En Python

    replacements = frame[frame["replacement_for"].notna()]
    print(replacements[["ea_id", "stratum", "households", "replacement_for"]])
    Notes du présentateur
    Deux zones du rural reculé n'ont pas pu être atteintes et ont été remplacées. La base l'enregistre.
  14. Diapositive 14 / 23

    Les grappes de remplacement — En R

    frame |> filter(!is.na(replacement_for)) |>
      select(ea_id, stratum, households, replacement_for)
  15. Diapositive 15 / 23

    Les grappes de remplacement

    • Traiter le remplacement comme l'original — Le choix pragmatique, et ce que fait presque tout le monde
    • Traiter l'original comme une non-réponse au niveau de la grappe — Plus honnête et plus difficile : la strate compte en…
    Notes du présentateur
    C'est là qu'un plan cesse discrètement d'être celui qui a été documenté, et il existe deux traitements défendables. Traiter le remplacement comme l'original. Le choix pragmatique, et ce que fait presque tout le monde. Cela suppose que la zone de remplacement est échangeable avec celle qu'elle remplace — raisonnable si le remplacement était aléatoire dans la strate, ce que le protocole devrait dire et ne dit souvent pas. Traiter l'original comme une non-réponse au niveau de la grappe. Plus honnête et plus difficile : la strate compte en réalité 23 grappes répondantes et non 25, et ses pondérations se gonflent en conséquence.
  16. Diapositive 16 / 23

    Les grappes de remplacement — En Python

    remote_areas = (frame["stratum"] == "rural-remote") & (frame["selected"] == True)
    responding = int(remote_areas.sum()) - len(replacements)
    print(f"25 selected, {responding} reached, cluster-level adjustment "
          f"{25 / responding:.3f}")
  17. Diapositive 17 / 23

    Les grappes de remplacement — En R

    c(selected = 25, reached = 23, adjustment = 25 / 23)
  18. Diapositive 18 / 23

    Les grappes de remplacement

    Signalez le remplacement même si vous le traitez comme échangeable. « Deux des 25 grappes du rural reculé ont été remplacées pour cause d'inaccessibilité ; les deux remplaçantes étaient accessibles, de sorte que l'estimation du rural reculé est probablement conservatrice » est une phrase dont le lecteur a besoin et qu'il ne peut pas reconstituer.
    Notes du présentateur
    L'écart sur cette enquête est faible. La raison de le faire explicitement n'est pas l'ampleur de la correction, c'est que les zones inaccessibles ne forment jamais un sous-ensemble aléatoire. Une zone qu'on ne peut pas atteindre en février est reculée, ou peu sûre, ou inondée, et ce sont précisément les conditions associées aux résultats mesurés. La remplacer par une zone accessible retire systématiquement les pires cas.
  19. Diapositive 19 / 23

    Les taux de réponse ont leur place dans le rapport — En Python

    report = response.reset_index()
    report["non_response_bias_risk"] = ["high", "low", "low"]
    report["adjustment"] = "within enumeration area"
    print(report)
  20. Diapositive 20 / 23

    Les taux de réponse ont leur place dans le rapport — En R

    tibble::tribble(
      ~stratum,            ~selected, ~interviewed, ~rate,  ~risk,
      "urban",                   350,          316, 0.903, "high",
      "rural-accessible",        350,          337, 0.963, "low",
      "rural-remote",            350,          343, 0.980, "low"
    )
    Notes du présentateur
    Quatre colonnes et une appréciation du risque. Un rapport d'enquête qui donne un taux de réponse global unique a caché la seule chose de la non-réponse qui affecte l'estimation — l'endroit où elle est tombée.
  21. Diapositive 21 / 23

    Quand la réponse est assez mauvaise pour s'arrêter

    • Au-dessus de 90 % — ajustez et rapportez. Le biais résiduel est en général faible devant l'erreur d'échantillonnage.
    • De 80 à 90 % — ajustez, rapportez, et décrivez le sens probable du biais résiduel. Ne comparez pas à un tour…
    • En dessous de 80 % — l'ajustement porte trop de charge. Rapportez l'estimation avec une réserve bien visible, ou…
    • En dessous de 60 % dans une strate — l'estimation de cette strate n'est pas utilisable, et le dire est le constat…
    Notes du présentateur
    Il n'existe pas de seuil universel, et la recommandation honnête est comparative plutôt qu'absolue. La comparaison la plus importante est celle avec le tour précédent. Une estimation qui a bougé de cinq points entre deux tours, alors que la réponse a bougé de quinze, a une explication alternative évidente qu'il faut traiter avant toute explication programmatique.
  22. Diapositive 22 / 23

    La suite

    • Vous avez une estimation, un plan et un compte rendu honnête de ce qui lui manque.
    Notes du présentateur
    Vous avez une estimation, un plan et un compte rendu honnête de ce qui lui manque. La leçon suivante en fait ce qui se publie — un intervalle, de la bonne forme, avec le bon nombre de décimales, et la phrase qui l'entoure.
  23. Diapositive 23 / 23

    La suite

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