Vous êtes sur la page 1sur 122

TP SAS initiation IUP MIAGE L3 Anne 2008-2009

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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)

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

II. Fichiers de donnes SAS ___________________________________________________________13


A. Nom des fichiers SAS ___________________________________________________________________13 B. Les bibliothques ______________________________________________________________________14
1. Les 2 bibliothques prdfinies WORK et SASUSER _________________________________________________ 14 2. Comment crer VOTRE bibliothque ? ____________________________________________________________ 14 3. Dtail sur votre bibliothque (LIBRARY) __________________________________________________________ 15

C. Visualisation des fichiers SAS ____________________________________________________________16


1. Visualiser les donnes partir de la fentre EXPLORER ______________________________________________ 16 2. Visualiser la structure de la table via la fentre Explorer _______________________________________________ 17

D. Notions de FORMAT et INFORMAT _____________________________________________________17

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

B. Traitements des donnes ________________________________________________________________30


1. Les oprateurs________________________________________________________________________________ 30 2. Les fonctions_________________________________________________________________________________ 31

C. Fusion de tables _______________________________________________________________________34


1. Fusion verticale de deux fichiers _________________________________________________________________ 34 2. Fusion horizontale de deux fichiers _______________________________________________________________ 35

D. Autres notions importantes ______________________________________________________________38


1. Linstruction DO / END ________________________________________________________________________ 38 2. Linstruction RETURN_________________________________________________________________________ 39 3. Linstruction RETAIN _________________________________________________________________________ 39

V. Quelques procdures pour la gestion des donnes _______________________________________40


A. Proc PRINT___________________________________________________________________________40 B. Proc contents __________________________________________________________________________40 C. Proc sort _____________________________________________________________________________41 D. Proc datasets __________________________________________________________________________42 E. Proc Transpose ________________________________________________________________________43 F. Proc Format___________________________________________________________________________45
1. Les champs de valeurs _________________________________________________________________________ 46 2. Les options principales tant_____________________________________________________________________ 46 3. Visualisation des formats utilisateurs ______________________________________________________________ 47 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 4

4. Format permanent Library= ; puis Libname library nom de bibliothque ; ________________________________ 49 5. Informat (INVALUE) __________________________________________________________________________ 50

G. Proc Tabulate _________________________________________________________________________52 H. Proc SQL_____________________________________________________________________________56


1. La syntaxe___________________________________________________________________________________ 56 2. Les options __________________________________________________________________________________ 57 3. Les commandes SQL __________________________________________________________________________ 57

VI. Les graphiques___________________________________________________________________68


1. La procdure GCHART ________________________________________________________________________ 69 2. La procdure GPLOT __________________________________________________________________________ 72

VII. Quelques procdures pour lanalyse statistique ________________________________________74


A. Les analyses univaries _________________________________________________________________74
1. Les variables quantitatives : la PROC UNIVARIATE _________________________________________________ 74 2. Dtails statistiques ____________________________________________________________________________ 77 3. Les graphiques avec la Proc Univariate ____________________________________________________________ 78

B. Les analyses n-varies __________________________________________________________________81


1. Analyse portant sur des variables qualitatives _______________________________________________________ 81 2. Analyse portant sur des variables quantitatives et qualitatives ___________________________________________ 85 3. Les variables quantitatives, la corrlation___________________________________________________________ 88

VIII. Analyse interactive de donnes : SAS/INSIGHT ______________________________________91


A. Ouverture dune table __________________________________________________________________91
1. Aperu rapide de quelques menus ________________________________________________________________ 93

B. Analyse dune Variable qualitative________________________________________________________94 C. Variable quantitative ; Analyse univarie __________________________________________________99


1. Boxplots, histogrammes, moments ________________________________________________________________ 99 2. Fonction de rpartition ________________________________________________________________________ 101 3. Densit de probabilit _________________________________________________________________________ 101

D. Etude de plusieurs variables quantitatives_________________________________________________102


1. Nuage de points (scatter plot) ___________________________________________________________________ 103 2. Stratification par une variable qualitative, ou quantitative agrge (TOOL) _______________________________ 103 3. Rgression (Fit XY) __________________________________________________________________________ 104 4. Lancement dINSIGHT avec le langage SAS_______________________________________________________ 105

IX. LODS : Gestion des sorties SAS ___________________________________________________105


A. Quelques notions basiques sur lHTML___________________________________________________106 B. Utilisation de lODS de SAS. Objets de sortie ______________________________________________107 C. Trois sorties possibles__________________________________________________________________108
1. Sortie HTML basique _________________________________________________________________________ 109 2. Slection dobjets en sortie : ODS TRACE, ODS SELECT, ODS EXCLUDE _____________________________ 110 3. Sorties HTML sophistiques____________________________________________________________________ 114 4. Sorties vers des fichiers de donnes ______________________________________________________________ 121

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

Table des exercices


Exercice 1 ....................................................................................................................................................21 Exercice 2 ....................................................................................................................................................26 Exercice 3 ....................................................................................................................................................29 Exercice 4 ....................................................................................................................................................33 Exercice 5 ....................................................................................................................................................34 Exercice 6 ....................................................................................................................................................37 Exercice 7 ....................................................................................................................................................41 Exercice 8 ....................................................................................................................................................45 Exercice 9 ....................................................................................................................................................51 Exercice 10 ..................................................................................................................................................55 Exercice 11 ..................................................................................................................................................62 Exercice 12 ..................................................................................................................................................68 Exercice 13 ..................................................................................................................................................71 Exercice 14 ..................................................................................................................................................75 Exercice 15 ..................................................................................................................................................78 Exercice 16 ..................................................................................................................................................81 Exercice 17 ..................................................................................................................................................84 Exercice 18 ..................................................................................................................................................88 Exercice 19 ..................................................................................................................................................90 Exercice 20 ..................................................................................................................................................92 Exercice 21 ..................................................................................................................................................97 Exercice 22 ................................................................................................................................................100 Exercice 23 ................................................................................................................................................102 Exercice 24 ................................................................................................................................................103 Exercice 25 ................................................................................................................................................104 Exercice 26 ................................................................................................................................................111 Exercice 27 ................................................................................................................................................113

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

I.Prsentation de SAS A.Introduction


