Publié le :
Reporting CREATION_INTERNE

Graphiques de la variation de la taille d'une tumeur (Waterfall Plot)

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script commence par créer un jeu de données 'TumorSize' simulant la variation de la taille de tumeurs pour 25 sujets répartis en deux groupes de traitement ('Treatment 1', 'Treatment 2'). Il génère ensuite deux graphiques. Le premier est un diagramme en barres classique trié par réponse. Le second, après un tri explicite des données, produit un graphique similaire mais plus avancé avec un bandeau de confiance et une apparence de barre différente. Les graphiques sont configurés pour être exportés via ODS LISTING.
Analyse des données

Type : CREATION_INTERNE


Le jeu de données 'TumorSize' est entièrement généré dans la première étape DATA. Il utilise la fonction ranuni pour simuler des données aléatoires pour 25 observations, représentant des patients et la variation de la taille de leur tumeur.

1 Bloc de code
Configuration
Explication :
Ce bloc initialise des macro-variables pour le chemin de sortie et la résolution de l'image. Il ferme la destination ODS HTML et configure la destination ODS LISTING pour la sortie des graphiques.
Copié !
1%let gpath='.'; /*--Put your Folder Name here--*/
2%let dpi=300;
3ods html close;
4ods listing gpath=&gpath image_dpi=&dpi;
2 Bloc de code
DATA STEP Data
Explication :
Génération de la table 'TumorSize' contenant 25 observations. Pour chaque observation, un identifiant (Cid), une variation ('change'), un groupe de traitement ('Group') et une étiquette ('Label') sont créés de manière aléatoire.
Copié !
1DATA TumorSize;
2 LENGTH Cid $ 3;
3 label Change='Change from Baseline (%)';
4 DO Id=1 to 25;
5 cid=put(id, 2.0);
6 change=30-120*ranuni(2);
7 Group=ifc(int(ranuni(2)+0.5), 'Treatment 1', 'Treatment 2');
8 IF mod(id, 5) = 1 THEN Label='C';
9 IF mod(id, 5) = 2 THEN label='R';
10 IF mod(id, 5) = 3 THEN label='S';
11 IF mod(id, 5) = 4 THEN label='P';
12 IF mod(id, 5) = 0 THEN label='N';
13 OUTPUT;
14 END;
15RUN;
3 Bloc de code
PROC SGPLOT
Explication :
Création d'un premier graphique en barres ('waterfall plot') avec la procédure SGPLOT. Il représente la variation ('change') pour chaque patient (Cid), groupé par traitement. Les barres sont ordonnées par la valeur de la réponse (décroissante). Des lignes de référence et des légendes sont ajoutées pour contextualiser.
Copié !
1ods graphics / reset width=5in height=3in imagename='4_9_1_TumorSize_SG_V94';
2title 'Change in Tumor Size';
3title2 'ITT Population';
4PROC SGPLOT DATA=TumorSize nowall noborder;
5 styleattrs datacolors=(cxbf0000 cx4f4f4f) datacontrastcolors=(black);
6 vbar cid / response=change group=group categoryorder=respdesc datalabel=label
7 datalabelattrs=(size=5 weight=bold) groupdisplay=cluster clusterwidth=1;
8 refline 20 -30 / lineattrs=(pattern=shortdash);
9 xaxis display=none;
10 yaxis values=(60 to -100 BY -20);
11 inset ("C="="CR" "R="="PR" "S="="SD" "P="="PD" "N="="NE") / title='BCR'
12 position=bottomleft border textattrs=(size=6 weight=bold) titleattrs=(size=7);
13 keylegend / title='' location=inside position=topright across=1 border;
14RUN;
15title;
4 Bloc de code
PROC SORT Data
Explication :
Tri de la table 'TumorSize' par la variable 'change' en ordre décroissant. Le résultat est stocké dans une nouvelle table nommée 'TumorSizeDesc'.
Copié !
1 
2PROC SORT
3DATA=TumorSize out=TumorSizeDesc;
4BY descending change;
5RUN;
6 
5 Bloc de code
PROC SGPLOT
Explication :
Création d'un second graphique à partir des données triées ('TumorSizeDesc'). Il utilise VBARPARM au lieu de VBAR car les données sont déjà ordonnées. Un bandeau est ajouté pour marquer une zone de confiance (entre -30 et 20). L'apparence des barres est modifiée avec DATASKIN=PRESSED.
Copié !
1ods graphics / reset width=5in height=3in imagename='4_9_2_TumorSize_SG_V94';
2title 'Change in Tumor Size';
3title2 'ITT Population';
4PROC SGPLOT DATA=TumorSizeDesc nowall noborder;
5 styleattrs datacolors=(cxbf0000 gold) datacontrastcolors=(black) axisextent=DATA;
6 band x=cid upper=20 lower=-30 / transparency=0.5 fill nooutline legendlabel='Confidence';
7 vbarparm category=cid response=change / group=group datalabel=label
8 datalabelattrs=(size=5 weight=bold) groupdisplay=cluster
9 dataskin=pressed;
10 xaxis display=none;
11 yaxis values=(60 to -100 BY -20) grid gridattrs=(color=cxf0f0f0);
12 inset ("C="="CR" "R="="PR" "S="="SD" "P="="PD" "N="="NE") / title='BCR'
13 position=bottomleft border textattrs=(size=6 weight=bold) titleattrs=(size=7);
14 keylegend / title='' location=inside position=topright across=1 border opaque;
15RUN;
16title;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« La force de la version avancée réside dans l'utilisation de l'instruction BAND. En créant une zone de confiance ou de stabilité (entre -30 % et +20 %), vous offrez une couche de lecture supplémentaire qui permet de distinguer immédiatement les patients dont la réponse est cliniquement significative de ceux restant dans la zone de stabilité. »