Vous êtes sur la page 1sur 124

LANGAGE SAS

Prsentation

LANGAGE SAS

Axelle Chauvet-Peyrard

Anne scolaire 2006-2007

Axelle Chauvet-Peyrard

Anne 2006-2007

LANGAGE SAS

Prsentation

Prsentation
SAS (Statistical Analysis System) est un logiciel de traitement de linformation conu en 1976 par une firme amricaine, The SAS Insitute. Il est organis en de multiples modules ; outre le module de base, on abordera ici principalement les modules SAS/STAT (procdures de traitement statistique) et SAS/GRAPH (procdures graphiques). Cet ouvrage rpond deux objectifs : Initier les dbutants au langage SAS, en en expliquant la logique et en prsentant la syntaxe des principales instructions et fonctions de base. Fournir un outil de travail concret, en rfrenant de nombreuses procdures. Pour chaque procdure, on dcrit ce quelle fait ainsi que ses principales options et instructions ; des exemples dutilisation sont ajouts, ainsi quune aide linterprtation des sorties gnres. Louvrage est particulirement adapt la version 8 de SAS. Certains des outils ou des procdures abords peuvent ne pas tre appliqus des versions antrieures du logiciel, ou bien des versions partielles (dans lesquelles il manquerait les modules associs ces outils). Cependant, chaque fois que cela est ncessaire, on proposera des alternatives aux outils prsents.

INTRODUCTION : Prsentation gnrale du logiciel SAS et de ses objets


Il sagit dun rappel de dfinition des objets SAS (bibliothques, tables, catalogues) et de linterface (les diffrentes fentres de travail, les raccourcis clavier).

PARTIE I : Ltape DATA


Ltape DATA sert principalement la manipulation des tables de donnes. Cest llment de base de la programmation en SAS. Cette partie permet dapprendre crire des tapes DATA. Aprs une explication dtaille de la logique de programmation, on rappelle les syntaxes des principales options et instructions de manipulation des donnes.

PARTIE II : Ltape PROC


Ltape PROC est une mise en uvre de procdures pr-programmes dans le logiciel. Cette partie commence par prsenter le schma gnral dune tape PROC, avant de dtailler une vingtaine de procdures parmi les plus utilises, et rparties en trois grands groupes : A : Procdures de manipulation des donnes B : Procdures de traitement statistique C : Procdures graphiques

PARTIE III : Aide lutilisation du logiciel


Cette partie est axe sur lutilisation pratique du logiciel. Elle se dcoupe en trois sous-parties : A : Conseils pratiques (aide en ligne, interprtation de la LOG, gestion des erreurs) B : Des assistants pour gagner du temps (prsentation doutils presse-bouton sous SAS v8, alternatives la programmation de certaines procdures) C : Sauvegarder et exporter des sorties SAS (les solutions pour enregistrer et rcuprer en dehors du logiciel les listings et graphiques gnrs par les procdures)

PARTIE IV : Introduction aux macro-programmes SAS


Les macro-programmes sont des blocs dinstructions et de procdures SAS dont la ralisation dpend dun ou plusieurs paramtres passs en argument du macro-programme. Cet outil, qui rappelle les procdures de la programmation classique, permet de gagner beaucoup de temps au quotidien. Lobjectif de cette partie est dapprendre utiliser des macros SAS et en crire soi-mme de simples.

Annexes
Ces annexes doivent permettre une recherche aise dans les pages du polycopi. Une double approche est propose : Un index alphabtique des concepts statistiques et mots-cls SAS abords dans louvrage. Un index thmatique sur le modle de : je veux faire a voici comment le faire .

Axelle Chauvet-Peyrard

Anne 2006-2007

LANGAGE SAS

Prsentation

Sommaire
Prsentation Sommaire INTRODUCTION 1 3 7

PRSENTATION GNRALE DU LOGICIEL SAS ET DE SES OBJETS


Tables, catalogues et bibliothques : Les diffrentes fentres : Extensions des fichiers obtenus avec SAS : Droulement de votre travail : Menus et raccourcis clavier : PARTIE I

7 7 8 8 8 9 10 10 11 13 14 14 14 14 15 16 16 16 17 18 19 19 19 20 21 22 22 23 23 23 23 23 24 24 24 24 25 25 25 25 26 26 26 28 29 29 29 30

LTAPE DATA
La logique ligne par ligne de ltape DATA Tableau rcapitulatif des oprateurs Recopie dune table Slection de variables et dobservations La recopie dune table : Instruction SET La slection de variables : Instructions KEEP et DROP Le filtrage dobservations : Instructions WHERE, DELETE et OUTPUT Remarques sur linstruction SET Les attributs des variables Les formats : Connatre les attributs dune variable : Modifier les attributs obligatoires dune variable : Modifier les attributs facultatifs dune variable : Concatnation et fusion de tables La concatnation de tables : Instruction SET Linterclassement de deux tables : Instructions SET et BY Distinction des donnes selon leur table dorigine La fusion de tables : Instruction MERGE La mise jour dune table partir des donnes dune autre table : Instruction UPDATE Remarques sur linstruction BY : Boucles DO et conditions IF Les conditions IF : Le bloc SELECT : Les boucles finies : (exemple pour 10 itrations) Les boucles tant que : Les fonctions SAS Fonctions de manipulation de chanes de caractres : Fonctions de manipulation de dates : Fonctions mathmatiques : Fonctions alatoires : Fonctions statistiques : Probabilits : Fonctions particulires : Calculs de variables Gnrer des distributions alatoires Calculer des cumuls Les vecteurs (array) de variables Gestion des erreurs et arrt conditionnel dune tape DATA Afficher des messages derreur : Instruction ERROR Stopper une tape DATA : Instruction STOP Etape DATA sans cration de table

Axelle Chauvet-Peyrard

Anne 2006-2007

LANGAGE SAS

Prsentation

PARTIE II

31 31 31 33 33 34 35 35 36 37 37 37 37 38 38 38 38 40 40 41 42 42 42 42 43 43 43 43 45 45 46 46 46 47 49 49 49 50 51 51 51 52 52 53 54 54 55 56 57 62 63 65 66 66 66 67 68 68 68 69 73 73
Anne 2006-2007

LTAPE PROC
Structure gnrale dune tape PROC Partie II A Procdures de manipulation des donnes Quelques notions sur lImportation / Exportation de donnes Connatre les proprits dune table avec la PROC CONTENTS Options : Lecture de sortie : Imprimer une table dans la fentre Output avec la PROC PRINT Les options : Trier une table avec la PROC SORT Les options : Transposer un tableau avec la PROC TRANSPOSE Les options : Les instructions : Exemple : Faire des jointures de tables avec la PROC SQL Fusions contrles et jointures : Un autre exemple dutilisation de la PROC SQL Crer un format avec la PROC FORMAT Exemple : Les options : Application du format : Attribuer des rangs aux observations avec la PROC RANK Les options : Les instructions : Exemple : Partie II B Procdures de traitement statistique Tableaux de frquence et de contingence avec la PROC FREQ Les options : Linstruction TABLES et ses options : Lecture de sorties : Statistiques descriptives quantitatives avec la PROC MEANS Les options : Les instructions : Lecture de sorties : Des tableaux de statistiques descriptives avec la PROC TABULATE Les instructions : Exemples : Les options : Liste des mots-cls statistiques : Lecture de sorties : Statistiques univaries et distributions avec la PROC UNIVARIATE Les options : Les instructions : La sortie standard et les mots-cls associs chaque statistique dite : Exemple : Les corrlations avec la PROC CORR Les instructions : Lecture de sortie : Test dgalit des moyennes avec la PROC TTEST Les options : Les instructions : Lecture dune sortie standard : Rgression linaire multiple avec la PROC REG Quelques options de la PROC REG : Quelques instructions : Quelques options de linstruction MODEL : Liste des grandeurs que lon peut rcuprer dans PLOT ou dans OUTPUT (et mots-cls associs) : Lecture de sorties :
Axelle Chauvet-Peyrard

LANGAGE SAS

Prsentation

Rgression sur variables catgorielles avec la PROC LOGISTIC Les instructions : Les options : Lecture de sorties standards : Modlisation plusieurs quations avec la PROC SYSLIN et la PROC MODEL Les instructions : Exemple : Les options : Quoi de neuf avec la PROC MODEL ? Partie II C Procdures graphiques Graphiques pour variables qualitatives avec la PROC GCHART Les instructions : Les options : Exemple : Graphiques pour variables quantitatives avec la PROC GPLOT Les options : Les instructions : Quelques options des instructions PLOT et BUBBLE : Exemples : Des botes moustaches avec la PROC BOXPLOT Les instructions Les options PARTIE III

81 81 82 83 85 85 86 86 86 87 87 88 88 88 89 91 91 91 92 92 95 95 95 96 96 97 97 98 99 100 100 101 101 101 101 101 101 102 103 103 104 104 104 104 104 107 107 107 107 107 107 108

AIDE LUTILISATION DU LOGICIEL


Partie III A Conseils pratiques Exemple dutilisation de laide de SAS Les erreurs les plus frquentes recenses dans la LOG Comment diminuer le contenu de la log SAS ? Kit de secours Partie III B Des assistants pour gagner du temps Loutil Graph n Go Premire tape : Choix de la source de donnes Deuxime tape : Choix du type de graphique Troisime tape : Paramtrage du graphique Quatrime tape: Gestion de mes graphiques SAS Query Les tapes de la PROC SQL avec Query PARTIE III C Sauvegarde et exportation des sorties SAS La sauvegarde sous forme dun objet SAS dans un catalogue. La sauvegarde en tant que fichier texte ou fichier image. Lexportation via lOutput Delivery System (ODS). Comment sauvegarder quoi ? Sauvegarder une sortie output : Sauvegarder un format : Sauvegarder un graphique (qui nest pas dans loutput) : Pour les graphiques raliss avec Graph n Go : Sauvegarder un rsultat insight : Sauvegarder un rsultat query :

Axelle Chauvet-Peyrard

Anne 2006-2007

LANGAGE SAS

Prsentation

PARTIE IV

109 109 110 111 111 111 111 111 112 112 112 112 112 113 113 113 113 114 114 114 115 115 115 115 115 116 117 121 121 121 122 123 123 124 124

INTRODUCTION AUX MACROS


Exemple introductif Macro-programmes et macro-variables Syntaxe gnrale dun macro-programme Appel dune macro-variable Les macro-variables contiennent du texte Dclaration et affectation dune macro-variable Les macro-variables systme Les macro-fonctions Macro-fonctions de manipulation de chane de caractres Macro-fonctions dvaluation numrique La macro-fonction %sysfunc() Les routines La routine SYMPUT La routine EXECUTE La routine SYSTEM Construire un macro-programme Les arguments dun macro-programme Les instructions conditionnelles et itratives Linstruction %PUT Stocker et rutiliser un macro-programme Vous crivez une petite macro usage unique ou presque Vous crivez une macro usage priv mais rcurrent Vous crivez une macro destine tre utilise par dautres

ANNEXES
Index Comment faire ? Des manipulations sur les donnes : Des statistiques univaries : Des statistiques bivaries : Des modlisations : Des tests : Des graphiques : Autre chose :

Axelle Chauvet-Peyrard

Anne 2006-2007

LANGAGE SAS

Introduction

INTRODUCTION

Prsentation gnrale du logiciel SAS et de ses objets


Tables, catalogues et bibliothques :
SAS travaille sur des donnes regroupes en tableaux quil appelle des tables (Data) : en colonne figurent les variables, en en ligne les observations ou individus.

Dfinition et allocation dune bibliothque (Library) :


Une bibliothque est un objet SAS qui consiste en un nom virtuel que lon associe un rpertoire physique. La premire chose faire pour pouvoir accder aux tables stockes dans un rpertoire (par exemple \\c:\sas\) est d allouer une bibliothque sur ce rpertoire. Deux mthodes : Par licne New Library (Nouvelle Bibliothque) Ou linstruction suivante : libname malib "c:\sas";

Cette instruction cre une bibliothque de nom malib qui pointe sur le rpertoire physique \\c:\sas\. La bibliothque permet daccder tous les objets SAS contenus dans ce rpertoire : tables de donnes, mais aussi catalogues !

Dfinition dun catalogue (Catalog) :


Un catalogue est un objet SAS qui peut contenir des formats ou des macros compils, des graphiques sous format image, des listings, etc. qui deviennent ainsi aisment transportables. Cet objet est trs utile pour communiquer certains rsultats ou outils sans avoir divulguer le code source du programme). Voir ce sujet la partie III C.

Options de linstruction LIBNAME :


Une bibliothque est associe une version de SAS. Sous SAS v8, vous crez des bibliothques v8, qui ne peuvent lire que des objets v8. Si vous disposez de tables cres en format v6, vous devez allouer une bibliothque en forant le moteur (champ engine ) V6. Avec linstruction LIBNAME, il suffit dcrire :

libname v6 malib "c:\sas";


Pour dsallouer une bibliothque, on peut utiliser loption clear :

libname malib clear;

Noms des tables de donnes et bibliothque par dfaut :


Le nom dune table doit tre prcd du nom de la bibliothque dans laquelle elle se trouve. Ainsi, malib.matable dsigne la table qui porte le nom matable dans la bibliothque malib. Si aucun nom de bibliothque nest prcis, il est fait implicitement appel la bibliothque par dfaut de SAS, qui sappelle WORK. Cette bibliothque est associe un dossier temporaire du disque dur, et rinitialise la fin de chaque session SAS (ce qui signifie que les donnes qui y sont stockes sont perdues lorsquon quitte lapplication).

Taille limite dune table


Il ny a pas de limite au nombre de lignes. Le nombre maximal de colonnes est de 32 767. A noter que cette limite nexiste plus dans la version 9.

Axelle Chauvet-Peyrard

Anne 2006-2007

LANGAGE SAS

Introduction

Les diffrentes fentres :


ENHANCED EDITOR (EDITEUR) : Fentre dans laquelle vous crivez votre programme. LOG (JOURNAL) : Cette fentre sert communiquer les messages derreur, avertissements, compte-rendus de la soumission de votre programme. OUTPUT (SORTIE) : Fentre qui contient les sorties issues des tapes PROC. EXPLORER (EXPLORATEUR) : Contient larborescence de vos librarys et de vos objets SAS (tables, catalogues). Vous pouvez visualiser les proprits dun objet en faisant un Clic droit Properties dessus. RESULTS (RESULTATS) : Liste des sorties OUTPUT gnres. Vous pouvez accder directement une sortie prsente dans la fentre OUTPUT en double cliquant sur un item de cette liste.

Extensions des fichiers obtenus avec SAS :


Programme SAS Table SAS v8 Catalogue v8 Sortie Output Sortie Log Table SAS v6 .sas .sas7bdat .sas7bcat .lst .log .sd2

Si la bibliothque malib (format v8) pointe sur le rpertoire \\c:\sas\, la table malib.matable correspondra au fichier physique \\c:\sas\matable.sas7bdat. De mme, le catalogue malib.moncatlg correspondra au fichier physique \\c:\sas\moncatlg.sas7bcat.

Droulement de votre travail :


Il existe deux types de programme SAS :

Les tapes DATA : pour crer et manipuler les donnes Les tapes PROC : essentiellement pour exploiter les donnes
Ecrire le programme dans lEDITOR

Soumettre le programme

Lire les messages dans la LOG

Corriger ventuellement le programme

Lire la sortie OUTPUT ou visualiser la table modifie

Axelle Chauvet-Peyrard

Anne 2006-2007

LANGAGE SAS

Introduction

Menus et raccourcis clavier :


Soumettre un programme Rappeler le dernier programme soumis Accder Accder Accder Accder Accder Accder la la la la la la fentre fentre fentre fentre fentre fentre EDITOR LOG OUTPUT EXPLORER RESULTS GRAPH Run Submit Run Recall Last Submit View View View View View View Enhanced Editor Log Output Contents only Results Graph F3 F4 F5 F6 F7

Pour passer dune fentre lautre, vous pouvez tout simplement cliquer sur longlet correspondant la fentre qui vous intresse, ou bien utiliser Ctrl+Tab. Vider le contenu dune fentre Edit - Clear all Ctrl+E

Vous pouvez aussi taper clear dans la barre de commande. Attention : cette commande vide la fentre active !

Axelle Chauvet-Peyrard

Anne 2006-2007

LANGAGE SAS

Etape DATA

PARTIE I

Ltape DATA
Une tape DATA est un programme de syntaxe :

DATA malib.matable ; [instructions] ; RUN ;


Un programme de ce type cre une table qui a pour nom matable et appartient la bibliothque malib. On rappelle que si aucune bibliothque nest spcifie, la table est place dans la bibliothque temporaire Work. Le fonctionnement dun tel programme seffectue par le biais du vecteur de travail. Ltape DATA travaille ligne par ligne. Explicitons le principe de ltape DATA laide de linstruction de recopie de tables : SET. Soit le programme suivant :

DATA a ; SET b ; RUN;


DATA a : Une table a est cre. SET b : La premire ligne de la table b est place dans le vecteur de travail. RUN : Marque la fin du programme et son excution. Cest ce moment (et pas avant) que le contenu du vecteur de travail est enregistr dans la table a, ligne 1. Puis, tant quil reste des observations dans la table b, lopration est rpte. On ninsiste jamais assez sur limportance des points virgule. Ils indiquent SAS la fin dune instruction. Admettons que dans lexemple ci-dessus on omette le premier ; Alors SAS comprend quil doit crer trois tables nommes a, set et b !

Axelle Chauvet-Peyrard

10

Anne 2006-2007

LANGAGE SAS

Etape DATA

La logique ligne par ligne de ltape DATA


Soit le programme suivant :

DATA maLib.a ; total=0; SET maLib.cours ; Coefficient=coefficient+1 ; Un=1 ; Total=total+coefficient; RUN ;


Une table a est cre dans la librairie maLib. Premire tape : dans le vecteur de travail une variable total apparat qui vaut 0

total 0
Puis est recopie la premire ligne de b.

table malib.cours coefficient v1 v2 1 4 6 2 3 5 3 5 4

vecteur de travail total coefficient v1 v2 0 1 4 6

table malib.a

Puis au champ coefficient est ajout 1. Ensuite on y ajoute une variable nomme un qui vaut 1.

table malib.cours coefficient v1 v2 1 4 6 2 3 5 3 5 4

vecteur de travail total coefficient v1 v2 un 0 2 4 6 1

table malib.a

Enfin, on affecte total sa valeur actuelle augmente de la valeur de coefficient.

table malib.cours coefficient v1 v2 1 4 6 2 3 5 3 5 4

vecteur de travail total coefficient v1 v2 un 2 2 4 6 1

table malib.a

On a pour le moment travaill uniquement sur le vecteur de travail, qui contient la seule ligne courante. RUN enregistre le vecteur de travail en 1e ligne de la table a et rinitialise le vecteur de travail. Axelle Chauvet-Peyrard

11

Anne 2006-2007

LANGAGE SAS

Etape DATA

vecteur de travail table malib.cours coefficient v1 v2 1 4 6 2 3 5 3 5 4 table malib.a total coefficient v1 v2 un 2 2 4 6 1

Si bien quau dbut de ltape 2, total vaut 0, puis on rcupre la ligne 2 de b, on incrmente le coef, on ajoute la colonne un, on met jour total avec le coef courant.

Voil donc le rsultat du programme :

table malib.a total coefficient v1 2 2 4 3 3 3 4 4 5

v2 6 5 4

un 1 1 1

En conclusion on voit quil est impossible de calculer de cette manire le cumul de coefficient, puisque dune ligne sur lautre, SAS oublie les valeurs prcdentes. On verra plus loin quil existe un moyen de calculer des cumuls, grce linstruction RETAIN (voir paragraphe Calcul de variables ).

Axelle Chauvet-Peyrard

12

Anne 2006-2007

LANGAGE SAS

Etape DATA

Tableau rcapitulatif des oprateurs

Oprateurs de comparaison LT GT LE GE EQ NE IN < > <= >= = ^= Infrieur strict (lesser than) Suprieur strict (greater than) Infrieur (lesser or equal) Suprieur (greater or equal) Egal (equal) Diffrent (not equal)

Signifie lappartenance la liste de valeurs indique aprs

Oprateurs logiques AND & OR ! et ou

NOT ^ non

Oprateurs arithmtiques Les oprateurs naturels +, -, * et / Ainsi que ** loprateur dexponentiation a<>b ou Min(a,b) dsigne le minimum entre a et b a><b ou Max(a,b) dsigne le maximum entre a et b Mentionnons enfin linstruction de sommation : var + quivaut var = var + 2 Oprateur de concatnation
!!

Axelle Chauvet-Peyrard

13

Anne 2006-2007

LANGAGE SAS

Etape DATA

Recopie dune table Slection de variables et dobservations


La recopie dune table : Instruction SET
Comme nous lavons vu prcdemment, le programme :

DATA destination; SET source; RUN;


Cre une table destination dans laquelle on recopie le contenu de la table source.

La slection de variables : Instructions KEEP et DROP


Il est possible de ne recopier que certaines variables de la table source, en utilisant les instructions et options KEEP et DROP. Supposons que la table source possde 3 variables nommes v1, v2 et v3. Les programmes suivants :

DATA destination; SET source; KEEP v1; RUN; DATA destination; SET source (KEEP=v1); RUN;

DATA destination; SET source; DROP v2 v3; RUN; DATA destination; SET source (DROP=v2 v3); RUN;

Ont tous pour effet de crer une table destination qui contient toutes les observations de la table source mais en ne gardant que la colonne v1. Les deux premiers programmes utilisent les instructions KEEP et DROP, tandis que les deux suivants utilisent ces commandes en tant quoptions de linstruction SET. Plac en option, le KEEP ou le DROP est excut au moment mme de la recopie de la table, alors quen instruction, il est excut aprs. Si la diffrence ne se fait pas sentir dans le cas dune simple recopie de table, comme ici, on verra plus loin un exemple ou elle devient capitale.

Le filtrage dobservations : Instructions WHERE, DELETE et OUTPUT


Il est possible de ne recopier que certaines observations de la table source. Deux cas se prsentent :

Cas 1 : On souhaite extraire les observations m n


On utilise dans ce cas les options OBS= et FIRSTOBS= de linstruction SET.

DATA destination; SET source (firstobs=m obs=n); RUN;


Cre une table destination qui contient les observations m n de la table source. Si loption FIRSTOBS nest pas prcise, la table est recopie partir de la 1re observation. De mme, si loption OBS nest pas prcise, la table est recopie jusqu la dernire observation.

Cond

Cas 2 : On souhaite garder les observations vrifiant une certaine condition

On utilise dans ce cas linstruction WHERE :

Axelle Chauvet-Peyrard

14

Anne 2006-2007

LANGAGE SAS

Etape DATA

DATA destination; SET source; WHERE [Cond]; RUN;


Attention : Linstruction WHERE doit tre unique dans ltape DATA. Par exemple, on crira :

DATA destination; SET source; WHERE v1>0 AND v2=a; RUN;


Et non :

DATA destination; SET source; WHERE v1>0; WHERE v2=a; RUN;


En effet, dans ce programme, la seconde instruction WHERE crase la premire ! De manire quivalente, on peut utiliser les instructions DELETE (efface lobservation courante) et OUTPUT (force lcriture de lobservation courante dans la table) dans une boucle sialors :

DATA destination; SET source; IF [Cond] THEN OUTPUT; RUN;

DATA destination; SET source; IF not [Cond] THEN DELETE; RUN;

L encore, dans un cadre simple comme celui-ci, ces mthodes sont quivalentes. On verra par la suite quelles ne le sont pas toujours. Linstruction OUTPUT est en particulier trs utile lorsquon souhaite dcouper une table en plusieurs sous-tables. Par exemple, je dispose dune table source dont une des variables est le sexe de lindividu, et je souhaite obtenir deux tables, lune contenant les donnes pour les hommes, et lautre pour les femmes. Jcris alors le programme suivant :

DATA femmes hommes; SET source; IF sexe=1 THEN OUTPUT hommes; ELSE OUTPUT femmes; RUN;

Remarques sur linstruction SET


La table destination et la table source peuvent tre identiques. Dans ce cas, lancienne table source est crase par la nouvelle. Linstruction SET peut tre utilise avec plusieurs tables (exemple : SET source1 source2 ;). Dans ce cas, les deux tables sont concatnes. Si plusieurs instructions SET sont spcifies, les tables sont fusionnes.

Au sujet de ces deux dernires remarques, on se reportera au paragraphe Concatnation et fusion de tables .

Axelle Chauvet-Peyrard

15

Anne 2006-2007

LANGAGE SAS

Etape DATA

Les attributs des variables


Chaque variable possde les attributs suivants : Attributs obligatoires : Nom Longueur de stockage (length) Type (caractre ou numrique) Attributs facultatifs : Label : champ texte plus long que le nom, qui accepte blancs et caractres accentus, et qui permet de fournir une courte description de la variable ; si un label est dfini, cest lui qui est affich lors de la visualisation de la table. Format de lecture (format) : la longueur de stockage tant dfinie, on peut appliquer la variable un format de lecture, qui correspond une manire de prsenter les valeurs de cette variable ; le format est utile dans le cas de nombres dcimales ou de dates. Format dcriture (informat) : cest lquivalent du format, mais il sert au moment de lcriture des donnes dans la table et non au moment de leur lecture.

Les formats :
Formats prdfinis :
Les formats numriques sappliquent aux variables de type numrique. Le format n. indique que la variable numrique sera lue / crite sur n caractres. Le format n.d indique que la variable numrique sera lue / crite sur n caractres dont d dcimales. Le format Zn. force lcriture sur n caractres en compltant gauche par des 0. Les formats caractres sappliquent aux variables de type caractre, et commencent par un $ . Le format $n. indique que la variable caractre sera lue / crite sur n caractres.

Cas particulier des formats date :


En SAS, une date est une variable numrique qui reprsente le nombre de jours couls depuis une certaine date de rfrence interne au systme. Afin de rendre les valeurs plus parlantes, on peut appliquer un des formats prdfinis suivants (il en existe dautres) : Format DATE9. YYMMDD8. DDMMYY8. Exemple avec le 14 janvier 2005 14JAN2005 05-01-14 14/01/05

Formats dfinis par lutilisateur :


Lutilisateur peut dfinir ses propres formats et informats grce la procdure PROC FORMAT (voir le paragraphe consacr dans la partie II A). La dfinition de formats savre particulirement utile lorsquon souhaite faire du regroupement de modalits sans modifier les valeurs dorigine. Note : Tous les formats se terminent par un . .

Connatre les attributs dune variable :


Dans la fentre de visualisation de la table (que lon obtient en double cliquant sur une table dans la fentre Explorer), il suffit de faire un clic droit sur len-tte de la colonne dont on dsire connatre les attributs, puis de choisir Column Attributes . Vous pouvez aussi retrouver tous les attributs de toutes les variables dune table en visualisant les proprits de la table. Deux mthodes : Dans la fentre explorer, clic droit sur la table puis Properties . Procdure PROC CONTENTS (voir le paragraphe consacr dans la partie II A).

Axelle Chauvet-Peyrard

16

Anne 2006-2007

LANGAGE SAS

Etape DATA

Modifier les attributs obligatoires dune variable :


Modifier le nom : Instruction RENAME
Dans une tape DATA, on utilise linstruction ou loption RENAME :

DATA destination; SET source; RENAME old=new; RUN;

DATA destination; SET source (rename=(old=new)); RUN;

Ces deux programmes ont pour effet de crer une table destination qui est la copie de la table source, la variable old ayant t renomme en new. Dans ce cas trs simple, le choix dutiliser linstruction ou loption est transparent. On verra plus loin que ce nest pas toujours le cas.

Modifier la longueur de stockage : Instruction LENGTH


A lintrieur dune tape DATA, on utilise linstruction LENGTH :

LENGTH mavariable <$> n ;


Dfinit pour la variable de nom mavariable une longueur de stockage de n caractres. Dans le cas dune variable caractre, on ajoute un $ entre le nom de la variable et le nombre de caractres n. Cette instruction ne peut pas tre applique une variable dj existante ! Si lon souhaite modifier la longueur de stockage dune variable existante, il faut dfinir une nouvelle variable de la longueur voulue, puis affecter les valeurs de lancienne variable cette nouvelle variable. Exemple : Programme Commentaire Je cre une table destination Dans laquelle je recopie les donnes de la table source La variable newvar (inconnue dans la table source) est une variable caractre de longueur de stockage gale 10 La variable newvar prend les valeurs de var (appartenant la table source) La variable var nappartient pas la table destination La variable newvar sappellera var dans la table destination

DATA destination; SET source; LENGTH newvar $ 10; newvar = var; DROP var; RENAME newvar=var; RUN;

Modifier le type : Fonctions PUT() et INPUT()


Une variable est dfinie ds le dpart comme tant dun certain type : caractre ou numrique. Cet attribut nest pas destin tre modifi. Si lon souhaite tout de mme le faire, il faut, comme prcdemment, passer par une nouvelle variable. Supposons comme exemple que la table source contienne une variable varchar, de type caractre, de longueur de stockage 4, que lon souhaite transformer en une variable numrique. On crit le programme suivant : Programme Commentaire Je cre une table destination Dans laquelle je recopie la table source La variable newvarnum (inconnue dans source) est une variable numrique de format 4. Les valeurs prises par newvarnum rsultent de la conversion en numrique (et au format 4.) des valeurs de la variable varchar