SAS est le seul diteur pouvoir collecter toutes les informations provenant des systmes oprationnels, quels que soient leur source et leur format, et les intgrer dans un processus dcisionnel grce sa plateforme qui couvre toutes les tapes de traitement de linformation : data warehousing, requtes et rapport, analyse, restitution et partage de la connaissance. La documentation en ligne est accessible ladresse suivante: http://v9doc.sas.com/sasdoc/ Les modules abords dans ce cours sont : SAS/BASE (statistiques descriptives simples + gestion des donnes), SAS/INSIGHT (module clique-bouton dexploration des donnes). SAS peut sutiliser en mode cran ou en diffr. Mode cran : taper la commande sas & Pg_sas.sas est le nom du programme SAS.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

B.Les fentres SAS


Lancez le programme SAS, vous allez voir apparatre le DMS ( Display Manager System) de SAS qui contient cinq fentres essentielles2:

Rsultats de compilation

Explorer : permet de crer des bibliothques pour grer les fichiers de donnes. Enhanced Editor : Pour entrer votre Code SAS

Pour grer toutes les sorties des programmes

Contient tous les rsultats

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'

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

La fentre Enhanced EDITOR


Elle contient, comme son nom l'indique, les instructions SAS excuter. Grce aux menus attachs CETTE fentre, vous pouvez saisir un programme, le sauvegarder, le rappeler, le modifier...

La fentre LOG (Touche F6)


Aprs excution d'un programme, cette fentre contient chaque instruction excute et ventuellement les erreurs rencontres. Il est indispensable de consulter cette fentre avant de lire les rsultats contenus dans la fentre OUTPUT.

La fentre OUTPUT (Touche F7)


Cette fentre contient tous les rsultats des instructions excutes par SAS: tests, tableaux de valeurs ... Elle ne doit tre consulte qu'aprs la LOG. Il vous est possible de sauvegarder tout ou partie du contenu de cette fentre et de rcuprer le contenu sous WORD.

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 :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

Procdure permettant ldition des donnes de la table SAS prcdemment cre.

2.Sauvegarde des instructions du programme3


Toujours dans la fentre " EDITOR" faites FILE/SAVE AS et enregistrez ce programme dans votre rpertoire sous le nom PREMIER.SAS par exemple.4

3.Excution du programme (F8)


Nous allons excuter le programme prcdent. Assurez-vous que la fentre LOG est visible. Dans la fentre "EDITOR" allez dans LOCALS/SUBMIT, ou cliquez sur le bouton ou encore tapez sur F8. Une fois l'excution acheve, allons dans la fentre LOG (F6) pour voir les commentaires d'excution. Il est fondamental d'y aller avant d'interprter les rsultats car elle contient les ventuels messages derreurs. Remarque : Pour nexcuter quune partie du programme, slectionnez pralablement la partie souhaite avant de taper F8 ou de cliquer sur le bouton .

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

11

4.Analyse du droulement du programme


Vrifier que le programme sest bien excut en basculant sous la fentre LOG. SAS a prvu des repres visuels : le bleu est associ la bonne excution, le vert un signalement et le rouge une erreur.

5.Visualisation des rsultats et personnalisation de la fentre OUTPUT (complment)


Si tout s'est bien pass, la fentre OUTPUT (F8) apparat avec les rsultats.

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 :

Options nodate nonumber ;


Vous pouvez aussi changer la taille du contenu de la fentre OUTPUT en paramtrant la taille des lignes et des pages.

Options linesize=x pagesize=y; x pouvant prendre les valeurs 64 256.


IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 12

y pouvant prendre les valeurs 15 32 767.


Remarque : Vous pouvez sauvegarder les rsultats contenus dans la fentre OUTPUT soit en utilisant le menu FILE / SAVE AS qui cr un fichier .LST soit en slectionnant les donnes et en les copiant/collant dans Word par exemple.

II.Fichiers de donnes SAS


SAS ne peut effectuer de calculs que sur des fichiers de donnes type - SAS. Vous devez donc, avant toutes choses saisir vos donnes dans un programme SAS ou, ce qui est le plus courant, convertir votre fichier EXCEL, DBASE, Lotus 1-2-3 , ASCII, tables ORACLE, au format SAS (.sas7bdat). Dans la suite du cours, nous apprendrons raliser des importations de donnes. Jusqu la version 9 de SAS, les tables SAS taient limites 32 767 variables dsormais il ny a plus cette limite. Le nombre dobservations est limit par le systme dexploitation.

A.Nom des fichiers SAS


SAS utilise son propre systme pour nommer les fichiers de donnes. Tout fichier SAS a un nom du type LIBREF.FILE o LIBREF est le nom de la bibliothque (8 caractres maximum) et FILE le nom du fichier (32 caractres maximum). La bibliothque est lendroit o se trouve le fichier de donnes SAS. Elle se substitue au chemin du DOS.

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

2.Comment crer VOTRE bibliothque ?


La bibliothque est lendroit o se trouve le fichier de donnes SAS. Il vous faut la crer chaque session de SAS.

a)A partir de la fentre Explorer :


Dans la fentre explorer appeler le menu contextuel (Clic droit) puis slectionner New. La bote de dialogue suivante apparat.

Nom de votre bibliothque personnelle

Slectionnez votre rpertoire personnel

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

14

b) partir de la barre doutils :


Le bouton fait apparatre la mme bote de dialogue que prcdemment.

c)Code SAS ( saisir sou la fentre EDITOR) :


Libname lib1 C:\Mes Documents\tp;

3.Dtail sur votre bibliothque (LIBRARY)


Si tout a bien fonctionn, vous devriez avoir dans la fentre Explorer :

Pour avoir des dtails sur ces bibliothques, allez dans View/ Details :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

15

C.Visualisation des fichiers SAS


Copiez le fichier DONNEES.sas7bdat sous votre rpertoire personnel. Basculez dans SAS et cliquez sur les bibliothques (Libraries) de la fentre EXPLORER, descendez sous votre bibliothque personnelle.

Le fichier SAS Donnees est bien situ sous votre bibliothque.

Remarque Importante : Pour revenir en arrire (Fermer la fentre donnant le contenu dune bibliothque et afficher la

liste des bibliothques cliquez sur

de la barre doutils.

1.Visualiser les donnes partir de la fentre EXPLORER


A partir de la fentre EXPLORER, cliquez sur votre table SAS, le menu contextuel (clic droit) fait apparatre le menu OPEN permettant de visualiser le contenu de la table.

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, ).

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

16

2.Visualiser la structure de la table via la fentre Explorer


