cassionAnalyse de données

Retour à la leçonLeçon 5 sur 8Des 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.

Diapositives · PDFDiapositives · PowerPoint

  1. Diapositive 1 / 24

    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.
  2. Diapositive 2 / 24

    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.
  3. Diapositive 3 / 24

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

    Une règle est un protocole

    PB (mm)Orientésn
    122100,0 %44
    123100,0 %47
    124100,0 %45
    1252,0 %51
    1260,0 %78
    1270,0 %70
  5. Diapositive 5 / 24

    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.
  6. Diapositive 6 / 24

    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.
  7. Diapositive 7 / 24

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

    Ce qu'exige une régression sur discontinuité — En R

    table(screening$muac_mm)[as.character(118:132)]
    table(screening$muac_mm %% 10)
  9. Diapositive 9 / 24

    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.
  10. Diapositive 10 / 24

    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()}")
  11. Diapositive 11 / 24

    La condition à laquelle ce registre échoue — En R

    names(screening)
    table(table(screening$child_id))
  12. Diapositive 12 / 24

    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-2024 contient 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-2024 contient 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.
  13. Diapositive 13 / 24

    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é.
  14. Diapositive 14 / 24

    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)")
  15. Diapositive 15 / 24

    Ce qu'il aurait fallu — En R

    # The bandwidth trade-off, in four lines.
  16. Diapositive 16 / 24

    Ce qu'il aurait fallu

    FenêtreEnfantsSous le seuilAu-dessus
    ±2 mm22192129
    ±3 mm335136199
    ±5 mm556187369
    ±10 mm1 210265945
  17. Diapositive 17 / 24

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

    Où se cachent les seuils dans les données de programme

    SeuilProgrammeVariable de position
    PB < 125 mmAlimentation supplémentairePérimètre brachial
    PB < 115 mmAlimentation thérapeutiquePérimètre brachial
    Score de pauvreté sous un seuilTransfert monétaireTest de moyens indirect
    Phase 3 de l'IPCRéponse d'urgenceClassification de zone
    Sous une cible de couvertureAppui aux formations sanitairesCouverture rapportée
    Notes du présentateur
    Dès qu'on cherche des règles d'éligibilité, ce secteur en regorge.
  19. Diapositive 19 / 24

    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.
  20. Diapositive 20 / 24

    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 it
  21. Diapositive 21 / 24

    Rapportez-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.
  22. Diapositive 22 / 24

    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.
  23. Diapositive 23 / 24

    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.
  24. Diapositive 24 / 24

    La suite

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