DATA destination; SET source; FORMAT newvarnum 4.; newvarnum = input (varchar , 4.); RUN;
De manire symtrique, la fonction donnes numriques en caractres.

put(varnum,format_caractre)

permet de convertir des

Axelle Chauvet-Peyrard

17

Anne 2006-2007

LANGAGE SAS

Etape DATA

Modifier les attributs facultatifs dune variable :


Appliquer un label : Instruction LABEL
A lintrieur dune tape DATA, on utilise simplement linstruction LABEL :

LABEL mavariable ceci est mon label ;


Cette instruction applique le label ceci est mon label la variable mavariable. Si la variable avait dj un label, il est cras par le nouveau.

Appliquer un format ou un informat : Instructions FORMAT et INFORMAT


A lintrieur dune tape DATA, on utilise linstruction FORMAT :

FORMAT mavariable monformat ;


Cette instruction applique le format monformat la variable mavariable. Monformat doit tre reconnu comme un nom de format valide, soit un format prdfini, soit un format dfini par lutilisateur. En particulier, ne pas oublier le . la fin. Linstruction INFORMAT sutilise selon la mme syntaxe. Linstruction FORMAT sutilise aussi au sein dune tape PROC. Dans ce cas, le format de la variable nest pas modifi au sein de la table, mais affecte uniquement le traitement en cours. Sur ce sujet, on se reportera au paragraphe consacr la PROC FORMAT, partie II A.

Axelle Chauvet-Peyrard

18

Anne 2006-2007

LANGAGE SAS

Etape DATA

Concatnation et fusion de tables


La concatnation de tables : Instruction SET
Il sagit de coller verticalement les observations de deux tables a et b afin de nobtenir quune seule table. Cest encore linstruction SET qui va servir dans ce cas. Prenons comme exemple les deux tables a et b suivantes :

table a nom note toto 12 titi 14 tata 18

table b nom note titi 10 tutu 8

Alors le programme suivant :

DATA ab; SET a b; RUN;


Fournit le rsultat suivant :

table ab nom note toto 12 titi 14 tata 18 titi 10 tutu 8


Les colonnes portant le mme nom sont regroupes en une seule colonne. Les individus de b sont recopis la suite des individus de a, sans souci de classement. Pour remdier cela, on peut effectuer un interclassement .

Linterclassement de deux tables : Instructions SET et BY


Il sagit simplement dajouter une instruction BY aprs linstruction SET.

DATA ab; SET a b; BY nom; RUN;


Ce programme ne fonctionne que si les deux tables ont auparavant t tries selon la variable nom (ce qui nest pas le cas ici). Pour trier une table, on utilise une procdure PROC SORT (voir le paragraphe consacr dans la partie II A). Supposant que lon ait tri les tables, le programme ci-dessus fournit le rsultat suivant :

table ab nom note tata 18 titi 14 titi 10 toto 12 tutu 8


A noter quil revient au mme de raliser la concatnation simple sur donnes non tries puis de trier le rsultat (la table ab) laide dune PROC SORT.

Axelle Chauvet-Peyrard

19

Anne 2006-2007

LANGAGE SAS

Etape DATA

Distinction des donnes selon leur table dorigine


Supposons maintenant que la note de la table a ait un sens diffrent de la note de la table b. La simple concatnation des deux tables perd cette information. Deux solutions se prsentent nous :

Crer deux variables note diffrentes :


Il suffit de renommer lune des deux variables note, comme suit :

DATA ab; SET a b (rename=(note=note2)); RUN;


Ce programme fournit le rsultat suivant :

table ab nom note note2 toto 12 . titi 14 . tata 18 . titi . 10 tutu . 8


On voit bien dans ce contexte la diffrence quil y a traiter le changement de nom dune variable comme option de linstruction de copie ou comme instruction indpendante. En effet, le programme suivant :

DATA ab; SET a b; RENAME note=note2; RUN;


Aurait donn le rsultat suivant :

table ab nom note2 toto 12 titi 14 tata 18 titi 10 tutu 8


Soit exactement le mme rsultat quavec le tout premier programme, ceci prs que la deuxime colonne ne porte plus le mme nom !

Ajouter une colonne type de note :


La mthode prcdente prsente un inconvnient majeur, celui de gnrer de nombreuses valeurs manquantes. La deuxime mthode consiste ajouter une colonne indiquant la provenance des observations. Pour cela, on utilise loption IN= de linstruction SET :

DATA ab; SET a (in=x) b; IF x=1 THEN origine=a; ELSE origine=b; RUN;

Axelle Chauvet-Peyrard

20

Anne 2006-2007

LANGAGE SAS
Ce programme fournit le rsultat suivant :

Etape DATA

table ab nom note origine toto 12 a titi 14 a tata 18 a titi 10 b tutu 8 b

La fusion de tables : Instruction MERGE


Mais dans un cas tel que celui-ci, o lon dispose de diffrentes donnes sur un mme ensemble dindividus, on pourrait vouloir obtenir une table dont chaque observation corresponde un individu. Ici, on souhaiterait avoir la table suivante :

table ab nom note_a note_b tata 18 . titi 14 10 toto 12 . tutu . 8


Il sagit en quelque sorte de coller horizontalement les deux tables, ce qui en SAS sappelle une fusion. On utilise alors linstruction MERGE. De plus, ici, on contrle la fusion afin de mettre en concordance les donnes dun mme individu. Ce contrle seffectue grce une instruction BY. Le programme permettant dobtenir le tableau ci-dessus est alors :

DATA ab; MERGE a (rename=(note=note_a)) b (rename=(note=note_b)); BY nom; RUN;


Remarque : Comme chaque fois que lon utilise une instruction BY, il est ncessaire doprer sur des tables dj tries. Remarque 2 : Si lon oublie de renommer les variables, la variable note de la table b vient craser la variable note de la table a, et lon obtient :

table ab nom note tata 18 titi 10 toto 12 tutu 8


Remarque 3 : Si lon ne contrle pas la fusion, on a une simple juxtaposition des tableaux. Dans le cas o les tables ne sont pas tries (et condition de renommer les variables), cela donne :

table ab nom_a note_a nom_b note_b toto 12 titi 10 titi 14 tutu 8 tata 18

Axelle Chauvet-Peyrard

21

Anne 2006-2007

LANGAGE SAS

Etape DATA

La mise jour dune table partir des donnes dune autre table : Instruction UPDATE
Supposons maintenant que les notes de la table a correspondent aux notes dun examen donne et que les notes de la table b soient celles de lexamen de rattrapage correspondant. Les donnes de b doivent donc venir complter, voire corriger, les donnes de a. On utilise alors linstruction UPDATE. Le programme suivant :

DATA a_b; UPDATE a b; BY nom; RUN;


Doit bien entendu tre appliqu a et b aprs tri de ces tables selon le nom. Il fournit le rsultat suivant :

table a_b nom note tata 18 titi 10 toto 12 tutu 8


Titi ayant pass le rattrapage, sa note provenant de a est crase par sa note provenant de b. Tutu navait pas pass lexamen initial. Il est ajout la table ! Remarque : On obtient ici le mme rsultat quen effectuant une fusion contrle sur le nom, dans le cas o lon ne renomme pas les variables note . Les deux mthodes ne sont cependant pas quivalentes. Avec UPDATE, seules les valeurs non manquantes crasent les anciennes valeurs !

Remarques sur linstruction BY :


On vient de voir plusieurs cas dutilisation de linstruction BY. A ce stade, il convient de remarquer quil sagit dune instruction trs courante, que lon retrouvera aussi dans le cadre dtapes PROC (voir partie II). Il est important de comprendre que BY en soi-mme neffectue aucun tri. Si la table issue dun interclassement, dune fusion contrle ou dune mise jour est trie, cest que les tables en entre ltaient ! Le travail de BY consiste contrler les valeurs de la variable dsigne afin de les mettre en concordance. Le but est de reprer les donnes appartenant un mme individu. Ainsi, une fusion contrle ou une mise jour doit seffectuer selon une variable qui permet didentifier lindividu. Dans lexemple ci-dessus, on a considr que le nom pouvait servir didentifiant. Dans un cas concret, il vaudra mieux viter (risque dhomonymes).

Axelle Chauvet-Peyrard

22

Anne 2006-2007

LANGAGE SAS

Etape DATA

Boucles DO et conditions IF
Le langage SAS offre la possibilit de faire des boucles finies ou des boucles tant que, ainsi que des tests.

Les conditions IF :
IF condition THEN instruction ; (ventuellement suivi de) ELSE instruction ;
Le IF na pas besoin dtre termin par un END ; Si on veut insrer plus dune instruction dans le THEN ou dans le ELSE, il faut les encadrer par un bloc DO ; END ; de la manire suivante :

IF condition THEN DO ; .bloc dinstructions. END ; ELSE DO ; .bloc dinstructions. END ;

Le bloc SELECT :
Si une srie de conditions IF revient diffrencier le traitement qui suit selon les modalits dune variable, on lui substituera avantageusement une instruction SELECT dont voici la syntaxe :

SELECT (variable) ; WHEN (modalit1) instruction1 ; WHEN (modalit2) instruction2 ; OTHERWISE instruction ; END ;
Le cas OTHERWISE nest pas indispensable.

Les boucles finies : (exemple pour 10 itrations)


DO i=1 TO 10 ; .Bloc dinstructions (ne pas oublier les points virgules). END ;

Les boucles tant que :


DO WHILE (condition) ; .Bloc dinstructions excuter tant que la condition est ralise. END ;

Axelle Chauvet-Peyrard

23

Anne 2006-2007

LANGAGE SAS

Etape DATA

Les fonctions SAS


Fonctions de manipulation de chanes de caractres :
Length(x) Compress(x,c) Repeat(x,n) Index(x,y) Upcase(x) Lowcase(x) Dequote(x) Quote(x) Substr(x,n,l) Scan(x,n,'sp') Tranwd(x,y,z) Retourne la longueur de x Compresse x (en enlevant les caractres c) Forme une chane de caractres qui est n fois la rptition de x Retourne la place du dbut du mot y dans x Met x en majuscules Met x en minuscules Enlve les guillemets prsents dans x Encadre x de guillemets Extraie de x un mot de longueur l partir du nime caractre Extraie de x le nime mot considrant que sp est le sparateur Remplace dans x toutes les occurrences du mot y par le mot z

Fonctions de manipulation de dates :


mdy(m,j,a) Date() Datepart(d) Day(d) Month(d) Year(d) Weekday(d) Cre une date de jour j, mois m et anne a Retourne la date courante Extraie la partie date d'une date d Retourne le jour d'une date d Retourne le mois d'une date d Retourne lanne d'une date d Retourne le jour dans la semaine d'une date d

Fonctions mathmatiques :
Floor(x) Abs(x) Sign(x) Round(x,a) Max(x1,,xn) Min(x1,,xn) Mod(x,y) Sqrt(x) Exp(x) Log(x) Cos(x) Sin(x) Tan(x) Arcos(x) Arsin(x) Atan(x) Axelle Chauvet-Peyrard Partie entire de x Valeur absolue de x Vaut 1 si x>0, -1 si x<0, 0 sinon Arrondit x la prcision a Maximum des valeurs de x1,xn Minimum des valeurs de x1,,xn Reste de la division euclidienne de x par y Racine carre de x Fonction Exponentielle Fonction Logarithme nperien Fonction Cosinus Fonction Sinus Fonction Tangente Fonction Cosinus inverse Fonction Sinus inverse Fonction Tangente inverse

24

Anne 2006-2007

LANGAGE SAS

Etape DATA

Fonctions alatoires :
Les fonctions suivantes gnrent des nombres selon une loi choisie. Lalgorithme ncessite la dfinition dun paramtre a (par exemple : 0). Rannor(a) Ranuni(a) Ranpoi(a,l) Ranbin(a,n,p) Rantbl(a,p1,,pn) Loi normale centre rduite Loi uniforme sur [0,1] Loi de Poisson de paramtre l Loi binomiale de paramtres n et p Loi discrte de distribution p1,,pn

Fonctions statistiques :
n(x1,,xn) nmiss(x1,,xn) sum(x1,xn) mean(x1,xn) var(x1,xn) Nombre de valeurs non manquantes parmi les variables x1,,xn Nombre de valeurs manquantes parmi les variables x1,,xn Somme des variables x1,,xn Moyenne des variables x1,,xn Variance empirique des variables x1,,xn

Probabilits :
Les fonctions suivantes sont les fonctions de rpartition en t des lois dsignes. Probnorm(t) Probchi(t,n) Poisson(t,l) Probf(t,n,p) Probbnml(p,n,t) Probhypr(N,k,n,t) Loi normale centre rduite Loi du Chi2 n degrs de libert Loi de Poisson de paramtre l Loi de Fisher de paramtres n et p Loi binmiale de paramtres n et p Loi hypergomtrique de paramtres N, k et n

Fonctions particulires :
Input(vchar,fornum) Put(vnum,forchar) Lagn(x) Difn(x) Transforme une variable caractre vchar en variable numrique au format fornum Transforme une variable numrique vnum en variable caractre au format forchar Retourne la valeur n fois prcdente de x ; pour n=1 on note Lag(x) Retourne x - Lagn(x) ; pour n=1 on note Dif(x)

Axelle Chauvet-Peyrard

25

Anne 2006-2007

LANGAGE SAS

Etape DATA

Calculs de variables
Loprateur daffectation est le =. Les calculs les plus simples (addition, soustraction, multiplication, division, exponentiation) se font simplement par invocation de loprateur appropri. Il nest pas ncessaire de dclarer les variables en SAS. Tout objet du programme qui, de par sa nature syntaxique, est interprt comme un nom de variable, est insr dans le vecteur de travail en tant que nouvelle variable. On tudie ci-dessous deux cas particuliers de calcul de variables.

Gnrer des distributions alatoires


On souhaite crer une table ex nihilo, qui contienne 100 ralisations dune variable alatoire relle x suivant une loi normale centre rduite. On crit le programme suivant :

DATA normale; DO i=1 TO 100; x = rannor(0); OUTPUT; END; RUN;


La table normale ainsi cre contient deux variables : i (numro ditration) et x (variable suivant une loi normale centre rduite, obtenue). Linstruction OUTPUT est ici indispensable. Si on lomet, seule la dernire observation est enregistre dans la table. Ceci tient au fait que SAS nassimile pas une tape dune boucle une observation. Ainsi, dans le programme suivant :

DATA test; SET source; DO i=1 TO 100; [Bloc dinstructions]; END; RUN;
Le bloc dinstructions est effectu 100 fois pour chaque observation de la table source !

Calculer des cumuls


On a vu dans la prsentation de ltape DATA que cela nest pas immdiat, la raison en tant que le vecteur de travail est rinitialis chaque nouvelle observation calcule. Pour y remdier, il faut demander SAS de se souvenir de la valeur prcdente prise par la variable. Cela se fait grce linstruction RETAIN :

RETAIN mavariable <valeur_initiale> ;


La syntaxe de RETAIN prvoit la dfinition (facultative) dune valeur initiale pour mavariable, valeur qui lui sera affecte lors de sa premire apparition dans le programme. Si lon souhaite calculer un cumul, on choisira cette valeur gale 0. On reprend le cas tudi dans le paragraphe La logique ligne par ligne de ltape DATA en ajoutant une instruction RETAIN :

DATA maLib.a ; RETAIN total 0; SET maLib.cours ; Coefficient=coefficient+1 ; Un=1 ; Total=total+coefficient; RUN ;
Cette fois, la variable total contient bien le cumul des coefficients :

Axelle Chauvet-Peyrard

26

Anne 2006-2007

LANGAGE SAS

Etape DATA

table malib.a total coefficient v1 2 2 4 5 3 3 9 4 5

v2 6 5 4

un 1 1 1

Remarque : Linstruction RETAIN ne peut sappliquer qu une nouvelle variable !

Calcul de cumuls sur sous-groupes


On reprend cette fois la table ab issue de linterclassement des tables {nom,note} du paragraphe Concatnation et fusion de tables . On souhaite calculer le cumul des notes pour chaque lve (mme si cela na pas grand sens). Comme prcdemment, on utilise linstruction RETAIN. On a besoin de plus de reprer la premire et la dernire occurrence de chaque nom dlve. Pour cela, on utilise FIRST et LAST :

DATA ab; SET ab; BY nom; RETAIN cumule; IF first.nom THEN cumule=0; cumule=cumule+note; RUN;
On obtient le rsultat suivant :

table ab nom note cumule tata 18 18 titi 14 14 titi 10 24 toto 12 12 tutu 8 8

Calcul du numro dobservation


Cela peut tre vu comme un calcul de cumul, puisque le numro dobservation est incrment de 1 chaque ligne. On peut donc crire, en utilisant linstruction de sommation :

DATA destination; SET source; RETAIN num_obs 0; num_obs + 1; RUN;


Cependant, il existe en SAS une variable note _n_ qui dsigne le nombre ditrations ralises de ltape DATA en cours. Dans le cas simple dune recopie de table, cette grandeur correspond exactement au numro de lobservation courante. On peut donc simplement crire :

DATA destination; SET source; num_obs = _n_ ; RUN;

Axelle Chauvet-Peyrard

27

Anne 2006-2007

LANGAGE SAS

Etape DATA

Les vecteurs (array) de variables


Un vecteur sous SAS est un moyen de regrouper diffrents noms de variables afin dallger les traitements portant sur ces variables. Cest un outil pratique lorsquon doit appliquer la mme opration un grand nombre de variables. Pour dfinir un vecteur, on utilise linstruction ARRAY :

ARRAY nom_vecteur <$> variable1 variable2 variable3 variable4 ;


Cette instruction dfinit un vecteur ayant pour nom nom_vecteur et regroupant les variables variable1, variable2, variable3 et variable4. Dans ce cas, nom_vecteur(1) dsigne variable1, nom_vecteur(2) dsigne variable2, etc. Les variables regroupes dans un mme vecteur doivent tre de mme type. Si elles sont de type caractre, il faut intercaler un signe $ aprs le nom du vecteur. Dans un cas comme celui-ci, o les variables ont des noms composs dune partie caractre identique suffixe par un incrment, on peut directement crire :

ARRAY nom_vecteur <$> variable1 - variable4 ;


Le nom du vecteur agit comme une sorte dalias. Il napparat pas dans le vecteur de travail.

Dimension dun vecteur :


La fonction dim() permet de connatre la dimension du vecteur, ie le nombre de variables quil regroupe. Ici, dim(nom_vecteur) vaut 4.

Exemple :
On dispose dune table source contenant des variables p1, p2, jusqu p20, qui reprsentent des prix en francs. On veut convertir tous les prix en euros. On crit le programme suivant :

DATA source; SET source; ARRAY prix p1-p20; DO i=1 TO dim(prix); prix(i) = prix(i) / 6,55957; END; RUN;

Axelle Chauvet-Peyrard

28

Anne 2006-2007

LANGAGE SAS

Etape DATA

Gestion des erreurs et arrt conditionnel dune tape DATA


La variable automatique _error_ est un boolen qui vaut 1 si le programme a rencontr une erreur, 0 sinon.

Afficher des messages derreur : Instruction ERROR


Mme en labsence derreur du programme, on peut tre amen considrer certains cas comme des erreurs (par exemple, un ge ngatif). On a alors recours linstruction ERROR pour traiter ces cas.

ERROR message derreur ;


Cette instruction a pour effet de : Affecter la valeur 1 la variable _error_. Editer lobservation courante dans la LOG. Afficher le message message derreur dans la LOG. Exemple :

DATA destination; SET source; IF age < 0 THEN ERROR lge est ngatif; ELSE [Bloc dinstructions]; RUN;

Stopper une tape DATA : Instruction STOP


On peut demander ce que lexcution de ltape DATA sarrte lorsquune certaine condition est ralise. On utilise pour cela linstruction STOP. Exemple : produit.

IF _error_ THEN STOP;

demande larrt de ltape DATA si une erreur dexcution se

On peut aussi introduire un test dans une boucle tant que afin dviter les boucles infinies, par exemple :

DO WHILE (condition); IF _n_>1000000 THEN STOP; [Bloc dinstructions]; END;

Axelle Chauvet-Peyrard

29

Anne 2006-2007

LANGAGE SAS

Etape DATA

Etape DATA sans cration de table


Supposons que lon doive effectuer un calcul ou une recherche partir dune table, que lon souhaite afficher le rsultat, mais que lon nait pas besoin de crer une table en sortie. On utilise alors la variable automatique _null_ pour indiquer quaucune table ne sera cre, et on laccompagne lintrieur de ltape dune instruction PUT qui ditera le rsultat demand dans la LOG. Exemple : Reprenons les tables a et b prsentes dans le paragraphe Concatnation et fusion de tables . Je souhaite afficher dans la LOG le nom du (ou des) lve(s) prsent(s) dans les deux tables. Cest une information indicative, qui ne me servira plus par la suite ; il nest donc pas ncessaire que je cre une table contenant cette donne. Jcris le programme suivant :

DATA _null_; SET a (in=x) b (in=y); IF x AND y THEN PUT nom; RUN;

Axelle Chauvet-Peyrard

30

Anne 2006-2007

Langage SAS

Etape PROC

PARTIE II

Ltape PROC
On rappelle que la programmation lmentaire sous SAS prend deux formes : soit celle dune tape DATA, dans laquelle on modifie, recopie, manipule des donnes, soit celle dune tape PROC. Dans cette partie, aprs avoir expos la structure gnrale dune tape PROC, on se propose de prsenter une vingtaine de procdures parmi les plus utilises. Chaque procdure sera prsente selon le schma suivant : Prsentation gnrale de lobjectif de la PROC. Eventuellement, quelques rappels thoriques. Syntaxe gnrale (pas toujours exhaustive). Les options et instructions majeures. Une lecture de sortie standard. Une lecture de sortie labore.

Structure gnrale dune tape PROC


PROC XXX <liste_options_de_la_procdure> ; INSTRUCTION1 argument_instruction </liste_options_instruction1> ; INSTRUCTIONp argument_instruction </liste_options_instructionp> ; RUN ;
Toute tape PROC commence par le mot-cl PROC suivi du nom de la procdure : XXX. Il est possible de mettre cet endroit ce que lon appelle des options de la PROC XXX. Cela est facultatif (do les < >) et les ventuelles options sont spares par un blanc. Enfin on met un point-virgule. Puis vient le corps de la procdure, constitu obligatoirement dune succession dinstructions choisies parmi les instructions de la procdure. Par exemple, un test de type IF a=0 THEN delete ; na rien faire dans une PROC !! Par contre on pourra utiliser linstruction WHERE. Chaque instruction commence par un mot-cl et termine par un point-virgule. Beaucoup dinstructions offrent des options. Il faut alors sparer linstruction de la liste des options qui sy rattachent par un /. Remarque : Si on enchane plusieurs tapes PROC, un seul run ; la fin de toutes suffit. Remarque 2 : Aprs certaines procdures, on doit mettre un quit ; Cest le cas avec des procdures qui font appel des modules particuliers, telles les PROC GCHART et GPLOT ou la PROC SQL par exemple. Si lon omet le QUIT, la table, ouverte par le module, nest pas ferme, et cela peut gnrer des erreurs.

Les options incontournables :


Nous avons dj voqu loption data= . Rares sont les PROC qui ne lacceptent pas (lexemple type tant la PROC FORMAT). Notons quen labsence de cette option, la procdure travaille sur la dernire table cre. Une autre option rpandue est loption noprint, qui demande ce quaucune sortie ne soit imprime dans loutput. Elle vite de surcharger cette dernire lorsque le besoin ne sen fait pas sentir (par exemple si on a stock les rsultats dans une table ou si on a export la sortie avec lods).

Les instructions incontournables :


Linstruction VAR permet (dans les procdures o elle apparat) de prciser sur quelles variables on travaille. On la retrouve notamment dans les procdures MEANS, UNIVARIATE, CORR Elle est donc surtout associe des traitements de variables quantitatives. Ainsi, elle napparat pas dans la PROC FREQ (qui utilise linstruction TABLES), ni dans les procdures de modlisation (qui utilisent linstruction MODEL).

Axelle Chauvet-Peyrard

31

Anne 2006-2007

Langage SAS

Etape PROC

Linstruction BY permet de constituer des sous-populations. Lorsquune instruction BY mavar ; est spcifie dans une PROC, cela force la ralisation dautant dtapes PROC quil y a de modalits de mavar. Remarque : Ne pas confondre avec linstruction CLASS qui permet de distinguer des sous-groupes lintrieur dune mme tape PROC. Exemple : on suppose que mavar a comme moyenne gnrale 10, comme moyenne sur la souspopulation des hommes 14 et comme moyenne sur la sous-population des femmes 09. Admettons quon veuille faire un test dgalit des moyennes. Le programme PROC TTEST ; VAR mavar ; CLASS sexe ; compare bien 09 14, tandis que le programme PROC TTEST ; VAR mavar ; BY sexe ; va essayer dabord de comparer 09 09, puis de comparer 14 14. Linstruction OUTPUT, qui permet de stocker certains des rsultats dans une table. La syntaxe est alors OUTPUT OUT=table_sortie Keywords ; on prcise le nom de la table dans laquelle seront stocks les rsultats des statistiques dont les mots-cls sont prciss (liste Keywords). Notons quil existe de nombreuses options du type out= qui ont le mme but mais sont adaptes un cas prcis. On retrouvera aussi frquemment deux instructions dj vues en tape DATA : Linstruction WHERE sert slectionner des observations particulires pour traitement. Linstruction FORMAT sert appliquer un format certaines des variables traites. notre

Exemple :
1 2 3 4 5 6 PROC MEANS data=donnees ; VAR var1 var2 ; BY cat ; WHERE cat NE sans reponse ; OUTPUT out=moyennes mean=moy1 moy2 ; RUN ;

1 : Procdure MEANS qui sapplique la table donnees de la librairie Work. 2 : Les variables tudies sont var1 et var2. 3 : On calcule les stats sur les sous-populations dfinies par les modalits de cat. 4 : On exclut de ltude les observations pour lesquelles cat vaut sans rponse. 5 : On rcupre dans une table moyennes la moyenne de chacune des variables sur chacune des souspopulations ; on appelle moy1 la moyenne de var1 et moy2 la moyenne de var2.

Axelle Chauvet-Peyrard

32

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

Partie II A Procdures de manipulation des donnes


Les PROC IMPORT, EXPORT, CPORT permettent de faire de limportation / exportation de donnes. La PROC CONTENTS liste les proprits dune table. La PROC PRINT dite les observations dune table dans lOutput. La PROC SORT trie une table. La PROC TRANSPOSE transpose tout ou partie dun tableau. La PROC SQL permet dutiliser les fonctionnalits particulires du langage SQL propre aux bases de donnes. La PROC FORMAT cre un format, utile pour faire du regroupement de modalits. La PROC RANK permet dattribuer des rangs des observations.

Axelle Chauvet-Peyrard

33

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

Quelques notions sur lImportation / Exportation de donnes


Lorsque lon dispose du module SAS/WIZARD, cela reste le plus simple moyen de faire de limportation / exportation de donnes SAS depuis / vers les formats texte, excel, access et dbase. SAS/WIZARD est accessible via les menus File Import data et File Export data. Il ne sagit ni plus ni moins que dun assistant implmentant les PROC IMPORT et PROC EXPORT de SAS. Le lien avec dautres logiciels statistiques tels que SPAD ou SPSS est moins vident. Dans de tels cas, on a recours au moteur XPORT pour transformer les donnes en un fichier transportable xpt. Le programme suivant cre un fichier table.xpt stock sous w:/sas partir dune table nomme table appartenant la librairie base :

LIBNAME trans XPORT w:\sas\table.xpt ; PROC COPY IN=base OUT=trans ; SELECT table ; RUN ;
SPAD peut lire directement les fichiers xpt. Pour ouvrir la table sous SPSS, il faut taper dans une fentre de syntaxe la procdure suivante :

Get SAS DATA=w:\sas\table.xpt. Execute.


On peut via SPSS enregistrer une table au format por puis sous SAS utiliser la PROC CONVERT pour importer. Le programme suivant cre une table SAS nomme table dans la librairie malib partir du fichier table.por. On doit allouer un nom virtuel (ici : trans) ce dernier grce linstruction FILENAME.

FILENAME trans SPSS w:\sas\base.por ; PROC CONVERT SPSS=trans OUT=malib.table ; RUN ;


Les PROC CPORT et PROC CIMPORT sont utilises pour transporter des fichiers SAS (tables, catalogues ou bibliothques) dun systme dexploitation un autre ou dune version de SAS une autre. Un objet SAS cod avec la PROC CPORT ne peut tre dcod quavec une PROC CIMPORT.

Axelle Chauvet-Peyrard

34

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

Connatre les proprits dune table avec la PROC CONTENTS


La premire chose que lon peut faire lorsquon reoit des donnes analyser, cest de dresser la liste synthtique des caractristiques de la table en question. La PROC CONTENTS est justement l pour a. Elle liste : Les proprits gnrales de la table : nom, moteur, date de cration, nombre de variables et dobservations Les attributs des variables et leur position dans la table Les informations lies au tri de la table

Mthode alternative :
Dans la fentre Explorer, faire un clic droit sur la table concerne. Choisir Properties . Une pop-up souvre avec les proprits de la table : apparaissent les General Properties (proprits gnrales) de la table (qui correspondent au 1er tableau dit par la PROC CONTENTS), mais on peut aussi demander les Engine / Host Information (2me tableau de la PROC) ou les Columns (informations relatives aux variables de la table, correspondant au 3me tableau dit par la PROC).

