Retour à la leçon·Leçon 6 sur 8·Estimer 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.
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.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.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)La non-réponse n'est pas une donnée manquante
Strate Tirés Enquêtés Réponse Urbain 350 316 90,3 % Rural accessible 350 337 96,3 % Rural reculé 350 343 98,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.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.L'ajustement, et l'hypothèse qui le porte — En R
survey |> summarise(mean_adjustment = mean(14 / households_interviewed), .by = stratum)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.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.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.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")Ajustez au bon niveau — En R
survey |> summarise(weight = first(weight), n = n(), .by = ea_id) |> arrange(desc(weight)) |> head(3)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.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.Les grappes de remplacement — En R
frame |> filter(!is.na(replacement_for)) |> select(ea_id, stratum, households, replacement_for)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.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}")Les grappes de remplacement — En R
c(selected = 25, reached = 23, adjustment = 25 / 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.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)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.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.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.