SAS ODS & SGPLOT : Créez des rapports HTML interactifs pour vos analyses cliniques

Niveau de difficulté
Expert
Publié le :
Michael

Le Conseil de l'Expert

Michael
Responsable de l'infrastructure Viya.

Ce script illustre une approche analytique de haut niveau, combinant la puissance statistique de la PROC GLM et les capacités interactives de l'ODS (Output Delivery System). Dans une étude clinique, la simple comparaison des moyennes post-traitement est souvent biaisée par l'état initial des patients. L'utilisation d'un modèle d'analyse de la covariance (ANCOVA) permet ici d'ajuster l'efficacité des médicaments en fonction du score pré-traitement, offrant ainsi des LS-Means (moyennes des moindres carrés) bien plus représentatives de l'effet réel de chaque molécule.

L'expertise technique réside particulièrement dans la création d'un tableau de bord de santé interactif. En intégrant des variables d'URL dynamiques au sein du jeu de données, vous transformez un graphique statique en une interface de navigation. L'option imagemap=yes permet de lier chaque barre de la PROC SGPLOT à un rapport détaillé. Cette méthode est indispensable pour le "drill-down" médical : on passe d'une vue synthétique (les moyennes ajustées) à une vue granulaire (la dispersion individuelle par patient) en un seul clic, facilitant ainsi l'identification visuelle des outliers ou des réponses atypiques au traitement.

Une recommandation d'expert : lors de l'utilisation de l'interaction drug | PreTreatment dans l'instruction MODEL, assurez-vous de vérifier la significativité de l'interaction. Si elle est significative, cela signifie que l'efficacité du médicament dépend du niveau de gravité initial de la maladie, ce qui nécessite une interprétation clinique beaucoup plus nuancée que la simple comparaison des moyennes globales.

Le script commence par créer un jeu de données 'drugtest' contenant les résultats de tests bactériologiques avant et après traitement pour trois médicaments. Ensuite, un modèle linéaire général (PROC GLM) est appliqué pour modéliser le score post-traitement en fonction du médicament et du score pré-traitement. Les moyennes des moindres carrés (LSMeans) sont calculées pour chaque médicament et sauvegardées dans une table. Cette table est ensuite enrichie avec des URLs spécifiques à chaque médicament. Un premier graphique à barres (PROC SGPLOT) est généré pour comparer les LS-Means des médicaments ; chaque barre est un hyperlien. En cliquant sur une barre, l'utilisateur est redirigé vers une page HTML contenant un nuage de points (généré par un second PROC SGPLOT) qui détaille la relation entre les scores pré et post-traitement pour le médicament sélectionné. L'ensemble du processus utilise ODS (Output Delivery System) pour créer une série de rapports HTML liés.
Analyse des données

Type : CREATION_INTERNE


Les données sont créées directement dans le script via une étape DATA avec une instruction DATALINES. L'option '@@' est utilisée dans l'instruction INPUT pour lire plusieurs observations à partir d'une seule ligne de données.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP crée la table 'drugtest'. Il lit les données intégrées via l'instruction DATALINES. L'indicateur '@@' à la fin de l'instruction INPUT permet de lire plusieurs observations (triplets Drug, PreTreatment, PostTreatment) qui se trouvent sur la même ligne physique dans les données.
Copié !
1title 'Treatment of Leprosy';
2 
3DATA drugtest;
4 INPUT Drug $ PreTreatment PostTreatment @@;
5 DATALINES;
6a 11 6 a 8 0 a 5 2 a 14 8 a 19 11
7a 6 4 a 10 13 a 6 1 a 11 8 a 3 0
8d 6 0 d 6 2 d 7 3 d 8 1 d 18 18
9d 8 4 d 19 14 d 8 9 d 5 1 d 15 9
10f 16 13 f 13 10 f 11 18 f 9 5 f 21 23
11f 16 12 f 12 5 f 12 16 f 7 1 f 12 20
12;
13 
2 Bloc de code
PROC GLM
Explication :
Cette procédure applique un Modèle Linéaire Général (GLM). Elle modélise la variable 'PostTreatment' en fonction de la variable de classification 'drug', de la variable continue 'PreTreatment' et de leur interaction. L'instruction 'lsmeans' calcule les moyennes des moindres carrés pour chaque 'drug', et 'ods output' sauvegarde ces résultats dans une nouvelle table SAS nommée 'lsmeans'.
Copié !
1PROC GLM DATA=drugtest;
2 class drug;
3 model PostTreatment = drug | PreTreatment / solution;
4 lsmeans drug / stderr pdiff;
5 ods OUTPUT LSMeans=lsmeans;
6QUIT;
3 Bloc de code
DATA STEP Data
Explication :
Ce bloc modifie la table 'lsmeans' générée précédemment. Il ajoute une nouvelle colonne, 'DrugClick', qui contient le nom d'un fichier HTML. Cette colonne servira à créer des liens hypertextes dans le graphique qui suit.
Copié !
1DATA lsmeans;
2 SET lsmeans;
3 IF drug='a' THEN DrugClick='drug1.htm';
4 IF drug='d' THEN DrugClick='drug2.htm';
5 IF drug='f' THEN DrugClick='drug3.htm';
6RUN;
4 Bloc de code
PROC SGPLOT
Explication :
Ce bloc génère un graphique à barres horizontales. Il utilise les données de la table 'lsmeans' pour représenter la moyenne des moindres carrés ('lsmean') pour chaque médicament ('drug'). L'option 'imagemap=yes' et le paramètre 'url=drugclick' sur l'instruction 'hbar' rendent chaque barre cliquable, pointant vers le fichier HTML défini dans la variable 'DrugClick'.
Copié !
1ods graphics / imagemap=yes height=2in width=6.4in;
2 
3PROC SGPLOT DATA=lsmeans;
4 title 'Chart of LS-Means for Drug Type';
5 hbar drug / response=lsmean stat=mean
6 url=drugclick;
7 footnote j=l 'Click on the bar to see a plot of PostTreatment '
8 'versus PreTreatment for the corresponding drug.';
9 FORMAT lsmean 6.3;
10RUN;
11 
12ods graphics off;
13footnote;
5 Bloc de code
PROC SGPLOT
Explication :
Cette dernière étape génère les rapports détaillés. La procédure SGPLOT crée un nuage de points comparant 'PostTreatment' à 'PreTreatment'. L'instruction 'by drug' génère un graphique distinct pour chaque médicament. L'instruction 'ods html newfile=page' garantit que chaque graphique est écrit dans un fichier HTML séparé (drug1.htm, drug2.htm, etc.), qui sont les cibles des liens du graphique à barres.
Copié !
1ods html body='drug1.htm' newfile=page style=HTMLBlue;
2 
3PROC SGPLOT DATA=drugtest;
4 title 'Plot of PostTreatment versus PreTreatment';
5 scatter y=PostTreatment x=PreTreatment;
6 BY drug notsorted;
7RUN;
8 
9ods html close;
L'Astuce Pro
Pour optimiser l analyse de l efficacite de vos traitements, l astuce technique consiste a utiliser l interaction drug|PreTreatment dans PROC GLM pour tester l hypothese de l homogeneite des pentes : si le terme d interaction drug*PreTreatment est significatif, cela signifie que l efficacite d un medicament depend du niveau initial de pre-traitement du patient, ce qui rend l interpretation des LS-Means (moyennes ajustees) potentiellement trompeuse sans une analyse detaillee des pentes specifiques a chaque groupe.
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.
Informations de Copyright : S A S S A M P L E L I B R A R Y