Slectionner la fentre Explorer puis cliquez sur la bibliothque puis choisissez Views Columns (Afficher les colonnes) dans le menu contextuel (clic droit).

Column name Length

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.

D.Notions de FORMAT et INFORMAT


SAS dissocie les formats en lecture (INFORMAT), des formats daffichage (FORMAT). SAS dispose denviron 70 formats daffichage pour les variables. (nombre, date, heure, chane de caractre..).Si vous ne trouvez pas votre bonheur, vous pouvez toujours dfinir vos propres formats (format daffichage), informats , masques daffichage.

Liste de quelques FORMAT (format daffichage) et INFORMAT (format en lecture).

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

17

Format (syntaxe) $w .

Valeur non formate Mot_long

Format (pour notre exemple) $3.

Valeur formate Moti

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 !)

w.d BESTw. COMMAw.d COMMAXw.d DATEw.

125.236

6.2 best3.

125.24

23451.23 23451.23 10847

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

11316 11316 11316

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

18

III.Les programmes SAS


Un programme SAS se compose de deux types d'instructions: les blocs DATA (pour donnes) et les blocs PROC (pour procdure). Un bloc DATA est un regroupement d'instructions SAS permettant de crer un ou plusieurs fichiers SAS partir de donnes se trouvant dans des fichiers SAS crs auparavant ou dans des fichiers externes SAS (texte, excel, access, oracle). C'est l'intrieur d'un bloc DATA que les transformations apporter aux donnes sont effectues. Un bloc PROC permet l'analyse des donnes l'aide d'une procdure. Il est possible de documenter un programme en y ajoutant des commentaires. Pour ce faire, les deux formes suivantes peuvent tre utilises: /* COMMENTAIRE */ ou * COMMENTAIRE; La premire forme permet galement d'liminer temporairement de l'excution un bloc d'instructions en insrant au dbut du bloc les symboles /* et la fin, */. Les programmes sas ont une extension .sas (ex : programme.sas).

IV.Les tapes DATA A.Lecture des donnes


Ltape DATA est ltape quasi incontournable en langage SAS pour crer ou modifier un fichier de donnes. Nous allons distinguer 3 types dtape DATA pour lire les donnes :

1.Donnes incluses dans le programme. (CARDS)

a)Syntaxe trs simplifie


DATA nom fichier SAS ; INPUT var1 type1 var2 type2 .... var n type n ; instructions complmentaires ; Noms des variables suivis CARDS ; de leur type, de leur liste des donnes informat. RUN ; Le type contient les informations sur le type de la variable ($ si elle est de type texte, rien sinon), sur son format, sa longueur, sa position etc.
Nom(s) du (des) fichier(s) de donnes SAS crer.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

20

b)Lecture et restitution de dates (Informat et Format)


De faon gnrale, lorsque SAS lit des donnes spciales il faut lui prciser un format dentre (nomm informat) derrire le nom de la variable dans linstruction INPUT. Vous pouvez ensuite dclarer un format de sortie (format) qui est en gnral li linformat. Exemple

Exercice 1 : Saisir le programme prcdent en omettant la dclaration du FORMAT puis en la rajoutant. Quelle diffrence observe ton au niveau des rsultats ?

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

21

2.Utilisation de fichiers de donnes SAS existants : Instruction SET

a)Syntaxe trs simplifie


DATA nom(s) fichier(s) SAS (options); SET fichierSAS1(options1)fichierSASn(optionsn)[ options point=nomvariable nobs=nomvariable end=nomvariable ]; instructions complmentaires (IF, KEEP, DROP ; RUN ; Linstruction SET ci-dessus permet de spcifier le (ou les) fichier de donnes SAS, ventuellement assortis doptions, partir duquel on va en construire un autre.

b)Copie d'un fichier SAS existant


(1)Copie totale en utilisant ltape DATA
Exemple

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

22

(2)Copie partielle
en ne conservant que certaines variables (KEEP)

On ne conserve que les variables NOM, MONTANT et NOMBRE

en ne supprimant que certaines variables (DROP)

On supprime la variable AGE

en conservant certaines observations (IF THEN, WHEREErreur ! Signet non dfini., OBS)

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

23

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

24

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

25

en liminant certaines observation (delete)

(3)Copies multiples sur des fichiers diffrents OUTPUT


Il est possible de crer plusieurs fichiers la fois en les spcifiant derrire linstruction DATA. Linstruction OUTPUT nom_de_fichier permettra ensuite daffecter les observations dans les fichiers choisis.

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.

3.Utilisation de fichiers de donnes externes SAS : INFILE

a)Syntaxe trs simplifie


DATA nom(s) fichier(s) SAS (options); INFILE fichierSAS DLM=09x DSD MISSOVER FIRSTOBS=nde ligne; INPUT nom_col1 $ nom_col2 . ; RUN ; DLM : dfini le dlimiteur (exemple : 09x pour tabulation) MISSOVER : Par dfaut, SAS va la ligne suivante sil na pas saisi toutes les donnes sur la ligne courante que son INPUT demandait. (option FLOWOVER). Il est beaucoup plus habituel de considrer comme manquantes les donnes ne figurant pas sur la ligne en question (option Missover). FIRSTOBS : dfinit la premire ligne sur laquelle figurent les donnes. FORMAT : Cest le format daffichage de la variable (Format de sortie). INFORMAT : Cest le format de lecture (Format dentre).

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

26

Vous pouvez prciser la longueur des variables. Remarque : Il est plus simple dutiliser les menus FICHIER / Importer des donnes.

b)Donnes ou fichiers inhabituels


Dans le fichier prcdent, les observations taient sur une ligne. (Il y avait un individu par ligne). SAS permet galement dimporter des fichiers textes lorsquil y a une observations sur plusieurs lignes ou plusieurs observations sur une ligne.

(1)Cas o il y a plusieurs observations par ligne


Le fichier PS.TXT contient les donnes suivantes:

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:

(2)Cas o il y a une observation sur plusieurs lignes


Voici le contenu du COMMUNE.TXT: TOULOUSE 31555 ALBI 81004 AYGUEVIVES 31001 Pour limporter correctement, il faut donner un / dans linstruction INPUT pour prciser la fin de chaque ligne:

4.Importation dun fichier externe via les menus


Limportation dun fichier externe eut se faire en clique-bouton partir du menu FILE puis IMPORT DATA.
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 27

