Personnalisation SAS ODS : Comment insérer des liens dynamiques dans vos rapports ANOVA

Niveau de difficulté
Confirmé
Publié le :
Michael

Le Conseil de l'Expert

Michael
Responsable de l'infrastructure Viya.

La puissance de SAS ne réside pas seulement dans sa capacité d'analyse, mais dans sa flexibilité à restituer l'information. Ce script illustre une technique avancée de Business Intelligence interactive : le détournement des templates ODS (Output Delivery System) pour transformer des rapports statiques en interfaces de navigation.

Le cœur de l'astuce repose sur l'instruction EDIT de la PROC TEMPLATE. Contrairement à une création intégrale, on vient ici modifier "chirurgicalement" l'objet Stat.GLM.Tests (partagé par l'ANOVA et la PROC GLM). En utilisant l'attribut cellstyle, on injecte une métadonnée URL directement dans la cellule de résultat. Cette approche permet de créer des systèmes de "Drill-down", où un utilisateur peut cliquer sur un facteur significatif pour être redirigé vers une analyse détaillée ou un graphique spécifique.

Notez la rigueur de la dernière étape : la suppression du template dans le magasin sasuser.templat. C'est une règle d'or en administration SAS pour garantir l'intégrité de l'environnement de travail et éviter que des modifications spécifiques ne deviennent, par inadvertance, la norme pour toutes vos analyses futures.

Ce script commence par créer un jeu de données 'Experiment' en interne via une étape DATA avec des 'datalines'. Il effectue ensuite une première analyse de variance (PROC ANOVA) pour examiner l'effet du fournisseur ('Supplier') et de la machine ('Machine') sur le nombre de défauts ('Defects'). Par la suite, il utilise PROC TEMPLATE pour modifier le template ODS 'Stat.GLM.Tests' afin d'insérer des liens URL dans les résultats. Une seconde exécution de PROC ANOVA applique ce template modifié. Finalement, le script nettoie l'environnement en supprimant la version modifiée du template.
Analyse des données

Type : CREATION_INTERNE


Les données sont entièrement générées au sein du script dans une étape DATA, en utilisant une instruction 'datalines' pour fournir les valeurs des défauts. La structure des données est créée par des boucles imbriquées.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc crée le jeu de données 'Experiment'. Il utilise des boucles 'DO' imbriquées pour générer les combinaisons de fournisseurs et de machines, et lit les valeurs de la variable 'Defects' depuis les 'datalines'. L'opérateur '@@' dans l'instruction 'input' permet de lire plusieurs observations à partir d'une seule ligne de données.
Copié !
1title 'Product Defects Experiment';
2 
3DATA Experiment;
4 DO Supplier = 'A', 'B', 'C', 'D';
5 DO Machine = 1 to 4;
6 DO rep = 1 to 5;
7 INPUT Defects @@;
8 OUTPUT;
9 END;
10 END;
11 END;
12 DATALINES;
13 2 6 3 3 6 8 6 6 4 4 4 2 4 0 4 5 5 7 8 5
1413 12 12 11 12 16 15 14 14 13 11 10 12 12 10 13 13 14 15 12
15 2 6 3 6 6 6 4 4 6 6 0 3 2 0 2 4 6 7 6 4
1620 19 18 21 22 22 24 23 20 20 17 19 18 16 17 23 20 20 22 21
17;
18RUN;
2 Bloc de code
PROC ANOVA
Explication :
Exécute une première analyse de variance sur les données 'Experiment'. 'ODS SELECT' filtre les résultats pour ne conserver que les tables 'ModelANOVA' et 'MCLines'. Le modèle teste l'effet de 'Supplier' et 'Machine' sur 'Defects'. L'option 'tukey' dans l'instruction 'MEANS' demande un test de comparaison multiple pour les moyennes.
Copié !
1PROC ANOVA DATA=Experiment;
2 ods select ModelANOVA MCLines;
3 class Supplier Machine;
4 model Defects = Supplier Machine;
5 means Supplier Machine / tukey;
6QUIT;
3 Bloc de code
PROC TEMPLATE
Explication :
Ce bloc modifie un template ODS standard ('Stat.GLM.Tests'). Il cible la colonne 'Source' et ajoute un attribut de style 'url' aux cellules dont la valeur est 'Supplier' ou 'Machine'. Cela permet de créer des liens hypertextes dans une sortie HTML.
Copié !
1PROC TEMPLATE;
2 edit Stat.GLM.Tests;
3 edit SOURCE;
4 cellstyle _val_ = 'Supplier' as {url="#ANOVA2"},
5 _val_ = 'Machine' as {url="#ANOVA3"};
6 END;
7 END;
8RUN;
4 Bloc de code
PROC ANOVA
Explication :
Ré-exécute la même analyse de variance que précédemment. Cette fois, la sortie sera formatée en utilisant le template modifié par le bloc PROC TEMPLATE précédent, incluant ainsi les liens hypertextes.
Copié !
1PROC ANOVA DATA=Experiment;
2 ods select ModelANOVA MCLines;
3 class Supplier Machine;
4 model Defects = Supplier Machine;
5 means Supplier Machine / tukey;
6QUIT;
5 Bloc de code
PROC TEMPLATE
Explication :
Ce bloc effectue le nettoyage. 'list Stat.GLM.Tests' affiche le code source du template pour vérification. 'delete Stat.GLM.Tests' supprime la version personnalisée du template du magasin 'sasuser.templat', restaurant ainsi le comportement par défaut pour les prochaines sessions.
Copié !
1PROC TEMPLATE;
2 list Stat.GLM.Tests;
3RUN;
4 
5PROC TEMPLATE;
6 delete Stat.GLM.Tests / store=sasuser.templat;
7RUN;
L'Astuce Pro
L utilisation de l instruction EDIT dans la PROC TEMPLATE permet de modifier l apparence d un tableau de resultats sans recalculer les statistiques, mais faites attention a l ordre des bibliotheques dans l ODS PATH. Par defaut, le template modifie est enregistre dans SASUSER.TEMPLAT ; si vous ne le supprimez pas avec l instruction DELETE en fin de script, toutes vos futures analyses ANOVA ou GLM conserveront ces liens hypertexte indesirables, car SAS priorise toujours les templates utilisateurs par rapport aux templates systemes de la bibliotheque SASHELP.
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