Atelier · Intermédiaire
Le taux que l'effectif cachait
Transformez un registre de traitement en cohorte, comptez des personnes-jours plutôt que des enfants, et voyez trois sites partageant la même proportion d'abandons se séparer une fois pris en compte le temps pendant lequel chacun a suivi ses enfants.
Un registre de traitement est une cohorte que personne n’a déclarée comme telle. Chaque enfant entre à une date, reste sous observation un certain temps, puis sort par l’une de plusieurs issues — c’est exactement la structure pour laquelle un taux à personnes-temps au dénominateur est fait, et exactement celle qu’un pourcentage jette.
Ce laboratoire applique correctement l’arithmétique de la première leçon à un vrai registre. Vous produirez deux chiffres d’abandon par site, constaterez qu’ils classent les sites différemment, et déciderez lequel doit servir à juger le programme.
Le fichier
cmam-admissions-2024.v1.csv — 1 100 épisodes de traitement dans six sites, chacun
avec une date d’admission, une date de sortie lorsqu’elle existe, et une issue.
Synthétique.
Ce laboratoire ne porte pas sur la PCIMA. Les critères d’admission, les seuils de PB et de rapport poids-taille et le sens clinique des issues relèvent de Analyse nutritionnelle ailleurs dans le programme. Ici le registre est une cohorte et rien d’autre : entrée, sortie, et le temps entre les deux.
Préparez d’abord
Un projet RStudio, le fichier en lecture seule, un répertoire outputs/, et un
script qui s’exécute de haut en bas depuis une session propre.
Partie une : construire les personnes-temps
Trois décisions, et chacune doit être écrite avant d’être codée.
La date de clôture. Soixante et onze enfants n’ont pas de date de sortie parce qu’ils étaient encore en traitement à la fermeture du registre. Ils sont censurés, non manquants — ils ont contribué du temps d’observation puis l’observation s’est arrêtée. Choisissez une date de clôture, justifiez-la en une ligne, et employez-la pour chaque enfant.
L’horloge. Le nombre de jours de l’admission à la sortie, la sortie étant la date de sortie ou la clôture selon le cas. Calculez-le en jours entiers et dites si vous comptez le jour d’admission.
Les exclusions. Quarante-cinq enfants ont été transférés. Décidez si leur temps d’observation compte, et dites ce que cette décision suppose.
# The shape of it, not the whole of it:
episodes |>
mutate(
exit = coalesce(discharge_date, cutoff),
person_days = as.integer(exit - admission_date),
censored = is.na(discharge_date)
)
Vérifiez le total avant d’aller plus loin. L’ensemble du registre porte environ 58 400 personnes-jours sur 1 100 épisodes, soit une moyenne d’environ 53 jours chacun.
Partie deux : deux chiffres par site
Pour chaque site, calculez :
- la proportion d’abandons — abandons sur épisodes ayant atteint une issue, transferts exclus ; et
- le taux d’abandon — abandons pour 1 000 personnes-jours d’observation.
Imprimez-les côte à côte, chacun avec son propre dénominateur, et triez le tableau sur l’un puis sur l’autre.
Les sites ne se classent pas de la même façon. Trois d’entre eux tiennent en un dixième de point sur la proportion et se séparent nettement sur le taux, parce qu’ils ne suivent pas leurs enfants aussi longtemps. Trouvez quel chiffre a déplacé quel site, et pourquoi, avant de lire la partie trois.
Faites de même pour les décès. Dix décès sur le registre font une proportion d’environ 1,0 % et un taux d’environ 0,17 pour 1 000 personnes-jours — deux nombres qu’un lecteur supposera être la même statistique à moins que le tableau ne dise le contraire.
Partie trois : l’exposition n’est pas la même
La raison du désaccord entre les deux chiffres tient à la durée de séjour, et il vaut la peine de la voir directement.
episodes |>
summarise(
n = n(),
median_days = median(person_days),
.by = c(site_id, outcome)
)
Les abandons partent tôt — une médiane d’environ 22 jours contre 58 pour les enfants guéris — si bien qu’un site qui guérit davantage d’enfants accumule plus de personnes-jours par épisode et dilue son propre taux. La proportion demande « parmi les enfants qui ont terminé, combien ont abandonné » ; le taux demande « par jour de traitement offert, à quelle fréquence quelqu’un a-t-il cessé de venir ». Ce sont deux questions différentes, et un site à long séjour médian y répond différemment.
Écrivez les deux questions dans votre script, au-dessus des deux chiffres, dans les termes que vous emploieriez avec un responsable de programme.
Partie quatre : le tableau qui est le livrable
| Site | Épisodes | Personnes-jours | Abandons | % des issues | pour 1 000 pj |
|---|---|---|---|---|---|
| SITE-01 | ? | ? | ? | ? | ? |
| … |
Chaque ligne porte les deux dénominateurs. Ajoutez ensuite deux lignes en dessous :
- le site le plus mauvais sur les deux chiffres, et
- le site dont le classement change entre les deux, avec la durée de séjour qui l’explique.
Vérifiez vos nombres
| Attendu | |
|---|---|
| Personnes-jours au total | environ 58 400 |
| Taux d’abandon, registre entier | environ 2,3 pour 1 000 personnes-jours |
| Taux de mortalité, registre entier | environ 0,17 pour 1 000 personnes-jours |
| Pire site, proportion d’abandons | environ 20,5 % |
| Pire site, taux d’abandon | environ 3,6 pour 1 000 personnes-jours |
Si votre total de personnes-jours est très inférieur à 58 400, les épisodes censurés ont été supprimés au lieu d’être comptés jusqu’à la clôture. S’il est très supérieur, une date de sortie est lue comme du texte et se soustrait mal.
Les questions à traiter en prose
Trois phrases chacune.
1. Vos deux chiffres d’abandon classent les sites différemment. Nommez le site qui bouge, donnez ses deux nombres, et dites lequel des deux vous mettriez dans un rapport de performance et pourquoi.
2. Censurer les 71 enfants à la clôture suppose quelque chose à leur sujet. Énoncez l’hypothèse, et décrivez la circonstance dans laquelle elle serait fausse d’une manière qui biaise le taux.
3. Le taux de mortalité pour 1 000 personnes-jours est bien plus petit que le pourcentage de mortalité, et les deux sont exacts. Expliquez à un responsable pourquoi les deux nombres diffèrent d’un facteur soixante, et à quoi chacun sert.
À rendre
Un script R, exécuté depuis une session propre, produisant :
- le tableau par site ci-dessus, avec les deux dénominateurs sur chaque ligne
- la durée médiane de séjour par issue et par site
- les totaux de personnes-temps du registre entier, imprimés avec la date de clôture et la décision sur les transferts énoncées en commentaires en tête de fichier
- les trois réponses en prose en bloc de commentaires en pied de fichier
Comment savoir que c’est fini
Supprimez outputs/, redémarrez R, un seul source(), chaque tableau se
régénère à l’identique. Changer la date de clôture en tête du script change chaque
taux et aucune proportion — si une proportion bouge, du temps d’observation a fui
dans un dénominateur où il n’a rien à faire.
Ce que ce laboratoire n’est pas
Ce n’est pas de l’analyse de survie. Les courbes de Kaplan-Meier, les rapports de risques instantanés et l’exposition variable dans le temps sont un sujet ultérieur, et aucun n’est nécessaire pour voir ce pour quoi ce laboratoire existe : qu’un registre est une cohorte, que le temps d’observation est une donnée, et qu’un pourcentage qui l’ignore répond à une question plus étroite que celle qui a été posée.