PROC CONTENTS data=

Options :
Loption short permet de nditer que la liste des variables. Loption directory dite en plus les proprits de la librairie laquelle appartient la table (moteur, emplacement physique, liste des objets quelle contient avec leurs tailles).

Axelle Chauvet-Peyrard

35

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

Lecture de sortie :
The CONTENTS Procedure Data Set Name: Member Type: Engine: Created: Last Modified: Protection: Data Set Type: Label: MALIB.BIDON DATA V8 9:52 Monday, January 28, 2002 9:52 Monday, January 28, 2002 Observations: Variables: Indexes: Observation Length: Deleted Observations: Compressed: Sorted: 50 6 0 40 0 NO NO

-----Engine/Host Dependent Information----Data Set Page Size: Number of Data Set Pages: First Data Page: Max Obs per Page: Obs in First Data Page: Number of Data Set Repairs: File Name: Release Created: Host Created: 4096 1 1 101 50 0 W:\SAS\bidon.sas7bdat 8.0101M0 WIN_NT

-----Alphabetic List of Variables and Attributes----# 6 1 4 2 3 5 Variable distribution siren taille va ventes zone Type Char Char Char Num Num Char Len 10 8 1 8 8 2 Pos 27 16 24 0 8 25 Label locale, rgionale ou nationale identifiant SIRENE petite, moyenne ou grande entreprise valeur ajoute (en MF) parts de march implantation de lentreprise

La table sappelle bidon et est contenue dans la librairie malib. Elle est au format V8 et son emplacement physique est w:\sas\bidon.sas7bdat. Elle a t cre le 28 janvier 2002. Elle contient 6 variables et 50 observations et nest pas trie. Parmi les 6 variables de la table, 2 sont numriques : variable va, de label valeur ajoute (en MF) , de longueur 8, cest la deuxime colonne variable ventes, de label parts de march , de longueur 8 aussi, troisime colonne et 4 sont des variables caractres : variable siren, de longueur 8 et de label identifiant SIRENE variable taille, de longueur 1 et de label petite, moyenne ou grande entreprise variable zone, de longueur 2 et de label implantation de lentreprise variable distribution, de longueur 10 et de label entreprise locale, rgionale ou nationale

Axelle Chauvet-Peyrard

36

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

Imprimer une table dans la fentre Output avec la PROC PRINT


Pour voir le contenu dune table, le plus simple reste encore de louvrir en double-cliquant dessus. Lorsque cest impossible, on peut utiliser le menu View Table Editor, ou bien encore diter la table dans loutput grce une PROC PRINT.

PROC PRINT data=

<options> ;

Les options :
Loption noobs supprime ldition du numro de lobservation.

Trier une table avec la PROC SORT


Pour trier une table, on utilise la PROC SORT. Cette procdure ne gnre aucune sortie dans la fentre OUTPUT.

Mthode alternative :
Ouvrir la table par double clic. Passer en mode edit : menu Edit - Edit mode (ou licne Edit). Clic droit sur len-tte de colonne concern. Choisir Sort . Puis on a le choix entre Ascending et Descending . Enfin on enregistre la table.

On peut aussi trier la table via le module SAS/INSIGHT (voir le paragraphe consacr dans la partie III B).

PROC SORT data= <options> ; BY <descending> var ;

Les options :
Loption out= permet de spcifier une table de sortie diffrente de la table dentre : ainsi la table dorigine nest pas modifie, mais on dipose dune nouvelle table qui, elle, est trie. Loption noduprecs supprime les doublons.

Axelle Chauvet-Peyrard

37

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

Transposer un tableau avec la PROC TRANSPOSE


Dans son expression la plus simple, la PROC TRANSPOSE transpose une table, cest--dire transforme les lignes en colonnes. La force de la PROC TRANSPOSE est de pouvoir ne transposer quune partie des observations. La PROC TRANSPOSE ne gnre aucune sortie dans lOUTPUT.

PROC TRANSPOSE data= <options>; VAR liste_de_variables; BY variable; COPY liste_de_variables; ID variable;

Les options :
Loption out= permet de dfinir une table en sortie diffrente de la table prise en entre. Loption name= permet de renommer la variable _name_ dans le tableau transpos (variable qui contient le nom de la ou des variables transposes). Loption prefix= permet de dfinir un prfixe pour les noms des nouvelles variables du tableau.

Les instructions :
Linstruction VAR fournit la liste des variables qui vont tre transposes. Ces variables nexistent plus dans le tableau en sortie, et leurs valeurs sont rparties dans les cases appropries du nouveau tableau. Linstruction BY permet de dfinir lidentifiant de lindividu. Chaque modalit de cet identifiant correspondra une ligne du tableau final. Linstruction ID permet de dfinir la variable dont les modalits doivent dfinir les nouvelles variables du tableau. Linstruction COPY dfinit les variables qui sont recopies telles quelles dans le tableau final.

Exemple :
Supposons que lon dispose de la table notes suivante :

table notes eleve Matiere tata Math tata Franais titi Math titi Franais toto Math toto Franais

note 15 10 14 18 8 12

Et que lon souhaite obtenir la table notes2 suivante :

table notes2 eleve note_math note_francais tata 15 10 titi 14 18 toto 8 12


Alors on crit le programme suivant :

PROC SORT data=notes ; BY eleve ; PROC TRANSPOSE data=notes out=notes2; VAR note; ID matiere; BY eleve; RUN;
Axelle Chauvet-Peyrard

38

Anne 2006-2007

Langage SAS
Ce programme fournit le rsultat suivant :

Procdures de manipulation de donnes

table notes2 eleve _NAME_ math fran_ais tata note 15 10 titi note 14 18 toto note 8 12
On obtient presque ce que lon souhaitait. Linstruction BY eleve permet bien dobtenir une ligne par lve. Linstruction ID matiere dfinit bien la variable transposer. La variable matiere nexiste plus, mais a t remplace par autant de variables quil y avait de modalits de matiere. A noter que les caractres spciaux (ici le ) ne peuvent tre traduits dans le nom de la nouvelle variable (ici il a t remplac par un _). Enfin linstruction VAR note dfinit le contenu des nouvelles cases : dans mon tableau crois eleve*matiere, je souhaite mettre la note qui correspond ce profil. Une colonne subsidiaire est cre, qui rappelle le nom de la variable que lon a transpos.

Axelle Chauvet-Peyrard

39

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

Faire des jointures de tables avec la PROC SQL


Le langage SQL (Structured Query Language) est un langage de dfinition, de manipulation et de contrle des donnes au sein dune base de donnes. On parle souvent tort et travers de bases de donnes. Le principe en est dlaborer un systme de tables relies entre elles et organises de manire viter au maximum la redondance dinformations et faciliter la manipulation de donnes parfois trs volumineuses. SAS nest pas un systme de gestion de bases de donnes. En particulier, les tables de donnes sous SAS nont aucun lien entre elles. Mais bien quil ny ait pas proprement parler de bases de donnes sous SAS, il peut tre pratique de recourir au langage SQL ds que lon traite des donnes appartenant des tables diffrentes. La PROC SQL permet dcrire des requtes SQL sur des tables SAS. Il existe un outil presse-bouton qui permet de faire du SQL sans douleur : SAS Query (voir le paragraphe consacr dans la partie III B). Le langage SQL est trs riche, on propose ici de naborder que la syntaxe de requtes simples. Une PROC SQL na pas besoin de RUN; pour fonctionner. Par contre, on doit ajouter un QUIT; la fin.

Fusions contrles et jointures :


Reprenons lexemple de fusion de deux tables abord dans la Partie I, paragraphe Concatnation et fusion de tables . Le programme de fusion contrle :

PROC SORT data=a; BY nom; PROC SORT data=b; BY nom; DATA ab; MERGE a (rename=(note=note_a)) b (rename=(note=note_b)); BY nom; RUN;
Peut tre remplac par le programme SQL suivant :

PROC SQL; CREATE TABLE ab AS SELECT a.nom,a.note as note_a,b.note as note_b FROM a FULL JOIN b ON a.nom=b.nom; QUIT;

Traduction du programme SQL :


Je cre une table qui a pour nom ab, comme tant le rsultat de la requte suivante : Je slectionne les variables : nom provenant de a, note provenant de a (que jappelle note_a), note provenant de b (que jappelle note_b) A partir des tables a et b dont je fais une jointure complte Cette jointure portant sur la condition que le nom provenant de a gale le nom provenant de b.

Les diffrents types de jointure en SQL :


La jointure complte permet de garder toutes les lignes, mme celles qui nappartiennent qu une des deux tables jointes. Cest ce type de jointure qui correspond la fusion contrle en SAS, comme lexemple prcdent le montre. La jointure interne permet de ne garder que les individus appartenant aux deux tables jointes. Cest lorsquon souhaite raliser ce type de fusion que la PROC SQL devient intressante (voir lexemple ci-dessous). Il existe aussi des jointures gauche (on ne garde de la seconde table que les individus appartenant la premire table, mais on garde tous les individus de la premire table) et droite.

Exemple de jointure interne :


Axelle Chauvet-Peyrard

40

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

Supposons que dans notre fusion prcdente on nait souhait conserv que les lves appartenant la fois la table a et la table b. Ltape DATA salourdit dun test :

DATA ab; MERGE a (rename=(note=note_a) in=x) b (rename=(note=note_b) in=y); BY nom; IF x AND y THEN OUTPUT; RUN;
Tandis que dans le programme SQL, il suffit de remplacer FULL JOIN par INNER JOIN :

PROC SQL; CREATE TABLE ab AS SELECT a.nom,a.note as note_a,b.note as note_b FROM a INNER JOIN b ON a.nom=b.nom; QUIT;

Quelques bonnes raisons de prfrer SQL MERGE :


Pas besoin de PROC SORT. En effet, contrairement aux fusions contrles, les jointures ne rclament pas que les tables joindre soient prcdemment tries. Pas besoin que la variable de contrle porte le mme nom dans les deux tables. On peut dfinir lordre dans lequel on veut que les variables apparaissent dans la table (cest celui dfini dans la clause SELECT), alors quavec la DATA, on aura forcment les variables de a puis les variables de b. Le langage est intuitif.

Un autre exemple dutilisation de la PROC SQL


Supposons que lon dispose de la table langues suivante :

table langues nom langue tata anglais tata allemand tata espagnol titi allemand toto anglais toto allemand tutu anglais tutu espagnol
Et que lon souhaite avoir la liste des lves ayant choisi exactement deux langues. Sans la PROC SQL, il faudrait : Calculer le nombre de langues pour chacun des lves (le plus simple est alors dutiliser une PROC FREQ ; voir le paragraphe consacr dans la partie II B). Effectuer une tape DATA pour filtrer les seuls lves ayant choisi deux langues. Avec la PROC SQL, on crit :

PROC SQL; CREATE TABLE qui2langues AS SELECT DISTINCT nom FROM langues GROUP BY nom HAVING count(*)=2 ; QUIT;

Traduction du programme SQL :


Je cre une table de nom qui2langues comme tant le rsultat de la requte suivante : Je slectionne les valeurs distinctes de nom A partir de la table langues Je groupe mes observations par nom et ne garde que les noms qui apparaissent 2 fois dans la table. Axelle Chauvet-Peyrard

41

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

Crer un format avec la PROC FORMAT


Supposons que lon dispose dune variable numrique continue salaire et que lon souhaite faire un traitement qui utilise les tranches de salaire. Trois possibilits soffrent : Crer une nouvelle variable avec une tape DATA, qui chaque observation associe la tranche de salaire de lindividu. Problme : Redondance dinformation. La mme chose, mais en supprimant la variable salaire : Perte dinformation. La bonne solution consiste crer un format. Un format est un objet SAS, qui existe en propre et indpendemment de toute table, et qui associe des modalits caractre des plages de valeur donnes (numriques ou caractres). Un format se cre grce une PROC FORMAT. La procdure ne gnre pas de sortie dans lOUTPUT.

PROC FORMAT <options> ; VALUE nom_format plage1= valeur1 plage2= valeur2 ;


Une fois la PROC FORMAT soumise, le format est cr pour toute la dure de la session. On peut aussi stocker le format compil dans un catalogue, afin de pouvoir lutiliser une prochaine fois sans avoir soumettre nouveau le programme (voir la partie III C). Le nom dun format ne doit pas excder 8 caractres et ne doit pas finir par un chiffre. Si les plages de valeurs sont numriques, le format est dit numrique. Sinon, il est dit caractre, et son nom doit commencer par un $. Les plages de valeurs peuvent scrire sous forme dintervalle (par exemple : 0-100) ou sous forme de liste (par exemple : 0,1,2,5). Le signe < sert exclure une borne de lintervalle. Les plages doivent tre des ensembles disjoints.

Exemple :
PROC FORMAT ; VALUE tranche low-<12500 = pauvre 12500-30000 = moyen 30000<-high = riche ; RUN ;

Les options :
Pour viter davoir soumettre la PROC FORMAT chaque session, on peut choisir de sauvegarder le format compil dans un catalogue. Pour cela, il suffit de rajouter une option library=nom_catalog au moment de la cration du format. Si au contraire on dispose dun catalogue de formats dont on ne connat pas le code source, on peut visualiser leurs proprits (plages des valeurs et modalits associes) en lanant une PROC FORMAT avec options library= et fmtlib, et sans instruction value :

PROC FORMAT library=malib.formats fmtlib ; RUN ;


le catalogue formats.sas7bcat de la librarie malib.

liste les formats contenus dans

Application du format :
Le format fonctionne comme une tiquette que lon colle sur une variable le temps dune procdure. Supposons que lon souhaite connatre le nombre moyen denfants dans les familles pauvres, dans les familles revenus moyens et dans les familles riches. On va donc constituer des sous-groupes grce une instruction BY salaire ; encore faut-il lui prciser qu ce moment il doit lire les valeurs de salaire non comme des valeurs numriques mais comme une des modalits pauvre , moyen ou riche . Pour cela, on applique le format la variable salaire grce une instruction FORMAT :

FORMAT nom_variable nom_format. ; PROC MEANS data=donnees ; FORMAT salaire tranche. ; VAR nbenfants ; BY salaire ; RUN;
Axelle Chauvet-Peyrard

42

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

Attribuer des rangs aux observations avec la PROC RANK


La procdure PROC RANK recopie une table en y ajoutant une variable reprsentant le rang dune observation par rapport une variable donne. La procdure ne gnre pas de sortie dans loutput.

PROC RANK data= out= <options> ; VAR variable ; RANKS nom_pour_nouvelle_variable ; < BY variable ; >

Les options :
Loption data= spcifie toujours la table sur laquelle on travaille. Loption out= spcifie le nom de la table rsultat. Loption descending permet dordonner en sens inverse. Loption ties= permet de spcifier comment traiter le cas des ex-aequo. Les choix possibles sont high, low et mean. Loption percent permet de calculer des pourcentages cumuls : chaque rang est remplac par le rang fois 100 rapport au nombre dobservations non manquantes. Ainsi, lorsquune observation a un rang gale 8, cest que 8% des observations ont une valeur infrieure celle de ladite observation. Loption groups=n o n leur rang en n groupes.

permet de calculer des quantiles. Les observations sont regroupes selon

Les instructions :
Linstruction VAR permet de prciser selon quelle variable se fait le calcul de rang. Linstruction RANKS permet de stocker le rang dans une nouvelle variable.

Exemple :
Soit la table jeu suivante :

joueur points A 15 B 10 C 23 D 14 E 22 F 9 G 10 H 7
Et le programme :

Proc rank data=jeu out=jeures descending ties=high ; Var points ; Ranks rang ; Run;
Alors la table jeures contient :

Axelle Chauvet-Peyrard

43

Anne 2006-2007

Langage SAS

Procdures de manipulation de donnes

joueur A B C D E F G

points 15 10 23 14 22 9 10

rang 3 6 1 4 2 7 6

Les deux exemples suivants portent sur la table jeu, prive de sa dernire observation. Le programme suivant :

Proc rank data=jeu out=jeures groups=3 ; Var points ; Ranks rang ; Run;
dite la table jeures suivante :

joueur A B C D E F

points 15 10 23 14 22 9

rang 1 0 2 1 2 0

Avec cela on voit par exemple que C fait partie des 2 meilleurs tandis que B et F sont les deux moins bons. Le programme suivant :

Proc rank data=jeu out=jeures percent ; Var points ; Ranks rang ; Run;
dite la table jeures suivante :

joueur A B C D E F

points 15 10 23 14 22 9

rang 66,66666 33,33333 100 50 83,33333 16,66666

On lit par exemple que 1/3 des joueurs ont eu un score infrieur ou gal celui de B, donc infrieur ou gal 10.

Axelle Chauvet-Peyrard

44

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Partie II B Procdures de traitement statistique


Cette partie a pour but de prsenter quelques procdures de traitement statistique parmi les plus connues, en rappelant leurs syntaxes avec les options et les instructions principales et en fournissant quelques interprtations de sorties. Le but nest pas de fournir une liste exhaustive des options et instructions, chose que vous trouverez sans peine dans laide du logiciel, ni de faire un expos thorique des concepts statistiques qui reposent derrire ces procdures. Cependant, quelques procdures, comme la PROC CORR ou la PROC REG, sont particulirement dtailles.

La PROC FREQ tudie les variables qualitatives nominales (tableaux de frquence, tableaux de contingence, tests du Chi). La PROC MEANS dite des statistiques descriptives pour des variables quantitatives continues (moyenne, cart-type, quartiles). La PROC TABULATE dite des tableaux de statistiques descriptives. Son intrt consiste en la paramtrisation des tableaux. La PROC UNIVARIATE est la procdure la plus complte de statistiques descriptives sur variables continues. Elle permet galement de tracer des botes moustaches et de faire des tests dadquation une loi normale. La PROC CORR calcule des corrlations entre variables numriques : soit entre des variables continues (corrlations de Pearson) soit entre des variables ordinales (Tau-b de Kendall). La PROC TTEST teste lgalit des moyennes entre deux sous-populations. La PROC REG effectue des rgressions linaires multiples. La PROC LOGISTIC effectue des rgressions linaires sur des variables catgorielles (qualitatives). La PROC SYSLIN et la PROC MODEL estiment des modles plusieurs quations (systmes linaires pour la SYSLIN, non linaires pour la MODEL).

Axelle Chauvet-Peyrard

45

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Tableaux de frquence et de contingence avec la PROC FREQ


Le propos de la procdure PROC FREQ est de faire des statistiques univaries ou bivaries sur des variables nominales. Elle permet donc de dresser des tableaux de frquence et/ou des tableaux de contingence. Cest galement dans cette procdure que lon trouvera lopportunit de faire des tests du

PROC FREQ data= <order= > ; TABLES listes_variables </options> ; < BY variable ; > < WEIGHT variable ; >

Les options :
La plus intressante est loption order= , qui permet de choisir lordre dans lequel les modalits apparaissent. Retenons que order=freq trie le tableau de frquence par ordre deffectif dcroissant, order=data le trie selon lordre dapparition des modalits dans la table.

Linstruction TABLES et ses options :


Linstruction TABLES peut prendre deux formes : TABLES var1 var2 varn ; dite les tableaux de frquence des variables var1 jusqu varn. TABLES var1**varn ; dite pour chaque profil de (var1,,varn-2) le tableau crois (tableau de contingence) de varn-1 par varn. Loption out= permet denregistrer le rsultat de linstruction TABLES dans une table. Les autres options peuvent tre rsumes dans les tableaux suivants :

Pour un tableau de contingence ce que la procdure dite effectif de la case poucentages pourcentages en ligne pourcentages en colonne par dfaut en plus comment le supprimer nofreq nopercent noprint norow nocol

ce que la procdure peut diter effectifs thoriques carts entre effectif thorique et rel contributions la distance du chi test du chi et statistiques drives du chi
Axelle Chauvet-Peyrard

comment le demander expected deviation cellchi2 chisq

46

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Pour un tableau de frquence ce que la procdure dite effectif de la modalit pourcentage effectifs cumuls pourcentages cumuls comment le supprimer nofreq nopercent nocum

Lecture de sorties :
proc freq data=malib.bidon; tables zone taille*zone; run;
The FREQ Procedure Cumulative Frequency 4 13 15 30 50 Cumulative Percent 8.00 26.00 30.00 60.00 100.00

zone IF NE NW SE SW

Frequency 4 9 2 15 20

Percent 8.00 18.00 4.00 30.00 40.00

Table of taille by zone taille zone

Frequency Percent Row Pct Col Pct IF 1 0 0.00 0.00 0.00 1 2.00 7.69 25.00 3 6.00 75.00 75.00 4 8.00

NE 4 8.00 12.12 44.44 4 8.00 30.77 44.44 1 2.00 25.00 11.11 9 18.00

NW 0 0.00 0.00 0.00

SE 11 22.00 33.33 73.33 4 8.00 30.77 26.67 0 0.00 0.00 0.00 15 30.00

SW 18 36.00 54.55 90.00 2 4.00 15.38 10.00 0 0.00 0.00 0.00 20 40.00

Total 33 66.00

2 4.00 15.38 100.00 0 0.00 0.00 0.00 2 4.00

13 26.00

4 8.00

Total

50 100.00

Axelle Chauvet-Peyrard

47

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Exemple de commentaire : 40% des entreprises du secteur Bidon sont installes dans le sud ouest, ce qui reprsente 20 firmes. 90% de ces firmes sont des petites entreprises et 10% sont des PME. Les PME se retrouvent en effet majoritairement dans lest, le nord est et le sud est regroupant chacun plus de 30% des entreprises concernes. Les grandes entreprises sont rares dans le secteur, puisquelles nen reprsentent que 8%.

proc freq data=malib.bidon ; tables distribution*taille /chisq cellchi2 norow nocol; where distribution NE 'nationale'; run;
The FREQ Procedure Table of distribution by taille distribution taille

Frequency Cell Chi-Square Percent 1 locale

Total 42 85.71 7 14.29 49 100.00

33 9 0 0.7857 0.4121 2.5714 67.35 18.37 0.00 0 4 3 4.7143 2.4725 15.429 0.00 8.16 6.12 33 67.35 13 26.53 3 6.12

rgionale

Total

Statistics for Table of distribution by taille Statistic Chi-Square Likelihood Ratio Chi-Square Mantel-Haenszel Chi-Square Phi Coefficient Contingency Coefficient Cramer's V DF 2 2 1 Value 26.3846 24.1431 24.0833 0.7338 0.5916 0.7338 Prob <.0001 <.0001 <.0001

WARNING: 67% of the cells have expected counts less than 5. Chi-Square may not be a valid test. Sample Size = 49

La ligne Chi-Square du tableau gnr par loption chisq nous indique la valeur de la distance du et la p-value associe. Ici on rejetterait lhypothse nulle dindpendance des variables. Cela dit, on remarque que la plus grosse contribution la distance provient des trois grandes entreprises distribution rgionale du secteur. Bien que lexistence dune corrlation semble vidente lil, on peut sinterroger sur la validit du test du sur un chantillon aussi petit. Dailleurs, SAS nous met en garde !

Axelle Chauvet-Peyrard

48

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Statistiques descriptives quantitatives avec la PROC MEANS


Cette procdure est la premire quil faut connatre lorsquon souhaite effectuer des statistiques descriptives lmentaires sur des variables quantitatives. Par dfaut, elle calcule le nombre dobservations non manquantes, la moyenne, lcart-type, la valeur minimum et la valeur maximum de toutes les variables numrique de la table (ou des variables indiques par linstruction VAR). Avec les options appropries, on peut demander un grand nombre de statistiques : somme, mdiane, variance, skewness, kurtosis, quartiles, premier et dernier centile, premier et dernier dcile, etc. Lorsquune (ou plusieurs) de ces options est spcifie, cela annule ldition par dfaut. Il faudra donc expliciter toutes les statistiques que lon souhaite obtenir.

PROC MEANS data= <options> ; VAR liste_variables_quantitatives ; < BY variable ; > < CLASS variable ; > < FREQ variable ; > < WEIGHT variable ; > < ID variable ; > < OUTPUT <OUT=nom_table> <mot_cle_de_la_statistique=nom_stat_dans_la_table_sortie> <idem avec autres statistiques> ; >

Les options :
Les options les plus intressantes sont celles qui permettent de choisir les statistiques diter : N Effectif NMISS Nombre de valeurs manquantes MIN Minimum MAX Maximum RANGE Plage des valeurs = MAX MIN SUMWGT Somme des poids SUM Somme MEAN Moyenne STD Ecart-type STDERR Standard Error of Mean KURTOSIS Coefficient daplatissement SKEWNESS Coefficient dasymtrie USS Somme des carrs CSS Somme des carrs des carts la moyenne VAR Variance CV Coefficient de variation T Valeur de la statistique de Student pour le test (H0) : la moyenne est nulle PROBT P-value associe au test prcdent MEDIAN Mdiane QRANGE Distance interquartile = Q3 - Q1 Q1 et Q3 Premier et troisime quartiles P1 P5 P10 P90 P95 P99 Centiles Remarque : Ces statistiques sont dites par dfaut par la PROC UNIVARIATE (voir paragraphe consacr).

Les instructions :
Linstruction VAR permet de prciser sur quelle(s) variable(s) on travaille. Si on omet linstruction, la PROC MEANS prend en compte toutes les variables numriques de la table spcifie. Les instructions BY et CLASS permettent de faire des sous-groupes. Linstruction BY commande lexcution de la procdure sur chacunes des sous-populations quelle dfinit. Elle requiert que la table soit trie. Linstruction CLASS regroupe les observations qui ont un certain profil. La procdure nest excute quune seule fois et il nest pas ncessaire que la table soit trie. De plus, la prsentation des rsultats est plus synthtique quavec BY. Mais les rsultats dits sont les mmes. Axelle Chauvet-Peyrard

49

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Lorsquune variable apparat dans linstruction FREQ, tout se passe comme si chaque observation i apparaissait v(i) fois dans la table, o v(i) est la valeur en i de la variable dsigne par linstruction FREQ. Linstruction WEIGHT permet de dfinir une variable qui servira pondrer les observations avant le calcul des corrlations. Linstruction ID spcifie une variable qui sert didentifiant pour les observations. Linstruction OUTPUT sert rcuprer certaines des statistiques dans une table dont on spcifie le nom aprs OUT= . La liste des statistiques que lon souhaite enregistrer dans cette table est spcifie ensuite. On peut ventuellement dcider de renommer ces variables, car le nom gnr automatiquement par SAS nest pas trs clair. Admettons que lon veuille rcuprer la moyenne et lcart-type des trois variables qui ont t dsignes dans linstruction VAR par VAR v1 v2 v3 ; dans une table nomme resultat. Alors on crit :

OUTPUT

OUT=resultat

MEAN=moy1 moy2 moy3

STD=et1 et2 et3

Alors moy1 dsigne la moyenne de v1, moy2 la moyenne de v2,

Lecture de sorties :
proc means data=malib.bidon ; run ;
The MEANS Procedure Variable va ventes Label va (en MF) N 50 50 Mean 1562.42 0.0200000 Std Dev 3154.38 0.0433028 Minimum 139.0000000 0.0020000 Maximum 17842.00 0.2630000

proc means data=malib.bidon sum ; var ventes ; class zone distribution ; run ;
Analysis Variable : ventes N Obs 1 3 8 1 2 14 1 20

zone IF

distribution nationale rgionale locale rgionale rgionale locale rgionale locale

Sum 0.2630000 0.1960000 0.0190000 0.0740000 0.1890000 0.1740000 0.0100000 0.0750000

NE

NW SE

SW

La procdure calcule la somme des parts de march dtenues par les entreprises correspondant un certain profil (zone ; distribution). Par exemple, les entreprises locales implantes dans le sud-est reprsentent 17% du march.

Axelle Chauvet-Peyrard

50

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Des tableaux de statistiques descriptives avec la PROC TABULATE


Cette procdure est utile pour dresser des tableaux de statistiques descriptives. Les statistiques que la PROC TABULATE peut diter sont sensiblement les mmes que dans la PROC MEANS. La force de cette procdure rsidant dans la prsentation des rsultats.

PROC TABULATE <data= > <options> ; CLASS variables ; < CLASSLEV variables / style= ; > < KEYLABEL keyword=description ; > < KEYWORD keywords / style= ; > TABLE <<page_expression>, row expression>, column expression ; VAR variables ;

Les instructions :
Pour le calcul des statistiques descriptives :
Linstruction CLASS permet de dfinir les variables catgorielles qui seront utilises dans la proc, soit pour tre tudies (tableaux de frquence et de contingence) soit pour constituer des sous-groupes. Linstruction VAR permet, comme dhabitude, de prciser les variables (numriques) sur lesquelles on souhaite travailler. Linstruction TABLE dfinit la fois ce qui est calcul et la manire dont les rsultats sont prsents dans le tableau. On doit au moins dfinir les lments qui constituent les colonnes du tableau. Il sagira dune combinaison de noms de variables et de mots-cls de statistiques, relis par des oprateurs : Loprateur espace est la concatnation des lments Loprateur * ralise le croisement des lments Loprateur , spare ce qui sera en ligne de ce qui sera en colonne. Voir page daprs la liste des mots-cls. Toutes les variables qualitatives invoques doivent tre dfinies au pralable dans linstruction CLASS. Toutes les variables quantitatives invoques doivent tre rpertories dans linstruction VAR.

