Académique Documents
Professionnel Documents
Culture Documents
Sources Cours SAS, IUT STID Grenoble, Eric PREUD'HOMME I.G.W.T. Juin 2001 Matriser SAS Base et SAS Macro , DUNOD, Hlne Kontchou Kouomegni et Olivier Decourt
Le systme SAS (Statistical Analysis System) est le logiciel de traitement de donnes le plus complet du march. Les procdures SAS sont trs compltes et dpassent largement le cadre de linitiation que nous allons faire. SAS est trs rpandu. Il a acquis depuis son lancement en 1960 une situation dominante dans beaucoup de secteurs dactivits. En France lINSEE, ELF, EDF, les banques, les assurances, les laboratoires pharmaceutiques, les organismes de Scurit Sociale lont adopt. La situation de monopole est telle que SAS Institute a entrepris une grande opration de diversification. Pour SAS, le calcul statistique nest plus quaccessoire dans la stratgie qui vise simmiscer dans toutes les tapes de la gestion de linformation travers les rseaux de lentreprise, de la saisie la prise de dcision : KDD (Knowledge Discovery in Data) et Data Mining. Les solutions SAS couvrent lensemble des mtiers de lentreprise (ressources humaines, finance, marketing, commercial, achats, risque, pilotage des systmes dinformation) et rpondent aux spcificits des secteurs dactivit (tlcommunications, distribution, banque, assurance, industrie pharmaceutique). Elles contribuent loptimisation de lorganisation et des cots, la croissance des revenus et permettent de mettre en uvre un vritable pilotage de la performance de lentreprise. SAS est un logiciel trs puissant et trs complet mais en contre-partie son apprentissage est complexe et son cot lev. SAS est compos de diffrents modules qui se louent sparment. SAS peut sutiliser, dans le cadre de votre formation, en assimilant le langage SAS1 ou en utilisant les modules cliquer-rsultat comme SAS/ ASSIST, SAS Enterprise Guide ou SAS/Enterprise Miner. Nous privilgierons la premire approche car elle permet une utilisation plus approfondie de SAS mme si cest au prix dun certain temps d'apprentissage. Le Systme SAS fonctionne sur plusieurs systmes (WINDOWS, UNIX...). SAS est une marque dpose par SAS Institute Inc
1 SAS possde en fait 3 langages. Le langage SAS et son module Macros bien sr, mais aussi le langage SQL et le langage le SCL pour crer des applications type Visual Basic (SAS/AF, SAS/FSP)
Sommaire
I. Prsentation de SAS _________________________________________________________________7
A. Introduction ___________________________________________________________________________7 B. Les fentres SAS ________________________________________________________________________8 C. Notion de programme __________________________________________________________________11
1. Saisie du programme __________________________________________________________________________ 11 2. Sauvegarde des instructions du programme _________________________________________________________ 11 3. Excution du programme (F8) ___________________________________________________________________ 11 4. Analyse du droulement du programme ____________________________________________________________ 12 5. Visualisation des rsultats et personnalisation de la fentre OUTPUT (complment) ________________________ 12
III. Les programmes SAS _____________________________________________________________19 IV. Les tapes DATA _________________________________________________________________19
A. Lecture des donnes ____________________________________________________________________19
1. Donnes incluses dans le programme. (CARDS) _____________________________________________________ 19 2. Utilisation de fichiers de donnes SAS existants : Instruction SET _______________________________________ 22 3. Utilisation de fichiers de donnes externes SAS : INFILE ____________________________________________ 26 4. Importation dun fichier externe via les menus_______________________________________________________ 27
4. Format permanent Library= ; puis Libname library nom de bibliothque ; ________________________________ 49 5. Informat (INVALUE) __________________________________________________________________________ 50
Rsultats de compilation
Explorer : permet de crer des bibliothques pour grer les fichiers de donnes. Enhanced Editor : Pour entrer votre Code SAS
La fentre Explorer
Permet de grer les bibliothques et les fichiers de donnes. On peut crer, visualiser, modifier une fichier de donnes.
Si tel n'est pas le cas, allez dans le menu Windows/Cascade ou si une des fentres est absente, faites View/'nom de la fentre'
La fentre RESULTS
Permet de grer toutes les sorties produites par les programmes SAS excuts pralablement. Elles permet daccder rapidement la sortie qui vous intresse. Ainsi, aprs excution du programme contenu dans l Enhanced EDITOR prcdent, on observe le rsultat suivant:
Vous constatez que les instructions et les commentaires d'excution sont "passs" dans la fentre "LOG", quant aux rsultats, ils figurent dans la fentre "OUTPUT".
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 9
Quant la fentre Results, elle contient le plan des rsultats disponibles. Nous voyons quune procdure MEANS a t excute et que nous disposons des Summary Statistics :
10
C.Notion de programme
1.Saisie du programme
Activez la fentre EDITOR et cliquez sur FILE/NEW pour vider son contenu. Vous allez taper dans la fentre le programme suivant :
data conso; input numero montant; cards; 311000 1000 311001 2600 311003 3200 ; run ; proc print ; run ; Cration dune table SAS nomme CONSO contenant 2 variables (2 champs : NUMERO et MONTANT) et 3 observations (lignes de donnes). Le ; ponctue toutes les lignes de SAS. Linstruction RUN conclue une tape DATA ou une procdure.
3 4
Le fichier de programme est un fichier texte DOS banal qui peut ensuite tre dit sous Word Lextension .SAS est rserve au fichiers de programme SAS. Ce sont des fichiers ASCII standard.
11
Par dfaut SAS affiche dans la fentre OUTPUT : la date, le numro de page. Vous pouvez les effacer en mettant en dbut de programme les options suivantes :
Prenons par exemple le fichier de donnes WORK.DONNEE. Il dsigne le fichier SAS DONNEE dans la bibliothque WORK
W O R K . DONNEE
Correspond en ralit (pour le DOS)
C : \ ...\S A S \ W O R K \
DONNEE.Sas7bdat
Remarques: Tout fichier de donnes SAS a donc une adresse de stockage. Il est inutile de le sauvegarder car ceci est fait automatiquement fait par SAS. Si vous voulez mettre vos fichiers de donnes ou dans votre rpertoire personnel il vous faudra crer une bibliothque dont ladresse sera lendroit o vous voulez mettre vos fichiers. Si vous ne prfixez pas un fichier SAS par une bibliothque, le systme va dans la WORK le stocker ou le chercher.
13
B.Les bibliothques
1.Les 2 bibliothques prdfinies WORK et SASUSER
Il y a d'origine deux bibliothques sous SAS. Une temporaire (WORK) et une permanente (SASUSER). La bibliothque WORK dtruit les fichiers quelle contient ds que vous quittez SAS. A linverse de SASUSER.
14
Pour avoir des dtails sur ces bibliothques, allez dans View/ Details :
15
Remarque Importante : Pour revenir en arrire (Fermer la fentre donnant le contenu dune bibliothque et afficher la
de la barre doutils.
En cliquant sur les en-ttes de colonnes (variables) vous pouvez changer la mise en forme, masquer des colonnes ou mme visualiser les attributs de la colonne (Nom, Format, ).
16
Format Informat
Label
Cest le nom de la variable qui sera utilis dans les procdures les tapes DATA etc. Son type (numrique ou caractre) est symbolis par une icne. Longueur maxi : 32 caractres. Cest la longueur (en bytes) $ variable caractre 8 variable numrique Cest le format daffichage de la variable. Cest le format de lecture, utile si vous importez des donnes. Toujours pour la date, remarquez que vous ne pouvez importer que des dates en format ddmmyy8. Etiquette de la variable ne pas confondre avec le nom de la variable. Longueur maxi 256 caractres.
17
Format (syntaxe) $w .
Remarque Lit une chane de longueur w. (8 par dfaut) Cest le format numrique standard. Sas cherche le meilleur format. Sparateur des milliers (version US) Sparateur des milliers (version franaise !)
125.236
6.2 best3.
125.24
comma10.2 commax10.2 date5. date7. date9. datetime7. datetime12. datetime18. ddmmyy5. ddmmyy6. ddmmyy8.
23,451.23 23.451,23 12SEP 12SEP89 12SEP1989 12SEP89 12SEP89:03 12SEP89:03:19 :43 25/12 251290 25/12/90
DATETIMEw. d
10847
DDMMYYw
Les chiffres apparaissant aprs la date sont les heures minutes secondes. Format europen classique.
Remarques sur les Dates Les dates sous SAS sont codes sous forme numriques. Le 0 correspond au 1/1/1960 le 1 au 2/1/1960 etc... Les nombres ngatifs correspondent aux dates antrieures au 1/1/1960. Ainsi le 26/7/1989 est cod 10799 par SAS. (Il y a donc 10799 jours entre le 1/1/1960 et le 26/7/1989 !) Les dates sur deux chiffres sont codes partir de 1900. 56 signifie 1956. Pour modifier cela, en rapport avec lan 2000, voir loption YEARCUTOF de linstruction OPTIONS. Enfin SAS possde un systme spcial de codage dune date et dune heure dans un mme nombre. Cest le nombre de secondes entre le 1/1/1960 minuit et votre date et heure. Ainsi, le 5/6/1989 9H30 est cod 928661400.
18
19
Exemple
Les deux points indiquent que les donnes sont manquantes pour la taille et le poids.
Attention : Si la longueur de la variable nest pas renseigne, SAS impose une longueur de 8. Exemple
Les deux points indiquent que les donnes sont manquantes pour la taille et le poids.
20
Exercice 1 : Saisir le programme prcdent en omettant la dclaration du FORMAT puis en la rajoutant. Quelle diffrence observe ton au niveau des rsultats ?
21
Ces instructions permettent la cration d'un fichier ACP qui est la copie conforme du fichier ACP de la bibliothque SERVEUR. Remarque importante: Vous pouvez, tout simplement, faire un copier coller entre les deux bibliothques dans lexplorer ! Si vous utilisez le langage SAS la PROC COPY permet de faire ce travail.
22
(2)Copie partielle
en ne conservant que certaines variables (KEEP)
en conservant certaines observations (IF THEN, WHEREErreur ! Signet non dfini., OBS)
23
24
25
Exercice 2 : Au pralable, copiez le fichier Donnees sous votre espace utilisateur. - Dans SAS, crez une bibliothque nomme MALIB qui pointe sur votre rpertoire de travail. - Crez partir de ce fichier, deux fichiers SAS distincts MINEURS et MAJEURS en fonction de la valeur de la variable AGE (<18 = MINEURS, >=18 = MAJEURS). Ces deux fichiers doivent tre placs sous votre rpertoire de travail.
26
Vous pouvez prciser la longueur des variables. Remarque : Il est plus simple dutiliser les menus FICHIER / Importer des donnes.
Pour limporter correctement, il suffit dinclure un @@ dans le input qui permet de garder la ligne en mmoire tant que tout na pas t lu. Voici le programme SAS correspondant:
La deuxime fentre propose un explorateur permettant de choisir le fichier importer. Le bouton OPTIONS permet de grer la 1re ligne des observations, les sparateurs
Le nom de la table SAS et de la bibliothque o elle va tre stocke sont renseigns dans la troisime fentre.
28
La dernire fentre propose de stocker dans un fichier .sas le code ainsi gnr.
Lexport se fait de la mme faon partir du menu FILE / IMPORT DATA. Exercice 3 Application partir du fichier DONNEES.TXT.
29
1.Les oprateurs
Oprateurs arithmtiques: ** puissance (exposant) * multiplication / division + addition - soustraction Oprateurs logiques: infrieur infrieur ou gal suprieur > ou GT >= ou GE suprieur ou gal gal = ou EQ ^= ou NE diffrent de ou | ou ! ou OR & ou AND et ^ ou NOT ngation < ou LT <= ou LE
La priorit d'excution va d'abord aux lments entre parenthses, puis (1) **, NOT; (2) *, /; (3) -, +; (4) EQ, NE, LT, GT, LE, GE; (5) AND et (6) OR. L'oprateur || permet de concatner deux chanes de caractres.
30
2.Les fonctions
SAS compte galement un bon nombre de fonctions qui peuvent tre utilises pour transformer les donnes. Voici un rsum des plus intressantes.
Remarque: seed (graine en anglais) vous permet d'obtenir les mmes squences de nombres alatoires (avec la mme graine initiale). Si vous n'utilisez pas cette possibilit, choisissez pour seed la valeur 0 (la graine est dtermine partir de l'heure et de la date) Voir lexemple suivant. Exemple: Gnrez 1000 ralisation d'une N(2,3). DATA alean23; Un fichier temporaire WORK.ALEAN23 est cr. DO I=1 TO 100; Nous allons rpter 100 fois un groupe d'instruction (FOR du Pascal) x=RANNOR(12)*3+2; x est une ralisation d'une N(2,3) OUTPUT; Nous plaons cette valeur dans le fichier END; La boucle est termine. KEEP x; Nous ne conservons que la variable x dans le fichier(i est inutile) RUN; PROC PRINT; RUN; Remarque: Si vous excutez 2 fois cette squence, vous obtiendrez la mme srie de nombre (car la graine est impose 12. Par contre, si vous mettez 0, les deux squences obtenues seront diffrentes.
31
Remarque : Voir aussi les fonctions PUTC, PUTN, INPUTC et INPUTN qui sont utilises pour convertir en caractre ou numrique. Linstruction PUT suivi du nom de la variable et de son format est utilis dans les tapes DATA pour convertir le format de la variable. Lexemple suivante illustre comment convertir la variable numrique MONTANT en euros :
Data _Null_;
montant=1145.32; put montant euro10.2; run;
32
Linstruction PUT et la fonction PUT renvoie le mme rsultat. Cependant, linstruction PUT permet de stocker le nouveau format dans une variable. Exercice 4 : Dans le fichier Donnees, crez une variable AN_NAIS contenant lanne de naissance calcule partir de la variable AGE.
33
Exercice 5 Modifier le format de la variable MONTANT de lib1.Donnees1 en lui attribuant un format euro10.2
C.Fusion de tables
1.Fusion verticale de deux fichiers
Cette fusion augmente le nombre dobservations, ou individus dune table SAS.
FICHIER 1 OBS 1 2 3 X 23 54 123 FICHIER 2 OBS 1 2 X 678 787 FICHIER CONCATENE 1+2 SET FICHIER1 FICHIER2 OBS 1 2 3 4 5 X 23 54 123 678 787 Y Nom1 Nom2 Nom3 Nom4 Nom5 Y Nom4 Nom5 Y Nom1 Nom2 Nom3
Pour ce faire, il convient dutiliser le code suivant : DATA WORK.TOUT; SET FICHIER1 FICHIER2; RUN; Ce fichier contiendra l'ensemble des individus de ces deux fichiers sur les variables correspondantes. Remarque : Si une variable se trouve dans un des fichiers sans tre dans le second, les individus seront ports manquants pour cette variable dans le second fichier. On peut galement faire figurer des options derrire les noms des fichiers de donnes :
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 34
Fusion avec lutilisation de loption IN= IN=Variable est une option des instructions SET et MERGE permettant de savoir do vient lobservation lorsque lon fusionne plusieurs fichiers de donnes : data work.tous; set Fichier1 Fichier2(in=x); if x=1 then Y=ZZ; output; run; Ici X prend la valeur 1 lorsque lobservation vient de Fichier2 .
5 Sinon votre fichier rsultat ne sera plus cohrent. Loption BY permet deffectuer cette fusion en se basant sur une ou plusieurs variables identifiant les individus.
35
2 3
54 123
Nom2 Nom3
787 89
Nom5 Nom6
Le code correspondant est le suivant : DATA WORK.TOUT; MERGE WORK.FICHIER1 WORK.FICHIER2; RUN;
36
Nous souhaitons fusionner ces deux fichiers en un seul. Chaque ligne reprsentant un patient. Nous allons dire SAS de fusionner les deux fichiers par rapport aux individus : data ensemble; merge conso_c conso_v; by nom; run; Attention : Pour que BY fonctionne, les fichiers doivent avoir t tris par rapport la variable contenue dans le BY (ici nom). Si tel nest pas le cas, utilisez PROC SORT. Obs 1 2 3 4 NOM Nom1 Nom2 Nom3 Nom4 CONSULT 20 60 100 . VISITE . 30 . 60
Exercice 6 Fusionner les tables SAS, DONNEES et CARTO, sur la cl de fusion (NOM, PRENOM). Remarque : les tables DONNEES et CARTO ont t pralablement tries. Crer une table nomme FUSION.
37
Cet exemple cre le fichier NORM qui contient 10 nombres alatoires obtenus partir d'une distribution normale de moyenne 0 et d'cart-type 1. Linstruction OUTPUT dit SAS d'crire l'observation courante dans le fichier qu'on est en train de crer.
L'nonc DO est galement utilis dans les noncs IF/THEN et ELSE pour excuter un bloc d'instructions lorsque le rsultat de la comparaison est vraie ou fausse. Exemple
38
2.Linstruction RETURN
L'instruction RETURN arrte l'excution courante d'un bloc DATA et se positionne au dbut du bloc pour l'excuter de nouveau. Avant de retourner au dbut du bloc, SAS crit d'abord l'observation dans le fichier cr, moins que des noncs OUTPUT ne soient utiliss l'intrieur du bloc (dans ce cas, l'emplacement de ces noncs dtermine si l'observation est crite ou non). Exemple
3.Linstruction RETAIN
L'nonc RETAIN demande SAS de garder en mmoire les valeurs prises par certaines variables lors de l'excution prcdente du bloc DATA. Si on utilise RETAIN sans spcifier les variables retenir, les valeurs de toutes les variables du bloc DATA seront conserves. En l'absence de l'nonc RETAIN, SAS considre que les valeurs de la dernire excution du bloc sont manquantes. Exemple
Cet exemple calcule la somme des valeurs de MONTANT. La valeur de dpart de SOMME est 0. On peut aussi spcifier plus d'une variable sur un mme nonc RETAIN; on doit indiquer aprs chaque nom de variable, la valeur de dpart de celle-ci. Exemple : RETAIN SOMX 0 SOMY 0; On peut crer un compteur ou additionner les valeurs prises par une variable (comme dans l'exemple prcdent) en utilisant une instruction de la forme: N+1; ou SOMX+X; Avec une instruction de cette forme, on n'a pas besoin d'utiliser un nonc RETAIN. La valeur initiale de la variable accumulatrice est automatiquement 0. Pour une valeur de dpart diffrente de 0, utiliser un nonc RETAIN. Exemple : Crer une table contenant les 10 plus gros consommants par ville data top_ten(drop=cpt); retain cpt 0; set fusion_tri; by ville; cpt=cpt+1; if first.ville then cpt=1; if cpt <=10 then output; run;
39
B.Proc contents
Cette procdure permet de visualiser la structure dune table. Syntaxe simplifie : PROC CONTENTS DATA=nom_du_fichier_de_donnes ; RUN ; Code SAS : proc contents data=malib.donnees; run;
40
C.Proc sort
La PROC SORT permet de raliser des tris. Syntaxe simplifie : PROC SORT [liste des options]; BY [DESCENDING] variables ; RUN ; Ci-dessous les options les plus frquentes de la proc Sort : DATA=fichier-systme-SAS spcifie le fichier-systme-SAS trier, si DATA= est omis, SAS utilise le dernier fichier-systme-SAS cr. OUT=fichier-systme-SAS spcifie le fichier de sortie ventuel, si OUT= est omis, le fichier original est remplac. NODUPKEY=vrifie et limine les observations ayant des valeurs pour la variable BY identique.
Code SAS : proc sort data=malib.donnees; by descending montant; run; data temp; set malib.donnees; if _N_<11; run; proc print; run;
Exercice 7 : Saisir le code SAS ci-dessus, quel est le montant le plus lev ?
Remarque : Cette procdure possde galement des options permettant d'optimiser les temps de tris sur de gros volumes (TAGSORT, NOEQUALS, THREADS) que nous n'aborderons pas dans cette prsentation.
41
D.Proc datasets
La PROC DATASETS permet de grer vos fichiers de donnes. Vous pouvez copier tout ou partie dun fichier de donnes, en supprimer, visualiser leur contenu, diter le contenu dune bibliothque.. Syntaxe simplifie : PROC DATASETS library=nom de bibliothque <options>; DELETE fichiers; /* Pour supprimer les fichiers spcifis. */ CHANGE nom actuel du fichier=nouveau-nom...; /* Pour renommer un fichier */ MODIFY fichier; /* Pour modifier, entre autres, les noms des variables dun fichier de donnes, modifier
les formats, les tiquettes etc... Le fichier doit tre situ dans la bibliothque indique dans la procdure DATASETS. */
RUN ; Code SAS : proc datasets library=malib; delete donnees1; run; PROC DATASETS LIBRARY=MALIB; MODIFY DONNEES3; FORMAT MONTANT 10.2; RUN; QUIT; Dans cet exemple, les montants auront un format 10.2.
42
E.Proc Transpose
Son nom est trs explicite, elle permet en effet de transposer un fichier de donnes. Les colonnes deviennent les lignes et inversement. Elle permet aussi de rarranger de faon plus complexe certains fichiers. Voici un petit exemple tir du SAS Procedures guide : DATA A; INPUT A B C; CARDS; 1 2 3 4 5 6 ; PROC PRINT; TITLE 'Le fichier original...'; RUN; PROC TRANSPOSE DATA=A; RUN; PROC PRINT; TITLE 'Le fichier transpos'; RUN; Ce qui donne
Le fichier original... OBS 1 2 A 1 4 B 2 5 C 3 6
SAS a cr trois variables _NAME_,COL1 et COL2 qui contiennent les lignes du fichier prcdent. La variable _NAME_ contient tous les noms de variables.
43
Syntaxe simplifie PROC TRANSPOSE (options); VAR variables; Les variables transposer BY variables; Permet la cration de sous-groupes... le fichier devra avoir t tri avant. Les variables
BY ne sont pas transposes.
ID variable ; Colonne contenant les noms des futures colonnes COPY variables : variables recopier dans le fichier final sans les transposer. RUN ; Les principales options tant : DATA= et OUT= pour spcifier les fichiers de donnes dentre et de sortie. Exemples utilisation de id. On modifie lgrement le programme prcdent : DATA A; INPUT A B C D $; CARDS; 1 2 3 X 4 5 6 Y; PROC PRINT; TITLE 'Le fichier original...'; RUN; PROC TRANSPOSE DATA=A; ID D; RUN; PROC PRINT; TITLE 'Le fichier transpos'; RUN;
Le fichier original... OBS 1 2 A 1 4 B 2 5 C 3 6 D X Y
1 2
1 4
2 5
3 6
X Y
Exercice 8 A partir de Donnees, utiliser la procdure TRANSPOSE pour : Transposer la structure suivante : NOM PRENOM AGE SEXE MONTANT801 MONTANT802 La table de sortie devra sappeler DONNEES2. Renommer _801 en MONTANT01 et _802 en MONTANT02 Remplacer dans cette table les valeurs manquantes de montant801 et montant802 par des 0. Vrifier que MONTANT01 et MONTANT02 sont au format 10.2
Remarques pour lexercice : Au pralable trier la table Donnees sur la cl de transposition et crer la table Donneestri en sortie du tri. Attention, loption NODUPKEY de la PROC SORT permet de supprimer les doublons sur la cl
F.Proc Format
Il vous est possible, sous SAS, de dfinir vos propres formats et de les utiliser en faisant simplement rfrence leur nom comme nimporte quel autre format prdfini. La procdure Format effectue ce travail. Les formats personnaliss ainsi crs sont stocks dans un catalogue SAS temporaire: WORK.FORMATS. 6 Une confusion ne pas commettre : Lorsquune variable est reformate, sa valeur interne ne change pas, seule son apparence change. Pour un recodage, la valeur de la variable change (En gnral).7 Syntaxe simplifie PROC FORMAT <options> ; VALUE nom champ de valeurs=valeur formate ; Dfinit les formats daffichage INVALUE nom champ de valeurs=valeur formate; Dfinit ceux dentres (input) PICTURE nom champ de valeurs=masque daffichage; Pour prsenter les donnes numriques
ajoutant des symboles ($25,152 ; 12-25-52...)
en
6 Si vous voulez les conserver, utilisez loption LIBRARY= ci dessous (pour les rcuprer, utilisez LIBNAME LIBRARY votre bibliothque ; ). 7 Remarque : La procdure FREQ utilise la valeur de la variable formate pour dfinir les classes du tri crois. Il suffit de changer de format pour effectuer des regroupements en classes ou le contraire. Lavantage de ceci est de ne jamais toucher au fichier original.
45
Ne slectionne dans le catalogue FORMATS que les noms de formats ou dinformats indiqus ici. (entres = nom de formats ici) Nexclut du catalogue FORMATS que les noms de format ou dinformats indiqus ici
Champ,champ,...
correspond ]12 ;48] correspond [12 ; 48[ 14, 12-48, 57 ,57-<62 Tous ces champs seront concerns.
12<-48 12-<48
Pour inclure ou exclure certaines valeurs, vous pouvez utiliser < . Ainsi, invalue anota 0-<10=Faible 10-12=Moyen 12<-20=Bon ; associera 10 et 12 moyen. Les mots cls Low, High et Other peuvent aussi tre utilis dans les champs de valeurs : invalue anota low-<10=Faible 10-12=Moyen 12<-high=Bon ;
Permet de stocker dans un fichier de donnes SAS des informations sur les formats contenus dans FORMATS. (valeurs, domaine de validit etc...) Vous pouvez rcuprer tout ou partie de ces informations pour redfinir de nouveaux formats grce une autre option CNTLIN=nom de fichier SAS. Exemples Nous allons crer un nouveau format nomm fsexe. qui transforme 1 en Masculin 2 en Fminin et tous les autres nombres en Non spcifi . Proc format ; value fsexe 1='masculin' 2='Fminin' other='Non spcifi'; run;
/* Nous allons utiliser le Format Fsexe. dans le PRINT ci-dessous */
proc print data=lib1.donnees3; var age sexe; format sexe fsexe.; /* Ne pas oublier le . a la fin du nom de format */ run; Nous obtenons :
Remarques : - Dans lexemple ci-dessus, le format a t utilis ponctuellement dans la procdure PRINT. Si vous voulez lattacher la variable SEXE, il vous suffit de lutiliser dans une tape DATA (cf. plus bas) - Nous pouvons appliquer le Format prcdemment dfini pour tout autre variable.
47
48
Exemple libname lib_format 'c :\SAS'; Proc format LIBRARY=lib_format ; value fsexe 1='masculin' 2='Fminin' other='Non spcifi'; run; Le format fsexe. sera ajout au catalogue FORMATS de la bibliothque lib_format. Pour utiliser ce format pour crer un fichier de donnes nomm lib1.ESSAI dont la variable SEXE sera formate en utilisant fsexe. . libname library 'c :\SAS'; data lib1.essai; set lib1.donnees5; keep age sexe montant; format sexe fsexe.; run; Les instructions prcdentes font que le format fsexe. sera toujours attach la variable sexe cidessus. Pour appliquer un format juste une fois, indiquez-le uniquement dans le PROC PRINT par exemple. proc print data=lib1.essai; run; Remarques importantes: A chaque fois que vous voudrez afficher le fichier lib1.ESSAI, le format fsexe. DEVRA ETRE DISPONIBLE. (cest dire, dans WORK.FORMATS, ou LIBRARY.FORMATS avec le libname adquat.) Autrement dit, si vous quittez SAS et que vous voulez afficher lib1.ESSAI, vous devrez taper : libname library 'C :\'; proc print data=lib1.essai;
8 Il devra donc tre dans WORK ou dans LIBRARY /*Cet affichage impose au format fsexe dtre disponible*/ /*pour que SAS aille y lire le format fsexe.*/
49
run; Lorsque SAS rencontre lib1.ESSAI, il recherche le format fsexe. (car ce format est attach la variable sexe). Il commence la recherche dans WORK.FORMATS puis dans LIBRARY.FORMATS. Sil ne le trouve pas, un message derreur marque linterruption de la procdure. Remarque : Vous pouvez galement dclarer la bibliothque de format dans linstruction OPTIONS de la faon suivante : Options fmtsearch=(mesforms.formats) ; Puis : Proc format library=mesforms.formats fmtlib ; Run ; Le format cr doit apparatre dans la fentre OUTPUT.
5.Informat (INVALUE)
Vous pouvez dfinir vos propres formats dentre. Lexemple suivant illustre cette notion : proc format; invalue fnote 'N'=6 'MM'=8 'M'=10 Nous dfinissons lInformat Fnote. ici 'AB'=12 'B'=14 'TB'=16 'ABS'=. ; Note manquante remplace par un point. run; data temp; input nom $ @;
Le caractre @ permet dattendre la fin de la ligne avant de sauter la ligne suivante. Nous avons encore trois notes lire avant de changer de ligne. Nous les lisons lune aprs lautre.
do i=1 to 3; input note : fnote. @; output; end; keep nom note; cards; Jean-pierre AB B M Herve N MM MM Anestis TB TB TB Bernard TB N TB run; proc print data=temp; run; On obtient :
OBS NOM
1 2 3 4
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \
5 6 7 8 9 10 11 12
Cf .
8 8 16 16 16 16 6 16
Exercice 9 Crer un format f_sexe : 1 : Homme 2 : Femme 0 : Non renseign Crer un format f_age : 0<=age<=18 : moins de 18 ans 19<=age<=65 : 19-65 ans age>65 : plus de 65 ans Visualiser les formats crs
51
G.Proc Tabulate
Elle permet deffectuer des statistiques lmentaires et de les afficher en tableaux. Nous pouvons obtenir des tris croiss trs sophistiqus ! ! !9 Il est possible deffectuer des statistiques lmentaires et de les afficher sous forme de tableau. Syntaxe simplifie Proc TABULATE <options> ; variables de classe qui seront utilises dans Table (qualitatives ou Class variables ;
quantitatives discrtes)
Var variables ; variables analyser (quantitatives) Ne rien mettre pour un tri crois banal Table (lignes) , (colonnes) * (calculs) ; By variables ; Format var1 format1 var2 format 2... ; cf. format Label var1=tiquette1 etc. ; Weight variable ; variable de poids affecter chaque individu. Run ; Les principales options tant : Data=nom du fichier de donnes SAS Depth=niveau maxi de profondeur de la table ; Format=format de chaque cellule du tableau Missing Les manquants constituent une modalit part entire. Si cette option nest pas utilise
les manquants ne sont pas inclus dans les modalits des variables de classement.
Noseps limine les sparateurs horizontaux Order= Data Les modalits des variables de classement sont classes par ordre dapparition
dans le fichier original
Freq Les modalits sont classes par ordre dcroissant deffectifs Internal (cest loption par dfaut)Les modalits sont classes par ordre croissant
(alphanumrique) Sous-totaux
L'instruction ALL permet de raliser des sous-totaux en lignes ou en colonnes. ALL n'entrane pas forcment une somme de la ligne ou de la colonne. Si la statistique moyenne est demande sur la colonne ou la ligne, ALL retournera la moyenne gnrale.
La syntaxe nest pas toujours simple ! Loutil Enterprise Guide peut alors se rvler utile si lon est compltement rfractaire au langage SAS
52
Vous allez comprendre la syntaxe de commande table laide des exemples ci-dessous. Exemples de tri croiss simples : Le programme suivant permet de dresser un tri crois AGE*SEXE. proc tabulate data=lib1.Donnees5; class age sexe; car nous allons effectuer un tri crois avec les variables age et sexe table age, sexe; run;
Le N laffichage indique que SAS a calcul, pour chaque cellule, leffectif de non manquants. Comparez avec le programme suivant : proc tabulate data=lib1.donnees5; class age sexe; car nous allons effectuer un tri crois avec les variables age et sexe table age*sexe / condense; le /condense demande SAS de condenser laffichage au
maximum pour limiter le nombre de pages afficher.
Run; On a laffichage :
53
Le N laffichage indique que SAS a calcul, pour chaque cellule, leffectif de non manquants. Syntaxe simplifie de la commande table Elle est obligatoire dans la procdure Tabulate. Elle contient des expressions de une trois dimensions (var1*var2*var3) spares par des virgules et ventuellement termine par un / suivi des options. Les variables indiques dans table sont soient dclares dans var soit dans class mais pas dans les deux. Les expressions peuvent tre du type : element*element (crois) element element (concatnation=cellules adjacentes) (element element) (agrgation) Les lments sont des variables statistiques ou des statistiques MEAN, SUM, N, NMISS, VAR etc. (voir plus loin)t Exemple proc tabulate data=lib1.donnees1; class sexe; var age; table sexe,mean*age / condense; run; va donner :
Nous avons la moyenne de lge par sexe. Statistiques disponibles Symbole SAS signification
N: effectif SUMWGT: la somme des poids (var WEIGHT) SUM: la somme. MEAN: la moyenne VAR: la variance STD: la dviation standard
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 54
Range: Ltendue (max-min) PCTN : Pourcentage PCTSUM : Pourcentage (somme) CV: coefficient de variation T: statistique de Student pour tester =0 P90 : 9ime dcile MEDIAN : mdiane Exercice 10 En utilisant la PROC TABULATE, crer les tableaux suivants.
55
Complment : Quelques options de la commande table : Condense Pour limiter le nombre de pages afficher Misstext=... Pour indiquer le texte afficher dans les cellules contenant les valeurs manquantes. Printmiss Par dfaut SAS naffiche pas les cellules vides, loption en question permet de les afficher quand mme.
H.Proc SQL
Le langage SQL (Structured Query Language) est un langage dinterrogation de bases de donnes standardis commun la plupart des logiciels de base de donnes. Cette procdure permet dextraire, corriger et mettre jour des donnes dans une table SAS, souvent plus rapidement que par une tape data. Le terme de table dsigne toujours une table SAS, correspondant un stockage de donnes propre ce logiciel. On utilise galement deux nouveaux types dobjets : les vues et les index. Une vue est le stockage dune interrogation : elle contient la description ou dfinition dune table virtuelle. Une vue est donc une interrogation laquelle on donne un nom, pour son usage ultrieur dans une autre procdure SAS. Le principal intrt de dfinir une vue est le gain despace mmoire. Un index est un systme de pointeurs permettant dans certains cas daccder plus rapidement aux informations contenues dans une table SAS.
1.La syntaxe
PROC SQL <options>; ALTER TABLE nom_table ADD/MODIFY/DROP colonne [format] ;
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 56
ou CREATE TABLE nom_table AS SELECT noms_cols, FROM noms_tables, ... WHERE conditions ; ou DELETE nom_table WHERE conditions ; ou DESCRIBE nom_table/nom_vue; ou DROP TABLE/VIEW nom_table ; ou INSERT INTO nom_table SELECT ; ou RESET <options>; ou SELECT noms_cols, FROM noms_tables, ... WHERE conditions ; ou UPDATE nom_table SET (nom_cols1, ) = ; ou VALIDATE liste ; QUIT ; Remarques : o il est inutile de rpter linstruction PROC SQL avant chaque dclaration, sauf si lon excute une tape DATA ou si lon fait appel une autre procdure entre deux commandes de SQL. o linstruction RUN nest pas ncessaire.
2.Les options
o inobs=n restreint le nombre dobservations traites (par exemple dans une clause WHERE) sur unetable fournie en entre de la procdure. o outobs=n restreint le nombre dobservations traites (par exemple insres) dans une table retourne par la procdure. o feedback rappelle la dfinition des vues parentes lors de la description dune vue (commande describe). o noprint pas ddition.
57
CREATE TABLE nom-table LIKE nom-table ; => Cration dune table avec les mmes noms
de variables et les mmes attributs quune autre table.
CREATE TABLE nom-table (nom_col1 type1, nom_col2 type2, ...) ; => Cration de la
structure dune table.
Les syntaxes 2 et 3 crent des tables vides, quil faut ensuite remplir avec la commande INSERT. Exemples
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. Exemple : Cration dun index idx_nompre sur les champs nom et prnom
59
INSERT INTO nom_table < ( nom_col1 < , nom_col2 > >) VALUES ( value1 < , value2 >) ; INSERT INTO nom_table < ( nom_col1 < , nom_col2 > >) SELECT ... FROM ... ; Exemple : Insertion des donnes dans une table nouvellement cre.
61
Exercice 11 Dans Donnees2, crez la variable MOY_MNT (moyenne des montants de janvier et fvrier) partir de MONTANT01 et MONTANT02. A partir de la table Donnees2, crer la table temporaire Donnees3 contenant les champs : NOM, PRENOM, AGE, SEXE, MOY_MNT. Cette table ne doit pas contenir les lignes pour lesquelles les noms ne sont pas renseigns. Crer lindex idx_tempo sur les champs NOM, PRENOM.
62
63
j)Les oprateurs
(1)Les oprateurs arithmtiques
Les oprateurs arithmtiques classiques sont disponibles : =, <, <=, >, >=, <>, !=, In, BETWEEN, IS NULL, IS NOT NULL, IS MISSING, IS NOT MISSING, LIKE. Exemple :
64
(a)Union : UNION
Lunion entre deux tables ou vues de mme structure donne une table ou une vue rsultante de mme structure ayant comme lments lensemble des lments distincts des deux tables ou vues initiales.
(b)Intersection : INTERSECT
Lintersection entre deux tables ou vues de mme structure donne une table ou une vue rsultante de mme structure ayant comme lments lensemble des lments communs aux deux tables ou vues initiales.
(c)Diffrence : EXCEPT
La diffrence entre deux tables ou vues de mme structure donne une table rsultante de mme structure ayant comme lments lensemble des lments de la premire table ou vue qui ne sont pas dans la deuxime.
Conserve les lignes ramenes par le premier SELECT et n'apparaissant pas dans celles retournes par le second SELECT. Les lignes communes sont supprimes. Exemple :
65
k)Les fonctions
(1)SUBSTR
La fonction SUBSTR permet dextraire une chane de caractre dune longueur donne en partant dune position spcifie. Syntaxe SUBSTR(Chane, Position de dpart, Longueur)
66
(2)UPPER/LOWER
La fonction LOWER change en minuscule un champ texte. La fonction UPPER fait linverse.
(3)CASE
Cette fonction permet de retourner les rsultats rpondant des conditions spcifies. Elle rappelle le IF/THEN/ELSE des tapes DATA. Syntaxe CASE <case-operand> WHEN when-condition THEN result-expression <...WHEN when-condition THEN result-expression> <ELSE result-expression> END Exemple : Cration dun champ LIB_SEXE partir dune condition sur le champ SEXE./
67
Cette fonction peut tre imbriquer avec les autres fonctions du SQL de SAS. Exercice 12 Crer une colonne C_AGE dans TEMPO contenant les valeurs 0-20 si lge est infrieur 20 ans, 20-65 si lge est compris entre 20 et 65 ans, 65+ si lge est suprieur 65 ans. Publier dans la fentre OUTPUT le tableau suivant (Utiliser la fonction CASE) :
VI.Les graphiques
Cette partie prsente deux procdures ddies aux graphiques : la procdure GCHART et la procdure GPLOT rattaches au module SAS/GRAPH. La premire permet de raliser des histogrammes, des diagrammes en btons et des diagrammes circulaires. La seconde permet de tracer des courbes et des nuages de points.
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 68
a)Syntaxe
PROC GCHART DATA=tablesas; BY <descending> variable ; VBAR variable(s) /<options standards>; HBAR variable(s)/<options standards>; PIE variable(s)/<options standards>; STAR variable(s) /<options standards>; RUN ; QUIT ; Les instructions PIE, HBAR, VBAR possdent des variantes 3D (HBAR3D, VBAR3D, PIE3D) qui offrent les mmes graphiques avec un effet de relief.
b)Options
MIDPOINTS permet dordonner les valeurs reprsentes pour une variable de type caractre et de centrer les barres dhistogrammes pour une variable numrique.
PIE variable_caractre / MIDPOINTS = valeur1 valeur2 valeurp ; VBAR3D variable_numrique / MIDPOINTS = valeur1 valeur2 valeurp ; DISCRETE signifie SAS que les valeurs de la variable correspondent chacune un secteur ou un bton du graphique ; cette option nest indispensable que si la variable de classes propose est de type numrique.
VBAR variable / DISCRETE LEVELS dtermine, pour une variable numrique, en combien de tranches elle doit tre dcoupe si lon a pas prcis DISCRETE et que chaque valeur ne doit pas faire lobjet dun bton ou dun secteur.
PIE3D variable_numrique / LEVELS = nombre_de_secteurs ; MISSING est utilise lorsque lon souhaite que les valeurs manquantes constituent une modalit visible sur le graphique.
HBAR variable(s) / MISSING ; SUBGROUP permet de prciser une seconde variable qui subdivisera le graphique. Dans un diagramme en bton, les barres seront subdivises en autant de rectangles quil y aura de valeur cette variable. Une lgende sajoute automatiquement au graphique.
69
Dautres options concerne la dfinition des tailles de secteur. Il sagit de la quantit qui correspond langle des tranches dun diagramme circulaire ou la taille dun bton. Par dfaut, ceux-ci sont proportionnels la frquence de la valeur considre. Les options TYPE et SUMVAR permettent de choisir dautres statistiques. TYPE peut prendre les valeurs suivantes : FREQ (par dfaut) PCT pourcentage que reprsente la frquence par rapport lensemble des donnes ; SUM somme MEAN moyenne Pour SUM et MEAN, il faut prciser la variable quantitative sur laquelle seront calcules les statistiques partir de loption SUMVAR. VBAR variable(s) / TYPE=PCT ; PIE variable(s) / TYPE = SUM SUMVAR=variable_numrique; Dans le cas des diagrammes en btons, TYPE peut prendre les valeurs CFREQ et CPCT correspondant des cumuls de frquences et de pourcentages. Exemple
70
Crez une table temporaire DON10000 (dans la SASWORK) contenant toutes les variables de la table DONNEES dont le montant est infrieur 10000. Triez cette table sur la variable MOIS puis ditez le graphique suivant par mois :
Remarque : Afin de choisir les couleurs utilises dans un graphique de la procdure GCHART, il est possible de faire prcder celle-ci dune instruction PATTERN numrote de 1 99.
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 71
PATTERNk COLOR= couleurzone ; Les couleurs restent valides jusqu la fin de la session. Il est recommand de les rinitialiser laide de linstruction suivante : GOPTIONS RESET=PATTERN ;
a)Syntaxe
SYMBOL1 INTERPOL = StyleGraphique COLOR=couleur VALUE=marqueur ; PROC GPLOT DATA=nomTableSAS <UNIFORM> ; PLOT vertical * horizontal / <options>; RUN; QUIT; GOPTIONS RESET= SYMBOL;
b)Options
Linstruction SYMBOL permet de dfinir laspect du nuage de points ou de la couleur. Selon le nombre de graphiques demands dans la procdure GPLOT. Il est possible de dfinir jusqu 255 instructions SYMBOL numrotes en consquence. Les attributs de cette instruction sont : INTERPOL= NONE (dfaut) nuage de points courbe INTERPOL = JOIN INTERPOL = SPLINE courbe lisse COLOR = indique la couleur des points et dun ventuel trait (noir par dfaut) VALUE dfinit le symbole marquant les points du graphique. Les valeurs sont les suivantes : PLUS, X, STAR, SQUARE, DIAMOND, TRIANGLE, DOT, CIRCLE, ou NONE. Les symboles sont valables durant toute la session.. Il est recommande de les rinitialiser avec linstruction : GOPTIONS RESET=SYMBOL ;
Loption UNIFORM permet de conserver les mmes axes si linstruction PLOT dfinit plusieurs graphiques. Les options de linstruction PLOT, les plus couramment utilises sont :
OVERLAY pour superposer tous les graphiques lists dans linstruction PLOT car, par dfaut, plusieurs graphiques demands dans la mme instruction PLOT produisent des graphiques distincts. PLOT Y1 * X Y2 * X Yn * X / OVERLAY ; HREF = ou VREF = qui permettent dobtenir le trac dune droite horizontale ou verticale sur le graphique du nuage de points X * Y.
72
PLOT X * Y / HREF = valeur1 valeu2 valeurn ; Enfin, linstruction SYMBOL permet de choisir le type de graphique demand en fonction de la valeur de loption INTERPOL. Exemple On souhaite reprsente les plus forts consommateurs.
73
a)Syntaxe
PROC UNIVARIATE (options); VAR variables; (Les variables dont nous voulons l'tude) BY variables; (Permet la cration de sous-groupes... le fichier devra avoir t tri avant) WEIGHT variable;(variable contenant les "poids" de chaque individu. Il vaut 1 par dfaut) OUTPUT OUT=FICH.SAS (fichier contenant autant d'individus que de modalits de BY et
comme variables, les statistiques donnes par UNIVARIATE) cf. ex
RUN; Les options principales tant: DATA= NOPRINT NORMAL ROUND= FREQ PLOT VARDEF=
Nom du fichier de donnes (si ce n'est pas le fichier courant) Effectue un test de normalit (Shapiro-Wilk si n<2000, Kolmogorov si n>2000) Spcifie la faon d'arrondir les variables. (Edition d'une table avec les valeurs des variables, les %, les % cumuls...) Produit des "graphiques" (Box plot, ...) Vous indiquez ici le diviseur utilis pour le calcul de la variance:
DF N WDF WEIGHT
(n-1) (Choisi par dfaut) (n) (somme des poids moins 1) (somme des poids)
74
Exercice 14 Affecter une librairie LIB. Taper le programme suivant : PROC UNIVARIATE DATA=LIB1.DONNEES5 NORMAL PLOT FREQ; VAR AGE; RUN; Examinez tout l'output et comprenez sa signification en vous aidant du tableau de la page suivante.
75
SORTIE SAS (exemple) N Sum Wgts Sum Mean Variance Std Dev Skewness Kurtosis USS CSS CV Std Mean T:Mean=0 Pr>|T| Num ^= 0 Num > 0 M(Sign) Pr>=|M| Sgn Rank Pr>=|S| W:Normal Pr<W 106 106 18094 170.6981 61.45085 7.839059 0.480848 -0.05708 3095064 6452.34 4.592353 0.761397 224.1908 0.0001 106 106 53 0.0001 2835.5 0.0001 0.967964 0.0865
signification
N: effectif SUMWGT: la somme des poids (var WEIGHT) SUM: la somme. MEAN: la moyenne VAR: la variance STD: la dviation standard (en 1/n-1) Skewness:coefficient mesurant l'asymtrie Kurtosis:coefficient mesurant laplatissement USS: somme des carrs des xi CSS: somme des carrs des carts la moyenne CV: coefficient de variation STDMEAN: erreur standard sur la moyenne T: statistique de Student pour tester =0 PROBT: c'est le P correspondant au test prcdent (bilatral) Nombre d'observations non nulles Nombre d'observations strictement positives MSIGN: Statistique. utilise pour tester la nullit de la mdiane PROBM: c'est le P correspondant Signrank:statistique du test des rangs (Wilcoxon) cf cidessous PROBS: c'est le P correspondant. NORMAL: c'est la stat. utilise pour tester la normalit (cf ci dessous) PROBN: et le P correspondant
76
2.Dtails statistiques
a)Test de Normalit
NORMAL : statistique testant la normalit de la distribution. Nous voulons vrifier, partir des donnes de lchantillon, si la distribution observe est compatible avec lhypothse dune distribution Gaussienne (H0). La statistique employe est celle de Shapiro-Wilk si n<2000 et celle de Kolmogorov-Smirnov pour les valeurs de n suprieures. Vous avez galement le P correspondant (PROBN). Si P>0.05, nous acceptons l'hypothse de normalit.
1 ( xi x ) 2 et 0 = 0 la valeur P correspondante. (Si P>0.05, on ne peut rejeter H0 n 1 i au niveau de signification de 5%, on rejette sinon...) s=
Vous devez toujours vous ramener la nullit de la moyenne tester ou utiliser la PROC TTEST avec loption H0.
MSIGN (sign-test) c'est la statistique de test calcule par M=p-n/2 o n est le nombre de valeurs non nulles et p le nombre de valeurs strictement positives. Cette statistique est utilise
77
pour tester la nullit de la mdiane (H0: mediane=0). Nous avons le P correspondant (PROBM). Quand P<0.05, nous rejetons l'hypothse nulle. Exercice 15 Crer une table STAT_UNI1 (stockes sous la bibliothque prcdemment cre) contenant la moyenne, lcart-type et la mdiane des montants de janvier et fvrier par sexe partir de la table DONNEES2.
proc univariate data=lib1.donnees5 nextrobs=2 nextrval=4; var age; histogram / midpoints=0 to 100 by 20 pfill=x cfill=blue;
Les valeurs vont de 0 100 groupes par bloc de 20 Couleurs et hachures de lhistogramme
Rpartition des consommants par ge La procdure UNIVARIATE Variable : age Moments N Moyenne cart-type Skewness 6698 38.1737832 22.9795493 0.201788 Somme poids Somme obs. Variance Kurtosis 6698 255688 528.059686 -0.7714236
78
13296994 60.1972017
3536415.72 0.28078179
Mesures statistiques de base Position Moyenne Mdiane Mode 38.17378 38.00000 39.00000 Variabilit cart-type Variance tendue Intervalle interquartile 22.97955 528.05969 102.00000 35.00000
Tests de position : Mu0=0 Test t de Student Signe Rangs signs -Statistiquet M S 135.9553 3297 10871858 -Seuil de significativitPr > |t| Pr >= |M| Pr >= |S| <.0001 <.0001 <.0001
Quantiles (Dfinition 5) Quantile 100% Max 99% 95% 90% 75% Q3 50% Mdiane 25% Q1 10% 5% 1% 0% Min Estimation 102 89 78 71 55 38 20 6 3 0 0
Observations extrmes ----Minimale--Valeur 0 0 Obs. 6662 6615 ----Maximale--Valeur 100 102 Obs. 5864 6399
Rpartition des consommants par ge La procdure UNIVARIATE Variable : age Valeurs extrmes ----------Minimale--------Ordre 1 2 3 4 Valeur 0 1 2 3 Frquence 104 108 100 94 ----------Maximale--------Ordre 98 99 100 101 Valeur 97 98 100 102 Frquence 1 1 1 1
79
1='Homme' 2='Femme'
midpoints=0 to 100 by 20; inset mean='Moyenne :' (4.1) / noframe position=ne height=2 font=swissxb;
Dfinit une zone de texte : une statistique, son titre, le format de la stat, lencadrement de la zone de texte, sa position, sa hauteur, sa police.
80
Exercice 16 Crer une table Tempo stockes dans la SASWORK , partir de Donnees2, contenant les variables : AGE, SEXE, MONTANT01, MONTANT02 + crer une variable MOY_MNT reprsentant la moyenne de MONTANT01 et MONTANT02. Limiter le nombre de lignes de cette table celles dont le montant moyen est infrieur 10 000 euros.
Crer deux histogrammes en parallle par sexe, reprsentant le % de consommant par montant ; les montants tant reprsents par des classes dtendue 1000.
PROC FREQ DATA= table des observations <OPTIONS>; BY variables de stratification; /optionnel/ TABLES tableaux </ OPTIONS>; WEIGHT variables; /optionnel/
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 81
<STATISTIQUES>;
L'instruction weight permet de ne pas affecter le mme poids chaque observation. Parmi les options de la proc FREQ, on retiendra ORDER, qui indique l'ordre dans lequel doivent apparatre les modalits :
ORDER = DATA ORDER = FORMATTED ORDER = FREQ ORDER = INTERNAL (par dfaut)
ordre d'apparition dans la table SAS modalits tries suivant les valeurs formates modalits tries par frquences dcroissantes modalits tries selon les valeurs non formates.
Par exemple : Si A est une variable prenant deux modalits 1 ou 2 et si on utilise l'instruction : PROC FORMAT; VALUE $SEXE "1"="H" "2"="F"; alors, les instructions suivantes : PROC FREQ ORDER=INTERNAL; TABLES A; FORMAT A $SEXE.; PROC FREQ ORDER=FORMATTED; TABLES A; FORMAT A $SEXE.; produisent les deux tableaux de frquence suivants :
ORDER=INTERNAL Cumulative Cumulative A Frequency Percent Frequency Percent ----------------------------------------------H 2 50.0 2 50.0 F 2 50.0 4 100.0
ORDER=FORMATTED Cumulative Cumulative A Frequency Percent Frequency Percent ----------------------------------------------F 2 50.0 2 50.0 H 2 50.0 4 100.0
Remarque : l'option ORDER n'agit pas sur les valeurs manquantes, qui apparaissent toujours en premier.
Pour obtenir le croisement de la variable A avec la variable B, la syntaxe de l'instruction TABLES est la suivante : TABLES A* B; De mme, TABLES ( A B)*(C D) produira 4 tableaux croiss A avec C, A avec D, B avec C et B avec D. L'utilisation des options de l'instruction TABLES permet de mesurer l'intensit de la liaison entre les variables tudies. La syntaxe est alors :
TABLES
ROLE
imprime la contribution de chaque cellule au chi2 dite pour chaque cellule la diffrence entre lcart observ et lcart thorique sous hypothse dindpendance 82
considre les valeurs manquantes comme une modalit teste par le chi 2 lhypothse dindpendance entre les variables Naffiche pas les % colonnes Idem % lignes Idem % total Idem Effectif Ne cr pas de sortie dans lOUTPUT Dfini le nom du fichier de sortie
La sortie se compose d'un tableau crois, avec ventuellement des statistiques supplmentaires, si elles ont t demandes. Sans option, les cases de ces tableaux indiqueront les effectifs, les frquences et les frquences conditionnelles (en ligne et en colonne). Les observations avec au moins une valeur manquante sont exclues. Linstruction output permet dobtenir une table de sortie. Les statistiques que lon peut demander sont celles qui ont dj t demandes aprs linstruction tables. Un exemple : La table SAS 'test' comprend diverses variables sur les mdecins. Lexemple suivant illustre ltude de la relation entre le mode de conventionnement et le sexe du mdecin. La variable sexe prend la valeur 1 pour les hommes et 2 pour les femmes. La variable conv prend 2 valeurs, 1 si le mdecin est en secteur 1, 2 sil est en secteur 2. Le programme est le suivant :
Frequency | Deviation | Cell Chi-Square| Percent | Row Pct | Col Pct |1 |2 | ---------------+--------+--------+ 1 | 358 | 44 | | 2.5474 | -2.547 | | 0.0183 | 0.1394 | | 75.37 | 9.26 | | 89.05 | 10.95 | | 85.24 | 80.00 | ---------------+--------+--------+
Total 402
84.63
83
| 62 | 11 | 73 | -2.547 | 2.5474 | | 0.1005 | 0.7677 | | 13.05 | 2.32 | 15.37 | 84.93 | 15.07 | | 14.76 | 20.00 | ---------------+--------+--------+ Total 420 55 475 88.42 11.58 100.00
STATISTICS FOR TABLE OF SEXE BY CONV Statistic DF Value Prob -----------------------------------------------------Chi-Square 1 1.026 0.311
Il nest donc pas possible de rejeter lhypothse de lindpendance du sexe et du mode de conventionnement au niveau de 5%. Exercice 17 A partir de la table Fusion, crer une variable supplmentaire Class_age contenant <20 ans si la variable ge est infrieur 20 ; 20-65 ans si AGE est compris entre 20 et 65 ; >65 ans si AGE est suprieur 65.
84
<MOTS-CLS>;
VAR liste de variables quantitatives (sur lesquelles portent les statistiques); CLASS liste de variables qualitatives (dterminant les sous-groupes) ; FREQ variable; WEIGHT variable; ID liste de variables; BY variables de stratification;
/optionnel/ /optionnel/ /optionnel/ /optionnel/
La variable qui suit linstruction freq indique le nombre de fois quil faut compter lobservation. De mme celle qui suit weight indique le poids affect chaque observation.
Parmi les options de la proc MEANS, quelques unes mritent dtre retenues :
ORDER = FREQ modalits tries par frquence dcroissante ORDER = DATA modalits dans lordre dapparition dans la table SAS ORDER = FORMATTED modalits tries selon les valeurs formates ORDER = INTERNAL modalits tries selon les valeurs non formates MISSING intgre les observations pour lesquelles une des variables de linstruction CLASS a
des valeurs manquantes. Par dfaut, SAS donne les indicateurs suivants par sous-groupe nomms respectivement N, MEAN, STD, MIN et MAX : le nombre dobservations, la moyenne, lcart-type, la valeur minimale et la valeur maximale,. Dautres indicateurs peuvent tre demands comme suit : PROC MEANS DATA=tab mot-cl1 mot-cl2 mot-cl3; Les mots-cls sont donns dans le tableau suivant :
Statistique Nombre dobservations Nombre de valeurs manquantes Valeur minimale Valeur maximale Moyenne Diffrence entre la valeur maximale et minimale
85
observe Somme Somme des poids Somme des carts la moyenne au carr Variance Ecart-type Ecart-type de la moyenne Coefficient de variation Coefficient dasymtrie Coefficient d'aplatissement Statistique du T de Student Niveau de signification du Test de Student
SAS dfinit autant de sous-groupes que le produit du nombre de modalits +1 de chacune des variables dclares dans linstruction CLASS. Le logiciel cre une variable appele _TYPE_ qui permet de reprer le tri effectu pour chacun des sous-groupes. Grce linstruction output, le contenu de la table SAS de sortie peut tre programm. La syntaxe est la suivante : OUTPUT OUT= table de sortie mot-cl1 (var1 var2 var3) = nom1 nom2 nom3 mot-cl2 (var1 var2 var3) = nom1 nom2 nom3 ; Par exemple :
OUTPUT OUT= tab N=N1 MEAN (var1 var2) = Moy1
Moy2 ;
Cette instruction cre une table 'tab' qui a autant dobservations que de sous-groupes dfinis par les variables de linstruction CLASS et trois variables nommes N1, Moy1, Moy2, qui sont le nombre dobservations et les moyennes de var1 et var2 dans chaque sous-groupe. Les variables var1 et var2 doivent tre dclares dans linstruction VAR. Un exemple : La table SAS test comprend diverses variables ayant trait aux mdecins et leur activit. Le programme prsent tudie les relations entre le mode de conventionnement et lge. La variable conv prend la valeur 1, si le mdecin est en secteur 1, et la valeur 2, sil est en secteur 2.
Le programme :
PROC MEANS DATA=test VAR MEAN; CLASS sexe; VAR age; OUTPUT OUT=sortie MEAN(age)=agemoy VAR(age)=varage; PROC PRINT DATA=sortie; RUN;
86
1 3
87
Exercice 18 Refaire lexercice 1 partir de la PROC MEANS. Quelles sont les diffrences ?
PROC CORR DATA= table des observations <OPTIONS>; BY variables de stratification; /optionnel/ FREQ variable; /optionnel/ WEIGHT variable; /optionnel/ PARTIAL variables; /optionnel/ VAR variables; /optionnel/ WEIGHT variables; /optionnel/ WITH variables; /optionnel/
La variable, ncessairement entire suivant linstruction FREQ, indique combien de fois il faut compter lobservation en cours. Linstruction WEIGHT donne le poids de chaque observation. Lutilisation de cette instruction nest pas compatible avec la sortie de corrlations non-paramtriques. VAR donne la liste des variables pour lesquelles il faut calculer les corrlations. Si linstruction WITH est utilise, alors ne sont calcules que les corrlations entre les variables qui suivent VAR et celles qui suivent WITH. PARTIAL sutilise pour calculer les corrlations entre les variables nommes aprs VAR corriges de leffet des variables nommes dans PARTIAL. Il sagit donc des corrlations entre les rsidus des variables tudier rgresses (MCO) par celles dont on veut neutraliser les effets. PARTIAL ne sutilise quavec les corrlations de Pearson (corrlations linaires).
Ce sont les options de la proc CORR qui dfinissent le type de corrlation souhaite : KENDALL calcule le tau-b de Kendall. SPEARMAN calcule les coefficients de corrlations de SPEARMAN. PEARSON est utilise pour le calcul des coefficients de Pearson (option par dfaut). Avec lutilisation de loption PEARSON, quelques statistiques supplmentaires peuvent tre demandes : COV demande le calcul de la covariance CSSCP calcule la somme des carrs des carts la moyenne et le produit des carts aux moyennes (la covariance et la variance multiplie par le nombre dobservations). SSCP dite la somme des carrs et des produits.
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 88
Cette procdure sort dans loutput les diffrentes corrlations demandes, les moyennes des variables de VAR.
Exemple :
Il est aussi possible dobtenir la mme sortie, mais sous forme de table SAS avec les options suivantes : OUTP= table de sortie (si les corrlations souhaites sont de Pearson) OUTK= table de sortie (si les corrlations souhaites sont de Kendall) OUTS= table de sortie (si les corrlations souhaites sont de Spearman).
Par exemple :
OUTP=sortiesor;
Cette ligne (complte des autres instructions ncessaires dans cette procdure) crera une table de sortie nomme sortie comprenant des corrlations de Pearson.
Exemple : La table test comprend diverses variables concernant les mdecins et leur activit. Le programme suivant donne le coefficient de corrlation entre le nombre de clients et le montant prescrit en pharmacie rembours 100%. Ces deux variables sont corriges de leffet montant total des prescriptions en pharmacie. Le programme :
PROC CORR DATA=test OUTP=sortie; VAR nbclient pharm100; PARTIAL pharmtot; RUN; PROC PRINT DATA=sortie; RUN;
89
Pearson Partial Correlation Coefficients / Prob > |R| under Ho: Partial Rho=0 / N = 475 NBCLIENT 1.00000 0.0 -0.18964 0.0001 PHARM100 -0.18964 0.0001 1.00000 0.0
NBCLIENT
PHARM100
NBCLIENT PHARM100
Le coefficient de corrlation entre ces deux variables tant assez faible, il est difficile alors de l'interprter.
Exercice 19 Existe til une corrlation entre lge et les montants moyens (moyenne entre MONTANT01 et MONTANT02) ? A partir de donnees5 : crer une variable MOY_MNT contenant la moyenne des variables MONTANT01 et MONTANT02 puis calculer les coefficients de corrlation (Pearson) entre la variable AGE et MOY_MNT
90
Cliquez sur OPEN pour continuer. Remarque : Il est aussi possible douvrir INSIGHT avec PROC INSIGHT. proc insight data=lib1.Donnees5; run;
Vous obtenez :
10 ACP etc.
Histogrammes, Boxplots, Diagrammes bandes, fonctions de rpartition, ajustement de lois (test de normalit), Rgression simple et multiple,
91
Type de la variable (Nominale (Nom) ou Numrique (Int) Accs un menu permettant de trier le fichier, de modifier les places des variables... En cliquant sur le bouton droit de la souris, vous pouvez exclure des calculs lobservation en question. SAS effectue automatiquement les corrections ncessaires. Le carr noir devient une croix.
Exercice 20 Dclarer la bibliothque LIB. Crer la table TEMPO (sous la bibliothque WORK) partir de Donnees2 contenant les variables suivantes : nom , prenom, moy_mnt, age, sexe, c_age La variable C_age est cre partir de linstruction suivante :
select; when (age<20) class_age='<20 ans'; when (age>=20 and age<65) class_age='20-65 ans'; when (age>=65) class_age='>65 ans'; end;
Convertir la variable sexe en caractre (fonction PUT). Limiter aux montants moyens infrieurs 10 000 euros.
92
Ce menu permet dagir sur les fentres de graphiques que vous sortirez. Pour copier votre fentre dans une autre. Pour animer vos points (nuages) en fonction des modalits dune variable Par dfaut INSIGHT modifie les fentres en temps rel (cf. Excel) cette option permet de geler une fentre. Gnial : outil permettant de marquer les observations sur un graphique en fonction dautres modalits.
Le menu Edit permet aussi dagir sur les variables (Transformation (Log, Exponentielle,...) sur les observations :
Recherche dindividus dition dindividus Permet de choisir les observations tiqueter ou non dans les graphiques. Permet de choisir les observations montrer ou non dans les graphiques. Permet de choisir les observations inclure ou exclure des calculs.
93
Le menu Analyze permet deffectuer des calculs et des graphiques de diffrents types :
Diagramme barres, histogramme. Boxplot, diagramme barres multivaris Nuage de points 2 ou 3 dimensions tude de la distribution de Y (Fonction de rpartition, superposition lois de proba (Normale), tests etc. Rgression simple, multiple. Analyse multivaries (Matrice des corrlations, Valeurs propres, vecteurs propres (ACP) ), Analyse discriminante
Remarque : Vous pouvez aussi slectionner, depuis la feuille de donnes, une ou plusieurs colonnes du fichier de donnes en cliquant sur leur nom et choisir ensuite le menu Histogram/Bar Chart. Vous aurez alors directement tous les graphiques concerns dans une fentre. Vous obtenez 11
11 Remarquez que SAS a mis dans une colonne OTHER toutes les modalits rares . Il suffit de cliquer sur le bouton METHOD de la bote prcdente pour paramtrer la raret . De plus, vous pouvez en cliquant sur les lment du graphique afficher les effectifs correspondants...
94
En cliquant sur le bouton droit de la souris (sur le graphique), vous faites apparatre un menu contextuel avec lequel vous pouvez afficher les valeurs de la rpartition (Values...) Pour obtenir le tri plat de la rpartition allez dans Analyse/Distribution Y, pour compliquer, nous mettons SEXE comme variable de Groupement.
95
Pour transfrer les calculs dans la fentre OUTPUT cliquez sur ce bouton, puis sur SAVE.
En allant dans Tables/ Frequency counts, SAS ajoute de tableaux de frquences un pour les hommes et un autre pour les femmes.
96
Exercice 21 Reproduire le graphique suivant en utilisant la commande MOSAIC PLOT qui gnre des diagrammes bandes deux dimensions
Etude graphique de la liaison entre deux variables : Slectionner les colonnes SEXE, AGE, MOY_MNT de la feuille de donnes en cliquant sur leur nom avec la touche CTRL maintenue enfonce. Activer ensuite le menu HISTOGRAM/BAR CHART. Cliquer sur la barre du graphique reprsentant les hommes. Interprter le rsultat obtenu.
97
Ceci fonctionne sur toutes les fentres cres par INSIGHT sauf celles qui sont geles (Menu Freeze de Windows)
98
25%
25%
Q1-1.5E
Q1
Q2=M
Q3
Plus petite valeur observe suprieure Q1-1.5 E M=Mdiane Qi=ime quartile E=Q3-Q1
Sortie SAS :
99
Pour modifier le format des valeurs, cliquer sur la valeur puis sur la flche (en haut gauche du tableau), cliquer sur format puis sur le format souhait. Exercice 22 Identifier lindividu hors norme (Box Plot) en cliquant dessus. Refaites les calculs sans lui. (Menu Edit/Observations/Exclude in Calculations, vous pouvez aussi le sortir du graphique Hide in Graph)
Analyse par groupe Pour distinguer selon les sexes ltude prcdente, il suffit dindiquer la variable SEXE dans la case GROUP :
Complments :
100
Dans la fentre prcdente, il vous est possible d intgrer diffrents lments : (ceux dj affichs sont indiqus par )
Intervalle de confiance... Tests de Student, de Wilcoxon... Tableau de frquence. Tests de normalit Moyenne tronque (Calcule en tant une partie des individus extrmes)
2.Fonction de rpartition
En allant dans le menu CURVES, vous pouvez intgrer des courbes supplmentaires la sortie prcdentes :
Densit des lois connues (Normales etc.) Fonction de rpartition (observe) Fonction de rpartition thorique. (dune loi connue) Tests de normalit etc... Courbe de Normalit (Droite de Henry ou autre)
3.Densit de probabilit
Vous pouvez obtenir la superposition de la densit de la loi Gaussienne sur lhistogramme prcdent :
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 101
Choix des paramtres (si vous choisissez vos Lestimation se fait partir de lchantillon ou partir de vos spcifications. spcifications)
Vous pouvez agir sur les curseurs pour modifier la moyenne et lcart type. La courbe rouge se modifiera en temps rel. Complment Vous pourrez tester lajustement de la courbe prcdente en allant dans Curves/Test for distribution. Exercice 23 Explorer la variable MOY_MNT (distribution, moments, )
102
Couleur de la stratification. Cliquez sur une couleur, puis remplissez la bote de dialogue qui saffichera.
Pour affecter un dgrad de couleur une variable numrique. Pour changer les couleurs du dgrad, faites glisser une couleur du dessus sur ce bouton. Marque de la stratification. Cliquez sur une marque par laquelle vous souhaitez marquer les observations...une bote de dialogue va safficher.
103
Exercice 25 Mettre en rose les femmes (SEXE=2) et changer le symbole en croix. Mettre en bleu les hommes (SEXE=1) et changer le symbole en rond.
104
Vous pouvez vous amuser dplacer le curseur ci-dessus vers la droite pour augmenter le degr du polynme ajustant Y en X.12 Tout est recalcul automatiquement, y compris le nuage des rsidus.
Coefficients de corrlations Il vous est possible de calculer directement le coefficient de corrlation entre les variables quantitatives en allant dans Analyse/Multivariate.
105
SAS permet denvoyer ces rsultats aussi dans un fichier HTML13 ou directement dans une table SAS. Le but de ce paragraphe est de vous montrer comment y parvenir.
<BR> <HR> <FONT FACE=> </FONT> <FONT COLOR=> </COLOR> <G> </G> <I> </I> <IMG SRC="nom fichier.gif" ALIGN=>
13 Ceci prsente un double intrt. Les fichiers HTML peuvent contenir des informations sous un format trs sophistiqu tout en tant lus par un simple navigateur WEB. Dautre part, on peut copier coller des tableaux HTML directement sous EXCEL et rutiliser ces donnes facilement !
106
proc univariate data=lib1.donnees5; var age; run; Va donner 5 objets en sortie : Les moments (moyenne, cart type etc.), Les statistiques de base (de position et de dispersion), les tests de position, les quantiles et les valeurs extrmes.
107
3 directions possibles :
Ne confondez pas la fentre OUTPUT et lODS OUTPUT qui nont rien voir
108
ods html body='$HOME\univariate.html'; ods listing close; proc univariate data=lib1.donnees5; var age; run; proc means data=lib1.donnees5 ; class sexe; var age; run; ods html close; ods listing; SAS vous affiche alors le contenu du fichier HTML que vous auriez pu lire avec INTERNET EXPLORER ou NETSCAPE.
Dans la suite de la sortie, vous avez la procdure MEANS dont vous pouvez copier/coller les rsultats sous Excel :
109
110
Exemple : ods listing; Pour diriger les objets vers la fentre OUTPUT ods trace on; Pour activer le mode TRACE proc univariate data=lib1.donnees5; var age; run; ods trace off; Va donner dans la LOG les noms de nos 5 objets :
Output Added: ------------Name: Moments Label: Moments Template: base.univariate.Moments Path: Univariate.AGE.Moments ------------Output Added: ------------Name: BasicMeasures Label: Basic Measures of Location and Variability Template: base.univariate.Measures Path: Univariate.AGE.BasicMeasures ------------Output Added: ------------Name: TestsForLocation Label: Tests For Location Template: base.univariate.Location Path: Univariate.AGE.TestsForLocation ------------Output Added: ------------Name: Quantiles Label: Quantiles Template: base.univariate.Quantiles Path: Univariate.AGE.Quantiles ------------Output Added: ------------Name: ExtremeObs Label: Extreme Observations Template: base.univariate.ExtObs Path: Univariate.AGE.ExtremeObs -------------
Ces noms (en gras) sont TRES IMPORTANTS car ce sont eux dont on va se servir dans la suite pour slectionner les objets afficher ! ! !
Exercice 26
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 111
Compliquez la procdure UNIVARIATE en ajoutant une option PLOTS par exemple qui permet dobtenir un box plot et un graphique de normalit :
ods trace on; proc univariate data=LIB1.DONNEES5 plots; var AGE; run; ods trace off; Combien dobjets figurent dans la sortie cette fois ci ? Quel est le nom du dernier ? Redirigez la sortie en un document HTML, cela change-t-il quelque chose au nom des objets ?
Slection des objets : ODS <Destination> SELECT noms des objets | ALL |NONE ; Exclusion dobjets : ODS <Destination> EXCLUDE noms des objets | ALL |NONE ; Pour savoir ou on en est : ODS <destination> SHOW
Exemple : ods listing select quantiles basicmeasures; Slection dobjets ods listing show; Pour savoir o on en est proc univariate data=lib1.donnees5 plots; var age; run; ODS LISTING SHOW va nous donner dans la LOG :
ods listing show; Current LISTING select list is: 1. quantiles 2. basicmeasures
112
Exercice 27
Le programme suivant permet dtudier la liaison entre les variables class_age et ville : ods trace on; data temp; set lib1.donnees1; select; when (age<20) class_age='<20 ans'; when (age>=20 and age<65) class_age='20-65 ans'; when (age>=65) class_age='>65 ans'; end; if num_com=555 then ville='TOULOUSE'; else ville='Hors Toul'; run; PROC FREQ DATA=temp; TABLES class_age*ville / CELLCHI2 CHISQ DEVIATION; RUN; ods trace off; Combien dobjets seront crs par ce programme ? Quels sont leurs noms ? Ecrire un programme permettant de ne faire apparatre dans la fentre OUTPUT que le tableau crois Mme chose mais dans un document HTML. (vous indiquerez deux instructions ODS HTML une pour indiquer le fichier de sortie (BODY), une autre pour slectionner les objets (SELECT)).
113
Le corps (BODY) ce sont toutes les sorties de SAS en HTML. La table des matires (CONTENTS) contient le nom des objets de chaque page du BODY. La table des pages (PAGE) qui contient le titre de chaque page et son numro.
CONTENTS
BODY
PAGE
FRAME
Ici, notre sortie comporte deux pages. La premire page contient la sortie dUNIVARIATE. Cette sortie dUNIVARIATE comporte plusieurs objets. Nous sommes en train de visualiser les TESTS FOR LOCATIONS.
114
Pour chacun des lments prcdents, SAS vous demande un nom de fichier HTML. Pour viter de taper le chemin de chaque fichier , vous pouvez utiliser la commande PATH=. Exemple : ods listing close; On ferme lOUTPUT ods html path='C :\TP' On ouvre la sortie HTML en c:\TP body='corps.html' On stocke diffrentes parties dans 4 fichiers contents='contenu.html' page='page.html' frame='feuille.html' ; proc univariate data=lib1.donnees5 plots; var age; run; proc print data=lib1.donnees5 (obs=10) ; run; ods html close; On ferme les fichiers HTML ods listing; On ouvre la feuille OUTPUT pour la suite. Remarques : En fait Corps.html va tre en c:\tp\corps.html etc. Un seul des fichiers prcdents est essentiel : cest BODY qui contient tous les rsultats.
BEIGE BRICK BROWN D3D MINIMAL STATDOC Pour crer vos propres styles, il faut avoir recours une nouvelle procdure PROC TEMPLATE.
title 'Synthse des rsultats par Age et sexe'; proc tabulate data=lib1.donnees5 format=6.1; class sexe age ; var moy_mnt; table sexe*age, moy_mnt / box={label='Montant moyen'}; format age f_age.; run;
117
Options placer derrires les commandes de la procdure TABULATE Pour changer les couleurs et la police des lments dune page HTML
STYLE= {Background=couleur} ; Pour changer la couleur de larrire plan. STYLE={Foreground=couleur} ; Pour changer la couleur du texte. STYLE={FONT_FACE= nom de la police} Pour changer la police de carcatres (Arial, Times etc.) STYLE={FONT_SIZE= taille} Pour changer la taille de la police (1 7...) STYLE={FONT_STYLE= style de la police} Pour changer le style de la police de carcatres (Italic, Roman) STYLE={FONT_WEIGHT= gras ou non} Pour changer le style (Medium, Bold) STYLE={FONT_WIDTH=espacement de la police : normal, Narrow ou Wide
Quelques couleurs possibles tant : Red, Pink, Orange, Yellow, Yellow-Green, Green, Blue, purple, Black, White, Cyan : Exemple : Reprenons lexemple prcdent en changeant les couleurs de fond et de caractres pour diffrents lments de la sortie prcdente :
ods listing close; ods html body='c:\tp.html'; proc tabulate data=lib1.donnees5 format=10.1 style={background=blue foreground=white}; title 'Synthse des rsultats par age et sexe'; class sexe / style={background=cyan}; classlev sexe / style={Background=cyan foreground=black font_size=30}; keyword mean / style={background=black font_weight=bold}; var age / style={background=blue foreground=white font_face=times font_style=italic}; table sexe*age, mean / box={label='Age moyen'}; run; ods html close; ods listing ;
118
STYLES des cellules Parents : Linconvnient de la sortie prcdente, cest que le style des cellules calcules (nombres) ne correspond pas au style des cellules contenant les noms des notes. Nous pouvons automatiquement les affecter en utilisant loption : *STYLE=<PARENT> table sexe*age*{style=<parent>}, mean / box={label='Age moyen'};
Fond. prend donc les valeurs Green, Yellow et Red selon les valeurs de la variable laquelle nous allons attribuer ce format : Amusons nous afficher les montants moyens de 10 consommants de Donnees5 avec ce format :
proc print data=lib1.donnees5 (obs=10); format moy_mnt fond.; var moy_mnt; run;
On a : Obs 1 2 3 4 5 6 7 8 9
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \
MOY_MNT Red Green Red Green Green Green Green Green Red
119
10
Green
Remarque : La valeur de la variable MOY_MNT na pas chang ! On lui a juste appliqu un masque ! En interne, les valeurs sont inchanges
Utilisons ce format dans les Styles : ods listing close; ods html body='c:\tp.html' style=brown; proc tabulate data=lib1.donnees5; title 'Rpartition des ges selon le sexe'; class sexe class_age; var moy_mnt; table sexe*(age*moy_mnt)*{style={background=fond. foreground=black font_weight=bold}},mean; run; ods html close;
ods listing;
Ce qui donne :
120
a)Fichiers simples
La version 6 de SAS ne permettait de sauvegarder dans les fichiers de donnes quune partie des sorties des procdures. Avec la V8, toutes les sorties des procdures peuvent tre exporte dans des fichiers de donnes. Il est possible de ne mettre quune partie des sorties en spcifiant le nom des objets. Syntaxe simplifie :
/*On redirige la sortie vers des fichiers de donnes*/ ods output Moments=work.moments BasicMeasures=Work.statdebase TestsForLocation=Work.test Quantiles=work.quantiles Extremeobs=work.extremes; Proc univariate data=lib1.donnees5; var age moy_mnt; run; ods listing;
On ractive la sortie OUTPUT classique pour visualiser les fichiers crs.
/*Visualisation de deux fichiers */ proc print data=work.moments; title 'Fichier Work.moments'; run; proc print data=work.quantiles; title 'Fichier Work.quantiles'; run; va donner pour le fichier WORK. QUANTILES
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 121
Obs 1 2 3 4 5 6 7 8 9 10 11
Var Name age age age age age age age age age age age
Quantile 100% Max 99% 95% 90% 75% Q3 50% Mdiane 25% Q1 10% 5% 1% 0% Min
Estimate 102 89 78 71 55 38 20 6 3 0 0
Vous pouvez aussi le visualiser avec lEXPLORER de SAS en allant dans la bibliothque WORK.
122