cassionAnalyse de données

Retour à la leçonLeçon 4 sur 8Qui est un cas

Là où les deux critères divergent

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

    Ce que couvre cette leçon

    • La question à laquelle le registre peut répondre
    • Calculez les deux sur les mêmes enfants
    • Le tableau croisé
    • Le désaccord, c'est l'âge
    • Lequel a raison ?
    • Ce que cela implique pour vos chiffres
    • Rapportez toujours la paire
    • La suite
    Notes du présentateur
    468 enfants sévères selon le seul poids-pour-taille, 24 selon le seul PB, 142 selon les deux. Une concordance de 22,4 %, et tout le désaccord tient à l'âge — 31,4 mois contre 14,3.
  2. Diapositive 2 / 22

    La question à laquelle le registre peut répondre

    • Les deux critères d'admission figurent dans les définitions de cas et les deux s'emploient sur le terrain.
    Notes du présentateur
    Les deux critères d'admission figurent dans les définitions de cas et les deux s'emploient sur le terrain. Savoir s'ils trouvent les mêmes enfants est une question empirique, et elle exige un registre portant les deux mesures sur le même enfant. Le registre d'admissions PCIMA a exactement cela — PB et poids-pour-taille à l'admission, pour 1 100 épisodes. Cette leçon est ce qu'il dit.
  3. Diapositive 3 / 22

    Calculez les deux sur les mêmes enfants — En Python

    import pandas as pd
    
    cmam = pd.read_csv("cmam-admissions-2024.v1.csv")
    cmam["whz"] = cmam.apply(whz, axis=1)          # from lesson 2
    
    both = cmam[cmam["whz"].notna()].copy()
    print(f"{len(both)} of {len(cmam)} admissions have both measurements")
    
    both["sam_whz"] = both["whz"] < -3
    both["sam_muac"] = both["muac_admission_mm"] < 115
  4. Diapositive 4 / 22

    Calculez les deux sur les mêmes enfants — En R

    both <- cmam |> filter(!is.na(whz))
    
    both <- both |>
      mutate(sam_whz = whz < -3,
             sam_muac = muac_admission_mm < 115)
    Notes du présentateur
    1 028 sur 1 100. Les 72 sans taille sont le défaut de taille manquante des défauts connus du jeu de données, et c'est le premier constat — les deux critères n'ont pas le même dénominateur, même sur un registre unique, car l'un exige deux mesures et l'autre une seule.
  5. Diapositive 5 / 22

    Le tableau croisé — En Python

    table = pd.crosstab(both["sam_muac"], both["sam_whz"],
                        rownames=["SAM by MUAC"], colnames=["SAM by WHZ"])
    print(table)
  6. Diapositive 6 / 22

    Le tableau croisé — En R

    both |> count(sam_muac, sam_whz)
  7. Diapositive 7 / 22

    Le tableau croisé

    Non sévère par WHZSévère par WHZ
    Non sévère par PB394468
    Sévère par PB24142
  8. Diapositive 8 / 22

    Le tableau croisé — En Python

    overlap = table.loc[True, True]
    union = table.values.sum() - table.loc[False, False]
    print(f"concordance {overlap / union:.1%} of {union} severe by either measure")
    Notes du présentateur
    Lisez les deux cellules en gras. 468 enfants sont sévères par le poids-pour-taille et pas par le PB. 24 le sont par le PB et pas par le poids-pour-taille. 142 le sont par les deux.
  9. Diapositive 9 / 22

    Le tableau croisé — En R

    both |>
      summarise(overlap = sum(sam_muac & sam_whz),
                union = sum(sam_muac | sam_whz)) |>
      mutate(concordance = overlap / union)
  10. Diapositive 10 / 22

    Le tableau croisé

    • 22,4 % — Des enfants que ce registre qualifierait de sévères selon l'une ou l'autre mesure, moins d'un quart le sont…
    Notes du présentateur
    22,4 %. Des enfants que ce registre qualifierait de sévères selon l'une ou l'autre mesure, moins d'un quart le sont selon les deux. Ce nombre n'est pas un artefact de ce jeu de données. Les comparaisons publiées trouvent des recouvrements de 10 % à 40 % selon la population, et un programme qui n'a pas mesuré le sien en suppose un.
  11. Diapositive 11 / 22

    Le désaccord, c'est l'âge — En Python

    mean_age = pd.Series({
        "MUAC only": both.loc[both["sam_muac"] & ~both["sam_whz"], "age_months"].mean(),
        "WHZ only": both.loc[both["sam_whz"] & ~both["sam_muac"], "age_months"].mean(),
        "Both": both.loc[both["sam_muac"] & both["sam_whz"], "age_months"].mean(),
    })
    print(mean_age.round(1))
  12. Diapositive 12 / 22

    Le désaccord, c'est l'âge — En R

    both |>
      mutate(group = case_when(sam_muac & sam_whz ~ "both",
                               sam_muac ~ "muac only",
                               sam_whz ~ "whz only",
                               TRUE ~ "neither")) |>
      summarise(mean_age = mean(age_months), n = n(), .by = group)
  13. Diapositive 13 / 22

    Le désaccord, c'est l'âge

    GroupeÂge moyen
    Sévère par le seul PB14,3 mois
    Sévère par les deux15,6 mois
    Sévère par le seul poids-pour-taille31,4 mois
  14. Diapositive 14 / 22

    Le désaccord, c'est l'âge — En Python

    by_age = both.assign(
        band=pd.cut(both["age_months"], [5, 12, 24, 36, 60],
                    labels=["6-11", "12-23", "24-35", "36-59"])
    ).groupby("band")[["sam_muac", "sam_whz"]].mean()
    print((by_age * 100).round(1))
    Notes du présentateur
    Voilà. Les enfants que le PB trouve et que le poids-pour-taille manque ont la moitié de l'âge de ceux que le poids-pour-taille trouve et que le PB manque. Le mécanisme est simple et ce n'est un défaut d'aucune des deux mesures. Le PB croît avec l'âge : un bras en bonne santé mesure environ 135 mm à six mois et environ 155 mm à cinq ans. Un seuil fixe de 115 mm représente donc un déficit bien plus profond pour un enfant de cinq ans que pour un nourrisson, si bien que le PB devient progressivement plus difficile à franchir à mesure que l'enfant grandit. Le poids-pour-taille n'a aucun terme d'âge et s'applique également sur toute la plage.
  15. Diapositive 15 / 22

    Le désaccord, c'est l'âge — En R

    both |>
      mutate(band = cut(age_months, c(5, 12, 24, 36, 60),
                        labels = c("6-11", "12-23", "24-35", "36-59"))) |>
      summarise(across(c(sam_muac, sam_whz), mean), .by = band)
    Notes du présentateur
    Exécutez-le et les deux courbes se croisent. Le PB identifie davantage les plus jeunes ; le poids-pour-taille davantage les plus âgés. Un programme admettant sur le seul PB fait tourner une charge de cas plus jeune qu'un programme admettant sur le seul poids-pour-taille, et c'est un fait clinique sur qui est traité, non un détail de mesure.
  16. Diapositive 16 / 22

    Lequel a raison ?

    • Le PB prédit la mortalité au moins aussi bien, et mieux dans plusieurs études. Si le but de l'admission est de…
    • Le poids-pour-taille est le standard des enquêtes, et les seuils IPC comme les comparaisons internationales…
    • Le PB est opérationnellement praticable au niveau communautaire. Le poids-pour-taille ne l'est pas.
    Notes du présentateur
    Aucun, et la question est la mauvaise. Ce à quoi chacun sert diffère. La réponse du secteur est d'employer les deux, d'admettre sur l'un ou l'autre, et de décharger sur celui qui a servi à l'admission. Ce qui est cliniquement sensé et crée le problème analytique pour lequel cette leçon existe.
  17. Diapositive 17 / 22

    Ce que cela implique pour vos chiffres

    • La charge de cas dépend du critère — Admettre sur l'un ou l'autre donne ici une charge de 634 enfants sévères ; sur le…
    • Ce ne sont pas des estimations de la même quantité.
    • La prévalence n'est pas comparable entre mesures — Une MAG par le PB et une MAG par le poids-pour-taille sont deux…
    • La sortie doit employer le critère d'admission — Un enfant admis sur le PB et déchargé sur le poids-pour-taille peut…
    • Un programme qui change de critère casse sa propre série — Une charge de cas qui monte de 40 % au changement de…
    Notes du présentateur
    Quatre conséquences, et chacune est une question qui vous sera posée. La charge de cas dépend du critère. Admettre sur l'un ou l'autre donne ici une charge de 634 enfants sévères ; sur le seul PB, 166 ; sur le seul poids-pour-taille, La prévalence n'est pas comparable entre mesures. Une MAG par le PB et une MAG par le poids-pour-taille sont deux indicateurs différents. La leçon 6 montre ce que cela produit quand un chiffre est lu face au seuil de 15 %. La sortie doit employer le critère d'admission. Un enfant admis sur le PB et déchargé sur le poids-pour-taille peut sortir avant guérison, ou être gardé bien après. Le protocole PCIMA est explicite et les registres, régulièrement, ne le sont pas. Un programme qui change de critère casse sa propre série. Une charge de cas qui monte de 40 % au changement de protocole est une rupture de définition, et la règle du cours sur la conception d'indicateurs à propos du versionnement s'applique exactement.
  18. Diapositive 18 / 22

    Ce que cela implique pour vos chiffres — En Python

    for name, mask in [("either", both["sam_muac"] | both["sam_whz"]),
                       ("muac only", both["sam_muac"]),
                       ("whz only", both["sam_whz"])]:
        print(f"{name:10} caseload {mask.sum():>4}")
  19. Diapositive 19 / 22

    Ce que cela implique pour vos chiffres — En R

    both |> summarise(either = sum(sam_muac | sam_whz),
                      muac = sum(sam_muac), whz = sum(sam_whz))
  20. Diapositive 20 / 22

    Rapportez toujours la paire — Exemple

    Severe acute malnutrition, admissions 2024, n = 1,028 with both measurements
    
      By MUAC (<115 mm)                166
      By weight-for-height (z < -3)    610
      By either                        634
      By both                          142    (22.4% of those severe by either)
    
      Children severe by MUAC alone average 14.3 months; by weight-for-height alone,
      31.4 months. The two criteria identify overlapping but substantially different
      caseloads, and the difference is age.
    Notes du présentateur
    Six lignes. Elles devancent la question, nomment le mécanisme, et empêchent quelqu'un de comparer une charge fondée sur le PB à une charge fondée sur le poids-pour-taille comme si l'écart était une évolution nutritionnelle.
  21. Diapositive 21 / 22

    La suite

    • Vous savez classer des enfants et vous savez de quoi la classification dépend.
    Notes du présentateur
    Vous savez classer des enfants et vous savez de quoi la classification dépend. L'unité suivante se demande si l'enquête ayant produit les mesures est croyable — le rapport de plausibilité SMART, où l'écart-type de 1,22 de la leçon 2 est enfin lu.
  22. Diapositive 22 / 22

    La suite

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