Exemples :
CLASS sexe ; TABLE sexe ; CLASS sexe ; TABLE (n pctn),sexe ; CLASS sexe diplome ; TABLE sexe*diplome ; TABLE salaire ; VAR salaire ; TABLE (sum mean std),salaire ; VAR salaire ; CLASS sexe ; TABLE (sum mean),salaire*sexe ; VAR salaire ;
Edite un tableau contenant les effectifs des modalits de sexe o les modalits sont les colonnes du tableau. Edite un tableau deux lignes contenant les effectifs et pourcentages des modalits de sexe (les colonnes correspondent aux modalits de sexe). Edite un tableau une ligne (leffectif) dont chaque colonne (modalits de sexe) sont subdivises selon les modalits de diplome. Edite un tableau une colonne (le salaire) et une ligne (somme de la variable salaire). dite un tableau 3 lignes (la somme, la moyenne et lcarttype) et 1 colonne (la variable salaire). Edite un tableau 2 lignes (la somme et la moyenne) et 1 colonne pour salaire, laquelle est subdivise selon les modalits de sexe. Sont donc calcules la somme et la moyenne des salaires sur les sous-populations des hommes et des femmes.

Axelle Chauvet-Peyrard

51

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Pour la prsentation des rsultats :


Linstruction CLASSLEV permet daffecter un style aux variables de groupe. Linstruction KEYWORD permet daffecter un style aux titres des statistiques dites. Note : Ces deux instructions utilisent loption style= . Voir le paragraphe suivant pour plus de dtails sur cette option. Linstruction KEYLABEL affecte un libell une statistique.

Autres instructions :
Les instructions BY, FREQ et WEIGHT sont galement utilisables dans cette procdure (voir leur description dans le paragraphe sur la PROC MEANS).

Les options :
Loption classdata= permet de prciser le nom dune table contenant les variables qui serviront constituer les sous-groupes. Loption exclusive limine de lanalyse les profils qui ne figurent pas dans la table dclare aprs classdata= . Loption order= ordonne les profils selon la mthode spcifie : data (ordre dapparition dans la table) et freq (ordre dcroissant de leffectif des profils) sont les plus utiles. Loption style= dfinit la mise en forme des cellules du tableau. Loption style=parent indique que les cellules hritent de la mise en forme du titre de la colonne. Sinon on dfinit les paramtres entre []. On se rfrera laide en ligne de SAS pour une liste exhaustive des paramtres. Citons-en quelques uns : Background Foreground Bordercolor Cell_height Cell_width Font_face Font_size couleur de fond des cellules couleur du texte couleur de la bordure du tableau hauteur des cellules largeur des cellules police taille de la police

Exemple dutilisation : style=[background=red] Note : la mise en forme nest visible que dans le fichier export par ODS (voir partie III C).

Liste des mots-cls statistiques :


N Effectif NMISS Nombre de valeurs manquantes PCTN Pourcentage de leffectif total MIN Minimum MAX Maximum RANGE Plage des valeurs = MAX MIN SUMWGT Somme des poids SUM Somme PCTSUM Pourcentage de la somme MEAN Moyenne STD Ecart-type STDERR Standard Error of Mean USS Somme des carrs CSS Somme des carrs des carts la moyenne VAR Variance CV Coefficient de variation T Valeur de la statistique de Student pour le test (H0) : la moyenne est nulle PROBT P-value associe au test prcdent MEDIAN Mdiane QRANGE Distance interquartile Q1 et Q3 Premier et troisime quartiles P1 P5 P10 P90 P95 P99 Centiles

Axelle Chauvet-Peyrard

52

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Lecture de sorties :
ods rtf file="w:/sas/cours/tabulate.rtf"; PROC TABULATE data=malib.bidon style=[font_size=2 font_face=verdana foreground=blue]; CLASS zone distribution; CLASSLEV zone distribution / style=[background=white font_size=2 font_face=verdana]; KEYLABEL pctn='percent' n='effectif' mean='moyenne' std='ct-type'; TABLE (mean std),va*zone; TABLE zone,distribution*(n pctn); VAR va; RUN; ods rtf close;
On obtient la sortie .rtf suivante :

va (en MF) zone


IF NE NW SE SW 309.85 51.23

moyenne cart-type

8279.50

790.89 8315.50 1003.80 904.39 669.40

6876.15 1784.26

distribution
locale nationale rgionale effectif percent effectif percent effectif percent

zone
IF NE NW SE SW . 8 . 14 20 . 16.00 . 28.00 40.00 1 . . . . 2.00 . . . . 3 1 2 1 . 6.00 2.00 4.00 2.00 .

Linstruction TABLE (mean std),va*zone; calcule la moyenne et lcart-type (deux lignes dans le tableau) de la valeur ajoute sur chacune des sous-populations zone=IF, zone=NE, zone=NW, zone=SE et zone=SW (modalits en colonnes). Linstruction TABLE zone,distribution*(n pctn); calcule leffectif et le pourcentage de leffectif total de chacun des profils de (zone, distribution) recenss dans la table. Les modalits de zone sont en ligne. Les modalits de distribution et les statistiques sont en colonne. Linstruction

KEYLABEL pctn='percent' n='effectif' std='cart-type'; permet aux noms des statistiques dtre clairs.
Les rsultats apparaissent en Verdana bleu de taille 2 (9 pt) grce loption font_face=verdana foreground=blue] de la PROC. Les cases portant le titre des modalits ont un fond blanc grce linstruction

mean='moyenne'