La premire fentre permet de slectionner le format du fichier importer :

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

29

B.Traitements des donnes


Pour crer une nouvelle variable, il suffit de choisir un nom pour cette variable, d'appliquer la formule approprie et de placer le nom de la variable la gauche du signe d'galit.

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

a)Les fonctions darrondie


SAS FUNCTIONS: Truncation Functions returns the smallest integer that is greater than or equal to the CEIL(argument) argument FLOOR(argument) returns the largest integer that is less than or equal to the argument FUZZ(argument) returns the nearest integer if the argument is within 1E-12 INT(argument) returns the integer value ROUND(argument,roundrounds to the nearest round-off unit off-unit) TRUNC(number, length) truncates a numeric value to a specified length

b)Les fonctions alatoires


Gnration de nombres alatoires RANBIN (seed,n,p) RANCAU (seed) RANEXP (seed) RANGAM (seed,a) RANNOR (seed) (ou NORMAL) RANPOI (seed,m) RANUNI (seed) (ou UNIFORM) Gnre une ralisation d'une VA suivant une ... loi binomiale B(n,p) loi de cauchy de paramtres 0,1. loi exponentielle de paramtre 1 loi Gamma de paramtres a,1. loi normale N(0,1) loi de Poisson de paramtre m loi uniforme U[0,1]

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

31

c)Les fonctions de conversion PUT et INPUT


Afin de convertir un champ numrique en caractre et inversement, vous devez utiliser respectivement les fonctions PUT et INPUT. Lexemple suivant illustre ceci :
/*num est de type numrique, car est de type caractre*/ data origine; input num car $; datalines; 12 34 ; run; data finale; set origine; /*passage de variable numrique en variable caractre*/ numTOcar=put(num,2.); /*passage de variable caractre en variable numrique*/ carTOnum=input(car,2.); run; proc contents data=finale; run;

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;

Ce qui donne dans la fentre LOG :

Cf. PUT Statement dans la documentation SAS Language Reference: Dictionary.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

d)La fonction RENAME


La fonction RENAME permet de renommer une variable. Lexemple suivant illustre cette fonction :
/*la variable OLD est renomme NEW*/ data sortie; set entree; old=new ; run;

e)Les fonctions sur les dates


SAS possde une multitude de fonction sur les dates, le tableau ci-dessous en prsente quelques unes : DATDIF(sdate,edate,basis) DATE() DATEPART(datetime) DATETIME() DAY(date) JULDATE(date) MDY(month,day,year) MINUTE(time | datetime) MONTH(date) QTR(date) TIME() TIMEPART(datetime) TODAY() WEEKDAY(date) YEAR(date) YRDIF(sdate,edate,basis) returns the number of days between two dates returns the current date as a SAS date value extracts the date from a SAS datetime value returns the current date and time of day returns the day of the month from a SAS date value returns the Julian date from a SAS date value returns a SAS date value from month, day, and year values returns the minute from a SAS time or datetime value returns the month from a SAS date value returns the quarter of the year from a SAS date value returns the current time of day extracts a time value from a SAS datetime value returns the current date as a SAS date value returns the day of the week from a SAS date value returns the year from a SAS date value returns the difference in years between two dates

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

data essai; set Fichier1(where=(X>100)) Fichier2 (where=(X<800)); run;

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 .

2.Fusion horizontale de deux fichiers

a)Fusion horizontale simple: L'instruction MERGE


Cette instruction permet de fusionner deux fichiers (en augmentant le nombre de variables cette fois). Elle suppose que les individus (lignes) sont les mmes et dans le mme ordre5 ! Nous ne prsentons ici qu'une version simple de cette instruction: FICHIER 1 OBS 1 2 3 X 23 54 123 FICHIER 2 OBS 1 2 3 Z 678 787 89 T Nom4 Nom5 Nom6 Y Nom1 Nom2 Nom3

FICHIER CONCATENE MERGE FICHIER1 FICHIER2 OBS 1 X 23 Y Nom1 Z 678 T Nom4

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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;

b)Fusion horizontale sophistique (MERGE avec option BY)


Syntaxe simplifie DATA nom de fichier ; MERGE fichier1 fichier2 fichier3 ; BY Variable1 Variable2 ; RUN ; Remarques : Les variables dans le BY doivent figurer dans TOUS les fichiers de donnes concatner. Les fichiers doivent tre tris par rapport aux variables figurant dans le BY ou tre indexs par rapport ces variables. Il est possible de spcifier un ordre dcroissant Cf. Aide en Ligne. Prenons les deux fichiers CONSO_C et CONSO_V contenant les consommations des individus de consultations et de visites : Fichier CONSO_C : Obs 1 2 3 NOM Nom1 Nom2 Nom3 CONSULT 20 60 100

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

36

Fichier CONSO_V : Obs 1 2 NOM Nom2 Nom4 VISITE 30 60

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

37

D.Autres notions importantes


1.Linstruction DO / END
L'nonc DO permet de rpter un certain nombre de fois un bloc d'instructions. Il a la forme gnrale suivante: DO variable=dbut TO fin [BY incrment]; instruction1; instruction2; ...; END; Exemple

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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;

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

39

V.Quelques procdures pour la gestion des donnes A.Proc PRINT


Cette procdure permet dditer les observations dune table. Syntaxe simplifie : PROC PRINT DATA=chemin et nom du fichier de donnes ; RUN ; Code SAS : proc print data=lib.matable; run;

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;

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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. */

RENAME variable1=nouveau nom variable2=nouveau nom ...;


/* Pour renommer certaines variables du fichier de donnes spcifi dans la commande Modify. */

FORMAT liste de variables format1 liste de variables format2 ...


/* pour modifier le format des variables slectionnes */

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

Le fichier transpos OBS 1 2 3 _NAME_ A B C COL1 1 2 3 COL2 4 5 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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

Le fichier transpos OBS 1 2 3 _NAME_ A B C X 1 2 3 Y 4 5 6

Utilisation de COPY En ajoutant COPY C ; au dessous du ID D ; on obtient :


Le fichier original... OBS A B C D 44

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

1 2

1 4

2 5

3 6

X Y

Le fichier transpos OBS 1 2 C 3 6 _NAME_ A B X 1 2 Y 4 5

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

45

SELECT entres ; EXCLUDE entres ; RUN ;

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

1.Les champs de valeurs


