Ce script utilise PROC TEMPLATE pour créer un modèle graphique réutilisable (statgraph) nommé 'kmplot'. Ce modèle est conçu pour visualiser les résultats d'une analyse de survie, notamment les courbes de survie cumulée et les observations censurées, ainsi qu'un tableau indiquant le nombre de sujets à risque au fil du temps. Il utilise des variables dynamiques pour permettre son application à différents ensembles de données et variables sans modification du code du modèle lui-même. Les attributs visuels tels que les couleurs et les formes des marqueurs sont définis pour distinguer les groupes ('Active' vs 'Placebo'). La mise en page utilise un LATTICE pour organiser les différents composants graphiques : le graphique principal de survie, un titre pour le tableau des sujets à risque, et le tableau lui-même.
Analyse des données
Type : EXTERNAL
Ce script définit un modèle graphique (template) qui s'attend à recevoir des données externes lors de son invocation. Les variables dynamiques ('x_var', 'y_var1', 'y_var2', 'trtan', 'blkx', 'blkrsk') indiquent les colonnes de données à utiliser. Le script lui-même ne lit ni ne crée de données.
1 Bloc de code
PROC TEMPLATE
Explication : Ce bloc utilise PROC TEMPLATE pour définir un nouveau graphique statistique nommé 'kmplot'. Les variables dynamiques 'x_var', 'y_var1', 'y_var2', '_byval2_', 'trtan', 'gmarker', 'blkx', et 'blkrsk' sont déclarées pour permettre une personnalisation lors de l'utilisation du modèle. Le graphique principal est structuré en trois panneaux via un LAYOUT LATTICE. Le premier panneau (row 1) contient la courbe de Kaplan-Meier (StepPlot) et les points de censure (ScatterPlot), avec des options d'axes configurées. Le deuxième panneau (row 2) affiche un titre pour le tableau des sujets à risque. Le troisième panneau (row 3) utilise un BLOCKPLOT pour présenter le nombre de sujets restants à risque à différents points temporels, aligné par la variable 'trtan'. Des attributs discrets (couleurs et symboles) sont mappés aux valeurs de 'trtan' pour différencier les groupes de traitement ('Active' et 'Placebo').
Copié !
proc template;
define statgraph kmplot;
dynamic x_var y_var1 y_var2 _byval2_;
begingraph;
*Graph title;
entrytitle "Category = " _byval2_ /
textattrs=(size=9pt ) pad=(bottom=20px);
*Colour map;
discreteattrmap name='colors' / ignorecase=true;
value 'Active' / lineattrs=(color=blue pattern=shortdash) markerattrs=(color=blue symbol=trianglefilled);
value 'Placebo' / lineattrs=(color=red pattern=shortdash) markerattrs=(color=red symbol=circlefilled);
enddiscreteattrmap;
discreteattrvar attrvar=gmarker var=trtan attrmap='colors';
%*Define 2 block layout and size*;
layout lattice /rows=3 columns=1 rowweights=(.83 .03 .14) columndatarange=unionall;
%*Start KM plot*;
layout overlay /
xaxisopts=(Label="Time at Risk (years)"
display=(tickvalues line label ticks )
type=linear linearopts=(tickvaluesequence=(start=0 end=2.5 increment=0.5) viewmin=0 viewmax=2.5))
yaxisopts=( Label="Cumulative Incidence of Subjects with Event"
type=linear linearopts= (viewmin=0 viewmax=0.8) );
StepPlot X=x_var Y=y_var1 / primary=true Group=gmarker
LegendLabel="Cumulative Incidence of Subjects with Event" NAME="STEP";
%*Censored observations are suppressed but can be added here*;
scatterPlot X=x_var Y=y_var2 / Group=gmarker markerattrs=(symbol=plus)
LegendLabel="Censored" NAME="SCATTER";
DiscreteLegend "STEP"/
location=outside halign=center valign=bottom across=2 valueattrs=(family="Arial" size=8pt);
endlayout;
%*** Define left-aligned title for block ***;
layout overlay;
entry halign=left 'Number of Subjects at Risk';
endlayout;
%*Start at risk value plot;
layout overlay /
xaxisopts=(type=linear display=none) walldisplay=none;
blockplot x=blkx block=blkrsk / class=trtan
display=(values label)
valuehalign=start
repeatedvalues=true
labelattrs=(family="Arial" size=8pt)
valueattrs=(family="Arial" size=8pt);
endlayout;
endlayout;
endgraph;
end;
run;
1
PROC TEMPLATE;
2
define statgraph kmplot;
3
dynamic x_var y_var1 y_var2 _byval2_;
4
begingraph;
5
*Graph title;
6
entrytitle "Category = " _byval2_ /
7
textattrs=(size=9pt ) pad=(bottom=20px);
8
9
*Colour map;
10
discreteattrmap name='colors' / ignorecase=true;
11
value 'Active' / lineattrs=(color=blue pattern=shortdash) markerattrs=(color=blue symbol=trianglefilled);
12
value 'Placebo' / lineattrs=(color=red pattern=shortdash) markerattrs=(color=red symbol=circlefilled);
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.
« Lorsque vous utilisez ce modèle, assurez-vous que vos données de "sujets à risque" sont calculées pour les mêmes points de temps (blkx) que les graduations de votre axe principal (xaxisopts). Une légère désynchronisation peut rendre la lecture du tableau confuse »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.