style=[font_size=2

CLASSLEV zone distribution / style=[background=white font_size=2 font_face=verdana];


Les tableaux dits dans la fentre Output sont les mmes, la mise en forme (couleur, police) en moins.

Axelle Chauvet-Peyrard

53

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Statistiques univaries et distributions avec la PROC UNIVARIATE


La procdure PROC UNIVARIATE est fort utile pour dblayer le terrain avant de se lancer dans des tests statistiques plus labors. Par dfaut, la sortie gnre par la PROC UNIVARIATE comporte cinq blocs : 1. Calcul des statistiques descriptives suivantes : nombre dobservations, moyenne, cart-type, skewness (coefficient dasymtrie), somme des carrs, coefficient de variation, somme des poids, somme de la variable, variance, kurtosis (coefficient daplatissement), somme des carrs des carts la moyenne, cart-type de la moyenne. Paramtres lmentaires de distribution : moyenne, mdiane, mode, cart-type, variance, cart entre maximum et minimum, et distance interquartile. Tests pour (H0) : la moyenne est nulle (3 tests diffrents sont raliss). Quantiles essentiels. Observations extrmes (les 5 plus basses et les 5 plus leves).

2. 3. 4. 5.

La PROC UNIVARIATE peut galement raliser un test de normalit ainsi que des graphiques de distribution : box plot (bote moustaches), diagramme stem and leaf et graphe dajustement une loi normale. Cest enfin la reine des quantiles, puisquelle peut calculer tous les centiles, il suffit de passer commande !

PROC UNIVARIATE data= <options> ; VAR liste_variables ; < PROBPLOT variable / options ; > < BY liste_variables ; > < FREQ variable ; > < WEIGHT variable ; > < ID liste_variables ; > < OUTPUT <OUT=nom_table> <mot_cle_de_la_statistique=nom_stat_dans_la_table_sortie> <idem avec autres statistiques> <PCTLPTS=liste_centiles PCTLPRE=liste_prfixes_centiles> < PCTLNAMES=liste_suffixes_pour_centiles> ; >

Les options :
Les deux options les plus frquemment utilises sont loption normal et loption plots. Loption normal produit un test dadquation une loi normale de la distribution de la (des) variable(s) indique(s) dans linstruction VAR. Loption plots ralise les graphiques de distribution dont on a dj parl.

Loption freq qui gnre ldition de tableaux recensant les modalits de la (des) variable(s) indique(s) dans linstruction VAR, ainsi que les effectifs, frquences et frquences cumules desdites modalits. Loption mu0= permet de dfinir la valeur de rfrence pour lhypothse nulle du test de location (par dfaut, cette valeur est gale 0, ce qui signifie que lhypothse nulle du test est : la moyenne est nulle). Loption nextrobs= dfinit le nombre dobservations extrmes que lon souhaite diter (par dfaut ce paramtre vaut 5, ce qui signifie que les 5 plus basses et les 5 plus leves des observations sont dites).

Axelle Chauvet-Peyrard

54

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Les instructions :
Les instructions VAR, BY, WEIGHT, FREQ et ID fonctionnent comme pour les autres procdures qui les utilisent. On peut se rfrer lexplication donne dans le cadre de la PROC MEANS. Linstruction PROBPLOT permet de tracer la courbe de distribution de la variable indique, en la superposant une courbe de distribution choisie parmi les lois classiques. Ce choix (facultatif) seffectue grce loption que lon indique derrire linstruction PROBPLOT. Par exemple, pour tracer la courbe dune loi normale, on utilise loption normal. Cette option comporte comme sous-options (indiques entre parenthses) : mu= et sigma= qui prcisent les paramtres de la loi ; mu=est (resp. sigma=est) indique que la moyenne (resp. lcart-type) considre est celle (celui) de lchantillon. On peut galement choisir de tracer la courbe dune loi bta, gamma, exponentielle, lognormale, ou Weibull. On se rfrera laide de SAS pour le dtail de ces options. Les autres options ont trait la prsentation des courbes. L encore, on se rfrera laide de SAS.

Calcul de centiles dans linstruction OUTPUT :


Linstruction OUTPUT sert toujours rcuprer certaines des statistiques dans une table dont on spcifie le nom aprs OUT= . La liste des statistiques que lon souhaite enregistrer dans cette table est spcifie ensuite. Cest aussi dans cette instruction que lon peut demander des centiles. Il suffit den donner la liste aprs le mot-cl PCTLPTS= . Il est ncessaire de prciser un ou des prfixes pour que SAS sache comment les nommer. On les prcise aprs PCTLPRE= . Si on ne prcise quun prfixe, il est le mme pour tous les centiles demands. Sinon, on peut en prciser autant quil y a de centiles : alors le premier prfixe sert au premier des centiles demands, et ainsi de suite On peut ne pas vouloir rcuprer ces quantiles dans une table. Il suffit pour cela de ne pas spcifier la commande OUT= . Notons quil est aussi possible de choisir dautres suffixes que ceux par dfaut (qui sont les numros des centiles) grce la commande PCTLNAMES= .

Axelle Chauvet-Peyrard

55

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

La sortie standard et les mots-cls associs chaque statistique dite :


Ci dessous on figure lallure dune sortie standard de PROC UNIVARIATE, dans laquelle on a remplac les valeurs des statistiques par les mots cls qui servent dsigner chacune de ces statistiques dans la liste de variables de linstruction OUTPUT. The UNIVARIATE Procedure Variable : ... Moments N Mean Std Deviation Skewness Uncorrected SS Coeff Variation N MEAN STD SKEWNESS USS CV Sum Weights Sum Observations Variance Kurtosis Corrected SS Std Error Mean SUMWGT SUM VAR KURTOSIS CSS STDMEAN

Basic Statistical Measures Location Mean Median Mode MEAN MEDIAN MODE Std Deviation Variance Range Interquartile range Variability STD VAR RANGE QRANGE

Tests for Location: Mu0=0.00 Test Statistic Students t Sign Signed Rank T M S Value T MSIGN SIGNRANK Pr > | t | Pr >= | M | Pr >= | S | p-value PROBT PROBM PROBS

Quantiles (Definition 5) Quantile 100% Max 99% 95% 90% 75% Q3 50% Med 25% Q1 10% 5% 1% 0% Min Estimate MAX P99 P95 P90 Q3 MEDIAN Q1 P10 P5 P1 MIN

Extreme Observations ------Lowest-----------Highest-----Value Obs Value Obs Outre ces statistiques, il est galement possible de demander dans linstruction OUTPUT : NMISS NOBS NORMAL PROBN nombre dobservations ayant une valeur manquante nombre total dobservations statistique du test de normalit niveau de significativit du test de normalit

Axelle Chauvet-Peyrard

56

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Exemple :
PROC UNIVARIATE plot normal ; VAR salaire ; BY sexe ; RUN ;
-------------------------------------------- sexe=F -----------------------------------The UNIVARIATE Procedure Variable: salaire (salaire en euros) Moments N Mean Std Deviation Skewness Uncorrected SS Coeff Variation 16 1589 714.659546 2.68443397 48059810 44.9754277 Sum Weights Sum Observations Variance Kurtosis Corrected SS Std Error Mean 16 25424 510738.267 8.59227515 7661074 178.664886

Basic Statistical Measures Location Mean Median Mode 1589.000 1379.000 1379.000 Variability Std Deviation Variance Range Interquartile Range 714.65955 510738 2942 694.00000

Tests for Location: Mu0=0 Test Student's t Sign Signed Rank -Statistict M S 8.893745 8 68 -----p Value-----Pr > |t| Pr >= |M| Pr >= |S| <.0001 <.0001 <.0001

Tests for Normality Test Shapiro-Wilk Kolmogorov-Smirnov Cramer-von Mises Anderson-Darling --Statistic--W D W-Sq A-Sq 0.685914 0.282596 0.270147 1.643833 -----p Value-----Pr Pr Pr Pr < > > > W D W-Sq A-Sq 0.0001 <0.0100 <0.0050 <0.0050

Quantiles (Definition 5) Quantile 100% Max 99% 95% 90% 75% Q3 50% Median 25% Q1 10% 5% 1% 0% Min Axelle Chauvet-Peyrard Estimate 3963.0 3963.0 3963.0 2088.0 1859.5 1379.0 1165.5 1033.0 1021.0 1021.0 1021.0 Anne 2006-2007

57

LANGAGE SAS

Procdures de traitement statistique

Extreme Observations ----Lowest---Value 1021 1033 1067 1097 1234 Obs 15 13 16 9 14 ----Highest--Value 1844 1875 1905 2088 3963 Obs 8 4 3 2 1

Stem 4 3 3 2 2 1 1

Leaf 0

# 1

Boxplot *

1 1 899 3 00112444444 11 ----+----+----+----+ Multiply Stem.Leaf by 10**+3

| +--+--+ *-----*

Normal Probability Plot 4250+ | * | ++++++ 2750+ +++++++ | +++++++* | +++++++* * * 1250+ * * * *+*+*+** * * +----+----+----+----+----+----+----+----+----+----+ -2 -1 0 +1 +2 -------------------------------------------- sexe=H -----------------------------------The UNIVARIATE Procedure Variable: salaire (salaire en euros) Moments N Mean Std Deviation Skewness Uncorrected SS Coeff Variation 15 2264.33333 1395.26227 1.74834242 104162677 61.6191199 Sum Weights Sum Observations Variance Kurtosis Corrected SS Std Error Mean 15 33965 1946756.81 3.26071832 27254595.3 360.25517

Basic Statistical Measures Location Mean Median Mode 2264.333 1951.000 . Variability Std Deviation Variance Range Interquartile Range 1395 1946757 5129 1160

Tests for Location: Mu0=0 Axelle Chauvet-Peyrard

58

Anne 2006-2007

LANGAGE SAS
Test Student's t Sign Signed Rank -Statistict M S 6.28536 7.5 60

Procdures de traitement statistique


-----p Value-----Pr > |t| Pr >= |M| Pr >= |S| <.0001 <.0001 <.0001

Tests for Normality Test Shapiro-Wilk Kolmogorov-Smirnov Cramer-von Mises Anderson-Darling --Statistic--W D W-Sq A-Sq 0.814436 0.230963 0.165237 0.983563 -----p Value-----Pr Pr Pr Pr < > > > W D W-Sq A-Sq 0.0057 0.0300 0.0136 0.0097

Quantiles (Definition 5) Quantile 100% Max 99% 95% 90% 75% Q3 50% Median 25% Q1 10% 5% 1% 0% Min Estimate 6097 6097 6097 4268 2507 1951 1347 1036 968 968 968

Extreme Observations ----Lowest---Value 968 1036 1082 1347 1353 Obs 15 13 14 10 11 ----Highest--Value 2286 2507 3353 4268 6097 Obs 4 6 3 2 1

Axelle Chauvet-Peyrard

59

Anne 2006-2007

LANGAGE SAS
Stem 6 5 4 3 2 1 0 Leaf 1 3 4 02235 0013449 # 1 1 1 5 7

Procdures de traitement statistique


Boxplot * 0 | +--+--+ +-----+

----+----+----+----+ Multiply Stem.Leaf by 10**+3

Normal Probability Plot 6500+ * | ++++++ | *+++++++ 3500+ +++*+++ | +++**+* * | * *+*+*+** * 500+ *+++++++ +----+----+----+----+----+----+----+----+----+----+ -2 -1 0 +1 +2 Les deux analyses ci-dessus correspondent au calcul de statistiques univaries sur les deux souspopulations dfinies par les modalits de la variable sexe (instruction BY) : sous-population masculine et sous-population fminine. Outre la sortie standard, un test de normalit a t dit : vu que la taille de notre chantillon est assez petite, on se rfre au test de Shapiro-Wilk. La p-value tant trs infrieure 0,05 dans les deux cas, on rejette 5% lhypothse dadquation une loi normale des deux distributions de salaire considres. Ci-aprs ldition des botes moustaches gnres par loption PLOT.
The UNIVARIATE Procedure Variable: salaire (salaire en euros) Schematic Plots | | + | | | + | | | + | | | + | | | + | | | + | | | + | | | + | |

6000

5500

5000

4500

0 *

4000

3500

3000

2500

| | | | | | | +-----+ | | | + |

Axelle Chauvet-Peyrard

60

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique


| | | | 2000 + | *-----* | +-----+ | | | | | | | | | + | | | 1500 + | | | | | *-----* +-----+ | | | | | +-----+ | 1000 + | | ------------+-----------+----------sexe F H

On prfrera diter les boxplots avec une procdure adapte, soit la PROC BOXPLOT (voir le paragraphe consacr dans la partie II C).

Axelle Chauvet-Peyrard

61

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Les corrlations avec la PROC CORR


La procdure PROC CORR permet de calculer des coefficients de corrlation entre variables numriques. Par dfaut, la procdure dite la matrice des corrlations linaires :

rXY =

cov( x, y ) X . Y

Alors il existe une relation linaire entre X et Y si et seulement si | rXY | = 1. La procdure dite galement la p-value relative au test de significativit de chaque coefficient. Si cette valeur est infrieure 0,05 on peut conclure que le coefficient est significativement diffrent de zro au seuil de 5%.

Autres mesures de la dpendance entre variables quantitatives :


On peut galement demander ldition du alpha de Cronbach, qui, en quelque sorte, mesure la cohrence interne de la somme des variables considres dans la procdure. La valeur maximale de est 1. Si vaut 1, cest que toutes les variables sont lies linairement deux deux. La PROC CORR offre une autre possibilit pour mesurer la dpendance entre deux variables quantitatives X et Y : la statistique D de Hoeffding. On nexplicite pas le dtail de la statistique ici, il suffit pour le moment de savoir que plus D est proche de 1, plus il existe une dpendance forte entre X et Y. Il est galement possible de demander les coefficients de corrlation partielle (corrlation corrige de linfluence de certaines variables), bien utiles pour liminer les effets de structure. Le coefficient de corrlation partielle entre X et Y corrig de linfluence de Z1,,Zp est gal au coefficient de corrlation linaire entre les rsidus eX et eY des rgressions de X et Y sur Z1,,Zp.

Le tau-b de Kendall et le coefficient de corrlation des rangs de Spearman :


Dautre part, il est possible dobtenir le coefficient b de Kendall ou le coefficient de corrlation des rangs de Spearman, qui mesurent la corrlation entre deux variables ordinales :

b ( X ,Y ) =

CD (n E X )(n EY )

o n est le nombre total de paires dindividus (i ; j) C est le nombre de paires (i ; j) concordantes , cest--dire telles que i et j sont classs dans le mme ordre pour les variables X et Y D est le nombre de paires discordantes EX est le nombre dex-aequo au moins pour X, cest--dire Xi = Xj EY est le nombre dex-aequo au moins pour Y Si | b | = 1, il existe alors une relation biunivoque entre X et Y. On pourra dire que X est une fonction strictement (d)croissante de Y et vice versa. Pour le coefficient de corrlation des rangs de Spearman, on commence par calculer rangX et rangY ; rangX vaut 1 pour la plus grande valeur de X, 2 pour la deuxime plus grande valeur de X, etc Et alors s est le coefficient de corrlation linaire entre rangX et rangY. Remarque : Comme il sagit dune procdure qui traite des variables numriques, on ne peut pas lui demander de traiter des variables caractres ! Les coefficients b et s seront dits sur des variables numriques auxquelles on aura appliqu un format. Tous les autres coefficients relatifs la corrlation entre variables qualitatives sobtiennent avec la PROC FREQ, dont la raison dtre est justement le traitement statistique des variables qualitatives.

Axelle Chauvet-Peyrard

62

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

PROC CORR data= <options> ; VAR liste_variables ; < WITH liste_variables ; > < BY liste_variables ; > < FREQ variable ; > < PARTIAL liste_variables ; > < WEIGHT variable ; >

Les options : (voir tableau rcapitulatif page suivante)


Par dfaut la procdure calcule les coefficients de corrlation linaire dits de Pearson. Pour obtenir le b de Kendall, il faut prciser loption kendall. Pour obtenir le coefficient de corrlation des rangs de Spearman, il faut prciser loption spearman. Enfin pour obtenir le D de Hoeffding, il faut prciser loption hoeffding. Notons qualors la matrice des corrlations linaires nest plus dite. Si on souhaite lobtenir tout de mme, il faut prciser loption pearson. On peut rcuprer les corrlations linaires dans une table grce loption outp= , et pareil pour les autres coefficients grce outk= , outs= et outh= . Parmi les options qui sutilisent avec loption PEARSON, mentionnons loption cov qui dite la matrice des covariances et loption nocorr qui supprime le calcul des corrlations linaires. Parmi les autres options, la plus frquemment utilise est loption rank, qui permet dditer les corrlations par ordre dcroissant. Si le nombre de variables croises est important est que lon ne veut garder dans le listing que les 5 meilleures corrlations (par exemple), on prcisera loption best=5.

Les instructions :
Linstruction VAR permet de prciser les variables auxquelles on sintresse. Elles doivent tre numriques. Par dfaut, la matrice des corrlations croise toutes les variables dfinies dans VAR deux deux. Linstruction WITH permet de choisir les variables qui apparaissent en ligne dans la matrice. Seront croises uniquement chaque variable de VAR avec chaque variable de WITH. Linstruction BY sert distinguer des sous-groupes dans notre population. Les corrlations sont alors calcules pour chacun des sous-groupes, le dcoupage de la population se faisant suivant les modalits des variables prcises dans linstruction BY. Linstruction PARTIAL fournit la liste des variables dont on veut supprimer linfluence dans le calcul des corrlations partielles. Linstruction WEIGHT permet de dfinir une variable qui servira pondrer les observations avant le calcul des corrlations. Lorsquune variable apparat dans linstruction FREQ, tout se passe comme si chaque observation i apparaissait v(i) fois dans la table, o v(i) est la valeur en i de la variable dsigne par linstruction FREQ.

Axelle Chauvet-Peyrard

63

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Rcapitulatif des options de la PROC CORR

Ce que la procdure dite Statistiques descriptives univaries

Comment le supprimer option NOSIMPLE

Matrice des corrlations linaires

Dfinir une option KENDALL, SPEARMAN ou HOEFFDING sans prciser PEARSON ou encore : option NOCORR

Axelle Chauvet-Peyrard

par dfaut on peut demander en plus

et des niveaux de significativit de chaque coefficient

option NOPROB

Ce que la procdure peut diter tau-b de Kendall coefficient de corrlation des rangs de Spearman mesure de liaison de Hoeffding coefficient alpha de Cronbach matrice des covariances somme des carrs et des produits somme des carrs et des produits des carts la moyenne coefficients de corrlation partielle variances et carts-type partiels coefficients de Pearson pondrs coefficients calculs sur des sous-populations matrice des corrlations non carre

Comment le demander option KENDALL option SPEARMAN option HOEFFDING option ALPHA (avec option PEARSON) option COV (avec option PEARSON) option SSCP (avec option PEARSON) option CSSCP (avec option PEARSON) instruction PARTIAL (sauf avec option HOEFFDING) instruction PARTIAL (avec option PEARSON) instruction WEIGHT instruction BY instruction WITH

64

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Lecture de sortie :
3 The CORR Procedure Variables: salaire subor Simple Statistics Std Dev Sum 1132 5.53464 4.61671 59389 61.00000 224.00000 anciennete

Variable salaire subor anciennete

N 31 31 31

Mean 1916 1.96774 7.22581

Minimum 968.00000 0 0

Maximum 6097 30.00000 18.00000

Simple Statistics Variable Label salaire salaire en euros subor nombre de subordonns anciennete Pearson Correlation Coefficients, N = 31 Prob > |r| under H0: Rho=0 salaire salaire salaire en euros subor nombre de subordonns anciennete 1.00000 subor 0.84629 <.0001 1.00000 anciennete 0.34976 0.0538 0.34600 0.0566 1.00000

0.84629 <.0001 0.34976 0.0538

0.34600 0.0566

Voici lexemple dune sortie standard de PROC CORR. Seule linstruction VAR a t prcise, sans aucune option. La procdure dite des statistiques univaries sur les trois variables concernes : nombre dobservations non manquantes, moyenne, cart-type, somme, minimum et maximum, ainsi que les labels desdites variables. Ensuite, elle dite la matrice carre des corrlations linaires, contenant aussi les niveaux de significativit des coefficients en question. On conclurait que la rmunration dun employ semble assez fortement lie au nombre de subordonns quil a ; ces deux variables tant lies, bien que beaucoup plus faiblement, lanciennet de lemploy.

Variables:

The CORR Procedure cine musee bibli

theatre

concert

Spearman Correlation Coefficients, N = 43 cine cine musee musee bibli bibli theatre theatre concert concert cine 1.00000 musee 1.00000 bibli 1.00000 theatre 1.00000 concert 1.00000 theatre 0.21904 bibli 0.45953 musee 0.45953 concert -0.24795 bibli -0.45746 musee -0.13112 concert -0.16705 concert -0.45746 cine 0.21904 theatre -0.24795 bibli -0.12184 cine -0.13112 theatre 0.15959 bibli 0.15959 musee -0.16705 concert -0.00120 theatre 0.03526 cine -0.12184 musee 0.03526 cine -0.00120

Cette deuxime sortie a t obtenue avec les options SPEARMAN, RANK, NOSIMPLE et NOPROB. On voit que les gens qui aiment bien aller la bibliothque ont tendance tre les mmes que ceux qui aiment bien aller au muse, alors quils diffrent assez souvent de ceux qui apprcient les concerts. Axelle Chauvet-Peyrard

65

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Test dgalit des moyennes avec la PROC TTEST


Nous ntudions ici que laspect de la PROC TTEST qui permet de comparer les moyennes dune certaine variable pour deux sous-populations. Dans ce cadre, la procdure PROC TTEST permet de raliser dune part un test dgalit des variances de deux sous-populations, et dautre part deux tests dgalit des moyennes (lun pour le cas o les variances sont gales et lautre pour le cas o les variances sont significativement diffrentes). Linstruction VAR dfinit la variable sur laquelle on veut faire le test. Linstruction CLASS induit la variable qui dfinit les sous-groupes. La sortie de la PROC TTEST prsente dabord un tableau des moyennes et cart-types pour chacune des deux sous-populations, ainsi que des intervalles de confiance pour chacune de ces quatre grandeurs. Puis le deuxime tableau prsente le rsultat du test dhypothse nulle : (H0) : moy1 moy1 = m. Par dfaut m=0, et le test est ralis dabord dans le cas dgalit des variances puis dans le cas de variances significativement diffrentes. On peut dfinir m 0 grce loption H0. Le dernier tableau expose le rsultat du test dgalit des variances. Les tests raliss par cette procdure ncessitent lhypothse de normalit des distributions. On commencera donc toujours par effectuer une PROC UNIVARIATE option NORMAL avec en instruction VAR la variable numrique laquelle on sintresse et en instruction BY la variable qui dfinit les sousgroupes. Les deux tests de normalit doivent tre positifs.

PROC TTEST data= <options> ; CLASS variable ; <VAR variable_numrique ;> <BY variable ;> <WEIGHT variable ;>

Les options :
Loption alpha= dfinit la valeur du seuil pour le calcul des intervalles de confiance. Loption h0= permet de dfinir la valeur m telle que lon teste si lcart entre les moyennes est gal m. Par dfaut, m=0. Loption cochran dite lapproximation par la mthode de Cochran en plus de celle par la mthode de Satterthwaite pour le cas o les variances sont significativement diffrentes. Loption ci=none supprime ldition de lintervalle de confiance pour lcart-type.

Les instructions :
Comme toujours, linstruction VAR permet de prciser sur quelles variables (quantitatives) on travaille. Par dfaut, le test sera fait pour toutes les variables numriques de la table, sauf celles ventuellement utilises dans les instructions BY, FREQ et WEIGHT. Linstruction CLASS dfinit les sous-groupes sur lesquels on veut effectuer le test. Par exemple, linstruction CLASS sexe ; indique que lon souhaite comparer les moyennes entre le sous-groupe des hommes et le sous-groupe des femmes. Linstruction BY sert toujours dfinir des sous-populations. Les tests sont alors raliss pour chacune de ces sous-populations. Linstruction WEIGHT permet toujours de pondrer les observations.

Axelle Chauvet-Peyrard

66

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Lecture dune sortie standard :


proc ttest data=malib.employe; var salaire; class sexe; run;

The TTEST Procedure Statistics Lower CL Mean Mean 1208.2 1491.7 -1482 1589 2264.3 -675.3 Upper CL Lower CL Mean Std Dev Std Dev 1969.8 3037 131.21 T-Tests Variable salaire salaire Method Pooled Satterthwaite Variances Equal Unequal DF 29 20.6 t Value -1.71 -1.68 Pr > |t| 0.0975 0.1082 527.92 1021.5 873.87 714.66 1395.3 1097.3 Upper CL Std Dev Std Err 1106.1 2200.5 1475.1 178.66 360.26 394.35

Variable salaire salaire salaire

sexe

F 16 H 15 Diff (1-2)

Equality of Variances Variable salaire Method Folded F Num DF 14 Den DF 15 F Value 3.81 Pr > F 0.0146

Il sagit ici de comparer la rmunration moyenne des hommes celle des femmes. On lit que le test dgalit des variances conclut au rejet de lhypothse nulle au seuil de 5%. Ayant conclu une diffrence significative des variances, on sintresse au test dgalit des moyennes selon la mthode de Satterthwaite. Ici si lon prend un seuil derreur de 5%, on accepte lhypothse nulle dgalit des moyennes. Mais on peut toutefois remarquer que la moyenne fminine : 1589, est bien en-dessous de la moyenne masculine : 2264,3. En fait le problme ici, cest quon ne peut raisonnablement retenir lhypothse de normalit de salaire sur chacun des sous-groupes.

Axelle Chauvet-Peyrard

67

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Rgression linaire multiple avec la PROC REG


Cette procdure permet de raliser la rgression linaire dune variable numrique y sur le sous-espace engendr par les variables numriques x1,,xp. On a :

y =b0 +b1x1 +...+bp x p +u

O u est le rsidu et b0,,bp sont les paramtres. Il est toujours bon de faire quelques graphiques avant toutes choses afin de ne pas se lancer tte baisse dans une rgression linaire qui ne serait pas pertinente (homoscdasticit, forme de la fonction de rgression non linaire).

PROC REG data= <options> ; MODEL variable_explique = variables_explicatives </options> ; < BY liste_variables ; > < ID liste_variables ; > < WEIGHT variable ; > < PLOT var_ordonnee*var_abscisse </options> ; > < RESTRICT equation ; > < <label : > TEST equation ; > < OUTPUT out= table_sortie liste_stats_a_garder ; >

Quelques options de la PROC REG :


Loption alpha= dfinit la valeur du seuil utilis pour calculer les intervalles de confiance. Loption corr dite la matrice des corrlations. Loption simple dite la somme, moyenne, variance, cart-type et somme des carrs pour la variable explique et chacune des variables explicatives. Loption usscp dite les sommes des carrs Loption all runit les trois options prcdentes. Loption outest= permet de rcuprer dans une table les paramtres estims. Il est peu prs possible de rcuprer tout ce quon veut. On se rfrera laide de SAS pour les autres options du mme type (comment garder une trace des coefficients standardiss, de la matrice des covariances, des graphiques,).

Quelques instructions :
La syntaxe prsente ci-dessus ne comporte pas toutes les instructions qui sont accessibles avec la PROC REG. On se rfrera laide de SAS pour en savoir plus. Linstruction MODEL permet de dfinir la variable rgresser y ainsi que la liste des variables explicatives x1,,xn . Elle donne accs de nombreuses options dont nous parlerons par la suite. Linstruction BY permet toujours de dfinir des sous-populations. Dans ce cas, la modlisation est ralise pour chacune de ces sous-populations. Linstruction ID dfinit la variable qui sert didentifiant lobservation. En labsence de cette instruction, cest le numro de lobservation qui remplit cet office. Linstruction WEIGHT permet toujours de pondrer les observations. Linstruction PLOT permet de tracer des graphes. On peut utiliser les statistiques produites dont la liste est donne plus bas (auquel cas il faut donner leur mot cl suffix dun point) aussi bien que des variables de linstruction model. On peut aussi utiliser la variable numro dobservation en lappelant OBS. Dautres encore sont disponibles, pour les connatre on se reportera ventuellement laide de SAS. Par exemple, pour tracer le graphe des rsidus en fonction de lobservation, on crit :

PLOT r.*obs.;
Axelle Chauvet-Peyrard

68

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Linstruction RESTRICT permet dimposer des restrictions sur les paramtres. Par exemple, si lon sait que deux rgresseurs sont lis linairement par la relation c1*x1=c2*x2, on crira :

RESTRICT c1*x1=c2*x2 ;

ou :

RESTRICT c1*x1-c2*x2 ;

Si plusieurs restrictions doivent tre imposes, on les spare par des virgules au sein dune mme instruction RESTRICT. On peut bien sr aussi utiliser la variable INTERCEPT (qui dsigne la constante du modle). Linstruction TEST permet de faire des tests sur les paramtres estims. Par exemple, si lon veut tester si b1 = b2 , on crit : TEST x1=x2 ; Linstruction OUTPUT permet de rcuprer certaines des grandeurs calcules dans une table qui est celle indique dans OUT= . Il suffit den donner la suite sous la forme mot_cl = noms_variables. Par exemple :

OUTPUT OUT=resultat P=yhat R=yres ;


stocke dans la table resultat la valeur estime de y (variable nomme yhat) ainsi que le rsidu (variable nomme yres).

Quelques options de linstruction MODEL :


Par dfaut, le modle intgre une constante parmi les rgresseurs. Pour spcifier un modle sans constante, on peut prciser loption noint. Les options que nous voquerons par la suite sont celles le plus communment utilises pour tudier : Lhtroscdasticit et lautocorrlation Les individus aberrants La colinarit des rgresseurs et effectuer une slection de variables.

Lhtroscdasticit et lautocorrlation
autocorrls lordre 1 (cest--dire quil existe un rel tel que : un = .un-1 ), lhypothse nulle tant quil ne lest pas. Ce test sapplique dans le cas o nos donnes sont des sries temporelles. On notera que loption DW ne calcule pas de p-value, il faut donc se rfrer la table statistique de DurbinWatson pour conclure. On rappelle la forme de la statistique de Durbin-Watson : Loption dw permet de raliser un test de Durbin-Watson. Il sagit de tester si les rsidus sont

dw =

(u
i =2

u i 1 ) 2
2 i

u
i =1

La table statistique fournit le donne de deux seuils

{dw < d L } U {dw > d U }

dL

et

dU.

La rgion critique concide alors avec

Loption spec (de la PROC REG et non de linstruction MODEL !) ralise un test de White pour diagnostiquer lhtroscdasticit ventuelle. Lhypothse nulle est que la variance des rsidus est une constante.

Les individus aberrants


Les options r et influence permettent dditer un certain nombre de grandeurs servant reprer les individus atypiques et les individus influents. Lorsquun individu se distinguera particulirement du lot, cest--dire lorsquil se trouvera un individu pour tre la fois atypique et influent, et ce de manire ostentatoire, on envisagera de supprimer cet individu de notre tude. Examinons les rgles empiriques relatives la dtection des observations : Atypiques Pour les variables explicatives : On calcule alors le levier hii qui est le ime lment diagonal de la Hat matrice H Axelle Chauvet-Peyrard

69

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

hii = xi ( X X ) 1 xi H = X ( X X ) 1 X
Si

hii > 2

rgresseurs. Cest dautant plus vrai que hii est proche de 1. Pour la variable explique : On calcule les rsidus studentiss ri :

p +1 , n

alors lobservation i est considre comme atypique au regard des

ri =

ui Y Yi = i V (u i ) 1 hii

et les rsidus studentiss validation croise Ri : cest le rsidu studentis en i calcul sur lestimation du modle dans lequel on a t i. Ri mesure linfluence qua lobservation i sur sa propre estimation. Si la valeur absolue de ces grandeurs est trs suprieure 2, alors lobservation est considre comme atypique au regard de la variable explique. Influentes : Note : lindice i sera apos pour prciser que la grandeur est calcule pour le modle priv de lobservation i. Note : on dsignera le vecteur des paramtres indiffremment par b ou par De manire globale : On peut calculer lagrgat dit PRESS (Predicted Residuals Sum of Squares) :

PRESS = Yi Yi ,i
i =1

Plus le PRESS sloigne de la somme des carrs des rsidus (SSE), plus on peut suspecter lexistence dobservations influentes. Pour lestimation des paramtres b : On calcule la distance de Cook qui mesure en quelque sorte la distance entre le vecteur des paramtres estims b et ce mme vecteur calcul sur le modle priv de lobservation i :

Di =

( i ) X X ( i ) 2 ( p + 1)

lorsque Di > 1 on conclura linfluence de lobservation. Pour lestimation du paramtre bj : On calcule la quantit :

DFBETAS ij =

j i , j i ( X X ) 1 jj

Il sagit de comparer les estimations de bj selon si i appartient ou non au modle. Si

DFBETAS ij >

2 n

alors on considre que lobservation i est trop influente dans

lestimation du paramtre bj. Pour lestimation de Y en i : On calcule une quantit qui mesure linfluence de i sur sa propre valeur ajuste : Axelle Chauvet-Peyrard

70

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

DFFITS i =

Yi Yi ,i i hii

Lorsque

DFFITS i > 2

p +1 , lobservation semble trop influente. n

Pour la prcision de lestimation du vecteur des paramtres : On calcule le covratio :

CovRatioi

( ) det( X X ) = ( ) det( X X )
2 i p +1 2 p +1 i i

Si

CovRatioi 1 > 3

loign de 1.

p +1 , lobservation semble louche, et ce dautant plus que CovRatioi est n

Rcapitulatif : Quelle option fait quoi ?

R rsidus studentiss (Student Residuals)

atypique

INFLUENCE rsidus Studentiss validation croise (Rstudent) leviers (Hat Diag)

PRESS influente distance de Cook (Cook's D) DFFITS DFBETAS CovRatio

La colinarit des rgresseurs


Lexistence de colinarit entre les rgresseurs sous-tend une certaine redondance dinformation dans le modle, les consquences nfastes se situant la fois sur le plan statistique et sur celui de linterprtation des coefficients. Mentionnons dabord loption i qui permet dditer la matrice (XX)-1. Mentionnons galement que lon peut se faire une premire ide de lexistence ou non de colinarit en comparant la sortie de loption ss1 avec celle de loption ss2. Loption SS1 calcule pas pas pour chacun des rgresseurs (avec lordre donn dans linstruction MODEL) la variation de somme des carrs estims due lintroduction dudit rgresseur. Loption SS2 calcule la mme variation, toujours pour chacun des rgresseurs, mais en supposant chaque fois que le rgresseur en question est le dernier tre introduit dans le modle. Si les deux sorties sont trs diffrentes, on se doute quil existe un problme de colinarit. De manire plus prcise, on utilise deux types doptions : Les options vif et tol calculent respectivement le facteur dinfluence de la variance et la tolrance. Comme TOL est linverse de VIF, on nditera quune des deux grandeurs. On a

TOL j = 1 R j ,
2

Rj

est le coefficient de dtermination (le R) de la rgression de Xj sur

les autres rgresseurs. Dans le cas extrme o Xj est combinaison linaire des autres rgresseurs, Axelle Chauvet-Peyrard

Rj

71

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

= 1.

On en dduit que si TOLj < 0,1 (ou VIFj > 10), on peut suspecter une situation de colinarit pour le rgresseur Xj, et ce dautant plus que TOLj est proche de 0 (que VIFj est grand).

Les options collin et collinoint permettent de prciser le nombre de relations de colinarit existant. Ces deux options calculent les indices de conditionnement CIj ainsi que les proportions de variance notes VarPropjk :

CI j =

.1 . j

j me composante. deVar (bk ) Var Pr op jk = Var (b )


k

o les j sont les valeurs propres de la matrice des corrlations des rgresseurs, ordonnes de manire dcroissante. notant que la variance du kme coefficient estim se dcompose en la somme de p composantes de type

kj / j .

COLLIN sutilise lorsque le modle spcifie parmi ses rgresseurs une constante (qui a une signification physique). Dans les autres cas, on utilise COLLINOINT. On considre quun CIj > 30 est louche. Lexistence dune relation de colinarit apparat dautant plus vidente que CIj est grand. Pour savoir quels rgresseurs elle met en cause, on regarde ensuite les VarPropjk pour ce j, et ceux qui sont suprieurs 0,5 dsignent les coupables.

La slection de variables
Loption selection= ralise des procdures de slection des rgresseurs les plus pertinents parmi ceux proposs dans linstruction MODEL. Les critres de choix des variables varient selon la mthode choisie. Suivent les mthodes les plus utilises : Loption selection=rsquare fournit la liste des modles possibles par ordre croissant de nombre de variables explicatives puis par ordre dcroissant de R. Loption selection=cp utilise le critre du Cp de Mallows pour classer les sous-modles possibles. Cette statistique fournit une mesure de lerreur quadratique moyenne. Lorsquun sous-modle k rgresseurs est proche du modle complet au sens de lEQM, on doit avoir Cp k+1. Loption selection=forward procde une slection des variables en ce sens quelle propose un sous-modle. La procdure consiste intgrer pas pas, en partant du modle avec la seule constante, le rgresseur qui induit le plus important gain de somme des carrs expliqus. La procdure sarrte lorsque le gain en question devient infrieur un certain seuil que lon peut modifier. Loption selection=backward repose sur le mme principe que la procdure forward, sauf que cette fois on part du modle complet et on retire pas pas le rgresseur qui induit la plus petite augmentation de somme des carrs rsiduels. Loption selection=stepwise, enfin, est du mme type que forward, sauf quil est possible que des variables introduites une certaine tape soient retires du sous-modle dans une autre tape. Elle combine donc procdure forward et procdure backward.

Axelle Chauvet-Peyrard

72

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Liste des grandeurs que lon peut rcuprer dans PLOT ou dans OUTPUT (et mots-cls associs) :
Cookd Covratio Dffits H statistique D de Cook relative linfluence dune observation mesure de linfluence de lobservation sur la covariance des paramtres mesure de linfluence de lobservation sur la valeur estime de y levier de lobservation

Lcl (resp. Ucl) borne infrieure (resp. suprieure) de lintervalle de confiance pour la valeur prdite yi Lclm (resp. Uclm) borne infrieure (resp. suprieure) de lintervalle de confiance pour la moyenne de y Predicted ou P Residual ou R Student Rstudent Press Stdi Stdp Stdr estimation de la variable explique rsidu de la rgression = y - ypredicted rsidus studentiss rsidus studentiss validation croise rsidu rapport 1-H cart-type de lestimation de yi cart-type de lestimation de la moyenne de y cart-type des rsidus estims

Lecture de sorties :
Une sortie standard :
proc reg data=malib.employe; model salaire = anciennete subor age; run;
The REG Procedure Model: MODEL1 Dependent Variable: salaire salaire en euros Analysis of Variance Sum of Squares 27848720 10597854 38446573 Mean Square 9282907 392513

Source Model Error Corrected Total

DF 3 27 30

F Value 23.65

Pr > F <.0001

Root MSE Dependent Mean Coeff Var

626.50866 1915.77419 32.70264

R-Square Adj R-Sq

0.7243 0.6937

Parameter Estimates Parameter Estimate 1117.36274 -9.21669 167.11617 14.21831 Standard Error 573.88399 46.23709 22.13012 21.51873

Variable Intercept anciennete subor age

DF 1 1 1 1

t Value 1.95 -0.20 7.55 0.66

Pr > |t| 0.0620 0.8435 <.0001 0.5144

La sortie standard contient donc : Un bloc danalyse de la variance (dcomposition de la somme des carrs totaux en somme des carrs rsiduels (ligne Error) et somme des carrs estims (ligne Model)). A ce niveau est aussi ralis un test de Fischer de validit globale du modle. Lhypothse nulle est (H0) : les paramtres sont tous simultanment nuls. Ici la p-value est trs infrieure 0,5, donc on rejette (H0), ce qui signifie que le modle est globalement valide. Axelle Chauvet-Peyrard

73

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

La colonne DF indique le nombre de degrs de libert (degrees of freedom). Le DF de la ligne Model reprsente p, cest dire le nombre de rgresseurs, constante exclus. Le DF de la ligne Corrected Total vaut n-1 o n est la taille de la population. La colonne Mean Square calcule le rapport de Sum of Squares au DF. Un bloc intermdiaire : Root MSE est lcart-type estim. Dependent Mean est la moyenne de y. Coeff Var est le coefficient de variation, dfini comme le rapport des deux grandeurs prcdentes multipli par 100. Enfin on a la donne du R (rapport de la somme des carrs estims la somme des carrs totaux) et du R ajust. Notons que le R nest pas interprtable dans un modle sans constante. Un bloc destimation des paramtres liste les rgresseurs, avec une estimation du paramtre associ, lcart-type estim pour ledit paramtre, ainsi que la statistique et la p-value relatives un test de Student de nullit du paramtre (lhypothse nulle tant justement la nullit du paramtre). Ici on voit que les variables anciennete et age ne sont pas significatives.

On remanie le programme en y incluant plusieurs options comme suit :


proc reg data=malib.employe corr; model salaire = anciennete subor age / dw spec vif collinoint r influence ; test anciennete=age ; plot p.*obs. ; run;
The REG Procedure Correlation Variable anciennete subor age salaire Label anciennete 1.0000 0.3460 0.8419 0.3498 subor 0.3460 1.0000 0.3400 0.8463 age 0.8419 0.3400 1.0000 0.3704 salaire 0.3498 0.8463 0.3704 1.0000

nb subordonns salaire en E

Dependent Variable: salaire salaire en E Analysis of Variance Sum of Squares 27848720 10597854 38446573 626.50866 1915.77419 32.70264 Mean Square 9282907 392513

Source Model Error Corrected Total

DF 3 27 30

F Value 23.65

Pr > F <.0001

Root MSE Dependent Mean Coeff Var

R-Square Adj R-Sq

0.7243 0.6937

Parameter Estimates Parameter Estimate 1117.36274 -9.21669 167.11617 14.21831 Standard Error 573.88399 46.23709 22.13012 21.51873 Variance Inflation 0 3.48267 1.14660 3.46648

Variable Intercept anciennete subor age

DF 1 1 1 1

t Value 1.95 -0.20 7.55 0.66

Pr > |t| 0.0620 0.8435 <.0001 0.5144

Axelle Chauvet-Peyrard

74

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique


Collinearity Diagnostics(intercept adjusted) Condition Index 1.00000 1.62773 3.61301 ---------Proportion of Variation--------anciennete subor age 0.05771 0.03082 0.91147 0.07283 0.92697 0.00020110 0.05775 0.03287 0.90938

Number 1 2 3

Eigenvalue 2.06323 0.77872 0.15805

Test of First and Second Moment Specification DF 9 Chi-Square 12.49 Pr > ChiSq 0.1873 0.852 31 0.484

Durbin-Watson D Number of Observations 1st Order Autocorrelation

Output Statistics Dep Var salaire 3963 2088 1905 1875 1356 1394 1379 1844 1097 1372 1417 1379 1033 1234 1021 1067 6097 4268 3353 2286 1905 2507 2210 1951 2241 1347 1353 1361 1036 1082 968 Predicted Std Error Std Error Student Value Mean Predict Residual Residual Residual 2653 1550 1903 1575 1535 1641 1455 2280 1435 1627 1790 1689 1526 2102 1440 1626 6775 2626 2533 1693 1679 1751 1654 1585 1900 1687 1484 1607 1574 1612 1402 171.6793 128.3430 213.4522 146.2143 138.7658 141.6958 190.6224 257.8219 205.9660 167.6276 326.9184 190.2358 131.9155 387.5017 194.9316 172.5952 590.4819 207.2753 199.7933 176.9587 138.0213 119.4985 217.4930 188.4737 244.1068 299.4044 161.1971 126.6470 121.7014 158.8746 236.1441 1310 537.5132 1.7724 300.2916 -179.4820 -246.7983 -76.1737 -436.1149 -338.1672 -255.3666 -373.3427 -310.2414 -493.2653 -867.7765 -419.1689 -558.7935 -677.6047 1642 819.8226 593.4051 225.8369 755.9587 555.8449 366.2884 341.2009 -339.8818 -130.6104 -246.3601 -537.9219 -529.5752 -433.7290 602.5 613.2 589.0 609.2 610.9 610.3 596.8 571.0 591.7 603.7 534.5 596.9 612.5 492.3 595.4 602.3 209.4 591.2 593.8 601.0 611.1 615.0 587.5 597.5 577.0 550.3 605.4 613.6 614.6 606.0 580.3 2.175 0.877 0.00301 0.493 -0.294 -0.404 -0.128 -0.764 -0.572 -0.423 -0.699 -0.520 -0.805 -1.763 -0.704 -0.928 -3.236 2.778 1.381 0.987 0.370 1.229 0.946 0.613 0.591 -0.618 -0.216 -0.402 -0.875 -0.874 -0.747 Cook's D | 0.096 | 0.008 | 0.000 | 0.003 | 0.001 | 0.002 | 0.000 | 0.030 | 0.010 | 0.003 | 0.046 | 0.007 | 0.008 | 0.481 | 0.013 | 0.018 | 20.820 | 0.237 | 0.054 | 0.021 | 0.002 | 0.014 | 0.031 | 0.009 | 0.016 | 0.028 | 0.001 | 0.002 | 0.008 | 0.013 | 0.023

Obs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

-2-1 0 1 2

| |**** | |* | | | | | | | | | | | *| | *| | | | *| | *| | *| | ***| | *| | *| |******| | |***** | |** | |* | | | |** | |* | |* | |* | *| | | | | | *| | *| | *|

Axelle Chauvet-Peyrard

75

Anne 2006-2007

LANGAGE SAS
Output Statistics Hat Diag H 0.0751 0.0420 0.1161 0.0545 0.0491 0.0512 0.0926 0.1694 0.1081 0.0716 0.2723 0.0922 0.0443 0.3826 0.0968 0.0759 0.8883 0.1095 0.1017 0.0798 0.0485 0.0364 0.1205 0.0905 0.1518 0.2284 0.0662 0.0409 0.0377 0.0643 0.1421 Cov Ratio 0.5820 1.0815 1.3157 1.1863 1.2074 1.1962 1.2785 1.2829 1.2419 1.2197 1.4857 1.2306 1.1041 1.1550 1.1956 1.1055 1.4618 0.3399 0.9659 1.0909 1.1977 0.9586 1.1555 1.2089 1.3014 1.4238 1.2368 1.1838 1.0771 1.1081 1.2468

Procdures de traitement statistique

Obs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

RStudent 2.3497 0.8727 0.002953 0.4859 -0.2887 -0.3981 -0.1253 -0.7577 -0.5643 -0.4165 -0.6918 -0.5126 -0.8000 -1.8388 -0.6973 -0.9253 -4.0588 3.2250 1.4054 0.9869 0.3636 1.2414 0.9441 0.6058 0.5841 -0.6104 -0.2119 -0.3952 -0.8714 -0.8699 -0.7412

DFFITS 0.6695 0.1826 0.0011 0.1166 -0.0656 -0.0924 -0.0400 -0.3421 -0.1964 -0.1157 -0.4232 -0.1634 -0.1723 -1.4474 -0.2283 -0.2652 -11.4459 1.1306 0.4729 0.2906 0.0821 0.2412 0.3495 0.1911 0.2471 -0.3321 -0.0564 -0.0816 -0.1726 -0.2280 -0.3016

-----------------DFBETAS----------------Intercept anciennete subor age -0.2275 0.0918 -0.0008 0.0469 -0.0203 0.0315 -0.0357 0.2724 -0.1348 -0.0091 0.1507 0.0511 -0.0916 -1.1639 -0.1739 0.1072 0.6305 0.3527 0.1251 0.0517 0.0553 0.0697 0.0917 0.0742 -0.0761 0.2042 -0.0455 0.0100 -0.0246 0.0715 -0.2224 -0.3772 0.0606 -0.0004 0.0654 0.0204 0.0227 -0.0192 0.1918 0.0218 -0.0595 -0.1647 -0.0379 -0.0040 -1.3134 -0.0066 0.1853 0.3682 0.7929 -0.2068 -0.1690 0.0108 0.0670 -0.2004 0.1411 0.0930 0.2951 -0.0196 0.0181 0.0303 0.1477 0.0206 0.3181 -0.0522 -0.0003 -0.0429 0.0067 0.0369 0.0019 0.0317 -0.0198 0.0518 0.1893 0.0780 0.0256 -0.1305 -0.0156 0.0524 -10.5110 0.2443 0.2985 0.0378 0.0027 -0.0530 0.0677 -0.0698 -0.0966 0.0326 0.0047 0.0290 0.0473 0.0460 -0.0414 0.3600 -0.0648 0.0008 -0.0454 -0.0018 -0.0438 0.0298 -0.2940 0.0725 0.0174 -0.0691 -0.0381 0.0447 1.3126 0.1083 -0.1789 -0.3359 -0.5039 0.0176 0.0567 -0.0344 -0.0425 0.0391 -0.0910 0.0365 -0.2849 0.0346 -0.0261 -0.0197 -0.1362 0.1311

Sum of Residuals Sum of Squared Residuals Predicted Residual SS (PRESS)

0 10597854 50241922

Axelle Chauvet-Peyrard

76

Anne 2006-2007

LANGAGE SAS
The REG Procedure Model: MODEL1

Procdures de traitement statistique

Test 1 Results for Dependent Variable salaire Mean Square 50909 392513

Source Numerator Denominator

DF 1 27

F Value 0.13

Pr > F 0.7215

Loption CORR dite la matrice des corrlations. On peut dj reprer que les variables age et anciennete sont fortement corrles. Le graphique des valeurs prdites ninvalide pas notre choix de modle : la forme fonctionnelle nest pas mauvaise a priori, et on ne repre pas dhtroscdasticit au premier coup dil. Par contre, on repre une valeur aberrante. Loption DW ralise un test de Durbin Watson. Dans une table statistique de Durbin Watson, on pourrait relever les seuils relatifs notre modle, et on dduirait que lhypothse dautocorrlation lordre 1 peut tre accepte 5%. Cela dit, ici cela na pas beaucoup de sens. Dans un pareil cas, on regarderait plutt le test de White ralis par loption SPEC. Ici lhypothse nulle dhomoscdasticit est accepte 5%. Lanalyse des observations atypiques et influentes par les options R et INFLUENCE montre que : Les observations 1, 17 et 18 sont atypiques pour le salaire. Dans la table on peut vrifier quil sagit des trois plus gros salaires, et que les 17 et 18 sont particulirement loigns du reste des valeurs. Lobservation 17, et une moindre mesure lobservation 14, sont atypiques pour les rgresseurs. Effectivement, on remarque que la 17 a 30 subordonns (les autres valeurs se situant entre 0 et 6) et un ge et une anciennet assez levs (55 ans et 15 ans) par rapport la moyenne. Quant lobservation 14, dont le caractre atypique est moins marqu, on peut noter quelle prsente une anciennet et un nombre de subordonns un peu plus lev que la moyenne alors que son ge est plutt infrieur la moyenne. Lobservation 17 se dmarque nettement du lot en ce qui concerne son influence sur lestimation. La distance de Cook est fortement leve pour cette observation. La 17 influe sur sa propre prdiction, et particulirement sur lestimation du coefficient de la variable subor, ce qui semble logique. En conclusion de cette analyse, on dcidera de supprimer de notre rgression lobservation 17. Axelle Chauvet-Peyrard

77

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

A ce stade il nest pas ncessaire de poursuivre lanalyse. On recommencerait la procdure aprs avoir t lobservation aberrante. Mais puisquil ne sagit ici que de savoir lire des sorties, continuons : Grce loption VIF, on repre que ces variables ont justement un facteur dinfluence de la variance plus lev que les autres ; mais ceci nest pas flagrant. On porte donc notre regard sur la sortie de loption COLLINOINT. Mme si les CI ne sont pas trs importants, les Proportion of Variation sont tels que lon peut au moins souponner une relation de colinarit entre lge et lanciennet. A ce stade, on peut alors dcider de supprimer une des deux variables impliques dans la relation de colinarit.

Que proposent les procdures de slection ?


Supprimons lobservation 17 et ritrons la PROC REG, dabord avec loption SELECTION=CP puis avec loption SELECTION=RSQUARE, enfin avec loption SELECTION=STEPWISE.

The REG Procedure Model: MODEL1 Dependent Variable: salaire C(p) Selection Method Number in Model 1 2 2 3 1 1 2

C(p) 1.7009 2.3790 3.3471 4.0000 51.9024 52.5471 53.8140

R-Square 0.6609 0.6771 0.6652 0.6817 0.0463 0.0384 0.0474

Variables in Model subor age subor anciennete subor age anciennete subor age anciennete age anciennete

La procdure napporte pas grand chose. Elle semble dsigner le modle que lon a choisi, mais les trois prcdents ne sont pas fondamentalement plus mauvais.

The REG Procedure Model: MODEL1 Dependent Variable: salaire R-Square Selection Method Number in Model

R-Square

Variables in Model

1 0.6609 subor 1 0.0463 age 1 0.0384 anciennete ---------------------------------------------2 0.6771 age subor 2 0.6652 anciennete subor 2 0.0474 age anciennete ---------------------------------------------3 0.6817 age anciennete subor Il sagit darbitrer entre biais et prcision. Le premier souci commande de ne pas trop choisir de rgresseurs, tandis que le deuxime pousse amliorer le R. Ici on voit que le meilleur R pour les modles 1 variable nest gure infrieur au meilleur des R (qui correspond au modle total). On est donc amen choisir le modle avec le seul rgresseur subor.

Axelle Chauvet-Peyrard

78

Anne 2006-2007

LANGAGE SAS
La procdure stepwise conduit-elle au mme rsultat ?

Procdures de traitement statistique

The REG Procedure Model: MODEL1 Dependent Variable: salaire salaire en euros Stepwise Selection: Step 1 Variable subor Entered: R-Square = 0.6609 and C(p) = 1.7009 Analysis of Variance Sum of Squares 13469424 6911745 20381169 Standard Error 103.40401 48.03863 Mean Square 13469424 246848

Source Model Error Corrected Total

DF 1 28 29 Parameter Estimate 1409.71705 354.85447

F Value 54.57

Pr > F <.0001

Variable Intercept subor

Type II SS 45879515 13469424

F Value 185.86 54.57

Pr > F <.0001 <.0001

Bounds on condition number: 1, 1 ---------------------------------------------------------------------------------------Stepwise Selection: Step 2 Variable age Entered: R-Square = 0.6771 and C(p) = 2.3790 Analysis of Variance Sum of Squares 13799241 6581928 20381169 Standard Error 368.87468 48.02542 9.68638

Source Model Error Corrected Total

DF 2 27 29

Mean Square 6899620 243775

F Value 28.30

Pr > F <.0001

Variable Intercept subor age

Parameter Estimate 997.63890 348.75934 11.26687

Type II SS 1783111 12855788 329817

F Value 7.31 52.74 1.35

Pr > F 0.0117 <.0001 0.2549

Bounds on condition number: 1.012, 4.0482 ---------------------------------------------------------------------------------------Stepwise Selection: Step 3 Variable age Removed: R-Square = 0.6609 and C(p) = 1.7009 Analysis of Variance Sum of Squares 13469424 6911745 20381169 Standard Error 103.40401 48.03863

Source Model Error Corrected Total

DF 1 28 29

Mean Square

F Value 54.57

Pr > F <.0001

13469424 246848

Variable Intercept subor

Parameter Estimate 1409.71705 354.85447

Type II SS 45879515 13469424

F Value 185.86 54.57

Pr > F <.0001 <.0001

Bounds on condition number: 1, 1 ---------------------------------------------------------------------------------------All variables left in the model are significant at the 0.1500 level. The stepwise method terminated because the next variable to be entered was just removed. Axelle Chauvet-Peyrard

79

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Summary of Stepwise Selection Variable Entered subor age age Variable Removed Number Vars In 1 2 1 Partial R-Square 0.6609 0.0162 0.0162 Model R-Square 0.6609 0.6771 0.6609

Step 1 2 3

C(p) 1.7009 2.3790 1.7009

F Value 54.57 1.35 1.35

Pr > F <.0001 0.2549 0.254

La procdure sarrte au bout de la troisime tape. Le modle final propos est bien celui constitu du seul rgresseur subor. Notons que la procdure forward proposerait de garder aussi la variable age. A ce stade on recommencerait la rgression soit avec subor seulement, soit avec subor et age. Lestimation du deuxime modle indique que la variable age napparat pas significative. Le modle que lon retient est donc : salaire = 1410 + 355 * subor

Axelle Chauvet-Peyrard

80

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Rgression sur variables catgorielles avec la PROC LOGISTIC


Lorsque lon souhaite effectuer une rgression sur une variable qualitative, la rgression linaire classique (voir paragraphe prcdent) nest plus adapte. Il faut mettre en uvre dautres mthodes. Lune delle est la rgression logistique. Considrons y une variable dichotomique, y {0 ; 1}, et x1 x2 x3 des rgresseurs (variables quantitatives continues). Le modle logistique correspondant linstruction suivante :

MODEL y = x1 x2 x3 ;
Correspond au modle suivant :

P[ y = 0 ] Log P[ y = 1] = 0 + 1 x1 + 2 x 2 + 3 x3
Par dfaut, SAS modlise la probabilit de lvnement correspondant la plus basse des modalits de y. La mthode utilise est la maximisation de la vraisemblance de y sachant x. Les tests raliss relativement la nullit des coefficients sont des tests de Wald. Concernant la validit globale du modle, le test du score et le test du rapport des maxima de vraisemblance sont dits (on rappelle quils sont quivalents asymptotiquement), en plus des critres dAikaike et de Schwartz. On rappelle que parmi une liste de modles embots, un modle est dautant meilleur que ces critres sont faibles. La PROC LOGISTIC a cet avantage sur la PROC CATMOD (autre procdure qui permet de raliser des rgressions sur variables catgorielles) quelle dite les odd-ratios. Si lodd-ratio de la variable xi vaut w, cela sinterprte comme suit : Lorsque xi augmente dune unit, les chances

y=a ya

sont multiplies par

Enfin la procdure calcule le nombre de paires concordantes (dont la prvision concorde avec la vraie valeur) ainsi que quatre statistiques obtenues partir du nombre de paires concordantes, discordantes et tied : D de Sommer, modle aux donnes.

, a

et c. Plus ces valeurs sont grandes, et meilleure est ladquation du

PROC LOGISTIC data= <options> ; < CLASS var_quali ; > MODEL y = variables </options> ; < CONTRAST label l11 l12 l1n lm1 lmn </options> ; > < <label : > TEST equation ; > < BY listevariables ; > < FREQ variable ; > < WEIGHT listevariables ; > < OUTPUT out= table_sortie liste_stats_a_garder ; >

Les instructions :
La syntaxe prsente ci-dessus ne comporte pas toutes les instructions qui sont accessibles avec la PROC LOGISTIC. On se rfrera laide de SAS pour en savoir plus. Une instruction MODEL doit tre spcifie. Elle sera prcde dune instruction CLASS si le modle comporte des variables qualitatives. Comme dans la PROC REG, linstruction TEST permet de faire des tests sur les paramtres estims. Par exemple, si lon veut tester si

1 = 2 , on crit : TEST x1=x2 ;

Axelle Chauvet-Peyrard

81

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Linstruction CONTRAST permet galement deffectuer des tests sur les paramtres estims. Plus exactement, elle permet de tester (H0) : L = 0 o L est la matrice dont lij est llment la ligne i, colonne j ; n est le nombre de variables du modle et m le nombre dquations du systme test. Linstruction BY permet toujours de dfinir des sous-populations. Dans ce cas, la modlisation est ralise pour chacune de ces sous-populations. Linstruction FREQ permet de dfinir une variable entire dont les valeurs indique le nombre de fois que lobservation courante doit tre compte. Linstruction WEIGHT permet toujours de pondrer les observations. Linstruction OUTPUT permet de rcuprer certaines des grandeurs calcules dans une table qui est celle indique dans OUT= . Il suffit den donner la suite sous la forme mot_cl = noms_variables. Par exemple :

OUTPUT OUT=resultat P=yhat H=hatdiag1 hatdiag2 hatdiag3 ;


stocke dans la table resultat la valeur estime de y (variable nomme yhat) ainsi que la valeur du levier pour chacun des rgresseurs (variables nomme yres) voir paragraphe sur les observations atypiques dans la description de la PROC REG.

Les options :
Loption simple permet dditer des statistiques descriptives simples sur les variables du modle. Loption outest= permet de spcifier le nom dune table dans laquelle on rcupre les paramtres estims (ainsi que leurs covariances estimes dans le cas o lon ajoute loption covout). Loption descending permet de considrer la probabilit de ralisation de la modalit la plus leve (par dfaut cest la plus basse). Loption order= permet de choisir lordre des modalits de y dans le traitement. order=data ordonne selon lordre dans lequel les modalits apparaissent dans la table. order=freq ordonne de la modalit la plus frquente la plus rare.

Quelques options de linstruction MODEL :


Loption link= permet de choisir une autre fonction de lien que la logit : probit, normit ou cloglog. Loption noint supprime la constante du modle. Comme dans la PROC REG, loption influence sert reprer les observations influentes. On peut la coupler avec loption iplots qui gnre des graphiques. Comme dans la PROC REG, on peut utiliser loption selection= .

Axelle Chauvet-Peyrard

82

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Lecture de sorties standards :


proc logistic data=malib.employe descending; model prime= anciennete subor;
run; The LOGISTIC Procedure Model Information Data Set MALIB.EMPLOYE Response Variable prime Number of Response Levels 2 Number of Observations 115 Link Function Logit Optimization Technique Fisher's scoring Response Profile Ordered Total Value prime Frequency 1 2 O N 24 91

Model Convergence Status Convergence criterion (GCONV=1E-8) satisfied. Model Fit Statistics Intercept Only 119.811 122.556 117.811 Intercept and Covariates 89.664 97.898 83.664

Criterion AIC SC -2 Log L

Testing Global Null Hypothesis: BETA=0 Test Likelihood Ratio Score Wald Chi-Square 34.1477 27.9854 19.4717 DF 2 2 2 Pr > ChiSq <.0001 <.0001 <.0001

Analysis of Maximum Likelihood Estimates Standard Error 0.6221 0.0613 0.0487

Parameter Intercept anciennete subor

DF 1 1 1

Estimate -3.3874 0.1828 0.1444

Chi-Square 29.6486 8.8792 8.7776

Pr > ChiSq <.0001 0.0029 0.0030

Odds Ratio Estimates Effect anciennete subor Point Estimate 1.201 1.155 95% Wald Confidence Limits 1.065 1.050 1.354 1.271

Association of Predicted Probabilities and Observed Responses Percent Concordant Percent Discordant Percent Tied Pairs 90.0 9.8 0.3 2184 Somers' D Gamma Tau-a c 0.802 0.804 0.267 0.901

Axelle Chauvet-Peyrard

83

Anne 2006-2007

LANGAGE SAS
La sortie standard est compose de 7 tableaux :

Procdures de traitement statistique

Le premier comporte des informations sur le modle : variable rgresse, son nombre de modalits, la fonction de lien Ici on rgresse la variable prime de la table malib.employe, qui a deux modalits. Le deuxime prsente les modalits de la variable rgresse et la frquence de chacune delles. 24 employs ont eu une prime cette anne et 91 nen ont pas eu. Cest la probabilit davoir une prime qui est analyse par le modle, ceci grce loption descending. Le modle estim est :

( prime = oui ) ln ( prime = non) = b0 + b1 * anciennete + b2 * subor


Un message informe de ce que le modle est convergent. Le troisime tableau prsente les critres dAikaike, de Schwartz et du rapport des maxima de vraisemblance calculs pour le modle avec la seule constante comme rgresseur et pour le modle spcifi dans la procdure. Les valeurs de ces critres tant infrieures pour notre modle que dans le cas de la constante seule, notre modle nest a priori pas trop mauvais. Le quatrime tableau rsume les trois tests effectus pour la validit globale du modle. Ici le modle est globalement valide puisquon rejette lhypothse de nullit simultane des paramtres. Le cinquime tableau nous donne enfin le loisir de lire les paramtres estims et leur significativit. Ici tous les coefficients sont significativement diffrents de zro. Il est noter quon nutilise pas directement la valeur de ces coefficients. La manire dont on les interprte dpend uniquement de leur signe et de leurs ordres de grandeur compars. Ici on conclut que plus on a danciennet et plus on a de chances davoir une prime. De mme plus on a de subordonns, plus on a de chances davoir une prime. Les effets de ces deux variables tant comparables. Le sixime tableau est celui des odds ratio. Dans le cas qui nous intresse ici linterprtation en est simple : lorsquon gagne un an danciennet, le rapport des chances davoir une prime sur les risques de ne pas avoir de prime est multipli par 1,201. Le dernier tableau permet de constater si le modle est bien adapt aux donnes ou non. Ici les prvisions concident 90% avec la ralit observe, donc le modle est bien adapt.

Un exemple avec options :


proc logistic data=malib.employe outest=param noprint; class poste diplome sexe ; model prime=sexe diplome poste anciennete subor /selection=stepwise ; run;
Loption noprint supprime la sortie Output. Loption outest permet dobtenir la table param suivante :

maintenance poste _technicien postecadre _manager postecadre

_STATUS_

anciennete

_LNLIKE_

diplome0

diplome1

diplome2

diplome3

diplome4

_NAME_

Intercept

_TYPE_

LOGIT

_LINK_

sexeF

subor

PARMS

0 Converged

prime

6,081106

-1,358777 -1,748812 -0,154109 5,243927 2,709546 -0,967802

-0,483097

-25,68922

Loption de slection aboutit au modle constitu des variables sexe, diplme et anciennet. On a rcupr les valeurs des paramtres estims, ainsi que certains renseignements comme la fonction de lien, le nom de la variable, le rsultat du test de convergence et le log de la vraisemblance.

Axelle Chauvet-Peyrard

84

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Modlisation plusieurs quations avec la PROC SYSLIN et la PROC MODEL


La procdure PROC SYSLIN a pour but de raliser des estimations et des prdictions sur des systmes dquations linaires. Son quivalent pour des systmes dquations non linaires est la PROC MODEL. Ces deux procdures offrent un large choix de mthodes destimation : moindres carrs ordinaires (OLS) (mais on sait que cet estimateur est biais dans le cas dun systme dquations), estimateur SURE (mthode simple ou itrative), doubles moindres carrs (2SLS), triples moindres carrs (3SLS) (mthodes simples ou itratives), maximum de vraisemblance information limite (LIML) maximum de vraisemblance information complte (FIML),

Elles offrent galement la possibilit : dimposer des contraintes sur les paramtres estims de tester des hypothses de liaison linaire entre les paramtres

La lecture dune sortie standard de PROC SYSLIN est comparable celle dune PROC REG. La modlisation de chaque quation du systme est prsente sur une page de loutput.

PROC SYSLIN data= <options> ; < ENDOGENOUS variables ; > < INSTRUMENTS variables ; > MODEL dep_var1 = liste_des_rgresseurs </options>; MODEL dep_var2 = < RESTRICT quations ; > < SRESTRICT quations ; > < TEST quation ; > < STEST quation ; > < BY variable ; > < WEIGHT variable ; >

Les instructions :
Il y a autant dinstructions MODEL que dquations dans le systme estim. Les instructions ENDOGENOUS et INSTRUMENTS vont ensemble. Elles ne sont ncessaires que si la mthode destimation nest pas une des suivantes : OLS, SUR, ITSUR ou FIML. Les autres mthodes destimation effectuent dabord une rgression des variables endognes sur les variables instrumentales du modle. Linstruction INSTRUMENTS sert donc lister les variables instrumentales du modle. Les variables listes par ENDOGENOUS sont donc les variables du modle qui ne sont pas instrumentales. Comme dans la PROC REG, on peut imposer des restrictions ou effectuer des tests. Les restrictions et tests ne concernant quune des quations du modle sont spcifis respectivement par les instructions RESTRICT et TEST (pour plus de dtails sur ces instructions, voir le paragraphe relatif la PROC REG). Une restriction ou un test faisant intervenir des paramtres de diffrentes quations utilisent les instructions SRESTRICT et STEST. Linstruction BY sert toujours dfinir des sous-populations. Linstruction WEIGHT sert toujours dfinir une variable de pondration pour les observations.

Axelle Chauvet-Peyrard

85

Anne 2006-2007

LANGAGE SAS

Procdures de traitement statistique

Exemple :
PROC SYSLIN ; ENDOGENOUS y1 y2 ; INSTRUMENTS x1 x2 ; MODEL y1 = y2 x1 x2 ; MODEL y2 = x1 y1 ; SRESTRICT y1.x1=y2.x1 ; RUN ;

Les options :
En option de la procdure, on peut demander rcuprer entre autres :

les paramtres estims : option outest= lensemble des rsidus et des paramtres estims : option out= , utilise avec une instruction

OUTPUT PREDICTED=nom_vars RESIDUAL=nom_var ;

Les options prcisant la mthode destimation :


ols sur itsur fiml liml 2sls 3sls it2sls it3sls melo k=valeur estimateur des moindres carrs ordinaires estimateur par la mthode SURE mthode SURE itrative maximum de vraisemblance information complte maximum de vraisemblance information limite estimateur des doubles moindres carrs estimateur des triples moindres carrs doubles moindres carrs itratifs triples moindres carrs itratifs mthode du minimum de perte espre mthode de la k-class

Enfin mentionnons loption first qui dite la rgression des endognes sur les instruments.

Concernant les options de linstruction MODEL, outre deux classiques (noint qui permet dliminer la constante du modle et dw qui ralise un test de Durbin Watson), nous mentionnerons plot qui dite des graphiques des rsidus en fonction de chacun des rgresseurs (un graphique par rgresseur).

Les options de linstruction MODEL :

Quoi de neuf avec la PROC MODEL ?


Cette fois lestimation ne porte pas forcment sur des quations linaires. Linstruction MODEL, propre la rgression linaire, disparat donc. Les quations sont crites telles quon les crit naturellement, dans le corps de la procdure. Une instruction PARAMETERS permet de prciser quelles grandeurs jouent le rle des paramtres estimer. On retrouve les instructions ENDOGENOUS et INSTRUMENTS, ainsi quune instruction EXOGENOUS qui vient les complter. Par dfaut, toutes les variables exognes sont considres comme instruments. On nutilisera donc linstruction INSTRUMENTS que si ce nest pas le cas. Enfin, on prcisera quelles sont les variables rgresser grce une instruction FIT. Il est noter que cest en option de linstruction FIT que lon prcisera la mthode destimation. Notons que la liste des mthodes disponibles ne concide pas tout fait avec celle de la PROC SYSLIN. Les instructions RESTRICT et TEST sont encore valides. Pour plus de dtails, on se rfrera laide de SAS.

Axelle Chauvet-Peyrard

86

Anne 2006-2007

Langage SAS

Procdures graphiques

Partie II C Procdures graphiques

La PROC GCHART trace des graphiques sur des variables qualitatives : diagrammes en btons ou diagrammes circulaires. La PROC GPLOT trace des graphiques sur des variables quantitatives : nuages de points, courbes. La PROC BOXPLOT trace des box plots (botes moustaches) reprsentatives de la distribution dune variable sur plusieurs sous-populations.

Axelle Chauvet-Peyrard

87

Anne 2006-2007

Langage SAS

Procdures graphiques

Graphiques pour variables qualitatives avec la PROC GCHART


La procdure PROC GCHART permet de raliser des graphiques tels que des diagrammes en btons ou des diagrammes circulaires ( camemberts ), ou encore des diagrammes en blocs ou en toiles, comme ceux raliss par la PROC CHART mais en plus joli. Elle peut aussi raliser des graphiques en 3D. Notons que cette procdure est incluse dans loutil presse bouton Graph n Go (voir le paragraphe consacr dans la partie III B).

PROC GCHART data= <options> ; HBAR variables </options> ; VBAR variables </options> ; BLOCK variables </options> ; STAR variables </options> ; PIE variables </options> ; HBAR3D variables </options> ; VBAR3D variables </options> ; PIE3D variables </options> ; < BY variables ; >

Les instructions :
Les cinq premires instructions proposes ne sont pas toutes obligatoires. Il en faut juste au moins une. Elles servent dfinir la liste des variables qualitatives sur lesquelles on souhaite faire des graphiques, ainsi que le type de graphique souhait. Linstruction HBAR ralise des diagrammes en btons horizontaux, un par variable spcifie. Linstruction VBAR ralise des diagrammes en btons verticaux. Linstruction BLOCK ralise des diagrammes par blocs et linstruction STAR des diagrammes en toiles. Enfin, linstruction PIE ralise des diagrammes circulaires (camemberts). Les trois autres instructions parlent delles mmes. Linstruction BY sert toujours dfinir des sous-populations. Dans ce cas, un graphique diffrent est trac pour chacune de ces sous-populations.

Les options :
Loption gout= permet dindiquer un catalogue dans lequel sauvegarder les graphiques (voir ce sujet la partie III C).

Quelques options des instructions HBAR / HBAR3D / VBAR / VBAR3D :


Loption ascending (resp. descending) permet dordonner les btons dans lordre croissant (resp. dcroissant) de leur taille. Loption nozero permet de ne pas diter les btons correspondant une occurrence nulle de la modalit. Cela peut servir notamment en prsence dune instruction BY, lorsque les sous-groupes forms sont htrognes. Loption group= et loption subgroup= permettent de faire des sous-groupes selon les modalits dune certaine variable. Loption group= gnre des diagrammes juxtaposs tandis que loption subgroup= gnre des diagrammes superposs. Loption midpoints= permet de dfinir les valeurs qui doivent tre au centre des blocs. Cela sert si la variable est numrique. Loption outside= place des statistiques au-dessus des barres (seulement dans le cas dun histogramme vertical). Cela peut-tre : la frquence (mot-cl freq), la frquence cumule (mot-cl cfreq), le pourcentage (mot-cl percent), le pourcentage cumul (mot-cl cpercent), la somme (mot-cl sum) ou la moyenne (mot-cl mean). Loption type= permet de prciser lordonne du graphique. Par dfaut, il sagit de la frquence. Mais on peut prfrer la frquence cumule, le pourcentage ou le pourcentage cumul. On peut galement choisir de calculer la somme ou la moyenne dune variable relatives aux diffrentes modalits Axelle Chauvet-Peyrard

88

Anne 2006-2007

Langage SAS

Procdures graphiques

envisages. On ajoute alors une option sumvar= . Par exemple, le graphique que lon souhaite obtenir doit reprsenter le salaire moyen par catgorie socio-professionnelle : alors csp est dans VBAR, et on prcise type=mean et sumvar=salaire. Il existe aussi de nombreuses options de mise en forme quon ne dtaille pas ici.

Quelques options des instructions PIE / PIE3D :


Loption explode=nom_modalit permet de faire ressortir une part du camembert pour la mettre en valeur. Loption other=p permet de regrouper les modalits dont le pourcentage est infrieur p dans une catgorie autres. On peut encore utiliser loption subgroup=. Il est alors possible dutiliser loption legend qui cre des lgendes (afin de ne pas surcharger le diagramme). Les options midpoints= , ascending / descending, type= et sumvar= sont encore valables. Il existe aussi de nombreuses options de mise en forme pour lesquelles on se reportera laide en ligne de SAS.

Exemple :
proc gchart data=malib.bidon ; hbar distribution / sumvar=va type=mean ; pie zone / explode=IF ; vbar distribution / ascending outside=percent ; run ;

Axelle Chauvet-Peyrard

89

Anne 2006-2007

Langage SAS

Procdures graphiques

Axelle Chauvet-Peyrard

90

Anne 2006-2007

Langage SAS

Procdures graphiques

Graphiques pour variables quantitatives avec la PROC GPLOT


La procdure PROC GPLOT permet de raliser des graphiques qui croisent deux variables, comme ceux raliss par la PROC PLOT mais en plus joli. Notons que cette procdure est incluse dans loutil presse bouton Graph n Go (voir le paragraphe consacr dans la partie III B).

PROC GPLOT data= <options> ; PLOT yvar * xvar <=points_var><=caractre> </options> ; < PLOT2 yvar * xvar ; > BUBBLE yvar * xvar = bubble_var </options> ; < BY variables ; > < SYMBOL <interpol= > ; >

Les options :
Loption uniform indique (sil y a une instruction BY) que tous les graphes doivent avoir la mme chelle. Loption gout= permet dindiquer un catalogue dans lequel sauvegarder les graphiques (voir ce sujet la partie III C).

Les instructions :
Linstruction PLOT permet de spcifier les variables mettre en ordonne et en abscisse. La syntaxe est la suivante :

PLOT ordonne*abscisse ;
On peut demander plusieurs graphiques dans la mme instruction PLOT, par exemple :

PLOT y*x1 y*x2 ;


Auquel cas on peut factoriser y :

PLOT y*(x1 x2) ;


Linstruction PLOT peut tre remplace par une instruction BUBBLE. Linstruction BUBBLE cre un graphique trois variables : une en abscisse, une en ordonne, et une dfinissant la taille des bulles . Notons que pour ces deux instructions la premire des variables indiques sera en ordonne. Notons encore que bubble_var doit tre numrique. A linstruction PLOT on peut aussi adjoindre une instruction PLOT2. Cela permet de superposer des graphiques avec des chelles diffrentes. Linstruction SYMBOL sert dfinir laspect du graphique. A lintrieur de cette instruction, le mot-cl interpol= permet de prciser si les points doivent tre relis et la manire dont ils le sont. scatter : nuage de points (option par dfaut) line : segments spline : courbe regression : droite de rgression needle : chaque point est reli son abscisse join : linaire par morceaux l : interpolation de Lagrange step : fonction en escalier Toujours lintrieur de linstruction SYMBOL, on peut crire : pointlabel= #var ; dans ce cas, SAS tiquette les points avec la valeur correspondante de la variable var. Exemple : Linstruction SYMBOL interpol=spline pointlabel= #lab ; commande que les points soient relis entre eux par une courbe et tiquets par la valeur de la variable lab. Dautres instructions existent encore pour la mise en page des graphes.

Axelle Chauvet-Peyrard

91

Anne 2006-2007

Langage SAS

Procdures graphiques

Quelques options des instructions PLOT et BUBBLE :


Dans linstruction PLOT yvar*xvar, si lon rajoute = * , les points apparaitront sous forme dtoiles. Si lon rajoute =var, o var est qualitative avec peu de modalits, les points prennent la forme des modalits de var. Loption overlay permet de superposer des plots. Si on a demand la droite de rgression, loption regeqn dite lquation de la rgression en question. Mis part cela, les options de linstruction PLOT sont des options de mise en page (quadrillage, couleurs, axes, lgende) Loption blabel dite les valeurs de bubble_var ct de chaque bulle. Les options bsize= et bcolor= permettent respectivement de choisir la taille et la couleur des bulles. Les autres options sont communes avec PLOT.

Exemples :
proc gplot data=malib.bidon; plot va*siren="+" ventes*siren="o" /overlay; run;

Axelle Chauvet-Peyrard

92

Anne 2006-2007

Langage SAS

Procdures graphiques

proc gplot data=bidon; plot va*obs ; plot2 ventes*obs ; symbol interpol=spline; where va<3000; run;

Axelle Chauvet-Peyrard

93

Anne 2006-2007

Langage SAS

Procdures graphiques

proc gplot data=bidon uniform; bubble ventes*va=taille2 /blabel bsize=3; by distribution; run;

Axelle Chauvet-Peyrard

94

Anne 2006-2007

Langage SAS

Procdures graphiques

Des botes moustaches avec la PROC BOXPLOT


Cette procdure permet de tracer des diagrammes de distribution appels botes moustaches ou box plots , en juxtaposant les diagrammes relatifs plusieurs sous-populations.

PROC BOXPLOT data= <options> ; PLOT var * groupvar </options> ; < INSET mots_cls_statistiques ; > < INSETGROUP mots_cls_statistiques ; >

Les instructions
Linstruction PLOT permet de dfinir : var : La variable dintrt quantitative continue pour laquelle on veut tracer les boxplots. groupvar : La variable dfinissant les sous-groupes de population. Les instructions INSET et INSETGROUP permettent dinsrer sur le graphique des encadrs de statistiques. Linstruction INSET calcule ces statistiques sur toute la population, tandis que INSETGROUP les calcule sur chacun des sous-groupes.

MEAN MIN MAX NMIN NMAX NOBS STDDEV

Moyenne Valeur minimale de la variable tudie Valeur maximale de la variable tudie Nombre dobservations minimal Nombre dobservations maximal Nombre total dobservations Ecart-type de la variable tudie

Statistiques accessibles avec INSET :

MEAN Moyenne MIN Minimum MAX Maximum N Nombre dobservations NHIGH, NLOW et NOUT Nombre dindividus atypiques (respectivement valeurs hautes, basses, et toutes) Q1, Q2 et Q3 Quartiles RANGE Max - Min STDDEV Ecart-type

Statistiques accessibles avec INSETGROUP :

Les options
Loption gout= permet dindiquer un catalogue dans lequel sauvegarder les graphiques (voir ce sujet la partie III C).

Les options de linstruction PLOT :


Loption outbox= permet de rcuprer dans une table la valeur de statistiques pour chaque groupe ainsi que les valeurs atypiques.

Axelle Chauvet-Peyrard

95

Anne 2006-2007

LANGAGE SAS

Aide lutilisation du logiciel

PARTIE III

Aide lutilisation du logiciel

Axelle Chauvet-Peyrard

96

Anne 2006-2007

LANGAGE SAS

Aide lutilisation du logiciel

Partie III A Conseils pratiques

Cette partie fournit quelques conseils pour une utilisation plus fluide du logiciel : Un exemple dutilisation de laide. A retenir : Utiliser plutt longlet Index, car longlet Recherche fournit des rsultats plthoriques. Taper en premier les mots les plus significatifs : FREQ Procedure et non PROC FREQ . Un recensement des messages derreur les plus frquemment rencontrs, avec leur diagnostic. Deux options pour rduire la taille de la LOG, et donc mieux sy retrouver dans les messages. Enfin, un kit de secours ou : que faire en cas de plantage lger ou aigu du logiciel ?

Axelle Chauvet-Peyrard

97

Anne 2006-2007

LANGAGE SAS

Aide lutilisation du logiciel

Exemple dutilisation de laide de SAS


Laide de SAS est hirarchise. Supposons pour reprendre lexemple prcdent que lon recherche comment ne pas diter les colonnes cumules dans un tableau de frquence. Voil comment lon procdera pour tre le plus efficace dans ce cas : Dans la partie index de laide SAS System Help. On tape FREQ (cest le nom de la procdure). Dans la liste, on choisit FREQ Procedure. Eventuellement on clique sur le lien Syntax. La syntaxe gnrale de la PROC FREQ apparat. Gnralement, la PROC ainsi que toutes les instructions constituent des liens. Cliquer sur ce lien permet daccder au dtail de linstruction (ce quelle fait, la forme donner aux arguments) ainsi quaux options disponibles. On clique donc sur le lien TABLES, car on se doute que loption que lon recherche se rattache cette instruction. Cest dans cette page que lon trouve loption nocum. Victoire !

Rservez lusage de la Recherche pour les cas o vous narrivez vraiment pas trouver par lindex. Elle fournit en effet des rsultats prolifiques et non ordonns, et il est difficile de sy retrouver.

Axelle Chauvet-Peyrard

98

Anne 2006-2007

LANGAGE SAS

Aide lutilisation du logiciel

Les erreurs les plus frquentes recenses dans la LOG


La plupart des erreurs donnant lieu des messages dans la LOG consistent en des erreurs de syntaxe aisment rparables. Le mot sur lequel le programme bloque est presque toujours soulign en rouge. Lerreur tient alors soit ce mot soit une syntaxe incomplte place juste avant. Souvent, il suffit de lire le message attentivement, car il est assez explicite. Lorsquil ne lest pas, commencez par chercher le point virgule qui manque !

Quelques exemples de messages frquemment rencontrs :


No matching DO/SELECT statement On a mis un END; autrement que pour fermer un DO; ou un SELECT;

There was 1 unclosed DO block On a oubli le END;

The variable m in the DROP, KEEP, or RENAME list has never been referenced Soit il y a une faute de frappe dans le nom de la variable soit elle nexiste pas dans la table considre soit il y a eu un rename plus haut dans ltape data qui fait quelle a chang de nom.

Libname malib is not assigned La librairie malib nexiste pas

Variable o is uninitialized. Missing values were generated as a result of performing an operation on missing values. Ces deux messages (en bleu) sont dlivrs ensemble lorsquune variable est utilise laquelle aucune valeur nest affecte. L encore il faut penser une ventuelle faute de frappe, par exemple o au lieu de 0.

You cannot open WORK.FINALE.DATA for output access with member-level control because WORK.FINALE.DATA is in use by you in resource environment ViewTable Window La table table dans la librairie work est ouverte donc on ne peut pas lutiliser dans le programme soumis.

Statement is not valid or it is used out of proper order Soit linstruction appele nexiste pas ou est mal orthographie, soit elle nest pas approprie dans le contexte donn, soit il manque un ; avant son appel.

Data set was not specified on the DATA statement Le mot qui suit linstruction output ne correspond aucune des tables cres dans ltape data.

Undeclared array referenced: x La notation x(i) a t utilise dans un cas autre que celui o x est un tableau (dfini par linstruction ARRAY). Soit x est une variable et alors on oublie cette notation, soit x est une fonction SAS et alors son rsultat doit tre rcupr dans une variable (on crit a=x(0) ; et non x(0) ; )

Axelle Chauvet-Peyrard

99

Anne 2006-2007

LANGAGE SAS
Expecting a ; A cet endroit il faut un point virgule.

Aide lutilisation du logiciel

Syntax error, expecting one of the following:... Soit il manque un ; ou une parenthse ou un caractre de ce style, soit les options ou instructions spcifies ne sont pas utilises bon escient.

User does not have appropriate authorization level for file MALIB.COURS.DATA. La librairie malib est assigne sur un rpertoire sur lequel on na pas suffisamment de droits daccs.

Comment diminuer le contenu de la log SAS ?


Loption nonotes permet de supprimer les notes SAS dans la LOG. Les messages dalerte (Warning) et messages derreur sont toujours visibles. Loption noechoauto permet de ne pas afficher dans la LOG le rsultat de lexcution dun fichier autoexec.sas

Kit de secours
Lorsquun programme semble ne pas devoir finir, le premier rflexe avoir est de cliquer sur licne Stop ! Le logiciel peut mettre un peu de temps ragir, mais cette solution fonctionne la plupart du temps. Une pop-up souvre alors, vous proposant soit de quitter SAS, soit dinterrompre les processus en cours. Cest bien sr cette seconde proposition quil faut choisir. Dans dautres cas, le programme semble stre termin correctement, mais le logiciel se met avoir un comportement hratique, reconnaissable par exemple labsence de message dans la LOG, ou bien des messages avertissant que les donnes sont en cours dutilisation. Ces erreurs font souvent suite un bug antrieur ou lappel incorrect dune procdure. On peut alors essayer le remde miracle suivant, qui consiste taper quit ; dans leditor et soumettre. Dans tous les cas, vitez douvrir plusieurs sessions SAS en mme temps, car le logiciel le supporte mal.

Axelle Chauvet-Peyrard

100

Anne 2006-2007

LANGAGE SAS

Aide lutilisation du logiciel

Partie III B Des assistants pour gagner du temps

Loutil Graph n Go
Le module Solutions Reporting Graph n Go ouvre un assistant presse-bouton qui fait appel au module SAS/GRAPH. En particulier, il permet de paramtrer en quelques clics des procdures de type GCHART ou GPLOT.

Premire tape : Choix de la source de donnes


La premire icne en haut gauche reprsente une table SAS. Cliquez dessus pour choisir la table contenant les donnes source de vos graphiques. SAS affiche les proprits de la table. Il est possible ce niveau dintroduire un filtre sur les colonnes. Une fois la table choisie, une icne la reprsentant apparat dans le corps principal de la fentre. Par un clic droit Properties, il est possible de paramtrer vos donnes, par exemple de filtrer les observations selon une condition where (onglet subset data ).

Deuxime tape : Choix du type de graphique


Les autres icnes reprsentent chacune un type de graphique : diagramme en btons (quivalent de la proc gchart avec instruction hbar ou vbar) ; diagramme circulaire (quivalent de la proc gchart avec instruction pie) ; courbe (quivalent de la proc gplot) ; courbe superpose avec un histogramme. A noter licne marque dun A qui permet dinsrer des zones de texte. Choisissez le type de graphique voulu en le faisant glisser vers le corps principal de la fentre (simple clic, glisser, lcher, puis simple clic pour valider lemplacement). Un cadre est dessin avec comme titre le type de graphe.

Troisime tape : Paramtrage du graphique


Onglet Data :
Par un clic droit Properties, vous ouvrez la fentre de paramtrage du graphique. Le premier onglet qui se prsente est longlet Data , qui permet de slectionner la source des donnes parmi les tables slectionnes dans la premire tape. Ensuite seulement vous pouvez indiquer au logiciel les variables quil doit considrer en abscisse et en ordonne. Diagramme en btons : Category : Il sagit de la variable qualitative pour laquelle vous souhaitez raliser le diagramme en btons ; en dautres termes, labscisse du diagramme. Response : Par dfaut NONE- qui signifie que la hauteur des btons sera dtermine par les effectifs (rels ou en pourcentage) de chacune des modalits de la variable category . Il est possible de choisir aussi une variable quantitative de la table source, dans ce cas la hauteur des btons dpend des valeurs de cette variable (en somme ou en moyenne). Group : Variable dont les modalits dfinissent des sous-populations ; les btons seront juxtaposs. Subgroup : Variable dont les modalits dfinissent des sous-populations ; les btons seront superposs. Statistic : Frequency par dfaut (effectifs) ; on peut aussi choisir Percent, Cumulative frequency ou Cumulative Percent. Lorsquune variable est indique en response , la statistique par dfaut est la moyenne (Average), mais on peut aussi choisir la somme, la part dans la somme ou encore la part cumule dans la somme. Enfin, il est possible dafficher la valeur de lordonne en cochant Show bar values . Axelle Chauvet-Peyrard

101

Anne 2006-2007

LANGAGE SAS
Diagramme circulaire :

Aide lutilisation du logiciel

Category : Il sagit de la variable qualitative sur laquelle vous souhaitez raliser le diagramme circulaire. Response : Par dfaut NONE- qui signifie que la taille des secteurs est dtermine par les effectifs (rels ou en pourcentage) de chacune des modalits de la variable category . Il est possible de choisir aussi une variable quantitative de la table source, dans ce cas la taille des secteurs dpend des valeurs de cette variable (en somme ou en moyenne). Statistic : Frequency par dfauts (effectifs), mais on peut aussi choisir Percent (pourcentages). Lorsquune variable est indique en response , la statistique par dfaut est la moyenne (Average), mais on peut aussi choisir la somme (Sum). Nuage de points / courbes : X : Choix de la variable placer en abscisse. Y : Choix de la variable placer en ordonne. ID : Choix ventuel dune variable dont les valeurs vont tiqueter les points. Plot style : Type de graphique, par dfaut Scatter (nuage de points). On peut aussi choisir Join (les points sont relis par des segments), Needle (les points sont relis laxe des abscisses), Step (les points sont relis par une fonction en escaliers), Spline (les points sont relis par une courbe) ou encore Regression (une droite de rgression est trace pour le nuage de points).

Onglet Titles / Footnotes :


Permet de dfinir un titre et ventuellement un pied de page au graphique.

Onglet Appearance :
Permet de paramtrer lapparence du graphique. Diagramme en btons : Color scheme : Choix des couleurs. Reference Lines : Trace des lignes de rfrence perpendiculaires aux btons. Bar style : Choix du style des btons. Orientation Vertical / Horizontal : Choix de lorientation des btons. Visible Midpoints : Par dfauts, toutes les modalits sont visibles et correspondent chacune un bton, mais on peut modifier cela. Order Midpoints by Category value / Statistic value : Choix du tri des btons, soit par ordre des valeurs de la variable tudie, soit par ordre de grandeur des btons (ascendant ou descendant). Diagramme circulaire : Color scheme : Choix des couleurs. Legend : Affichage de la lgende si cette option est coche. Pie style : Permet de choisir le style de camembert (normal ou 3D). Orientation : Permet de dfinir le point de dpart des tranches (par dfaut, 3h). Other label : Permet de dfinir un libell pour la modalit autres . Nuage de points / courbes : Color scheme : Choix des couleurs. Plot style : Choix du style de graphe (voir onglet data). Reference Lines X axis / Y axis : Trace des lignes de rfrence parallles respectivement laxe des ordonnes et laxe des abscisses. Point markers : Choix de lapparence des points ainsi que de leur taille.

Quatrime tape: Gestion de mes graphiques


Un clic droit sur un graphique permet daccder un certain nombre doptions : Copie, suppression, dplacement du graphique dans la fentre. Rduction / Agrandissement du graphique. Notamment, loption Maximize permet dafficher le graphique en pleine fentre. A noter que toute opration est interdite tant que le graphique est dans cet tat. Exportation du graphique (voir ce sujet la partie IIIC). Accs aux proprits du graphique.

Axelle Chauvet-Peyrard

102

Anne 2006-2007

LANGAGE SAS

Aide lutilisation du logiciel

SAS Query
Le menu Tools Query ouvre un assistant presse-bouton qui fait appel au module SAS/SQL. En dautres termes, il permet de faire des PROC SQL sans connatre le SQL.

Les tapes de la PROC SQL avec Query


Premire fentre : il sagit de choisir la librairie, puis les tables sur lesquelles on veut travailler (slectionner dans la colonne de gauche puis faire glisser droite grce la petite flche. Si plusieurs tables sont slectionnes, Query comprend quil faut faire une jointure de ces diffrentes tables. Deuxime fentre : choix des variables garder parmi les variables des tables slectionnes. La colonne du milieu prsente plusieurs possibilits : Column Alias / Label : permet daffecter un alias (= un autre nom) ou un label une colonne Column Formats : permet de choisir le format de la colonne Summary functions : permet de calculer le count ou la somme, la moyenne, le nombre de valeurs manquantes, de le colonne Move before et Move after : pour rorganiser lordre des colonnes Build a column : cest le seul qui nait pas besoin quune colonne soit slectionne pour fonctionner. Permet de construire une nouvelle colonne.

A partir de l, beaucoup de menus sont accessibles par un clic droit dans la fentre de droite.
Where conditions for subset : pour rajouter des conditions de type WHERE. Apparat alors une troisime fentre. A droite on clique sur la colonne concerne. Query propose alors une liste doprateurs. Enfin on complte la condition. On remarque quon peut entrer une valeur constante en cliquant sur <CONSTANT enter value> et quon peut visualiser la liste des modalits de la variable choisie en cliquant sur <LOOKUP distinct values>. Ces deux possibilits se trouvent dans la fentre de droite comme la liste des variables. Enfin mentionnons quon peut entrer plusieurs conditions WHERE en les reliant par un oprateur choisi grce longlet OPERATORS. Order by : pour trier le rsultat de la requte Groups for summary functions : quivalent du GROUP BY, Having condition for group : quivalent de la ligne HAVING compltant le GROUP BY, Join type : permet de choisir le type de jointure et la variable sur laquelle on fait la jointure (par dfaut on fait des jointures internes = inner ). Dans le premier des programmes ci-dessus, on fait une jointure interne sur la variable nom : on met sur la mme ligne les informations ayant trait la mme personne et on ne garde que les noms qui apparaissent dans les deux tables. Une jointure externe au contraire garde toutes les modalits de nom et complte la table avec des valeurs manquantes. Reset permet de rinitialiser la requte. Tables permet de modifier les tables slectionnes. Run query permet de soumettre le programme Query. Show query permet de visualiser le programme gnr par Query. On peut galement partir de l choisir de sauver le rsultat de la requte dans une table, ou bien enregistrer la requte dans un catalogue.

Axelle Chauvet-Peyrard

103

Anne 2006-2007

LANGAGE SAS

Aide lutilisation du logiciel

PARTIE III C Sauvegarde et exportation des sorties SAS


Le copier-coller de lOuput vers un document Word peut rapidement inspirer des envies de meurtre tant cest laid, fastidieux et capricieux. Pourquoi sembter, alors que les sorties des procdures SAS, quelles se trouvent dans la fentre Output ou dans une autre (fentre Graph pour les graphiques obtenus avec les proc gplot et gchart, fentre Insight) peuvent tre sauvegardes ? On distingue trois grandes catgories de sauvegarde :

La sauvegarde sous forme dun objet SAS dans un catalogue.


Ce type de sauvegarde peut sappliquer aux sorties Output, aux formats compils, aux graphiques qui se trouvent dans une fentre Graph ou ceux obtenus avec loutil Graph n Go, aux tableaux Insight, aux requtes cres avec SAS Query Cest la mthode la plus pratique pour lchange dobjets SAS entre membres dun groupe de travail : un seul fichier sas7bcat peut contenir tous les objets, et on na pas mettre le code source disposition

La sauvegarde en tant que fichier texte ou fichier image.


Les sorties Output peuvent aussi senregistrer en tant que telles, sous une extension spcifique SAS (.lst). On peut ensuite les ouvrir sous SAS ou dans un bloc-notes. Les graphiques et les sorties Insight peuvent tre exports sous format image. Les inconvnients de cette mthode sont la taille des fichiers obtenus et limpossibilit de les modifier.

Lexportation via lOutput Delivery System (ODS).


LODS permet dexporter nimporte quelle sortie de PROC sous un format lisible avec Word : HTML ou RTF. Les sorties exportes sont prsentes dune manire plus agrable que les sorties brutes. Pour utiliser lODS, il faut encadrer notre PROC par quelques lignes de code :

ods rtf file= w:\sas\sortiefreq.rtf ; proc univariate data=matable ; var mavariable ; run ; ods rtf close ;
Ceci cre un fichier sortiefreq.rtf dans le rpertoire \\w:\sas\. Ce fichier contient la sortie de la procdure encadre par lODS, ici une proc univariate. On pourrait souhaiter nexporter que certains des tableaux dits par la proc. Cest possible ! Dabord on va demander grce une instruction ods trace on ; ce que les noms donns pas SAS chacun de ces tableaux soit dit dans la LOG. Par exemple :

ods trace on ; proc univariate data=matable ; var mavariable ; run ; ods trace off ;
Voil quoi ressemble la LOG :

Axelle Chauvet-Peyrard

104

Anne 2006-2007

LANGAGE SAS
1 2 3 4 ods trace on ; proc univariate data=matable ; var mavariable ; run ;

Aide lutilisation du logiciel

Output Added: ------------Name: Moments Label: Moments Template: base.univariate.Moments Path: Univariate.mavariable.Moments ------------Output Added: ------------Name: BasicMeasures Label: Basic Measures of Location and Variability Template: base.univariate.Measures Path: Univariate.mavariable.BasicMeasures ------------Output Added: ------------Name: TestsForLocation Label: Tests For Location Template: base.univariate.Location Path: Univariate.mavariable.TestsForLocation ------------Output Added: ------------Name: Quantiles Label: Quantiles Template: base.univariate.Quantiles Path: Univariate.mavariable.Quantiles ------------Output Added: ------------Name: ExtremeObs Label: Extreme Observations Template: base.univariate.ExtObs Path: Univariate.mavariable.ExtremeObs -------------

NOTE: PROCEDURE UNIVARIATE used: real time 0.57 seconds cpu time 0.05 seconds

ods trace off ;

Admettons quon ne veuille exporter que les tableaux des moments et des quantiles. Linstruction ods select nom_tableau ; rsout le problme :

ods rtf file= w:/sas/sortiefreq.rtf ; ods select Moments Quantiles ; proc univariate data=matable ; var mavariable ; run ; ods rtf close ;
Axelle Chauvet-Peyrard

105

Anne 2006-2007

LANGAGE SAS

Aide lutilisation du logiciel

Axelle Chauvet-Peyrard

106

Anne 2006-2007

LANGAGE SAS

Aide lutilisation du logiciel

Comment sauvegarder quoi ?


Sauvegarder une sortie output :
Save as Cette option sauvegarde la sortie sous la forme dun .lst Pour ouvrir un .lst, on peut faire File - Open sous SAS, ou bien ouvrir le fichier avec NotePad. On peut aussi insrer le fichier dans un document Word en faisant Insertion - Fichier. Save as object Il sagit ici de sauvegarder la sortie dans un catalogue SAS. On ouvre le catalogue comme une table, en double cliquant dessus sous SAS. Et dedans on retrouve nos objets. Ces objets sont inaccessibles en dehors de SAS. ODS Le Output Delivery System sert exporter tout ou partie dune sortie SAS au moment mme de sa cration. Lexportation se fait en .rtf ou en .html. Les sorties sont plus jolies, et aisment exploitable sous Word. Mais il faut connatre les lignes de code

Sauvegarder un format :
On peut sauver nos formats dans un catalogue. Au moment de la cration du format, on rajoute une option : library=nom_catalog. Par la suite, si on veut utiliser le format, il suffira dinclure en dbut de session linstruction : option fmtsearch=(nom_catalog) ;

Sauvegarder un graphique (qui nest pas dans loutput) :


Save as image Il sagit de sauvegarder le graphique dans un catalogue. On commence par terminer la proc grce un quit ; . Puis on clique droit sur le graphique - Save as image. On choisit le catalogue destination et on donne un nom notre graphique. Le tour est jou. Option gout= On peut faire la sauvegarde directement au moment de la cration du graphique en utilisant une option : gout=nom_catalog ; Toujours lODS.

Pour les graphiques raliss avec Graph n Go :


Le mieux reste dexporter le graphique en html par un clic droit - export - html file. On peut exporter le graphique en html ou en format image avec clic droit - export - html file ou clic droit - export - external file. Lexportation en html enregistre aussi sous format gif. On peut aussi garder le graphique dans un catalogue en faisant clic droit - export - image entry. Enfin on peut voir le programme gnr par graph n go en faisant un clic droit - export - source file et en cliquant sur preview. On a bien sr la possibilit denregistrer ce programme.

Sauvegarder un rsultat insight :


En cliquant sur la flche en haut gauche du tableau que lon souhaite garder, on peut faire save, ce qui exporte le tableau dans la fentre output de SAS. Sinon on peut aller dans le menu File - Save. Si on a modifi la table et quon souhaite enregistrer ces modifications, on choisit Save Data. Si ce sont les sorties qui nous intressent, on peut les enregistrer dans un catalogue avec Save Graphics Catalog ou les exporter en format image avec Save Graphics File (tous les tableaux sont alors enregistrs, on peut choisir ce quils soient dans une mme image ou spars).

Axelle Chauvet-Peyrard

107

Anne 2006-2007

LANGAGE SAS

Aide lutilisation du logiciel

Sauvegarder un rsultat query :


Une fois que la requte est constitue, on peut faire Show Query. Il apparat alors une fentre avec le code gnr par Query pour cette requte. On a la possibilit denregistrer dans un catalogue : sous la forme dune requte (il suffira de faire clic droit - run) pour la lancer (on choisit alors Save Query - Save as query to include later), ou sous la forme dun programme SAS (en fait, une PROC SQL) par Save Query - Save as Source entry. On peut enfin enregistrer la PROC SQL correspondante dans un fichier .sas. Notez que dans cette fentre on peut aussi demander ce que la requte soit sauve dans une table (Create table).

Axelle Chauvet-Peyrard

108

Anne 2006-2007

LANGAGE SAS

Introduction aux macros

PARTIE IV

Introduction aux macros


Ds quon sattaque des donnes relles, il devient courant de devoir rpter le mme type de traitement un grand nombre de fois. Par exemple, je dispose dune table SAS par dpartement, et je dois faire un certain traitement sur ces 96 tables. Bien sr, je peux toujours soumettre 96 fois le programme, en modifiant le nom de la table chaque fois Mais je prfre dfinir un macroprogramme qui prendra le nom de ma table en argument ! Un macro-programme nest autre quun programme SAS paramtrable. Cette partie suit la progression suivante : Dabord un exemple introductif, qui permet de voir comment lon passe dun programme SAS classique un macro-programme. La dfinition dun macro-programme et dune macro-variable. Comment on dclare et on affecte une macro-variable. Les macro-fonctions et leur quivalent procdural , les routines. En particulier, on prsente les syntaxes des macro-fonctions et des routines les plus utiles. Un paragraphe de synthse qui prsente les diffrents outils de la charpente dun macroprogramme : arguments, boucles, etc. Enfin, un paragraphe sur le stockage et la rutilisation de programmes SAS. On retiendra deux grandes mthodes concurrentes : Enregistrement du programme (code) dans un .sas pour un usage personnel de la macro. Enregistrement du programme compil dans un catalogue SAS pour partager ses macros avec ses collgues et amis.

Axelle Chauvet-Peyrard

109

Anne 2006-2007

LANGAGE SAS

Introduction aux macros

Exemple introductif
Je suppose que je dispose dune table par dpartement, chaque table contenant, pour chacune des communes du dpartement : le code commune, le nombre dhabitants et le nombre demplois offerts. Je souhaite sur chacune de ces tables 1) ajouter une colonne txemploi gale au ratio du nombre demplois sur le nombre dhabitants 2) connatre la moyenne et lcart-type de txemploi 3) tracer une boxplot de txemploi, en distinguant deux sous-populations : communes de plus/moins de 10000 habitants. Pour rpondre ce besoin, je vais crire une tape data, une proc means, une proc format et une proc boxplot :