Ils peuvent tre de quatre types Syntaxe valeur Exemple 12 Signification Seule 12 sera concerne Seules 12,18,25 et 36 seront concernes Tous les nombres entre 12 et 48 (inclus) seront concerns. [12 ;48]

valeur,valeur,...,valeur 14,18,25,36 valeur-valeur 12-48

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 ;

2.Les options principales tant


LIBRARY= nom de bibliothque On donne ici le nom de la bibliothque contenant un catalogue (SAS catalog) nomm FORMATS qui, comme son nom lindique, contient tous les formats crs avec la procdure FORMAT. Par dfaut, les formats sont stocks dans un catalogue nomm FORMATS dans la bibliothque WORK (temporaire). Ils seront donc perdus lorsque SAS sera dsactiv. Pour conserver vos formats, indiquez votre libname derrire library=. Pour les rcuprer dclarer votre bibliothque sous le nom LIBRARY : LIBNAME LIBRARY /$HOME/TP... ; CNTLOUT=nom de fichier SAS
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 46

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.

3.Visualisation des formats utilisateurs


Nous pouvons vrifier les formats en cours en allant dans LEXPLORER et en cliquant sur Work. Enfin, dans cette bibliothque, il suffit de double cliquer sur le catalogue nomm FORMATS qui contient tous les formats (temporaires) crs par Proc format. Vous slectionnez FSEXE et choisissez PROPERTIES dans le menu contextuel :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

47

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

48

4.Format permanent Library= ; puis Libname library nom de bibliothque ;


Tous les formats prcdents ont t cres dans la bibliothque WORK. Ils seront donc perdus ds que SAS sera stopp. Pour crer un format permanent, il faut utiliser loption LIBRARY= De plus, il vous est possible de spcifier un format lors dune tape DATA. Dans ce cas, le format restera TOUJOURS attach la variable. Ceci est utile lorsque vous donnez un caractre dfinitif un format, mais cela impose votre format dtre toujours accessible.8

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.*/

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

Pour ter la variable i du fichier de donnes

NOTE Jean-pie Jean-pie Jean-pie Herve 12 14 10 6


50

1 2 3 4
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

5 6 7 8 9 10 11 12
Cf .

Herve Herve Anestis Anestis Anestis Bernard Bernard Bernard

8 8 16 16 16 16 6 16

Procedures guide pour des complments sur cette procdure FORMAT.

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ 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 :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

3.Les commandes SQL

a)La commande CREATE


Elle permet de crer des tables, des vues, ou des index, partir dautres tables ou dautres vues.

(1)Cration dune table :


Syntaxe CREATE TABLE nom-table AS SELECT ... FROM ... ; => Cration dune table partir
dune interrogation SQL

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

(2)Cration dune vue :


Syntaxe CREATE VIEW nom_vue as Select ... From <order by nom_col1, nomcol2 ...>; Remarque : Une vue tant une interrogation stocke et ne contenant pas de donnes, on ne peut utiliser les instructions suivantes quand on se rfre une vue : insert, delete, alter, update. Exemple : Cration dune vue partir dune table.

(3)Cration dun index :


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
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 58

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

b)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 nom_col1 <, type_col1 >> < MODIFY nom_col2 <, type_col2 >> < DROP nom_col3 <, nom-col3 >>;

Exemple : Modification dune table existante

c)La commande DELETE


Elle permet de supprimer des lignes dans une table. Syntaxe DELETE FROM nom_table < WHERE conditions >; Exemple : Suppression des lignes dont le nom nest pas renseign.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

59

d)La commande DESCRIBE


Elle donne la dfinition dune vue, et des vues parentes si loption FEEDBACK est spcifie. Syntaxe DESCRIBE TABLE/VIEW nom_vue ; Exemple : Description de la table Donnees5.

e)La commande DROP


Elle permet de dtruire indiffremment une table ou une vue. Syntaxe DROP TABLE/VIEW nom_table1 < , nom_table2 >; Exemple : Suppression de la table TEMPO.

f)La commande INSERT


Elle permet dajouter des lignes une table. Syntaxes
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 60

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.

g)La commande SELECT


Elle permet de slectionner des colonnes dans une table, et dafficher les rsultats dans la fentre OUTPUT. Syntaxe SELECT liste dobjets ou * FROM liste de tables/vues < WHERE conditions >; Exemple : Listage des donnes dune table. Dans la fentre PROGRAM EDITOR

Dans la fentre OUTPUT

Dans la fentre LOG

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

h)La commande UPDATE


Elle permet de modifier les valeurs de certaines observations pour des colonnes dune table existante. Syntaxe UPDATE nom_table SET nom_col=<Valeur/Expression/Sous-requte> < WHERE conditions >; Exemple : Mise jour des donnes dune colonne. Dans la fentre PROGRAM EDITOR

Dans la fentre LOG

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

62

Dans la fentre OUTPUT

i)La commande VALIDATE


Elle permet dvaluer la syntaxe dune interrogation sans lexcuter, et retourne un message dans la fentre LOG. Syntaxe VALIDATE requte ; 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). Exemple :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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 :

(2)Les oprateurs ensemblistes


Ces oprateurs permettent de combiner les rsultats de plusieurs requtes de type SELECT. L'utilisation de ces oprateurs s'accompagne de plusieurs contraintes : les colonnes doivent tre de mme type et places dans le mme ordre dans chacun des SELECT : o o o o Chaque SELECT doit rcuprer le mme nombre de colonnes, Les titres des colonnes seront ceux dfinis dans le premier SELECT, Utilisez des parenthses pour dterminer les priorits, Par numro d'ordre, les colonnes doivent tre de mme type mais leur taille peut diffrer. Elle sera celle de la plus longue des colonnes de tous les SELECT impliqus,

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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 :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

65

Ce qui donne dans lOUTPUT :

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)

Exemple : Extraction dune chane de caractre partir du champ NOM.

Ce qui donne dans lOUTPUT:

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

66

(2)UPPER/LOWER
La fonction LOWER change en minuscule un champ texte. La fonction UPPER fait linverse.

Exemple : Changement de la casse du champ NOM. Dclaration dun alias

(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./

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

67

Ce qui donne dans lOUTPUT :

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) :

Compter le nombre de consommants (couple NOM-PRENOM).

Pour plus dinformations consulter le manuel :

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

Ces deux procdures se terminent par linstruction QUIT en plus du RUN.

1.La procdure GCHART


