Retour à la leçon·Leçon 5 sur 8·Des règles, et des limites
Une discontinuité parfaite avec rien derrière
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
- Une règle est un protocole
- Ce qu'exige une régression sur discontinuité
- La condition à laquelle ce registre échoue
- Ce qu'il aurait fallu
- Où se cachent les seuils dans les données de programme
- Rapportez-le en entier
- La suite
Notes du présentateur
Tous les enfants à 124 mm ont été orientés et 2 % de ceux à 125 mm l'ont été. L'affectation est aussi nette qu'une règle peut l'être et la densité ne montre aucune manipulation, mais le protocole ne peut pas tourner, faute d'un résultat mesuré chez les enfants non orientés.Une règle est un protocole — En Python
import pandas as pd import numpy as np screening = pd.read_csv("muac-screening-artibonite-2024.v1.csv") screening["referred"] = screening["outcome"] != "no-action" window = screening[screening["muac_mm"].between(118, 132)] print(window.groupby("muac_mm")["referred"].agg(["mean", "size"]).round(3))Notes du présentateur
Le protocole de dépistage du PB oriente un enfant vers l'alimentation supplémentaire en dessous de 125 mm et ne fait rien à ce seuil ou au-dessus. Ce seul nombre accomplit ce qu'une évaluation doit d'ordinaire payer : il affecte le traitement sur une variable, à un point connu, sans latitude.Une règle est un protocole — En R
library(dplyr) screening |> filter(between(muac_mm, 118, 132)) |> summarise(referred = mean(outcome != "no-action"), n = n(), .by = muac_mm)Une règle est un protocole
PB (mm) Orientés n 122 100,0 % 44 123 100,0 % 47 124 100,0 % 45 125 2,0 % 51 126 0,0 % 78 127 0,0 % 70 Une règle est un protocole
- Un millimètre fait passer la probabilité d'orientation de 1,00 à 0,02 — Les enfants à 124 et à 125 mm sont, à tout ce…
- C'est ce qu'une donnée de routine produit de plus proche d'une expérience randomisée — et cela arrive gratuitement,…
Notes du présentateur
Un millimètre fait passer la probabilité d'orientation de 1,00 à 0,02. Les enfants à 124 et à 125 mm sont, à tout ce qui compte près, les mêmes enfants — l'erreur de mesure d'un ruban PB est plus grande que l'écart entre eux — et un groupe a été traité tandis que l'autre ne l'a pas été. C'est ce qu'une donnée de routine produit de plus proche d'une expérience randomisée, et cela arrive gratuitement, parce que le programme allait de toute façon appliquer la règle.Ce qu'exige une régression sur discontinuité
- Un : l'affectation doit être réellement nette au seuil — Vérifié ci-dessus
- Deux : personne ne doit manipuler la variable de position — Si un dépisteur souhaitant qu'un enfant soit traité…
Notes du présentateur
Trois conditions. Deux sont vérifiables dans ce fichier et la troisième ne l'est pas. Un : l'affectation doit être réellement nette au seuil. Vérifié ci-dessus. Si la règle était appliquée avec souplesse — disons 60 % d'orientations juste en dessous et 20 % juste au-dessus —, le protocole fonctionne encore mais devient flou, et l'estimation doit être divisée par le saut de probabilité de traitement plutôt que lue directement. Deux : personne ne doit manipuler la variable de position. Si un dépisteur souhaitant qu'un enfant soit traité enregistre 124 au lieu de 126, les enfants juste en dessous du seuil ne sont plus comparables à ceux juste au-dessus — ce sont ceux que quelqu'un a décidé d'aider.Ce qu'exige une régression sur discontinuité — En Python
counts = screening["muac_mm"].value_counts().sort_index() print(counts.loc[120:130]) below = screening["muac_mm"].between(120, 124).sum() above = screening["muac_mm"].between(125, 129).sum() print(f"120-124: {below} 125-129: {above}") screening["last_digit"] = screening["muac_mm"] % 10 print((screening["last_digit"].value_counts(normalize=True).sort_index() * 100).round(1))Ce qu'exige une régression sur discontinuité — En R
table(screening$muac_mm)[as.character(118:132)] table(screening$muac_mm %% 10)Ce qu'exige une régression sur discontinuité
- Les effectifs montent régulièrement à travers le seuil : 45 à 124, 51 à 125, 78 à 126 — Il n'y a pas d'accumulation…
- Les chiffres terminaux sont plats, de 9,6 % à 10,8 % sur les dix — Pas d'arrondi aux cinq, pas d'évitement du seuil
- Trois : un résultat doit être mesuré des deux côtés — Il ne l'est pas, et cela met fin à l'analyse
Notes du présentateur
Les effectifs montent régulièrement à travers le seuil : 45 à 124, 51 à 125, 78 à 126. Il n'y a pas d'accumulation juste sous 125, et la densité du côté traité est plus faible que du côté non traité, ce qui est l'allure d'une distribution de PB réellement croissante. Les chiffres terminaux sont plats, de 9,6 % à 10,8 % sur les dix. Pas d'arrondi aux cinq, pas d'évitement du seuil. Le test de préférence de chiffres du cours sur la qualité des données, employé ici à une autre fin : une vérification de manipulation est un test de préférence de chiffres posé à un nombre précis. Trois : un résultat doit être mesuré des deux côtés. Il ne l'est pas, et cela met fin à l'analyse.La condition à laquelle ce registre échoue — En Python
print(screening.columns.tolist()) print(f"children screened once: {(screening['child_id'].value_counts() == 1).sum()}") print(f"children screened twice: {(screening['child_id'].value_counts() == 2).sum()}")La condition à laquelle ce registre échoue — En R
names(screening) table(table(screening$child_id))La condition à laquelle ce registre échoue
- Le fichier enregistre une mesure, une orientation, et rien d'autre — 4 194 des 4 206 enfants n'apparaissent qu'une fois
- Le registre de traitement ne comble pas le vide —
cmam-admissions-2024contient des résultats pour les seuls enfants… - Une estimation d'impact a besoin du côté non traité — Sans lui, la règle d'affectation la plus nette du secteur ne…
Notes du présentateur
Le fichier enregistre une mesure, une orientation, et rien d'autre. 4 194 des 4 206 enfants n'apparaissent qu'une fois. Il n'y a pas de PB de suivi, pas de statut de guérison, pas de second passage de dépistage — donc pour les enfants à 125 mm qui n'ont pas été orientés, aucun résultat n'existe. Le registre de traitement ne comble pas le vide.cmam-admissions-2024contient des résultats pour les seuls enfants traités, et ses identifiants ne se rattachent pas au fichier de dépistage. Même s'ils le faisaient, il ne porterait que le côté orienté, c'est-à-dire précisément la moitié qu'un protocole de discontinuité possède déjà. Une estimation d'impact a besoin du côté non traité. Sans lui, la règle d'affectation la plus nette du secteur ne produit rien.Ce qu'il aurait fallu
- Une mesure de suivi chez les enfants juste au-dessus du seuil — Pas tous — les enfants entre 125 et 130 mm, remesurés à…
- Le même résultat des deux côtés — La guérison est définie différemment pour les enfants traités et non traités, et une…
- Assez d'enfants près du seuil — L'estimation emploie une fenêtre, et tout ce qui est en dehors est écarté
Notes du présentateur
C'est la partie utile de la leçon, parce que c'est une spécification de collecte sur laquelle quelqu'un peut agir. Une mesure de suivi chez les enfants juste au-dessus du seuil. Pas tous — les enfants entre 125 et 130 mm, remesurés à huit semaines. Quelques centaines d'enfants, une visite de plus, et le protocole devient estimable. Le même résultat des deux côtés. La guérison est définie différemment pour les enfants traités et non traités, et une comparaison a besoin d'une seule définition appliquée aux deux : le PB à huit semaines, mesuré de la même façon quoi qu'il se soit passé entre-temps. Assez d'enfants près du seuil. L'estimation emploie une fenêtre, et tout ce qui est en dehors est écarté.Ce qu'il aurait fallu — En Python
for bandwidth in (2, 3, 5, 10): band = screening[ screening["muac_mm"].between(125 - bandwidth, 124 + bandwidth)] print(f"±{bandwidth} mm: {len(band)} children" f" ({(band['muac_mm'] < 125).sum()} below, " f"{(band['muac_mm'] >= 125).sum()} above)")Ce qu'il aurait fallu
Fenêtre Enfants Sous le seuil Au-dessus ±2 mm 221 92 129 ±3 mm 335 136 199 ±5 mm 556 187 369 ±10 mm 1 210 265 945 Ce qu'il aurait fallu
- Une fenêtre étroite est plus crédible et moins précise — Les enfants à moins de 2 mm du seuil sont presque identiques…
- Choisissez la fenêtre avant de voir le résultat, et rapportez l'estimation à deux ou trois autres — Un résultat qui…
Notes du présentateur
Une fenêtre étroite est plus crédible et moins précise. Les enfants à moins de 2 mm du seuil sont presque identiques entre eux ; il y en a 221. Élargissez à 10 mm et vous avez six fois l'échantillon et comparez des enfants qui diffèrent réellement. Choisissez la fenêtre avant de voir le résultat, et rapportez l'estimation à deux ou trois autres. Un résultat qui n'apparaît qu'à une seule fenêtre est un résultat sur la fenêtre.Où se cachent les seuils dans les données de programme
Seuil Programme Variable de position PB < 125 mm Alimentation supplémentaire Périmètre brachial PB < 115 mm Alimentation thérapeutique Périmètre brachial Score de pauvreté sous un seuil Transfert monétaire Test de moyens indirect Phase 3 de l'IPC Réponse d'urgence Classification de zone Sous une cible de couverture Appui aux formations sanitaires Couverture rapportée Notes du présentateur
Dès qu'on cherche des règles d'éligibilité, ce secteur en regorge.Où se cachent les seuils dans les données de programme
- Chacun est une expérience naturelle que personne n'a conçue, et chacun exige les mêmes trois vérifications — La…
- C'est une décision de collecte, non d'analyse — Décider de mesurer un échantillon d'unités inéligibles coûte de…
Notes du présentateur
Chacun est une expérience naturelle que personne n'a conçue, et chacun exige les mêmes trois vérifications. La troisième — un résultat des deux côtés — est celle qui échoue le plus souvent, parce que les programmes mesurent ce qu'ils traitent. C'est une décision de collecte, non d'analyse. Décider de mesurer un échantillon d'unités inéligibles coûte de l'argent une année où personne ne le demande, et achète trois ans plus tard une évaluation qui serait autrement impossible.Rapportez-le en entier — Exemple (suite)
Supplementary feeding eligibility: assessment of a regression discontinuity Assignment: referral to TSFP below MUAC 125 mm. Sharpness 100% referred at 124 mm (n=45), 2.0% at 125 mm (n=51). The rule is applied without exception. Manipulation No pile-up below the cut-off: counts are 45, 51, 78 at 124, 125 and 126 mm. Terminal digits are uniform (9.6-10.8%). No evidence the running variable was adjusted. Outcome Not available. The register records screening and referral only; 4,194 of 4,206 children appear once, and no follow-up measurement exists on either side of the cut-off. Conclusion The design is available and cannot be estimated. To make itRapportez-le en entier — Exemple (suite)
estimable, re-measure MUAC at 8 weeks on a sample of children screened between 125 and 130 mm, using the same definition applied to referred children. 556 children sit within +/-5 mm of the cut-off, of whom 369 were not referred.Rapportez-le en entier
- Une évaluation de protocole qui conclut « non estimable » est un livrable — et celle-ci est plus utile qu'une…
Notes du présentateur
Une évaluation de protocole qui conclut « non estimable » est un livrable, et celle-ci est plus utile qu'une estimation forcée : elle nomme la mesure manquante, sa taille et son coût.La suite
- Le protocole à seuil a échoué sur des données qui n'existent pas.
Notes du présentateur
Le protocole à seuil a échoué sur des données qui n'existent pas. La leçon suivante porte sur un protocole qui a tourné sur des données qui existent, et pose la question qui aurait dû venir en premier — quelle ampleur d'effet aurait-il jamais pu trouver.