data dep01 ; set dep01 ; txemploi = nbemplois / nbhabitants ; run ; proc means data=dep01 mean std ; var txemploi ; proc format ; value taille low-<10000= moins de 10000 hab 10000-high = plus de 10000 hab ; proc boxplot data=dep01 ; format nbhabitants taille. ; plot txemploi*nbhabitants ; run ;
Ce programme simple contient 4 occurences du nom de la table. La mthode la main risque dtre puissamment fastidieuse... Voyons comment je peux transformer mon programme en un macro-programme :

%macro mapremieremacro (table) ; data &table. ; set &table. ; txemploi = nbemplois / nbhabitants ; run ; proc means data=&table. mean std ; var txemploi ; proc format ; value taille low-<10000= moins de 10000 hab 10000-high = plus de 10000 hab ; proc boxplot data=&table. ; format nbhabitants taille. ; plot txemploi*nbhabitants ; run ; %mend ;
Les changements intervenus sont minimes : Le programme a t encadr par un bloc %macro%mend permettant la dfinition du macro-programme. Le nom de la table est devenu une macro-variable passe en argument de la macro. Remarque : Le format tant cr une fois pour toute la session, et ne dpendant pas de la table, on peut (doit) le sortir du macro-programme.

Axelle Chauvet-Peyrard