Cette procdure trace en basse rsolution (caractres) des diagrammes en barres (hbar), en colonnes (vbar), en secteurs (pie) et arolaires (star). Elle peut traiter des variables quantitatives ou qualitatives.

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.

VBAR3D variable(s) / SUBGROUP = variable2 ;

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

70

Exercice 13 Crer les graphiques suivants :

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 ;

2.La procdure GPLOT


Cette procdure sert raliser des nuages de points entre deux variables, lune sur laxe verticale et lautre sur laxe horizontal. En reliant les points, il est possible de dessiner des courbes avec cette mme procdure.

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

Loption VREF permet dobtenir une droite de rfrence.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

73

VII.Quelques procdures pour lanalyse statistique A.Les analyses univaries


Parmi les diffrentes analyses possibles, sont prsentes celles qui synthtisent la variable mesure (moyenne, mdiane, ou tout nombre dcrivant la situation de la population observe vis vis de la variable), puis celles qui mesurent la dispersion de la population. Les variables, ici, sont ncessairement quantitatives. En effet, une variable qualitative studie comme une famille de variables avec autant de variables que de modalits.

1.Les variables quantitatives : la PROC UNIVARIATE


Les indicateurs synthtiques "standards" dcrits ici sont la moyenne, la mdiane, le mode, la somme, lcart type, la statistique T de Student sous l'hypothse de nullit de la moyenne, un test de normalit ...

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)

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

Symbole SAS utilis dans l'output

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

b)Test de comparaison dune moyenne une valeur fixe (0)


T: C'est la statistique du test de Student

H0 : = 0 contre H 1: 0 (bilatral) avec pour SAS ici 0 = 0


H0:moyenne=0 contre H1: moyenne 0. Elle suppose la population normale et l'chantillon alatoire.
x 0 Mthode de calcul: Pour le test, SAS calcule la statistiqueT= s / n avec

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.

c)Test de Wilcoxon (comparaison dune mdiane une valeur fixe)


SIGNRANK (Sign rank test, Wilcoxon) c'est la statistique de test calcule par ri + n( n + 1) / 4 o ri + est le rang de xi obtenu aprs avoir enlev les xi=0. Il permet de tester la nullit de la mdiane ou de la moyenne (H0: mediane=0) Nous avons le P correspondant (PROBS).(nous rejetons H0 quand p<0.05). Ce test suppose la distribution symtrique. Si tel n'est pas le cas, il faut utiliser le test suivant:

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

3.Les graphiques avec la Proc Univariate

a)La commande HISTOGRAM


Lexemple suivant prsente lutilisation de la commande HISTOGRAM dans la procdure UNIVARIATE.
Unit du graphique

goptions htitle=4 htext=3 gunit=pct ftext=swiss ftitle=swiss;


Paramtrages des hauteurs des titres et du texte Polices utilises

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

title 'Rpartition des consommants par ge'; run;

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

78

SS non corrige Coeff Variation

13296994 60.1972017

SS corrige Moy. erreur std

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

79

b)Les histogrammes comparatifs


Pour illustrer les histogrammes comparatifs, nous nous reporterons lexemple suivant :
goptions htitle=4 htext=3 gunit=pct ftext=swiss ftitle=swiss; proc format; value f_sexe ; run; data tempo; set lib1.Donnees5; keep age sexe; label Age='Age consommant'; run; proc sort data=tempo; by sexe age; run; proc univariate data=tempo noprint; var age; class sexe (order=freq); histogram /nrows=1 ncols=2 intertile=1 cfill=cyan vscale=count /* vaxis=1 2 */ vaxislabel='Sexe'
Dfinit le nombre de lignes, de colonnes, lespace entre les colonnes, la couleur, la statistique calcule (COUNT, PERCENT, PROPORTION), les valeurs positionnes sur lge des ordonnes et le titre de laxe.

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.

format sexe f_sexe.; title 'Age moyen par sexe'; run;

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

B.Les analyses n-varies


1.Analyse portant sur des variables qualitatives
Les analyses sur ce type de variables se rsument souvent au point de vue descriptif la construction de tableaux croiss et la mesure de l'association de ces variables. Ces analyses peuvent tre ralises par la procdure FREQ, dont la syntaxe gnrale est la suivante:

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

OUTPUT OUT= table de sortie

<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

A*B / option1 option2 ...;

Quelques options de TABLE sont indiques dans le tableau suivant :

NOM DE L'OPTION CELLCHI2 DEVIATION

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

MISSING CHISQ NOCOL NOROW NOPERCENT NOFREQ NOPRINT OUT

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 :

PROC FREQ DATA=test; TABLES sexe*conv / CELLCHI2 CHISQ DEVIATION; RUN;


La sortie dans loutput est prsente page suivante :
TABLE OF SEXE BY CONV SEXE CONV

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

Dterminer sil existe une relation entre la variable class_age et ville.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

84

2.Analyse portant sur des variables quantitatives et qualitatives


Pour faire ce type d'analyse, il est ncessaire qu'au moins une des variables tudies soit quantitative. Dans ce cas, il est souvent intressant de disposer danalyses pour des sous-groupes dobservations dtermins par le filtre dune ou plusieurs variables qualitatives. Ces analyses peuvent tre ralises par la proc SUMMARY ou la proc MEANS. La diffrence essentielle entre elles est labsence dimpression par dfaut dans la fentre output pour la proc SUMMARY et, a contrario, labsence de table de sortie SAS par dfaut avec la proc MEANS. Tout ce qui suit a trait cette dernire. La syntaxe gnrale de cette procdure est la suivante :
PROC MEANS DATA=table SAS <OPTIONS>

<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/

OUTPUT OUT=table de sortie <MOTS-CL>=nom des variables en sortie; /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 :

Mot-cl N NMISS MIN MAX MEAN RANGE

Statistique Nombre dobservations Nombre de valeurs manquantes Valeur minimale Valeur maximale Moyenne Diffrence entre la valeur maximale et minimale
85

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

SUM SUMWGT CSS VAR STD STDERR CV SKEWNESS KURTOSIS T PRT

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;

La sortie dans la fentre output :


SEXE N Obs Variance Mean

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

86

--------------------------------------1 420 52.7213547 43.1809524 2 55 26.3723906 43.6727273 ---------------------------------------

La table SAS cre (sortie) :


