SAS 9.4 Sous Linux - Logiciel Hermétique Pour Système Ouvert
SAS 9.4 Sous Linux - Logiciel Hermétique Pour Système Ouvert
SAS 9.4 Sous Linux - Logiciel Hermétique Pour Système Ouvert
Attention ce cours est dense, la lecture de ce document ne suffira pas la bonne comprhension des outils qui y sont dcrits de faon
synthtique. La participation active aux TDs est indispensables lacquisition des comptences incontournables pour une utilisation
raisonnable et raisonne de ce logiciel fort complexe.
Introduction
fessionnel, associ des contraintes spcifiques, rend incontournable lusage proc tabulate data = europe;
dune programmation basique.
class date dest;
var boarded;
1.1 Table SAS
table date, dest*boarded*sum;
run;
Aprs saisie ou importation en provenance de fichiers ASCII ou dun SGBD
(Systme Relationnel de Gestion de Base de Donnes), les donnes sont gres
par SAS sous la forme dun SAS Data Set nomm par la suite Table SAS.
Une table SAS est lassociation dun ou deux fichiers binaires contenant les
donnes et leur descriptif :
Nom de la table
Commentaire ou label
Date et heure de cration
Nombre dobservations
et, pour chaque variable :
Nom abrg
Signification ou label
Type
Type de codage
Longueur
Position
1.2
1.3
Toutes les documentations en anglais ainsi que des tutoriels sont disponibles
en ligne. Des items sont spcifiques la version de SAS utilise (9.3), au systme dexploitation et chacun des modules offerts la location. Ceux les plus
utiliss concerns par ce cours sont : Base SAS, SAS/STAT, SAS/GRAPH.
Programme SAS
SAS Procedures Fonctions et syntaxes de toutes les procdures lexception des procdures statistiques plus complexes : statistiques lmentaires,
frquences, graphiques basse rsolution, impression, tri, tabulation, transposition,. . .
SAS/Stat Users Guide. Toutes les procdures statistiques et la grande varit de leurs options : tous les modles de rgression, les classifications, les
dures de vie, la statistique non-paramtrique, les analyses multidimensionnelles.
SAS/Graph Software Dtails des possibilits graphiques en haute rsolution et de leurs innombrables options.
SAS/IML Le module de calcul matriciel interactif intgr est un langage 2.3 Les fentres
interprt, comme Matlab ou R. Il traite des objets matriciels avec la syntaxe
Cinq fentres apparaissent alors lcran avec une ergonomie relativement
dun langage volu (PL1). Il est adapt la mise en place rapide de mthodes
intuitive
mais, trs sophistique et ouvrant sur de trs nombreuses possibilits,
originales construites partir des oprateurs classiques de lalgbre linaire.
il
serait
inefficace
de vouloir la dcrire de faon exhaustive. Elle est dcouvrir
Trs rarement utilise dans lindustrie, il nest pas dcrit dans ce document.
en fonction des besoins.
2
2.1
Excution diffre
Commandes globales
3.1
Rfrencement
SAS autres que sasuser (par dfaut) doivent tre allous avant leur
utilisation mentionnant cette rfrence logique.
Dautres fentres souvrent par exemple lors de la production de graphes ou au
lancement de modules interactifs spcifiques.
filename fileref external-file;
Un fichier extrieur SAS (fichier ASCII) peut galement tre rfrenc.
Attention aux courants dair, il est important de grer correctement la multitude des fentres qui remplissent lcran et surtout de les refermer dans le bon
3.2 Mises en formes des sorties
ordre afin dviter de se retrouver bloqu, par exemple sur un popup qui attend
Commentaires Tout texte sous la forme : * texte ; ou /* texte */ est
une rponse.
ignor de SAS et permet dexpliciter le fonctionnement dun programme.
2.4 Bibliothques
options liste doptions;
permet de spcifier certains paramtres :
Ce sont, du point de vue du systme dexploitation, les rpertoires dans les obs=n limite le nombre dobservations traiter pour tester par exemple
quels SAS gre les fichiers et tables SAS de faon temporaire, le temps dune
un programme,
session ou excution du programme, ou permanente.
linesize=n fixe le nombre de caractres par ligne en sortie,
SasUser : bibliothque permanente cre par dfaut. Les tables de cette bi pagesize=n fixe le nombre de lignes par page,
bliothque sont nommes sasuser.nomtab.
date|nodate prsence ou absence de date en haut de page,
Work : bibliothque contenant les tables temporaires cres par dfaut par
number|nonumber prsence ou absence de numrotation des pages,
les diffrentes tapes et procdures. Elles sont effaces la fin de la
pageno=n fixe le numro de la premire page.
session ou de lexcution du programme. Les tables sont nommes titlen titre;
work.nomtab ou plus simplement de faon implicite : nomtab.
permet de faire imprimer jusqu n = 10 lignes de titre sur chaque page
SasHelp contient un groupe de catalogue permettant le fonctionnement par
en sortie, par dfaut, la premire ligne contient : The SAS System,
dfaut dune session SAS, les donnes servant dexemples et toute laide footnoten note de bas de page;
en ligne.
permet de faire imprimer jusqu n = 10 notes de bas de page sur chaque
Maps contient les tables de donnes gographiques (fonds de carte).
page en sortie.
Options usuelles :
options linesize=75 pagesize=66 nodate number;
title "Mon titre";
footnote "Note de bas de page";
3.3
Production de rapports
A notre grand regret, le module SAS/Insight danalyse interactive des donnes nest plus maintenu dans SAS partir de la version 9.4. Lintroduction
ce module pour trs pratique et trs efficace pour faire de lexploration efficace
de donnes est en consquence supprime. On peut penser que la stratgie de
SAS consiste favoriser le dveloppement dun autre produit quivalent : JMP
mais qui est plus compliqu mettre en uvre et puis cest un autre logiciel !
Encore une raison pour utiliser plus systmatiquement lopen source R.
Introduction
permettent de vrifier dans la fentre sortie la bonne constitution de la dernire table SAS cre.
2
2.1
Lobjectif est de construire une table SAS dans le cas de figure le plus usuel
o les donnes sont contenues dans un fichier texte (ascii) provenant dun diteur, dun autre logiciel statistique ou encore dun gestionnaire de bases de
donnes. Les donnes peuvent galement tre directement saisies au clavier
(SAS/Insight) ou incluses au programme SAS (commande include card).
Enfin, SAS peut lire tout autre format de fichier que ceux succinctement dcrits ci-dessous (articles de longueur variable, binaire,. . . ) sur tout support mais
cest vite compliqu !
Le systme SAS offre un trs large ventail de traitements permettant das- syntaxe
surer toutes les fonctions de gestion des donnes quun statisticien peut tre
data <sasuser.>table-sas ;
amen mettre en uvre. Cette richesse est aussi source de complexit. Nous
infile fileref ou nom-de-fichier <dlm= carac lrecl=nn> ;
nous contenterons de dcrire les exemples les plus standards. Ces traitements
input liste de variables et spcifications ;
sont pris en charge par les tapes data (data step), qui reconnaissent un langage de programmation proche de PL/1 1 , et quelques procdures spcifiques.
Un programme SAS se dcompose en :
1. une (ou des) tape(s) data,
2. une (ou des) appels des procdures (proc).
Options
2.2
Les donnes associes une unit statistique sont spares par des blancs ou
tout autre caractre dlimiteur spcifi dans loption dlm ( ; : ,. . . ) ; les units
Lorsque le volume des donnes est trs rduit, celles-ci peuvent tre intsont spares par des retours la ligne. Si les lignes du fichier en entre sont gres au programme avec la commande cards :
trop longues, dpassant la valeur par dfaut, elles sont tronques en lecture. Il
est ncessaire de dclarer un majorant de cette longueur dans loption lrecl. data sasuser.fich1;
input var1 var2 $ var3 @@ ;
Une observation par ligne
cards;
1.5 A 55 2.4 B 44 2.7 B 61 2.3 A 48
Chaque observation est dcrite par une ligne du fichier.
;
run;
data sasuser.fich1;
infile ~/data/fich.dat dlm=;;
Attention la place du dernier point-virgule.
input var1 var2 $ var3;
run;
2.3
Lecture formate
data sasuser.fich1;
infile ~/data/fich.dat;
input var1 1-12 var2 $ 13-18 var3 19-25;
run;
2.4
Importation / exportation
Les donnes peuvent tre directement importes partir dautres formats car
issus dautres logiciels comme Excel si le module SAS/Access est implment
pour pouvoir accder ce type de format. Sinon seuls certains type de fichier
sont accessibles comme ceux .csv. Cest le rle de la procdure import
dont voici un exemple dutilisation. Le fichier .csv contient une premire
ligne avec les noms des variables, les valeurs sont spares par des "," et la
marque dcimale est le point. De manire rciproque, une table SAS peut tre
exporte dans un format donne, texte (ascii) ou Excel.
proc import datafile="nom-de-fichier.csv"
Keep et Drop
Ces commandes peuvent apparatre comme des options des commandes
data, set ou dautres procdures :
data table_out (drop=var1 var2) ;
set table_in (keep=var1 var2 var3) ;
ou encore comme commandes dune tape data :
3.2
3
3.1
Fonctions
3.3
Exemples
otherwise;
end;
select(a);
when(1);
when(3,4,5) x=x*10;
otherwise;
end;
/* limination dobservations */
data sasuser.table1;
set sasuser.table2 ;
if var1 = nul then delete;
/* SAS passe a la suivante*/
...
run;
/* selection implicite dobservations */
data sasuser.table1;
set sasuser.table2 ;
if var1 = bon ;
/* sinon SAS passe a la suivante*/
...
run;
cards ;
16
28 29 26 24
0.04 11
186 229 220
0.07 12
179 193 183
0.10 8
130 87 135
0.13 11
154 130 130
;
run;
Syntaxe
3.4
26 25 229 23 29 24 20 22 20 29 22
208 228 198 222 273 216 198 213
180 143 204 114 188 178 134 208 196
Options
116 118 165 151 59
118 118 104 112 134 98 100 104
Tableau de variables
Commandes
Des traitements plus sophistiqus (itratifs, conditionnels) peuvent tre oprs sur les variables dune table en les dclarant sous la forme dun tableau by suivi du nom dune variable qualitative indique que les statistiques sont
(array) dont les colonnes peuvent alors tre indices. Plus prcisment, cette
calcules par groupe dobservations ; la table doit tre trie.
dclaration revient considrer un vecteur ligne contenant successivement ranks doit tre spcifie si lon veut que les variables initiales soient recopies
chaque ligne de la table en cours de lecture.
en sortie. Sinon, les variables gardent le mme nom. Il y a une corresponDe nombreux exemples sont fournis dans les textes des macros-commandes.
dance terme terme entre les noms des deux listes de variables.
Procdures de transformation
Dautres transformations usuelles sont proposes sous forme de procdures.
4.1
Rangs
var les rangs des variables de la liste var sont calculs et recopis dans la table
de sortie ; par dfaut, toutes les variables numriques sont traites.
4.2
Normalisation
weight variable ;
Options
data=table sas indique le nom de la table, par dfaut, la dernire cre,
out=table sas spcifie le nom de la table cre qui contiendra les variables
Options
data=table sas indique le nom de la table, par dfaut, la dernire cre,
out=table sas spcifie le nom de la table cre,
prefix= spcifie le prfixe utilis pour crer les noms des nouvelles va-
riables,
name= spcifie le nom de la variable cre qui contiendra les noms des
by : une observation est cre pour chaque variable transpose et pour chaque
groupe ; la variable de groupage est incluse en sortie mais non transpose.
La table doit tre trie.
copy les variables de la liste copy sont recopies dans la table de sortie sans
transposition.
Commandes
by suivi du nom dune variable qualitative indique que les statistiques sont var les variables de la liste var sont transposes et recopies dans la table
de sortie ; par dfaut, toutes les variables numriques, napparaissant pas
calcules par groupe dobservations ; la table doit tre trie.
ailleurs sont traites.
var les variables de la liste var sont standardises et recopies dans la table de
id nom de la variable en entre contenant les noms des variables aprs transsortie ; par dfaut, toutes les variables numriques sont traites.
position.
weight nom de la variable contenant les pondrations des observations.
4.3
Transposition
4.4
Tri
Sur les tables tries, SAS gre deux variables gnres par la commande BY 5.2 Concatnation horizontale
permettant didentifier les dbuts et fin de groupes de lignes prenant les mmes
Les mmes units statistiques ont t observes sur des paquets de variables
valeurs dune variable utilise dans le tri. Par exemple, si la table est tries par
contenues
dans des tables SAS distinctes. La table regroupant toutes les vala variable sexe, la commande BY sexe gnre les variables temporaires
riables
est
obtenue
en utilisant plusieurs fois la commande set.
First.sexe et LAST.sexe qui prennent des valeurs 0 ou 1 pour indiquer
respectivement la premire observation ou la dernire de chaque modalit de
data sasuser.conchtable;
la variable.
set sasuser.table1;
set sasuser.table2;
5 Concatnation de tables
run;
5.1
Le mme rsultat peut tre obtenu avec la commande merge. Elle permet,
Cette opration consiste complter une table SAS par une ou plusieurs en plus, de contrler la bonne correspondance des lignes de chaque table (trie)
autres contenant les mmes variables mesures sur dautres observations. Elle suivant les valeurs dune cl et introduit, le cas chant, des donnes manest trs simple raliser, il suffit de mentionner toutes ces tables dans la com- quantes.
mande set en renommant, liminant, conservant ventuellement certaines variables. Sil ny a pas une bonne correspondance entre les variables, des dondata sasuser.mergetable;
nes manquantes sont gnres.
merge sasuser.table1 sasuser.table2;
by varcom;
data sasuser.concvtable;
run;
set sasuser.table1 (rename=(var1=var15))
sasuser.table2 (rename=(var5=var15));
5.3 Affichage dune table
run;
Le menu affichage permet de vrifier le bon contenu dune table. Par ailleurs,
la
procdure print dite la liste dune table SAS dans la fentre SAS.sortie
Si chacune des tables est trie sur la mme cl, ce tri peut tre conserv dans
en
calculant ventuellement des sommes partielles.
la table concatne, il sagit alors dune fusion, en spcifiant la variable cl
dans une commande by.
data sasuser.fusiontable;
set sasuser.table1 (rename=(var1=var15))
sasuser.table2 (rename=(var5=var15));
by vartri;
run;
Dautres possibilits sont offertes par la procdure append.
Syntaxe
proc print <options> ;
by <descending> variable ;
var liste de variables ;
Options
data=table sas indique le nom de la table, par dfaut, la dernire cre,
noobs supprime les numros des observations,
round arrondit les rsultats avec deux dcimales.
Commandes
6.1
procdure tabulate
6.3
6.2
procdure univariate
Cette procdure regroupe tous les rsultats qui peuvent tre obtenus, par
SAS, dans le cadre dune tude uni-varie de variables quantitatives : indicateurs de tendance centrale (moyenne, mdiane, mode), indicateurs de dispersion, dautres caractristiques de la distribution (quantiles, skewness, kurtosis), les graphiques en basse rsolution (histogrammes, tige-et-feuille, bote-moustaches, droites de Henri), le test de Student de nullit de la moyenne,
les tests de normalit dune distribution et les tests non-paramtriques (signe,
Wilcoxon,. . . ).
Syntaxe
proc univariate <options> ;
var liste de variables ;
by <descending> variable ;
weight variable ;
output <out=table sas> <liste de statistiques> ;
Options
procdure means
Les rsultats fournis par cette procdure sont inclus dans ceux produits par
la procdure univariate dcrite ci-dessus. Elle sutilise de la mme faon et
diffre par la prsentation des rsultats rsums sous la forme dun tableau plus
facile consulter. Elle ne fournit ni statistique non-paramtrique ni graphe. La
procdure summary ne diffre de la procdure means que dans le choix des
options par dfaut.
6.4
procdure freq
Cette procdure traite les variables qualitatives. Elle fournit donc des tris
plat et complte ces rsultats par des tudes bi ou multi-varis de tables de
contingences. On obtient ainsi les profils lignes et colonnes, les statistiques
des tests dindpendance (2 ) et des comparaisons avec les valeurs dduites
du modle dindpendance.
Syntaxe
proc freq <options> ;
by <descending> variable ;
tables liste des croisements requis </ options> ;
weight variable ;
10
6.5
procdure corr
partir des rsultats dune ACP effectue au pralable. On peut lappliquer directement sur les sorties des procdures princomp, candisc, factor. . . ,
Cette procdure tudie les liaisons entre variables quantitatives et propose qui contiennent une matrice de type score.
donc les indicateurs usuels comme les coefficients de corrlation de Pearson
et de Spearman, dautres qui le sont moins, et les tests associs. Les rsultats Syntaxe
peuvent tre enregistrs dans des tables sas.
proc score <options> ;
Syntaxe
by <descending> variable ;
proc corr <options> ;
by <descending> variable ;
var liste de variables ;
weight variable ;
with liste de variables ;
Options
data=table sas indique le nom de la table, par dfaut, la dernire cre,
hoeffding kendall pearson spearman slectionne les types de mesure de
Commandes
id variable ;
var liste de variables ;
run ;
Options
La procdure score multiplie les individus dune table SAS par des "scores"
contenus dans une autre table SAS. Elle effectue le produit de la matrice des
individus par la transpose de la matrice des scores. La table contenant
les scores doit possder une variable _TYPE_. Cette variable peut prendre les
valeurs SCORE pour indiquer les coefficients, et MEAN et STD si on souhaite
centrer et rduire les donnes avant dappliquer les coefficients.
by suivi du nom dune variable qualitative indique que les statistiques sont
calcules par groupe dobservations ; la table doit tre trie.
var les variables de la liste var sont croises avec celles de la liste with ; par
dfaut, toutes les variables numriques.
score=table sas contenant les coefficients. Elle doit possder une variable
with par dfaut, tous les couples de variables apparaissant dans la liste var.
weight nom de la variable contenant les pondrations des observations.
6.6
La procdure score permet de calculer le produit entre deux matrices (reprsentes par deux tables SAS) sans faire appel au module SAS/IML. La procdure score multiplie, individu par individu, les variables dune table SAS
Commandes
par des coefficients (appels scores) associs ces variables et prsents dans
lautre table SAS considre. Cette procdure est utilise, par exemple, pour by suivi du nom dune variable qualitative pour effectuer les calculs selon les
calculer les coordonnes sur le plan factoriel dun individu supplmentaire
groupes dfinis par les modalits de cette variable. La table doit tre trie.
11
var liste des variables sur lesquelles on applique les coefficients. Ces variables /* 0 = (3-1)/2*0.5 +(4-3)/1*(-0.5) */
doivent tre prsentes dans les tables appeles par score= et data=.
/* 0.5= (1-1)/2*0.5 + (2-3)/1*(-0.5) */
id liste des variables prsentes dans la table sortie dfinie par out=. Par dfaut
Utilisation des rsultats de la procdure reg pour calculer la valeur ajuste
toutes les variables.
de nouvelles observations.
Exemples
proc reg data=donnees outest=coeff;
/* Creation de la table contenant les scores */
model y = var1 var2;
data coeff;
run;
input _TYPE_ $ _NAME_ $ var1 var2;
/* affichage de la table coeff contenant les
cards;
coefficients de la regression */
MEAN clin 1 3
proc print data=coeff;
STD clin 2 1
run;
SCORE clin 0.5 -0.5
/* table coeff */
;
_TYPE_ _DEPVAR_ ... INTERCEP var1 var2
run;
PARMS
y
1.5
0.3
-0.7
/* Creation des donnes sur lesquelles
on souhaite appliquer les scores */
Il est alors possible, pour une nouvelle observation, destimer la valeur de la
data donnees;
variable y en appliquant la procdure score. Celle-ci tient automatiquement
input var1 var2 @@;
compte de la constante INTERCEP du modle si on prcise type=PARMS.
cards;
3 4 1 2 .....
/* calcul des y ajusts pour les nouvelles
;
observations */
run;
proc score data=autretab score=coeff type=PARMS
/* Creation de la nouvelle variable clin
out=valajust;
partir de scores aprs centrage et
var var1 var2;
rduction des donnes */
run;
proc score data=donnees score=coeff out=sortie;
var var1 var2;
Calcul des coordonnes dindividus supplmentaires (ACP).
run;
/* ACP du tableau initial */
/* la table coeff contient les coordonnes des
qui donne la table sortie suivante :
vecteurs propres permettant le calcul des composantes
principales */
var1 var2 clin
proc princomp data=table1 outstat=coeff;
3
4
0
var var1-var5;
1
2
0.5
..
..
..
run;
12
1
1.1
Introduction
SAS/Graph
1.2
ODS Graphics
Pour "simplifier" le paysage, de nouvelles procdures graphiques directement accessibles du module SAS de base et sans utiliser SAS/Graph, sont apparues partir de la version 9.2 (en test puis en production dans la 9.3) de
SAS en relation avec le service ODS : sgdesign, sgpanle, sgplot,
sgrender, sgscatter. Les objectifs sont les mmes mais les jeux doptions et syntaxes changent ! Nanmoins la mme logique de dfinition des graphiques est utilise notamment dans notamment avec les tables dannotation.
Comme ce nouveau service ODS (open delevery system) Graphics, proposent systmatiquement des graphiques par dfaut dans toutes les procdures
statistiques, il est lgitime de sinterroger sur la ncessit de mettre en uvre
des procdures spcifiques, lourdes, complexes, notamment par la richesse des
options proposes. Lexprience montre assez systmatiquement, quutiles et
efficaces en phase exploratoire ou de mise au point, des graphes par dfaut
sont vite limits. La comprhension dun rsultat statistique, sa porte, son
impact sont souvent le rsultat dun graphique pertinent adapt la structure
des donnes et la mthode utilise. Quelque soit le logiciel, une pratique
professionnelle requiert les comptences indispensables pour dchiffrer une
documentation excessivement complexe afin daboutir au graphique voulu et
pas celui impos par dfaut. Autrement dit, il sagit de savoir qui contrle le
rsultat final, le statisticien ou le logiciel.
2
2.1
Environnement
Taille des graphiques
Le graphique demand est trac dans une zone dont les dimensions sont dfinies par les paramtres hsize et vsize de la commande globale goptions
(les valeurs maximales sont prises par dfaut) diminus de lespace ncessaire
ldition des titres, sous-titres, notes, lgendes,. . . . Les dimensions peuvent
tre exprimes en trois units : pouce, cm ou pct qui signifie pourcentage de la dimension totale. Cette dernire unit est prfrable pour exprimer
les tailles de caractres et symboles lorsque les dimensions globales, lis au
priphrique de sortie, sont sujettes modifications.
2.2
gine), les marques dchelle (nombre, couleur, paisseur, hauteur), les valeurs
des chelles (format), le libell (police,. . . ).
axis1 order=(1973 to 1981 by 2)
label=(annee)
minor=(number=1)
width=3;
axis2 order=(0 to 10000 by 1000)
label=(Revenu en francs)
minor=none
width=3;
2.3
Image cran
Un clic droit sur le graphique (windows mais unix ?) ouvre un menu qui
permet de sauver limage dans le format .png avec la dfinition de lcran.
2.4
ODS
Axes
Lgendes
Comme pour les axes, diffrents types de lgendes (de 1 99) sont dfinissables. Ils spcifient positions et textes des libells qui identifient les diffrents
graphismes et symboles utiliss.
3.3
Symboles
Les diffrents types de symboles (1 99) sont dfinis afin de dcrire les
modes de reprsentation recherchs. Sont concerns : le symbole (forme,
taille, couleur) utilis pour reprsenter un point, le type de lignes reliant les
points (couleur, continue, hachure, pointille,. . . ), la faon ou mode dinterpolation incluant barres, botes moustaches, escaliers, splines, intervalles de
confiance, rgression (linaire, polynomiale, spline).
symbol1 interpol=sm50s /* lissage spline */
value=diamond
/* symbole
*/
height=3
/* taille du symb.*/
width=2;
/* epaisseur
*/
Commandes globales
Elles dfinissent des objets (axes, symboles, trames, lgendes) et les options
utiliss pour les tracs ; elles demeurent valables jusqu une nouvelle dfinition ou la fin de la session sas.
3.1
3.2
3.4
Options graphiques
des variables quantitatives ou qualitatives ; les variables quantitatives sont co gunit=cm|in|pct unit de mesure,
des explicitement ou automatiquement en classes ou, selon les besoins, som rotate=landscape|portrait orientation du graphique,
mes ou moyennes.
le texte :
ftext police du texte,
4.1 Syntaxe
ftitle police des titres,
texte, symboles, types de hachures, lgendes.
proc gchart <options gnrales> ;
Les paramtres reprennent leurs valeurs par dfaut la suite de :
by <descending> variable ;
reset=all|global all concerne tous les paramtres tandis que que global
vbar liste de variables
naffecte pas ceux dfinis dans la mme commande.
</<options dapparence>
<options statistiques> <options daxes> > > ;
3.5 Titres et notes
hbar liste de variables
</<options dapparence>
Les commandes title et footnote dfinissent des lignes de texte au<options statistiques>
tour du graphique, elles suivent le mme principe que celui dcrit au para<options daxes> > ;
graphe I.1.4 et dautres options sont disponibles : taille, couleur et police des
pie liste de variables
caractres, position, rotations de la ligne de texte et des caractres, tracs de
</<options dapparence>
lignes.
<options statistiques> ;
star liste de variables
goptions reset=global gunit=pct border
</<options dapparence>
ftext=swissb htext=3;
<options statistiques> > ;
title1 height=5 Institut;
title2
de;
title3 height=5 Mathmatiques;
footnote1 font=script justify=left
Universite de Toulouse;
4.2
Options gnrales
data=table sas indique le nom de la table ou, par dfaut, la dernire cre,
annotate= table contenant les complments graphiques.
4.3
Options dapparence
4.4
Options statistiques
Il est important de noter que chaque paramtre peut tre initialis ou redfini
diffrents endroits dun programme SAS : dans les commandes spcifiques
Elles spcifient les couleurs, les espacements et largeurs de colonnes ou
(symbol, legend, axes, pattern, title, footnote), par la barres. Il est galement possible dadjoindre un cadre (frame), de suppricommande goptions et dans chacune des procdures. Ceci impose de bien mer (nolegend) ou modifier la lgende. Une option annotate peut tre
distinguer les paramtres globaux, applicables tous les graphes, des para- introduite au niveau de chaque commande.
mtres spcifiques chaque graphe.
procdure gchart
Cette procdure trace des diagrammes en barres (hbar), en colonnes et histogrammes (vbar), en secteurs (pie) et arolaires (star). Elle peut traiter
sent,
freq= variable de pondration des observations,
midpoints= liste des bornes de classes,
5.3
Options dapparence
Elles spcifient les couleurs, les polices de caractres, les tailles des bulles
cfreq (frquence cumule), cpt (pourcentage cumul), pct (pourcen(bubble),
le hachurage daires, la dfinition de lgendes, la superposition
tage), sum ou mean (associes sumvar=).
(plot).
group= reprsentation de plusieurs graphes cte cte suivant les modalits de la variable spcifie (hbar ou vbar),
5.4 Options daxes
subgroup= dcoupage des barres ou colonnes selon la participation des
Deux options permettent de dfinir les axes ou de leur assigner des dclaramodalits de la variable spcifie (hbar ou vbar).
tions antrieurs : vaxis=axisn pour laxe vertical et haxis=axisn pour
4.5 Options daxes
laxe horizontal o n caractrise la dfinition daxe concerne (cf. paragraphe
Deux options permettent de de dfinir les axes ou de leur assigner des dcla- 5.2.1.). De plus, frame trace un cadre tandis que noaxis supprime les axes.
rations antrieurs : gaxis=axisn pour laxe des groupes et maxis=axisn 5.5 Commandes
pour celui des bornes o n caractrise la dfinition daxe concerne (cf. paraby suivi du nom dune variable qualitative indique que les graphiques sont
graphe V.2.1.).
tracs par groupe dobservations ; la table doit tre trie.
plot liste des graphes sous la forme : y*x<=n|variable>, avec la mme
5 procdure gplot
syntaxe que prcdemment pour dsigner plusieurs graphes (a*(a b),. . . ).
La variable y fournit les ordonnes et x les abscisses des points reprsenGraphiques en haute rsolution de nuages de points en deux dimensions.
ts par des symboles dfinis dans la commande symboln ou par diff5.1 Syntaxe
rents symboles selon les valeurs de la variable spcifie qui induit une
classification.
Dans ce dernier cas, une lgende est cre par dfaut.
proc gplot <options gnrales> ;
bubble
liste
des
graphes
sous la forme : y*x = size o size est une vaby <descending> variable ;
riable
indiquant
la
taille
des bulles tracer autour des centres de coordonplot liste de graphiques
nes
x
et
y.
</ < annotate=data-set >
< options dapparence>
< options daxes>> ;
6 Annotate data set
bubble liste de graphiques
Une table dannotations, dfinie lors dune tape data, est une table SAS
</ < annotate=data-set >
contenant
les descriptifs dun ensembles de graphiques qui viendront se
< options dapparence>
superposer
aux rsultats des procdures prcdemment dcrites (gchart,
< options daxes>> ;
gplot,...). Il est alors possible de positionner tout libell ou toute figure
gomtrique simple et ainsi de personnaliser ses graphiques.
5.2
Options gnrales
data=table sas indique le nom de la table ou, par dfaut, la dernire cre,
annotate=table sas table contenant les complments graphiques.
uniform impose les mmes chelles aux axes des diffrents graphiques.
Des applications immdiates sont, par exemple, la production de plans factoriels avec identifications des points (variables, individus, modalits) par des
libells explicites ou encore le trac du cercle des corrlations en analyse en
composantes principales.
1
1.1
Introduction
Motivations
2
2.1
Macro-variables
syntaxe
Lcriture de macros SAS est une activit courante dans les grandes enCertaines dclarations de macros variables sont implicites : compteur dune
treprises et les socits de service spcialises dans ce logiciel. Lobjectif est
boucle %do, paramtres dune macro-commande,. . . .
de concevoir puis carrosser un ensemble de traitement spcifiques afin de les
Dans la suite du programme, les rfrences une macro-variable sont prrendre accessibles des utilisateurs non spcialistes de SAS mais gros consomcdes du caractre & :
mateurs comme dans lindustrie pharmaceutique ou le marketing.
1.2
Principes
Une macro-variable peut contenir elle-mme des commandes ou instructions SAS mais, dans ce cas, il est prfrable de dfinir une macro-commande.
Macro fonction
4
4.1
Macro-commandes
Syntaxe dune macro commande
La dclaration dune macro-commande (ou macro tout court) suit les mmes
principes,
%macro impdat;
%* ceci est un commentaire;
proc print;
run;
%mend impdat;
elle peut inclure des paramtres qui deviennent des macro-variables locales :
%let dataset=&ldataset;
%let ident=&lident;
%let listev=&llistev;
%* Acp de dataset ;
%* ident : variable contenant les;
%*
identificateurs des individus;
%* llistev : liste des variables (numeriques);
%* par defaut : reduites sinon red=cov;
%macro plot(yvar,xvar);
proc plot;
plot &yvar*&xvar;
run;
%mend plot;
Lexcution dune macro est invoque en faisant prcder son nom du caractre % :
%* options edition;
options linesize=80 pagesize=60 number;
title "A.c.p. des donnees de &dataset";
footnote;
%impdat;
%plot(taille,poids);
4.2
6
6.1
Exemple
6.2
Dans un rpertoire
Il est aussi possible de stocker les macros dans une bibliothque de macros
spcifique un utilisateur ou un groupe. Les rgles suivantes sont respecter :
1. Chaque dclaration de macro et une seule est enregistre dans un fichier
qui a pour nom lidentificateur de cette macro suivi de lextension .sas :
impdat.sas,
2. Tous ces fichiers sont regroups dans un ou des rpertoires qui constituent
la ou les bibliothques,
3. le ou les chemins daccs sont spcifis une fois pour toute dans le fichier de configuration SAS de lutilisateur. Encore faut-il avoir identifi
et localis ce fichier et pouvoir y avoir accs !
En dbut de chaque session, SAS charge le rpertoire de macros.
La Procdure SAS/SQL
La Procdure SAS/SQL
describe dcl-description ;
drop dcl-suppression ;
insert dcl-insertion ;
Rsum
Cette vignette dcrit lusage de la procdure SQL qui permet linterrogation de tables SAS laide du langage de requte standard.
Retour au plan du cours.
Introduction
Syntaxe de la procdure
reset <options> ;
select dcl-slection ;
update dcl-mise jour ;
validate dcl-valuation ;
Remarques :
il est inutile de rpter linstruction proc sql avant chaque dclaration,
Le langage SQL (Structured Query Language) est un langage dinterrogasauf si lon excute une tape data ou si lon fait appel une autre proction de bases de donnes standardis commun la plupart des logiciels de base
dure entre deux commandes de sql.
de donnes. La procdure sql tudie dans cette vignette en constitue une im
linstruction run nest pas ncessaire.
plmentation dans la version 9.3 de SAS. Cette procdure permet dextraire,
corriger et mettre jour des donnes dans une table SAS, souvent plus rapide2.2 Options
ment que par une tape data.
inobs=n restreint le nombre dobservations traites (par exemple dans une
Le terme de table dsigne toujours une table SAS, correspondant un stoclause where) sur une table fournie en entre de la procdure.
ckage de donnes propre ce logiciel. On utilise galement deux nouveaux
outobs=n restreint le nombre dobservations traites (par exemple instypes dobjets : les vues et les index. Une vue est le stockage dune interrogares) dans une table retourne par la procdure.
tion ou ensemble de requtes : elle contient la description ou dfinition dune
feedback rappelle la dfinition des vues parentes lors de la description
table virtuelle. Une vue est donc une interrogation laquelle on donne un nom,
dune vue (commande describe).
pour son usage ultrieur dans une autre procdure SAS. Le principal intrt de
noprint pas ddition
dfinir une vue est le gain despace mmoire. Un index est un systme de pointeurs permettant dans certains cas daccder plus rapidement aux informations
3 Dtail des commandes
contenues dans une table SAS.
2.1
Commandes
3.1
La commande create
Elle permet de crer des tables, des vues, ou des index, partir dautres
tables ou dautres vues.
Syntaxe
delete dcl-destruction ;
La Procdure SAS/SQL
La premire syntaxe est utilise pour stocker les rsultats dune interrogation.
Cest une faon de crer des tables temporaires. La deuxime syntaxe est utilise pour crer une table ayant les mmes noms de variables et mmes attributs
quune autre table. La troisime syntaxe est utilise quand on veut crer une
table dont les colonnes ne sont pas prsentes dans des tables dj existantes.
Les syntaxes 2 et 3 crent des tables vides, quil faut ensuite remplir avec la
commande insert. Cration dune table SAS permanente dans la librairie
sql
Un index stocke la fois les valeurs des colonnes dune table, et un systme de
directions qui permet daccder aux lignes de cette table partir des valeurs de
lindex. Lutilisation de lindex lors dinterrogations ou autres instructions de
la procdure est dtermine par le systme. Lindex est automatiquement mis
jour quand on modifie la table laquelle il est associ. Il permet damliorer
la performance de certaines commandes, par exemple la comparaison dune
colonne indexe une valeur constante laide de lexpression where.
Syntaxe
create <unique > index nom-index on nom-table ;
Le mot-cl unique garantit que chaque valeur de la colonne indexe est
unique. Ceci peut tre utile quand on manipule des variables telles que le numro de scurit sociale. Cration de lindex simple gse associ au groupe
sanguin
proc sql;
create index gse on sql.statlab2 (gsenf);
3.2
La commande alter
Elle permet dajouter ou de supprimer des colonnes dans une table SAS, ou
den modifier les attributs (longueur, label, format).
Syntaxe
alter table nom-table
< add def-col <, def-col >>
< modify def-col <, def-col >>
< drop nom-col <, nom-col >> ;
La Procdure SAS/SQL
Syntaxe
3.3
La commande delete
Syntaxe
delete from nom-table < where sql-exp > ;
Suppression des lignes dune table
3.7
3.4
Elle permet de slectionner des colonnes dans une table, et dafficher les
rsultats dans la fentre output.
La commande describe
La commande select
Syntaxe
select liste dobjets from liste < where sql-exp > ;
3.8
La commande update
Elle permet de modifier les valeurs de certaines observations pour des colonnes dune table existante.
3.5
La commande drop
3.9
3.6
La commande insert
La commande validate
Elle permet dvaluer la syntaxe dune interrogation sans lexcuter, et retourne un message dans la fentre log.
Syntaxe
validate query-exp ;
Cette commande est essentiellement utile dans des applications utilisant des
macro-variables. validate retourne alors une valeur indiquant si linterrogation est valide grce la macro-variable SQLRC (SQL Return Code).
On veut connatre la taille moyenne 10 ans et par sexe des enfants dont la
mre consommait entre 10 et 20 cigarettes par jour au moment de leur naissance. crire le programme permettant de calculer ces quantits laide des
procdures summary, sort et print ; puis comparer avec le programme
suivant utilisant la procdure sql.
4.1
proc sql;
select sexenf , mean(tenf_10) as tmoy
from sasuser.statlab2
where consm_n=10a20cig
group by sexenf
order by tmoy;
La Procdure SAS/SQL