110

Anne 2006-2007

LANGAGE SAS

Introduction aux macros

Macro-programmes et macro-variables
Syntaxe gnrale dun macro-programme
Un macro-programme prsente donc la syntaxe suivante :

%macro nom_de_la_macro (liste_arguments) ; Blocs dinstructions %mend ;


Lappel de la macro seffectue alors comme suit :

%nom_de_la_macro (liste-arguments) ;

Appel dune macro-variable


Les macros utilisent des macro-variables. Une macro-variable nest pas infode une table. Soit x une macro-variable. Le contenu de x est rcupr en crivant : &x. Le point peut tre omis sil ny a pas dambiguit. Supposons que lon ait dix macro-variables mv1, mv2, mv10 et que lon veuille effectuer le mme traitement sur les 10. On voudrait pouvoir faire une boucle finie, et donc pouvoir appeler les diffrents mvi. Mais dans ce contexte, i est aussi une macro-variable ! Quelles sont les possibilits ? &mvi. Appelle la macro-variable de nom mvi, qui nexiste pas. &mv.i Si la macro-variable mv existait, par exemple valant toto, crire &mv.i reviendrait crire totoi. &mv&i. Le &i. permet bien de rcuprer la valeur de i ; mais le &mv renvoie une macro-variable mv qui nexiste pas. La solution est : &&mv&i.

Les macro-variables contiennent du texte


Une macro-variable est toujours et partout une chane de caractres. Si lon souhaite utiliser sa valeur numrique ( supposer quil sagisse dune variable caractre numrique), il faudra forcer linterprtation en ayant recours des macro-fonctions dvaluation des nombres. Parmi ces macro-fonctions, on retiendra : %eval() qui permet dinterprter la chane de caractres comme un entier. %sysevalf() qui permet dinterprter la chane de caractres comme un nombre rel. Ces deux macro-fonctions sont dtailles dans le paragraphe suivant ( les macro-fonctions ).

Dclaration et affectation dune macro-variable


Les macro-variables sont : Soit des arguments du macro-programme Soit des variables systme Soit des variables internes au macro-programme. Dans ce dernier cas, il existe une instruction rserve la dclaration et laffectation simultanes dune macro-variable : %let. La syntaxe est la suivante :

%let ma_macro_variable = mon_texte ;


Exemple : %let toto = je mappelle toto ; %let titi = 2 ;

Axelle Chauvet-Peyrard

111

Anne 2006-2007

LANGAGE SAS

Introduction aux macros

Les macro-variables systme


Voici quelques exemples parmi les variables systme les plus utiles : Sysdate Syslast Syserr Syslibrc Sysver Date et heure courante Nom de la dernire table utilise Code du type derreur rencontr 0 si le libname sest bien excut Version de SAS utilise

Les macro-fonctions
Les fonctions SAS usuelles ne sont pas accessibles dans le cadre dun macro-programme. Il faut avoir recours aux macro-fonctions. On peut retenir quen rgle gnrale, prfixer un mot-cl ou une fonction SAS par le caractre % permet de trouver leur equivalent en macro-langage.

Macro-fonctions de manipulation de chane de caractres


%str() Masque les caractres spciaux %nrstr() Masque les caractres spciaux, y compris % et & %length() Retourne la longueur de largument %index(), %scan(), %substr() et %upcase() fonctionnent comme leurs quivalents en langage SAS usuel (voir dans la partie I les fonctions de manipulation de chanes de caractres). %qscan(), %qsubstr() et %qupcase permettent en outre dignorer les caractres rservs % et & (ils sont considrs comme des caractres normaux et donc non interprts).

Macro-fonctions dvaluation numrique


%eval() force la chane de caractres passe en argument tre interprte comme une opration arithmtique rsultat entier. Exemples : %let un = 1 ; %let deux = 2 ; %eval (1+2) %eval (&un+&deux) %eval (&un*2) %eval (&un/&deux)

Retourne Retourne Retourne Retourne

3 3 2 0 = partie entire du rsultat

%sysevalf() force la chane de caractres passe en argument tre interprte comme une opration arithmtique. Un deuxime argument, facultatif, permet de convertir le rsultat en entier ou en boolen. Exemples : %sysevalf (&un/&deux) Retourne 0,5 %sysevalf(5/2,floor) Retourne 2 = partie entire de 2,5 %let toto = %sysevalf(&un/&deux)+&un Affecte la macro-variable toto le texte 0,5+1 %sysevalf(&toto) Retourne 1,5 rsultat de lopration

La macro-fonction %sysfunc()
Plus gnralement, toutes les fonctions SAS peuvent tre utilises dans un macro-programme condition de passer leur appel en argument de la macro-fonction %sysfunc(). Exemples : %upcase ( toto ) est quivalent %sysfunc ( upcase ( toto ) ). %sysfunc ( int ( ranuni(0) * 100 ) ) tire un entier entre 0 et 100.

Axelle Chauvet-Peyrard

112

Anne 2006-2007

LANGAGE SAS

Introduction aux macros

