Langage SAS Ensae

Embed Size (px)

Citation preview

LANGAGE SAS

Prsentation

LANGAGE SAS

Axelle Chauvet-Peyrard

Anne scolaire 2006-2007

Axelle Chauvet-Peyrard

1

Anne 2006-2007

LANGAGE SAS

Prsentation

PrsentationSAS (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 objetsIl 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 DATALtape 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 PROCLtape 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 logicielCette 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 SASLes 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.

AnnexesCes 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

2

Anne 2006-2007

LANGAGE SAS

Prsentation

SommairePrsentation Sommaire INTRODUCTION 1 3 7

PRSENTATION GNRALE DU LOGICIEL SAS ET DE SES OBJETSTables, 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 DATALa 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

3

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 73Anne 2006-2007

LTAPE PROCStructure 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

4

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

5

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

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

Axelle Chauvet-Peyrard

6

Anne 2006-2007

LANGAGE SAS

Introduction

INTRODUCTION

Prsentation gnrale du logiciel SAS et de ses objetsTables, 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 tableIl 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

7

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

8

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

9

Anne 2006-2007

LANGAGE SAS

Etape DATA

PARTIE I

Ltape DATAUne 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 DATASoit 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 0Puis 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 ab ou Min(a,b) dsigne le minimum entre a et b a>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-Peyrard15Anne 2006-2007LANGAGE SASEtape DATALes attributs des variablesChaque 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/05Formats 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-Peyrard16Anne 2006-2007LANGAGE SASEtape DATAModifier les attributs obligatoires dune variable :Modifier le nom : Instruction RENAMEDans 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 LENGTHA 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 destinationDATA 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 varcharDATA 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 desAxelle Chauvet-Peyrard17Anne 2006-2007LANGAGE SASEtape DATAModifier les attributs facultatifs dune variable :Appliquer un label : Instruction LABELA 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 INFORMATA 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-Peyrard18Anne 2006-2007LANGAGE SASEtape DATAConcatnation et fusion de tablesLa concatnation de tables : Instruction SETIl 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 18table b nom note titi 10 tutu 8Alors 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 8Les 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 BYIl 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 8A 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-Peyrard19Anne 2006-2007LANGAGE SASEtape DATADistinction des donnes selon leur table dorigineSupposons 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 . 8On 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 8Soit 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-Peyrard20Anne 2006-2007LANGAGE SASCe programme fournit le rsultat suivant :Etape DATAtable ab nom note origine toto 12 a titi 14 a tata 18 a titi 10 b tutu 8 bLa fusion de tables : Instruction MERGEMais 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 . 8Il 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 8Remarque 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 18Axelle Chauvet-Peyrard21Anne 2006-2007LANGAGE SASEtape DATALa mise jour dune table partir des donnes dune autre table : Instruction UPDATESupposons 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 8Titi 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-Peyrard22Anne 2006-2007LANGAGE SASEtape DATABoucles DO et conditions IFLe 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-Peyrard23Anne 2006-2007LANGAGE SASEtape DATALes fonctions SASFonctions 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 zFonctions 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 dFonctions 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 x1000000 THEN STOP; [Bloc dinstructions]; END;Axelle Chauvet-Peyrard29Anne 2006-2007LANGAGE SASEtape DATAEtape DATA sans cration de tableSupposons 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-Peyrard30Anne 2006-2007Langage SASEtape PROCPARTIE IILtape PROCOn 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 PROCPROC XXX ; INSTRUCTION1 argument_instruction ; INSTRUCTIONp argument_instruction ; 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-Peyrard31Anne 2006-2007Langage SASEtape PROCLinstruction 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. notreExemple :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-Peyrard32Anne 2006-2007Langage SASProcdures de manipulation de donnesPartie II A Procdures de manipulation des donnesLes 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-Peyrard33Anne 2006-2007Langage SASProcdures de manipulation de donnesQuelques notions sur lImportation / Exportation de donnesLorsque 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-Peyrard34Anne 2006-2007Langage SASProcdures de manipulation de donnesConnatre les proprits dune table avec la PROC CONTENTSLa 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 tableMthode 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-Peyrard35Anne 2006-2007Langage SASProcdures de manipulation de donnesLecture 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 lentrepriseLa 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-Peyrard36Anne 2006-2007Langage SASProcdures de manipulation de donnesImprimer une table dans la fentre Output avec la PROC PRINTPour 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= ;Les options :Loption noobs supprime ldition du numro de lobservation.Trier une table avec la PROC SORTPour 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= ; BY 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-Peyrard37Anne 2006-2007Langage SASProcdures de manipulation de donnesTransposer un tableau avec la PROC TRANSPOSEDans 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= ; 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 Franaisnote 15 10 14 18 8 12Et que lon souhaite obtenir la table notes2 suivante :table notes2 eleve note_math note_francais tata 15 10 titi 14 18 toto 8 12Alors 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-Peyrard38Anne 2006-2007Langage SASCe programme fournit le rsultat suivant :Procdures de manipulation de donnestable notes2 eleve _NAME_ math fran_ais tata note 15 10 titi note 14 18 toto note 8 12On 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-Peyrard39Anne 2006-2007Langage SASProcdures de manipulation de donnesFaire des jointures de tables avec la PROC SQLLe 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-Peyrard40Anne 2006-2007Langage SASProcdures de manipulation de donnesSupposons 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 SQLSupposons 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 espagnolEt 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-Peyrard41Anne 2006-2007Langage SASProcdures de manipulation de donnesCrer un format avec la PROC FORMATSupposons 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 ; 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- < 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 nocolce 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 chiAxelle Chauvet-Peyrardcomment le demander expected deviation cellchi2 chisq46Anne 2006-2007LANGAGE SASProcdures de traitement statistiquePour un tableau de frquence ce que la procdure dite effectif de la modalit pourcentage effectifs cumuls pourcentages cumuls comment le supprimer nofreq nopercent nocumLecture 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.00zone IF NE NW SE SWFrequency 4 9 2 15 20Percent 8.00 18.00 4.00 30.00 40.00Table of taille by zone taille zoneFrequency 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.00NE 4 8.00 12.12 44.44 4 8.00 30.77 44.44 1 2.00 25.00 11.11 9 18.00NW 0 0.00 0.00 0.00SE 11 22.00 33.33 73.33 4 8.00 30.77 26.67 0 0.00 0.00 0.00 15 30.00SW 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.002 2 4.00 15.38 100.00 0 0.00 0.00 0.00 2 4.0013 26.0034 8.00Total50 100.00Axelle Chauvet-Peyrard47Anne 2006-2007LANGAGE SASProcdures de traitement statistiqueExemple 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 tailleFrequency Cell Chi-Square Percent 1 locale23Total 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.12rgionaleTotalStatistics 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 < WEIGHT variable ; > < ID variable ; > < OUTPUT ; >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-Peyrard49Anne 2006-2007LANGAGE SASProcdures de traitement statistiqueLorsquune 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 :OUTPUTOUT=resultatMEAN=moy1 moy2 moy3STD=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.2630000proc means data=malib.bidon sum ; var ventes ; class zone distribution ; run ;Analysis Variable : ventes N Obs 1 3 8 1 2 14 1 20zone IFdistribution nationale rgionale locale rgionale rgionale locale rgionale localeSum 0.2630000 0.1960000 0.0190000 0.0740000 0.1890000 0.1740000 0.0100000 0.0750000NENW SESWLa 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-Peyrard50Anne 2006-2007LANGAGE SASProcdures de traitement statistiqueDes tableaux de statistiques descriptives avec la PROC TABULATECette 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 ; CLASS variables ; < CLASSLEV variables / style= ; > < KEYLABEL keyword=description ; > < KEYWORD keywords / style= ; > TABLE , 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-Peyrard51Anne 2006-2007LANGAGE SASProcdures de traitement statistiquePour 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 policeExemple 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 CentilesAxelle Chauvet-Peyrard52Anne 2006-2007LANGAGE SASProcdures de traitement statistiqueLecture 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) zoneIF NE NW SE SW 309.85 51.23moyenne cart-type8279.50790.89 8315.50 1003.80 904.39 669.406876.15 1784.26distributionlocale nationale rgionale effectif percent effectif percent effectif percentzoneIF 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. LinstructionKEYLABEL 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 linstructionmean='moyenne'style=[font_size=2CLASSLEV 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-Peyrard53Anne 2006-2007LANGAGE SASProcdures de traitement statistiqueStatistiques univaries et distributions avec la PROC UNIVARIATELa 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= ; VAR liste_variables ; < PROBPLOT variable / options ; > < BY liste_variables ; > < FREQ variable ; > < WEIGHT variable ; > < ID liste_variables ; > < OUTPUT < 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-Peyrard54Anne 2006-2007LANGAGE SASProcdures de traitement statistiqueLes 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-Peyrard55Anne 2006-2007LANGAGE SASProcdures de traitement statistiqueLa 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 STDMEANBasic Statistical Measures Location Mean Median Mode MEAN MEDIAN MODE Std Deviation Variance Range Interquartile range Variability STD VAR RANGE QRANGETests 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 PROBSQuantiles (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 MINExtreme 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 normalitAxelle Chauvet-Peyrard56Anne 2006-2007LANGAGE SASProcdures de traitement statistiqueExemple :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.664886Basic Statistical Measures Location Mean Median Mode 1589.000 1379.000 1379.000 Variability Std Deviation Variance Range Interquartile Range 714.65955 510738 2942 694.00000Tests 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| W D W-Sq A-Sq 0.0001 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 )ko 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 typekj / 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 variablesLoption 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-Peyrard72Anne 2006-2007LANGAGE SASProcdures de traitement statistiqueListe 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 lobservationLcl (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 estimsLecture 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 392513Source Model Error Corrected TotalDF 3 27 30F Value 23.65Pr > F |t| 0.0620 0.8435 F |t| 0.0620 0.8435 ChiSq 0.1873 0.852 31 0.484Durbin-Watson D Number of Observations 1st Order AutocorrelationOutput 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.023Obs 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-Peyrard75Anne 2006-2007LANGAGE SASOutput 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.2468Procdures de traitement statistiqueObs 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 31RStudent 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.7412DFFITS 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.1311Sum of Residuals Sum of Squared Residuals Predicted Residual SS (PRESS)0 10597854 50241922Axelle Chauvet-Peyrard76Anne 2006-2007LANGAGE SASThe REG Procedure Model: MODEL1Procdures de traitement statistiqueTest 1 Results for Dependent Variable salaire Mean Square 50909 392513Source Numerator DenominatorDF 1 27F Value 0.13Pr > F 0.7215Loption 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-Peyrard77Anne 2006-2007LANGAGE SASProcdures de traitement statistiqueA 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