The SAS System OBS 1 2 3 SEXE _TYPE_ 0 1 1 _FREQ_ 475 420 55 AGEMOY 43.2379 43.1810 43.6727 VARAGE 49.6332 52.7214 26.3724

1 3

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

87

Exercice 18 Refaire lexercice 1 partir de la PROC MEANS. Quelles sont les diffrences ?

3.Les variables quantitatives, la corrlation


Il est impossible dans ce cas de trier certaines variables en fonction des valeurs prises par dautres moins de les discrtiser. En ce cas, les analyses n-varies des deux parties prcdentes peuvent sappliquer. Il reste donc mesurer les ventuelles associations entre variables. Ceci peut tre ralis par trois types dindicateurs : - la corrlation de Pearson (coefficient de corrlation linaire), ainsi que la covariance - les corrlations non-paramtriques, la corrlation de Spearman (corrlation des rangs), le tau-b de Kendall (concordance de 2 variables, Xi>Xj implique Yi>Yj). - les coefficients de corrlation partielle, cest--dire corrige des effets de certaines variables. Ces diffrentes mesures peuvent se raliser par la proc CORR dont la syntaxe gnrale est la suivante :

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 :

PROC CORR DATA = SORTIE COV; VAR X Y; PARTIAL Z; WITH A;


Cette srie dinstructions permet d'obtenir dans loutput la covariance de x et a, ainsi que la covariance de y et a, les variables x et y tant corriges des effets de z.

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 :

PROC CORR DATA= entre

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;

La sortie dans loutput :


Correlation Analysis 1 'PARTIAL' Variables: 2 'VAR' Variables: PHARMTOT NBCLIENT PHARM100 Simple Statistics Variable N Mean 493098 825.3916 4258 Std Dev Sum 272929 363.38 5142 234221599 392061 2022327 Minimum 20.0000 38.0000 0 Maximum 1560053 2257 39740 Partial Variance . 55682 21601126 Partial Std Dev . 235.9710 4648

PHARMTOT 475 NBCLIENTS 475 PHARM100 475

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

La table SAS cre :


The SAS System OBS 1 2 3 4 5 _TYPE_ MEAN STD N CORR CORR _NAME_ NBCLIENT 0.000 235.971 475.000 1.000 -0.190 PHARM100 0.00 4647.70 475.00 -0.19 1.00

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

90

VIII.Analyse interactive de donnes : SAS/INSIGHT


Ce module inclus dans loutil de DATA MINING de SAS (Enterprise MINER) permet deffectuer de puissantes analyses interactives de donnes, essentiellement sur des donnes quantitatives.10 Le grand intrt de ce module rside dans le fait de pouvoir faire rapidement de nombreux graphiques interactifs, de reprer, dexclure ou dinclure de nouveaux individus. Tous les calculs sont alors modifis en consquence. De plus ; on peut effectuer des rgressions, des analyses en composantes principales...

A.Ouverture dune table


Pour le mettre en uvre allez dans SOLUTIONS/ANALYSIS/INTERACTIVE DATA ANALYSIS ; une fentre apparat dans laquelle vous allez spcifier le nom du fichier que vous souhaitez analyser. Vous devez avoir dclar pralablement une bibliothque.

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,

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

92

1.Aperu rapide de quelques menus

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

B.Analyse dune Variable qualitative


Nous allons voir comment tracer un diagramme et obtenir un tri plat . Choisissez la premire option du menu prcdent, nous allons analyser la variable C_AGE. Pour cela cliquez sur le nom de cette variable, puis sur Y et validez.

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...

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

Nous obtenons un graphique du mme type que le prcdent.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

97

Ceci fonctionne sur toutes les fentres cres par INSIGHT sauf celles qui sont geles (Menu Freeze de Windows)

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

98

C.Variable quantitative ; Analyse univarie


1.Boxplots, histogrammes, moments
Analysons la variable AGE. Pour cela allons dans Analyse/Distribution Y et choisissons la variable AGE : Rappel de la dfinition du Box Plot :
100% de la pop 50 % de la pop.

25%

25%

Q1-1.5E

Q1

Q2=M

Q3

Q3+1.5E Valeurs extrmes Plus grande valeur observe infrieure Q3+1.5E

Plus petite valeur observe suprieure Q1-1.5 E M=Mdiane Qi=ime quartile E=Q3-Q1

Sortie SAS :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ 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 :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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)

En choisissant Empirical CDF, vous avez la fonction de rpartition suivante :

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 distributions

Choix des paramtres (si vous choisissez vos Lestimation se fait partir de lchantillon ou partir de vos spcifications. spcifications)

Cliquons simplement sur OK

Vous pouvez dplacer ce curseur pour modifier la moyenne...

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, )

D.Etude de plusieurs variables quantitatives

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

102

1.Nuage de points (scatter plot)


Cette commande permet de tracer des nuages de points. Il suffit dentrer la variable X et la variable Y. Exercice 24 Effectuer le nuage AGE MOY_MNT

2.Stratification par une variable qualitative, ou quantitative agrge (TOOL)


Nous souhaitons savoir o se placent les individus du groupe A sur ce graphique. Nous allons activer la bote EDIT/WINDOWS/TOOL
Pour zoomer sur le graphique.

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.

Cliquez sur la couleur rouge, une bote apparat :

Vous indiquez ici la condition remplir pour tre en rouge.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

3. Rgression (Fit XY)


Cette commande permet de faire des rgressions linaires de tous ordres, des ajustements polynomiaux, exponentiels... Nous allons tudier la liaison entre deux variables quantitatives : lge et le montant moyen. Allez dans Analyse/Fit XY et compltez la bote comme suit :

Vous obtenez les rsultats suivants :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

104

Nuage de points avec la droite des moindres carrs de Y en X.

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.

4.Lancement dINSIGHT avec le langage SAS


Il est possible de lancer SAS INSIGHT directement partir du langage SAS avec la procdure PROC INSIGHT. proc insight data=lib1.donnees5; run;

IX.LODS : Gestion des sorties SAS


Les procdures PRINT, MEANS envoient leur rsultat dans la fentre OUTPUT.
12 Si vous passez au degr 2, vous aurez une parabole au lieu dune droite dajustement etc.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

A.Quelques notions basiques sur lHTML