Les routines
Les routines CALL sont des procdures qui permettent linteraction entre diffrentes tapes SAS ou entre diffrents environnements : lien entre tapes DATA et macro-variables, lien entre commandes DOS et programme SAS, rsolution dune macro-variable, etc.

La routine SYMPUT
Elle permet daffecter une macro-variable la valeur dune variable cre par une tape DATA. Si la macro-variable nexiste pas, la routine la cre. La routine est particulirement utile pour rcuprer dans une macro-variable les statistiques calcules par des procdures statistiques. Exemple : Dans lexemple ci-dessous la routine SYMPUT sert rcuprer la moyenne calcule par la PROC MEANS :

%macro moyenne (table, var) ; proc means data=&table mean ; var &var ; output out=temporaire mean=moy ; run ; data _null_ ; set temporaire ; call symput ( moyenne, moy ) ; run ; %put La moyenne de &var est &moyenne ; %mend ;
Ltape DATA ici ne sert qu copier la valeur de moy dans la macro-variable moyenne. Elle ne cre aucune table, do lemploi du mot-cl _null_ (voir ce sujet le dernier paragraphe de la partie I). Attention la syntaxe de la routine ! Le premier argument doit tre une chane de caractre contenant le nom de la macro-variable. Une mthode quivalente pour raliser cela est davoir recours une proc sql :

%macro moyenne_v2 (table, var) ; proc sql ; select distinct mean(&var) into :moyenne from &table ; quit ; %put La moyenne de &var est &moyenne ; %mend ;
On remarque que le programme est plus court, un point de plus en faveur de la proc sql (voir le paragraphe ce sujet dans la partie IIA). Ne pas oublier de prfixer le nom de la macro-variable par un : . Note : Ici, lappel de la routine nest pas indispensable, puisque la proc sql va dj imprimer le rsultat dans loutput. Mais on peut sans peine imaginer un cas o la macro-variable moyenne servirait autre chose quun simple %put

La routine EXECUTE
Si lon a dfini une chane de caractres contenant une commande SAS, lappel de la routine EXECUTE sur cette chane de caractres permet dexcuter cette commande.

La routine SYSTEM
Elle permet dexcuter une commande DOS partir dun macro-programme SAS, par exemple la cration de fichiers, le dplacement dans larborescence des dossiers ou lappel dun programme excutable. Pour plus de dtails, on se rfrera laide de SAS.

Axelle Chauvet-Peyrard

113

Anne 2006-2007

LANGAGE SAS

Introduction aux macros

Construire un macro-programme
Les arguments dun macro-programme
Les macros peuvent prendre un ou plusieurs arguments, prciss entre parenthses derrire le nom de la macro, et spars par des virgules. On peut leur faire prendre une valeur par dfaut, en crivant : Mon_argument = ma_valeur_par_dfaut. Exemple :

%macro madeuxiememacro (table, stats = mean std) ; data &table. ; set &table. ; txemploi = nbemplois / nbhabitants ; run ; proc means data=&table. &stats. ; var txemploi ; proc boxplot data=&table. ; format nbhabitants taille. ; plot txemploi*nbhabitants ; run ; %mend ;
Dans cet exemple, madeuxiememacro prend deux arguments : Le nom de la table = macro-variable de nom table . La liste des statistiques dites par la proc means = macro-variable de nom stats prenant comme valeur par dfaut mean std . Rgle gnrale : Lors de lappel de la macro : On doit renseigner tous les arguments ne prenant aucune valeur par dfaut. On peut ne pas renseigner les arguments prenant une valeur par dfaut ; On peut aussi les renseigner, afin quils prennent une autre valeur. De plus, les arguments sans valeur par dfaut : Apparaissent toujours en premier dans la liste des arguments. Sont positionnels : leur place dans la liste des arguments suffit les dfinir ie ce nest pas la peine de rappeler leur nom lors de lappel de la fonction. Exemple : %madeuxiememacro (malib.matable) ; ou : %madeuxiememacro (malib.matable, stats = sum mean std) ; Cette particularit permet dintroduire des paramtres qui servent rarement, sans que lutilisateur ait les renseigner chaque appel de la macro.

Les instructions conditionnelles et itratives


Le corps dune macro est constitu dune succession de programmes SAS classiques, savoir des tapes DATA et des tapes PROC. Il est possible de faire des boucles comme celles prsentes dans le paragraphe Boucles DO et conditions IF de la partie I. Les syntaxes sont modifies comme suit :

%DO%END %DO%TO%END %DO%WHILE%END %IF%THEN%ELSE

Axelle Chauvet-Peyrard

114

Anne 2006-2007

LANGAGE SAS

Introduction aux macros

Linstruction %PUT
Elle permet dafficher un message dans la LOG. Exemple : %let toto = 2 ; %put la valeur de toto est : &toto. ; la LOG affichera le message suivant : la valeur de toto est 2

Stocker et rutiliser un macro-programme


Il est simple dutiliser un macro-programme. Encore faut-il que le compilateur SAS reconnaisse cette macro ! Plusieurs cas de figure se prsentent :

Vous crivez une petite macro usage unique ou presque


En ce cas le plus simple est de compiler la macro chaque fois que vous souhaitez lutiliser. Cette manipulation cre une macro compile qui est place dans un catalogue de nom sasmacr situ dans la WORK (donc perdu la fin de la session SAS). A chaque appel de la macro, le compilateur va la chercher dans le catalogue en question.

Vous crivez une macro usage priv mais rcurrent


En ce cas il peut tre fastidieux de compiler la macro chaque session SAS. Il vaut mieux lenregistrer dans un .sas et indiquer au logiciel lemplacement de ce fichier grce une instruction de session option sasautos=. Plus prcisment : Jenregistre ma macro macro1512 dans un fichier qui porte le nom macro1512.sas ! Je soumets ( chaque fois que je veux utiliser macro1512, mais une seule fois par session) linstruction suivante :

option sasautos = (sasautos, c:\sas\mes_macros ) ;


En supposant que mon fichier macro1512.sas se trouve dans le dossier c:\sas\mes_macros\. Attention : Si vous modifiez le code de la macro, veillez la recompiler, car cest toujours la version prsente dans le sasmacr qui prime !

Vous crivez une macro destine tre utilise par dautres


En ce cas il nest pas toujours souhaitable de fournir le code source. La solution consiste crer un catalogue de macros compiles, puis transmettre (ou utiliser soi-mme) ce catalogue.

Pour stocker une macro dans un catalogue :


Je soumets linstruction de session suivante : option sasmstore = lib , o lib est le nom de la librairie dans laquelle je veux placer mon catalogue sasmacr de macros compiles. Jajoute une option /stored la dfinition de mes macros et je compile les macros avec cette option.

Pour utiliser un catalogue de macros compiles :


Je soumets linstruction de session suivante : option sasmstore = lib , o lib est le nom de la librairie dans laquelle se trouve le catalogue sasmacr des macros compiles. Jappelle la macro tout simplement, avec les bons arguments

Axelle Chauvet-Peyrard

115

Anne 2006-2007

LANGAGE SAS

Annexes

Annexes
Afin de faciliter votre recherche dans le polycopi, vous trouverez ci-aprs : 1. Un index alphabtique des procdures, options, instructions et concepts abords 2. Une aide thmatique du type Comment faire ? classe par grandes catgories : Manipulations sur les donnes Statistiques univaries Statistiques bivaries Modlisations Tests Graphiques Autres

Axelle Chauvet-Peyrard

116

Anne 2006-2007

LANGAGE SAS

Annexes

Index

%
%DO%END ........................................................ 113 %DO%TO%END ............................................. 113 %DO%WHILE%END ....................................... 113 %eval ..................................................................... 111 %IF%THEN%ELSE ......................................... 113 %index ................................................................... 111 %length .................................................................. 111 %let........................................................................ 110 %macro .................................................................. 110 %mend ................................................................... 110 %nrstr ..................................................................... 111 %put....................................................................... 114 %qscan ................................................................... 111 %qsubstr ................................................................. 111 %qupcase ................................................................ 111 %scan ..................................................................... 111 %str........................................................................ 111 %substr ................................................................... 111 %sysevalf................................................................ 111 %sysfunc ................................................................ 111 %upcase.................................................................. 111

BOXPLOT Procdure............................................. 94 bsize= Option.......................................................... 91 BUBBLE Instruction .............................................. 90 BY Instruction ....................18, 20, 21, 31, 36, 37, 48 C
catalogue ......................................................... 6, 103

CATMOD Procdure.............................................. 80
cellchi2 Option .......................................................... 45 Centiles .............................................................. 48, 51

_
_error_ ...................................................................... 28 _n_ ........................................................................... 26

_null_...................................................................... 29 2 2sls.......................................................................... 85 3 3sls.......................................................................... 85 A


Abs Fonction ............................................................. 23 all Option .................................................................. 67 alpha= Option ...................................................... 65, 67 Arcos Fonction .......................................................... 23 ARRAY Instruction .................................................... 27 Arsin Fonction ........................................................... 23

CHART Procdure ................................................. 87 chisq Option .............................................................. 45 ci=none Option .......................................................... 65 CIMPORT Procdure ................................................. 33 CLASS Instruction ..............................31, 48, 50, 65, 80 classdata= Option....................................................... 51 CLASSLEV Instruction .............................................. 51 cochran Option .......................................................... 65 collin Option ............................................................. 71 collinoint Option ........................................................ 71 Compress Fonction .................................................... 23 CONTENTS Procdure .......................................... 34 CONTRAST Instruction......................................... 81 CONVERT Procdure ................................................ 33 Cookd ...................................................................... 72 COPY Instruction ...................................................... 37 COPY Procdure ....................................................... 33 corr Option................................................................ 67 CORR Procdure ....................................................... 61 Cos Fonction ............................................................. 23 cov Option ................................................................ 62 Covratio.................................................................... 72 CPORT Procdure ..................................................... 33 Cronbach (alpha de) ................................................... 61 CSS .............................................................. 48, 51, 55 csscp Option .............................................................. 63 CV ............................................................... 48, 51, 55 D DATA tape.............................................................. 9 data= Option ....................................................... 30, 42 Date Fonction ............................................................ 23 Datepart Fonction ...................................................... 23 Day Fonction ............................................................. 23 DELETE Instruction .............................................. 13 Dequote Fonction....................................................... 23 descending Option ............................................ 42, 81 descending Option ............................................ 87, 88 deviation Option ........................................................ 45 Dffits ........................................................................ 72 Diagramme circulaire ........................................... 101 Diagramme en btons ........................................... 100 diagrammes circulaires ........................................... 87 diagrammes en btons............................................. 87 Difn Fonction ............................................................ 24 Dim Fonction ............................................................ 27 directory Option......................................................... 34 Distance interquartile.................................................. 48 DO et DO WHILE Instructions .................................... 22 DROP Instruction ................................................. 13 117
Anne 2006-2007

ascending Option .............................................. 87, 88 Atan Fonction ............................................................ 23 B bcolor= Option........................................................ 91 best= Option .............................................................. 62 bibliothque ............................................................ 6 blabel Option .......................................................... 91 BLOCK Instruction................................................. 87 box plot .............................................................. 53, 94
Axelle Chauvet-Peyrard

LANGAGE SAS
Durbin-Watson (test de) ..............................................68 dw Option ...........................................................68, 85

Annexes it2sls ........................................................................85 it3sls ........................................................................85 itsur .........................................................................85 K

E
galit des moyennes (test) ..........................................65

ENDOGENOUS Instruction ...................................84


ERROR Instruction ................................................28 exclusive Option.........................................................51 EXECUTE Routine ...............................................112

EXOGENOUS Instruction ......................................85 Exp Fonction .............................................................23 expected Option .........................................................45 explode= Option......................................................88 EXPORT Procdure ....................................................33 F
FILENAME Instruction...............................................33

k= ............................................................................85 KEEP Instruction ...................................................13 Kendall (tau-b de).......................................................61 kendall Option ...........................................................62 KEYLABEL Instruction ..............................................51 KEYWORD Instruction ..............................................51 Khi-deux Test ............................................................45 KURTOSIS ......................................................... 48, 55 L
LABEL Instruction .................................................17 Lagn Fonction ............................................................24 LAST........................................................................26 Lcl ............................................................................72 Lclm .........................................................................72

fiml..........................................................................85 FIRST .......................................................................26 first Option ..............................................................85 FIRSTOBS= Option ...................................................13 FIT Instruction ........................................................85 Floor Fonction ...........................................................23 fmtlib Option .............................................................41 fmtsearch= Option ....................................................106 FORMAT Instruction ................................. 17, 31, 41 FORMAT Procdure ...................................................41 FREQ Instruction .................................................49, 62 freq Option ................................................................53 FREQ Procdure ........................................................45 G

legend Option..........................................................88
Length Fonction .........................................................23 LENGTH Instruction..............................................16 LIBNAME Instruction ........................................ 6, 33 library= Option .................................................. 41, 106

liml ..........................................................................85 link= Option ............................................................81 LOG (fentre) ..........................................................7, 8 Log Fonction .............................................................23 LOGISTIC Procdure .............................................80 Lowcase Fonction ......................................................23 M

GCHART Procdure ...............................................87 gout= Option ....................................... 87, 90, 94, 106 GPLOT Procdure...................................................90 Graph n Go........................................ 87, 90, 100, 106 group= Option .........................................................87 groups= Option .......................................................42 H
H 72 h0= Option ................................................................65

MAX ............................................................ 48, 51, 55 Max Fonction.............................................................23 mdy Fonction .............................................................23 MEAN .......................................................... 48, 51, 55 mean Fonction ...........................................................24 Means Procdure ........................................................48 MEANS Procdure .....................................................50 MEDIAN ...................................................... 48, 51, 55

HBAR Instruction ...................................................87 hoeffding Option ........................................................62 I


i Option .....................................................................70 ID Instruction ................................................. 37, 49, 67 IFTHENELSE Instructions ............................22 IMPORT Procdure ....................................................33

melo ........................................................................85 MERGE Instruction ......................................... 20, 39 midpoints= Option ......................................................88 midpoints= Option ..................................................87 MIN ............................................................. 48, 51, 55 Min Fonction .............................................................23 Mod Fonction ............................................................23 MODE ......................................................................55 MODEL Instruction .................................. 30, 67, 80, 84 MODEL Procdure .................................................84 Month Fonction..........................................................23 MSIGN .....................................................................55 mu0= Option .............................................................53 N
N 48, 51, 55 n Fonction .................................................................24 name= Option ............................................................37 nextrobs= Option........................................................53 NMISS.......................................................... 48, 51, 55 nmiss Fonction ...........................................................24 NOBS .......................................................................55

in= Option .........................................................19, 29 Index Fonction ...........................................................23 influence Option ...................................................68, 81 INFORMAT Instruction .........................................17 Input Fonction ............................................................24 INPUT Fonction .....................................................16 INSET Instruction ...................................................94 INSETGROUP Instruction......................................94 INSTRUMENTS Instruction...................................84 interpol=..................................................................90 iplots Option............................................................81
Axelle Chauvet-Peyrard

118

Anne 2006-2007

LANGAGE SAS
nocol Option.............................................................. 45 nocorr Option ............................................................ 62 nocum Option ............................................................ 46 noduprecs Option ....................................................... 36

Annexes
PROBPLOT Instruction .............................................. 54 PROBS ..................................................................... 55 PROBT......................................................... 48, 51, 55 PROC Etape .............................................................. 30 Put Fonction .............................................................. 24 PUT Fonction ......................................................... 16

noechoauto Option.................................................. 99
nofreq Option ...................................................... 45, 46 noint Option .................................................. 68, 81, 85

nonotes Option........................................................ 99 noobs Option ............................................................. 36 nopercent Option.................................................. 45, 46 noprint Option ........................................................... 30 noprob Option ........................................................... 63 NORMAL ................................................................. 55 normal Option ........................................................... 53 normalit (test de) ...................................................... 53 norow Option ............................................................ 45 nosimple Option ........................................................ 63 nozero Option ......................................................... 87 O
OBS= Option............................................................. 13 ODS (Output Delivery System) ............................ 52, 103

Q
Q1................................................................ 48, 51, 55 Q3................................................................ 48, 51, 55 QRANGE ..................................................... 48, 51, 55 Quantiles .................................................................. 53 Quartiles ................................................................... 48 Query ............................................................. 102, 107 Quote Fonction .......................................................... 23

R
r Option .................................................................... 68 Ranbin Fonction ........................................................ 24 RANGE ........................................................ 48, 51, 55 rank Option ............................................................... 62

ols ........................................................................... 85 order= Option ................................................ 45, 51, 81 other= Option.......................................................... 88 out= Option ..................................31, 36, 37, 42, 45, 85 outbox= Option....................................................... 94 outest= Option ............................................... 67, 81, 85 outh= Option ............................................................. 62 outk= Option ............................................................. 62 outp= Option ............................................................. 62 OUTPUT (fentre) ................................................... 7, 8 OUTPUT Instruction ......................13, 31, 49, 54, 68 outs= Option.............................................................. 62 outside= Option ...................................................... 87 overlay Option ........................................................ 91 P PARAMETERS Instruction.................................... 85 PARTIAL Instruction ................................................. 62 partial Option ............................................................ 63 PCTLPRE=............................................................. 54 PCTLPTS= ............................................................. 54 PCTN ....................................................................... 51 PCTSUM .................................................................. 51 Pearson (coefficient de corrlation de) .......................... 61 pearson Option .......................................................... 62 percent Option ........................................................ 42 PIE Instruction ........................................................ 87 PLOT Instruction ........................................... 67, 90, 94 plot Option.............................................................. 85 PLOT Procdure ..................................................... 90 PLOT2 Instruction .................................................. 90 plots Option............................................................... 53 pointlabel= .............................................................. 90 Poisson Fonction ........................................................ 24 Predicted ................................................................... 72 prefix= Option ........................................................... 37 Press......................................................................... 72 PRINT Procdure ....................................................... 36 Probbnml Fonction ..................................................... 24 Probchi Fonction ........................................................ 24 Probf Fonction ........................................................... 24 Probhypr Fonction...................................................... 24 PROBM .................................................................... 55 PROBN .................................................................... 55 Probnorm Fonction..................................................... 24
Axelle Chauvet-Peyrard

RANK Procdure.................................................... 42 RANKS Instruction ................................................ 42 Rannor Fonction ........................................................ 24 Ranpoi Fonction ........................................................ 24 Rantbl Fonction ......................................................... 24 Ranuni Fonction ........................................................ 24 REG Procdure .......................................................... 67 regeqn Option ......................................................... 91 RENAME Instruction ............................................. 16 rename= Option ................................................ 19, 20 Repeat Fonction ......................................................... 23 Residual.................................................................... 72 RESTRICT Instruction ............................................... 68 RESTRICT Instruction ........................................... 84 RETAIN Instruction ................................................... 25 Round Fonction ......................................................... 23 Rstudent ................................................................... 72 S
sasautos= Option...................................................... 114 sasmstore = Option................................................... 114 Scan Fonction ............................................................ 23 SELECT Instruction .............................................. 22 selection= Option ................................................. 71, 81 SET Instruction................................................ 9, 13, 18 short Option .............................................................. 34 Sign Fonction ............................................................ 23 SIGNRANK .............................................................. 55 simple Option ...................................................... 67, 81 Sin Fonction .............................................................. 23 SKEWNESS ....................................................... 48, 55

SORT Procdure............................................... 18, 36 Spearman (coefficient de corrlation des rangs de) ......... 61 spearman Option ........................................................ 62 spec Option ............................................................... 68 SQL Procdure .................................................. 39, 102 Sqrt Fonction ............................................................. 23 SRESTRICT Instruction......................................... 84 ss1 Option ................................................................. 70 ss2 Option ................................................................. 70 sscp Option ............................................................... 63 STAR Instruction.................................................... 87 STD ............................................................. 48, 51, 55 STDERR ............................................................ 48, 51 119
Anne 2006-2007

LANGAGE SAS
Stdi ...........................................................................72 STDMEAN ...............................................................55 Stdp ..........................................................................72 Stdr...........................................................................72 stem and leaf (diagramme) ...........................................53

Annexes
TRANSPOSE Procdure .............................................37 Tranwd Fonction ........................................................23 TTEST Procdure .......................................................65

type= Option ..................................................... 87, 88 U uniform Option........................................................90 UNIVARIATE Procdure...................................... 48, 53 Upcase Fonction .........................................................23 UPDATE Instruction ..............................................21 USS .............................................................. 48, 51, 55 usscp Option ..............................................................67 V
VALUE Instruction ....................................................41 VAR ............................................................. 48, 51, 55 var Fonction ..............................................................24 VAR Instruction ..................... 30, 37, 42, 48, 50, 62, 65

STEST Instruction...................................................84 STOP Instruction...................................................28 Student ......................................................................72 style= Option .............................................................51 subgroup= Option..............................................87, 88 Substr Fonction ..........................................................23 SUM ............................................................. 48, 51, 55 sum Fonction .............................................................24 sumvar= Option.......................................................88 SUMWGT ..................................................... 48, 51, 55 sur............................................................................85 SYMBOL Instruction..............................................90 SYMPUT Routine .................................................112 Sysdate ...................................................................111 Syserr .....................................................................111 Syslast ....................................................................111 Syslibrc ...................................................................111 SYSLIN Procdure..................................................84 SYSTEM Routine .................................................112 Sysver .....................................................................111 T
T 48, 51, 55 Table .........................................................................6 TABLE Instruction .....................................................50 tableaux de contingence...............................................45 tableaux de frquence..................................................45 TABLES Instruction ...................................................30 TABULATE Procdure ...............................................50 Tan Fonction..............................................................23 TEST Instruction ..................................................68, 80

VBAR Instruction ...................................................87 vif Option ................................................................70 W


Weekday Fonction ......................................................23 WEIGHT Instruction ..................................................49 WHERE Instruction ......................................... 13, 31 White (test de) ...........................................................68 WITH Instruction .......................................................62 WIZARD Module ......................................................33

WORK Library .........................................................6 Y


Year Fonction ............................................................23

TEST Instruction.....................................................84 ties= Option.............................................................42 tol Option ................................................................70

Axelle Chauvet-Peyrard

120

Anne 2006-2007

LANGAGE SAS

Annexes

Comment faire ?
Des manipulations sur les donnes :
MANIPULATION DE TABLES :
Ce que je veux faire Trier une table Fusionner deux tables Concatner deux tables Slectionner des variables Slectionner certaines observations Comment SAS y rpond PROC SORT Instruction MERGE (tape DATA) Ou SAS/SQL : PROC SQL ou outil Query Instruction SET (tape DATA) Instruction KEEP ou DROP (tape DATA) Instruction WHERE (tape DATA ou PROC) Ou DELETE ou OUTPUT (tape DATA) page indicative P36 P20 P39-40 P99 P13 P13 P13

MANIPULATION DES ATTRIBUTS DES VARIABLES :


Ce que je veux faire Renommer une variable Transformer une variable caractre en variable numrique Dfinir la longueur de stockage dune variable Affecter un label une variable Appliquer un format une variable Comment SAS y rpond Instruction RENAME (tape DATA) Fonction Input () Instruction LENGTH (tape DATA) Instruction LABEL (tape DATA) Instruction FORMAT (tape DATA ou PROC) page indicative P16 P16 P16 P17 P17

POUR LE TRAITEMENT DES DONNEES :


Ce que je veux faire Faire des sous-groupes Slectionner certaines observations Pondrer les observations Faire du regroupement de modalits Attribuer un rang une modalit Dsigner une variable comme identificateur Comment SAS y rpond Instruction BY ou CLASS Instruction WHERE
1 1 1

page indicative P31-48-64 P31 P49

Instruction WEIGHT ou FREQ

PROC FORMAT pour crer le format, Instruction P41 FORMAT pour lappliquer 1 PROC RANK Instruction ID
1

P42-43 P66

Des statistiques univaries :


SUR VARIABLE QUALITATIVE :
PROC FREQ PP45 47

Nombre doccurrences dune modalit Pourcentage doccurrence dune modalit

Dans les procdures concernes


121
Anne 2006-2007

Axelle Chauvet-Peyrard

LANGAGE SAS

Annexes

SUR VARIABLE QUANTITATIVE :


PROC MEANS Ou PROC UNIVARIATE (sortie standard beaucoup plus fournie) Ou option SIMPLE 1 P48-49 PP53 59 P66

Toutes les statistiques simples recenses ci-dessous figurent dans la sortie standard de la PROC UNIVARIATE. Ce que je veux calculer Nombre dobservations non manquante Nombre de valeurs manquantes Somme Moyenne Ecart-type Variance Minimum Maximum Coefficient dasymtrie Coefficient daplatissement Somme des carrs Somme des carrs des carts la moyenne Mdiane Mode Distance interquartile N NMISS SUM MEAN STD VAR MIN MAX SKEWNESS KURTOSIS USS CSS MEDIAN MODE QRANGE Q1 (premier quartile) Q3 (troisime quartile) P10 (premier dcile) P90 (neuvime dcile) P1 (premier centile) P99 (dernier centile) P5 P95 Pour les autres centiles, PROC UNIVARIATE. Option de la PROC MEANS adquate

Quantiles

Des statistiques bivaries :


STATISTIQUES BIVARIEES SUR VARIABLE QUALITATIVE :
Ce que je veux diter Occurrences dun profil de modalits Distance du Chi-deux Statistiques drives du Chi-deux Contributions la distance du Chi-deux Comment SAS y rpond PROC FREQ PROC FREQ option chisq PROC FREQ option chisq PROC FREQ option cellchi2

Dans les procdures concernes


122
Anne 2006-2007

Axelle Chauvet-Peyrard

LANGAGE SAS

Annexes

STATISTIQUES BIVARIEES SUR VARIABLE QUALITATIVE ORDINALE :


Ce que je veux diter Tau-b de Kendall Corrlation des rangs de Spearman Comment SAS y rpond PROC CORR option kendall PROC CORR option spearman

STATISTIQUES BIVARIEES SUR VARIABLE QUANTITATIVE :


Ce que je veux diter Coefficients de corrlation (Pearson) Matrice des covariances Coefficients de corrlation partielle Mesure de liaison (D) de Hoeffding Comment SAS y rpond PROC CORR ou Option CORR PROC CORR option cov PROC CORR option partial PROC CORR option hoeffding
1

Des modlisations :
Ce que je veux faire Spcifier un modle Imposer une restriction un modle Effectuer une slection de variables dans un modle Dtecter les individus atypiques dun modle Dtecter les individus influents dun modle Effectuer une rgression linaire multiple Effectuer une rgression sur variable catgorielle Effectuer une modlisation plusieurs quations Comment SAS y rpond Instruction MODEL
1 1

page indicative P66 P67 P70 P67


1 1

Instruction RESTRICT Option SELECTION= Option R


1

Option INFLUENCE PROC REG PROC LOGISTIC

P67 PP66 78 PP79 82 P83-84

PROC SYSLIN ou PROC MODEL

Des tests :
Ce que je veux faire Test dadquation une loi normale Test de nullit de la moyenne Test dgalit des moyennes Choix du seuil pour le calcul dintervalles de confiance Test de Durbin Watson Test de White Test de liaison entre paramtres estims dun modle Instruction TEST
1

Comment SAS y rpond PROC UNIVARIATE option normal PROC UNIVARIATE PROC TTEST Option ALPHA Option DW
1 1 1

page indicative P53 P53 P64-65 P66 P67 P67 P67

Option SPEC

1 1

Dans les procdures concernes Dans les procdures concernes


123
Anne 2006-2007

Axelle Chauvet-Peyrard

LANGAGE SAS

Annexes

Des graphiques :
Ce que je veux faire Bote moustaches Diagramme stem and leaf Diagramme dajustement une loi normale Graphe des rsidus dune modlisation Histogrammes Diagrammes circulaires Diagramme en btons ou circulaires dont la hauteur (resp. les angles) varie avec la valeur dune variable quantitative Nuage de points de y en fonction de x Graphe (reli) y en fonction de x Graphes superposs : y et z en fonction de x Comment SAS y rpond PROC UNIVARIATE option PLOTS Ou PROC BOXPLOT PROC UNIVARIATE option PLOTS PROC UNIVARIATE option PLOTS Instruction PLOT
1

page indicative P53 P91 P53 P53 P66 P84 P84 P85

PROC GCHART instruction HBAR ou VBAR PROC GCHART instruction PIE Option SUMVAR= de la PROC GCHART

PROC GPLOT PROC GPLOT avec instruction SYMBOL INTERPOL= Option OVERLAY ou instruction PLOT2 de la PROC GPLOT

P87 P87 P87-88

Autre chose :
Ce que je veux faire Allouer une librairie Importer des donnes Lier un fichier de donnes externes Voir les proprits dune table Faire des modifications la main Enregistrer un rsultat SAS (autre) Exporter une sortie SAS Utiliser laide en ligne de SAS Vider le contenu dune fentre Imprimer une table dans lOUTPUT Comment SAS y rpond Instruction LIBNAME Module SAS/Wizard ou PROC IMPORT Instruction FILENAME SAS/INSIGHT ou Menu Edit - Edit Mode PP31-49-54 P100 P94 P8 P36 Sauvegarde dans un catalogue ou un fichierP102 Output Delivery System Menu Help SAS System Help Commande Clear PROC PRINT page indicative P6 P33 P33

PROC CONTENTS ou Clic droit Properties P34-35

Rcuprer les rsultats dans une table Instruction OUTPUT

Axelle Chauvet-Peyrard

124

Anne 2006-2007