LHTML est le langage des documents WEB. Il contient du texte, mais aussi des balises permettant de mettre en forme le texte, de pointer vers un autre document etc. Vous pouvez construire un document HTML directement ou en utilisant un logiciel spcialis comme FRONTPAGE. WORD, EXCEL, SAS etc. permettent aussi de crer des documents HTML. Quelques balises : Balise <H1> </H1> Signification Caractres Grande taille. On peut remplacer le 1 par un nombre de 1 6 On peut aussi mettre des attributs ALIGN=CENTER pour centrer le texte Retour la ligne Trac dune ligne horizontale Pour changer la police de caractre Pour changer la couleur de la police Mettre en Gras Mettre en Italique Insere une image GIF et la centre si ALIGN=CENTER etc.

<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 !

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

106

B.Utilisation de lODS de SAS. Objets de sortie


Certaines procdures envoient un dautres plusieurs objets (ou section) dans la fentre OUTPUT. Exemples : La procdure PRINT ci-dessous ne va renvoyer quun seul objet : Proc print data=lib1.donnees5 (obs=10) obs=Numro ; Var age montant01 montant02 ; Run ; Va donner :

(Un seul objet : les 10 observations) observations)

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

107

C.Trois sorties possibles


Chaque objet de sortie se compose de donnes et de mise en forme appele TEMPLATE. La mise en forme pourra tre personnalise. Linstruction ODS permettra de diriger chaque objet vers une sortie (ou plusieurs la fois !) de notre choix :

Objet de sortie (= Donnes+ Mise en forme)

3 directions possibles :

3 instructions ODS ODS OUTPUT : Fichier de donnes SAS

ODS LISTING : Fentre OUTPUT (par dfaut)

ODS HTML : Document WEB

Ne confondez pas la fentre OUTPUT et lODS OUTPUT qui nont rien voir

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

108

1.Sortie HTML basique


Linstruction ODS HTML Body= Nom de fichier HTML va rediriger la sortie en fichier HTML. Linstruction ODS LISTING CLOSE sert supprimer la sortie vers lOUTPUT. Linstruction ODS LISTING sert ractiver la sortie vers lOUTPUT.

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 :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

109

2.Slection dobjets en sortie : ODS TRACE, ODS SELECT, ODS EXCLUDE


Comme nous lavons vu prcdemment, la procdure UNIVARIATE inscrit 5 objets dans la sortie. Pour slectionner ceux que nous voulons afficher, il faut reprer le nom des objets : cest le but de linstruction ODS TRACE ODS TRACE ON <options> ; ODS TRACE OFF ; Les options tant : LABEL pour indiquer les chemins de lobjet LISTING pour mettre les noms des objets avant les objets dans les sorties. Active le mode TRACE Supprime le mode TRACE (cest loption par dfaut)

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

112

Dans la fentre OUTPUT vous navez que ces deux objets.

Rsultats avec la slection dobjets

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)).

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

113

3.Sorties HTML sophistiques

a)Structure dune Feuille HTML


Pour SAS, votre feuille HTML contient 3 lments :

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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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.

b)Changement de Style dune feuille HTML


Pour personnaliser les sorties HTML prcdente, il suffit dajouter loption STYLE= dans les instructions prcdentes : ods listing close; ods html path='c:\tp' body='corps.html' contents='contenu.html' page='page.html' frame='feuille.html' style=brown; proc univariate data=lib1.donnees5 plots; var age; run; proc print data=lib1.donnees5 (obs=10) ; run; ods html close; ods listing; le fond de lcran de sortie sort marron !

Divers modles sont fournis par SAS : DEFAULT


IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 115

BEIGE BRICK BROWN D3D MINIMAL STATDOC Pour crer vos propres styles, il faut avoir recours une nouvelle procdure PROC TEMPLATE.

c)Personnalisation des titres et notes de bas de page


Dans linstruction Title, ou Footnote, nous pouvez indiquer des lments HTML permettant de modifier les polices des titres, notes de bas de page : Syntaxe :

Title <FONT nom de lattribut= valeur > texte du titre </FONT> ;


Quelques attributs et leur valeur : FONT FACE= nom de la police Pour changer la police de caractres (Arial, Times etc.) FONT SIZE= taille Pour changer la taille de la police (1 7...) FONT STYLE= style de la police Pour changer le style de la police de carcatres (Italic, Roman) FONT WEIGHT= gras ou non Pour changer le style (Medium, Bold) FONT WIDTH=espacement de la police : Normal, Narrow ou Wide

De mme avec FOOTNOTE. Exemple :


ods html path='c:\tp' body='body1.html'; title '<font face="Arial" color="green" weight="bold" size=6 > Dix individus consommants </font>'; proc print data=lib1.donnees5 (obs=10); var nom prenom age sexe; run; title ; /*pour effacer le titre pour la suite */

d)Utilisation de STYLES dans la procdure TABULATE


Nous allons utiliser une procdure TABULATE pour illustrer ces notions :
IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \ 116

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;

donne dans la fentre OUTPUT :


Synthse des rsultats par Age et sexe Montant moyen moy_ - mnt SEXE age 1 moins de 18 ans 9999.9 19 65 ans9999.9 >=65 ans 9999.9 2 moins de 18 ans 9999.9 19 65 ans9999.9 >=65 ans 9999.9

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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 ;

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

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'};

e)Coloration conditionnelle des cellules : utilisation de FORMAT


Cet exemple assez spectaculaire peut vous montrer lutilisation des STYLES diffrentes selon la valeur de la cellule. Pour cela, nous allons utiliser un format cr spcialement. Nous allons voir ici comment colorier le fond de la cellule en ROUGE si le montant moyen est suprieur 10000 en JAUNE, sil est compris entre 1000 et 10000 en VERT, sinon. Cration dun nouveau Format Pour cela, nous allons dfinir un nouveau Format appel FOND.
proc format ; value fond low-1000 = 'Green' 1000-10000 = 'Yellow' 10000<-High ='Red'; run;

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 :

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

120

4.Sorties vers des fichiers de donnes

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 :

ODS OUTPUT nom de lobjet (options) = nom du fichier de donnes SAS ;


Exemple : La procdure Univariate renvoie (en gnral) 5 objets :Moments, BasicMeasures, TestsForLocation, Quantiles, Extremeobs. Pour sauvegarder ces donnes dans des fichiers, il suffit de lindiquer derrire ODS OUTPUT comme le montre le programme ci-dessous : ods listing close;
On ferme la sortie dans la fentre OUTPUT classique

/*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.

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathmatiques \ Sas \

122

Vous aimerez peut-être aussi