Langage SAS Ensae

  • Upload
    isdba

  • View
    66

  • Download
    4

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

    Axelle Chauvet-Peyrard 2 Anne 2006-2007

    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 .

  • LANGAGE SAS Prsentation

    Axelle Chauvet-Peyrard 3 Anne 2006-2007

    Sommaire

    Prsentation 1 Sommaire 3

    INTRODUCTION 7

    PRSENTATION GNRALE DU LOGICIEL SAS ET DE SES OBJETS 7

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

    PARTIE I 10

    LTAPE DATA 10 La logique ligne par ligne de ltape DATA 11 Tableau rcapitulatif des oprateurs 13 Recopie dune table Slection de variables et dobservations 14

    La recopie dune table : Instruction SET 14 La slection de variables : Instructions KEEP et DROP 14 Le filtrage dobservations : Instructions WHERE, DELETE et OUTPUT 14 Remarques sur linstruction SET 15

    Les attributs des variables 16 Les formats : 16 Connatre les attributs dune variable : 16 Modifier les attributs obligatoires dune variable : 17 Modifier les attributs facultatifs dune variable : 18

    Concatnation et fusion de tables 19 La concatnation de tables : Instruction SET 19 Linterclassement de deux tables : Instructions SET et BY 19 Distinction des donnes selon leur table dorigine 20 La fusion de tables : Instruction MERGE 21 La mise jour dune table partir des donnes dune autre table : Instruction UPDATE 22 Remarques sur linstruction BY : 22

    Boucles DO et conditions IF 23 Les conditions IF : 23 Le bloc SELECT : 23 Les boucles finies : (exemple pour 10 itrations) 23 Les boucles tant que : 23

    Les fonctions SAS 24 Fonctions de manipulation de chanes de caractres : 24 Fonctions de manipulation de dates : 24 Fonctions mathmatiques : 24 Fonctions alatoires : 25 Fonctions statistiques : 25 Probabilits : 25 Fonctions particulires : 25

    Calculs de variables 26 Gnrer des distributions alatoires 26 Calculer des cumuls 26

    Les vecteurs (array) de variables 28 Gestion des erreurs et arrt conditionnel dune tape DATA 29

    Afficher des messages derreur : Instruction ERROR 29 Stopper une tape DATA : Instruction STOP 29

    Etape DATA sans cration de table 30

  • LANGAGE SAS Prsentation

    Axelle Chauvet-Peyrard 4 Anne 2006-2007

    PARTIE II 31

    LTAPE PROC 31 Structure gnrale dune tape PROC 31

    Partie II A 33 Procdures de manipulation des donnes 33

    Quelques notions sur lImportation / Exportation de donnes 34 Connatre les proprits dune table avec la PROC CONTENTS 35

    Options : 35 Lecture de sortie : 36

    Imprimer une table dans la fentre Output avec la PROC PRINT 37 Les options : 37

    Trier une table avec la PROC SORT 37 Les options : 37

    Transposer un tableau avec la PROC TRANSPOSE 38 Les options : 38 Les instructions : 38 Exemple : 38

    Faire des jointures de tables avec la PROC SQL 40 Fusions contrles et jointures : 40 Un autre exemple dutilisation de la PROC SQL 41

    Crer un format avec la PROC FORMAT 42 Exemple : 42 Les options : 42 Application du format : 42

    Attribuer des rangs aux observations avec la PROC RANK 43 Les options : 43 Les instructions : 43 Exemple : 43

    Partie II B 45 Procdures de traitement statistique 45

    Tableaux de frquence et de contingence avec la PROC FREQ 46 Les options : 46 Linstruction TABLES et ses options : 46 Lecture de sorties : 47

    Statistiques descriptives quantitatives avec la PROC MEANS 49 Les options : 49 Les instructions : 49 Lecture de sorties : 50

    Des tableaux de statistiques descriptives avec la PROC TABULATE 51 Les instructions : 51 Exemples : 51 Les options : 52 Liste des mots-cls statistiques : 52 Lecture de sorties : 53

    Statistiques univaries et distributions avec la PROC UNIVARIATE 54 Les options : 54 Les instructions : 55 La sortie standard et les mots-cls associs chaque statistique dite : 56 Exemple : 57

    Les corrlations avec la PROC CORR 62 Les instructions : 63 Lecture de sortie : 65

    Test dgalit des moyennes avec la PROC TTEST 66 Les options : 66 Les instructions : 66 Lecture dune sortie standard : 67

    Rgression linaire multiple avec la PROC REG 68 Quelques options de la PROC REG : 68 Quelques instructions : 68 Quelques options de linstruction MODEL : 69 Liste des grandeurs que lon peut rcuprer dans PLOT ou dans OUTPUT (et mots-cls associs) : 73 Lecture de sorties : 73

  • LANGAGE SAS Prsentation

    Axelle Chauvet-Peyrard 5 Anne 2006-2007

    Rgression sur variables catgorielles avec la PROC LOGISTIC 81

    Les instructions : 81 Les options : 82 Lecture de sorties standards : 83

    Modlisation plusieurs quations avec la PROC SYSLIN et la PROC MODEL 85 Les instructions : 85 Exemple : 86 Les options : 86 Quoi de neuf avec la PROC MODEL ? 86

    Partie II C 87 Procdures graphiques 87

    Graphiques pour variables qualitatives avec la PROC GCHART 88 Les instructions : 88 Les options : 88 Exemple : 89

    Graphiques pour variables quantitatives avec la PROC GPLOT 91 Les options : 91 Les instructions : 91 Quelques options des instructions PLOT et BUBBLE : 92 Exemples : 92

    Des botes moustaches avec la PROC BOXPLOT 95 Les instructions 95 Les options 95

    PARTIE III 96

    AIDE LUTILISATION DU LOGICIEL 96 Partie III A 97 Conseils pratiques 97

    Exemple dutilisation de laide de SAS 98 Les erreurs les plus frquentes recenses dans la LOG 99 Comment diminuer le contenu de la log SAS ? 100 Kit de secours 100

    Partie III B 101 Des assistants pour gagner du temps 101

    Loutil Graph n Go 101 Premire tape : Choix de la source de donnes 101 Deuxime tape : Choix du type de graphique 101 Troisime tape : Paramtrage du graphique 101 Quatrime tape: Gestion de mes graphiques 102

    SAS Query 103 Les tapes de la PROC SQL avec Query 103

    PARTIE III C 104 Sauvegarde et exportation des sorties SAS 104

    La sauvegarde sous forme dun objet SAS dans un catalogue. 104 La sauvegarde en tant que fichier texte ou fichier image. 104 Lexportation via lOutput Delivery System (ODS). 104

    Comment sauvegarder quoi ? 107 Sauvegarder une sortie output : 107 Sauvegarder un format : 107 Sauvegarder un graphique (qui nest pas dans loutput) : 107 Pour les graphiques raliss avec Graph n Go : 107 Sauvegarder un rsultat insight : 107 Sauvegarder un rsultat query : 108

  • LANGAGE SAS Prsentation

    Axelle Chauvet-Peyrard 6 Anne 2006-2007

    PARTIE IV 109

    INTRODUCTION AUX MACROS 109 Exemple introductif 110 Macro-programmes et macro-variables 111

    Syntaxe gnrale dun macro-programme 111 Appel dune macro-variable 111 Les macro-variables contiennent du texte 111 Dclaration et affectation dune macro-variable 111 Les macro-variables systme 112

    Les macro-fonctions 112 Macro-fonctions de manipulation de chane de caractres 112 Macro-fonctions dvaluation numrique 112 La macro-fonction %sysfunc() 112

    Les routines 113 La routine SYMPUT 113 La routine EXECUTE 113 La routine SYSTEM 113

    Construire un macro-programme 114 Les arguments dun macro-programme 114 Les instructions conditionnelles et itratives 114 Linstruction %PUT 115

    Stocker et rutiliser un macro-programme 115 Vous crivez une petite macro usage unique ou presque 115 Vous crivez une macro usage priv mais rcurrent 115 Vous crivez une macro destine tre utilise par dautres 115

    ANNEXES 116 Index 117 Comment faire ? 121

    Des manipulations sur les donnes : 121 Des statistiques univaries : 121 Des statistiques bivaries : 122 Des modlisations : 123 Des tests : 123 Des graphiques : 124 Autre chose : 124

  • LANGAGE SAS Introduction

    Axelle Chauvet-Peyrard 7 Anne 2006-2007

    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.

  • 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 .sas Table SAS v8 .sas7bdat Catalogue v8 .sas7bcat Sortie Output .lst Sortie Log .log Table SAS v6 .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

    Soumettre le programme

    Lire les messages dans la LOG

    Lire la sortie OUTPUT ou visualiser la table modifie

    Corriger ventuellement le programme

    Ecrire le programme dans lEDITOR

    Axelle Chauvet-Peyrard 8 Anne 2006-2007

  • LANGAGE SAS Introduction

    Axelle Chauvet-Peyrard 9 Anne 2006-2007

    Menus et raccourcis clavier : Soumettre un programme Run Submit F3 Rappeler le dernier programme soumis Run Recall Last Submit F4 Accder la fentre EDITOR View Enhanced Editor F5 Accder la fentre LOG View Log F6 Accder la fentre OUTPUT View Output F7 Accder la fentre EXPLORER View Contents only Accder la fentre RESULTS View Results Accder la fentre GRAPH View Graph 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 !

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 10 Anne 2006-2007

    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 !

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 11 Anne 2006-2007

    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.

    vecteur de travail total coefficient v1 v2 table malib.cours 0 1 4 6 table malib.a coefficient v1 v2

    1 4 6 2 3 5 3 5 4

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

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

    1 4 6 2 3 5 3 5 4

    Enfin, on affecte total sa valeur actuelle augmente de la valeur de coefficient. vecteur de travail total coefficient v1 v2 un table malib.cours 2 2 4 6 1 table malib.a coefficient v1 v2

    1 4 6 2 3 5 3 5 4

    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.

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 12 Anne 2006-2007

    vecteur de travail table malib.cours table malib.a coefficient v1 v2 total coefficient v1 v2 un

    1 4 6 2 2 4 6 1 2 3 5 3 5 4

    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 v2 un

    2 2 4 6 13 3 3 5 14 4 5 4 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 ).

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 13 Anne 2006-2007

    Tableau rcapitulatif des oprateurs

    Oprateurs de comparaison

    LT < Infrieur strict (lesser than)

    GT > Suprieur strict (greater than)

    LE = Suprieur (greater or equal)

    EQ = Egal (equal)

    NE ^= Diffrent (not equal)

    IN Signifie lappartenance la liste de valeurs indique aprs

    Oprateurs logiques

    AND & et

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

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 14 Anne 2006-2007

    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.

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

    On utilise dans ce cas linstruction WHERE :

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 15 Anne 2006-2007

    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 .

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 16 Anne 2006-2007

    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 Exemple avec le 14 janvier 2005 DATE9. 14JAN2005 YYMMDD8. 05-01-14 DDMMYY8. 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).

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 17 Anne 2006-2007

    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 DATA destination; Je cre une table destination SET source; Dans laquelle je recopie les donnes de la table source LENGTH newvar $ 10; La variable newvar (inconnue dans la table source) est une variable

    caractre de longueur de stockage gale 10 newvar = var; La variable newvar prend les valeurs de var (appartenant la table

    source) DROP var; La variable var nappartient pas la table destination RENAME newvar=var; La variable newvar sappellera var dans la table destination 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 DATA destination; Je cre une table destination SET source; Dans laquelle je recopie la table source FORMAT newvarnum 4.; La variable newvarnum (inconnue dans source)

    est une variable numrique de format 4. newvarnum = input (varchar , 4.); Les valeurs prises par newvarnum rsultent de la

    conversion en numrique (et au format 4.) des valeurs de la variable varchar

    RUN; De manire symtrique, la fonction put(varnum,format_caractre) permet de convertir des donnes numriques en caractres.

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 18 Anne 2006-2007

    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.

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 19 Anne 2006-2007

    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 table b nom note nom notetoto 12 titi 10 titi 14 tutu 8

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

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 20 Anne 2006-2007

    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;

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 21 Anne 2006-2007

    Ce programme fournit le rsultat suivant :

    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

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 22 Anne 2006-2007

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

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 23 Anne 2006-2007

    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 ;

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 24 Anne 2006-2007

    Les fonctions SAS

    Fonctions de manipulation de chanes de caractres : Length(x) Retourne la longueur de x

    Compress(x,c) Compresse x (en enlevant les caractres c)

    Repeat(x,n) Forme une chane de caractres qui est n fois la rptition de x

    Index(x,y) Retourne la place du dbut du mot y dans x

    Upcase(x) Met x en majuscules

    Lowcase(x) Met x en minuscules

    Dequote(x) Enlve les guillemets prsents dans x

    Quote(x) Encadre x de guillemets

    Substr(x,n,l) Extraie de x un mot de longueur l partir du nime caractre

    Scan(x,n,'sp') Extraie de x le nime mot considrant que sp est le sparateur

    Tranwd(x,y,z) Remplace dans x toutes les occurrences du mot y par le mot z

    Fonctions de manipulation de dates : mdy(m,j,a) Cre une date de jour j, mois m et anne a

    Date() Retourne la date courante

    Datepart(d) Extraie la partie date d'une date d

    Day(d) Retourne le jour d'une date d

    Month(d) Retourne le mois d'une date d

    Year(d) Retourne lanne d'une date d

    Weekday(d) Retourne le jour dans la semaine d'une date d

    Fonctions mathmatiques : Floor(x) Partie entire de x

    Abs(x) Valeur absolue de x

    Sign(x) Vaut 1 si x>0, -1 si x

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 25 Anne 2006-2007

    Fonctions alatoires : Les fonctions suivantes gnrent des nombres selon une loi choisie. Lalgorithme ncessite la dfinition dun paramtre a (par exemple : 0).

    Rannor(a) Loi normale centre rduite

    Ranuni(a) Loi uniforme sur [0,1]

    Ranpoi(a,l) Loi de Poisson de paramtre l

    Ranbin(a,n,p) Loi binomiale de paramtres n et p

    Rantbl(a,p1,,pn) Loi discrte de distribution p1,,pn

    Fonctions statistiques : n(x1,,xn) Nombre de valeurs non manquantes parmi les variables x1,,xn

    nmiss(x1,,xn) Nombre de valeurs manquantes parmi les variables x1,,xn

    sum(x1,xn) Somme des variables x1,,xn

    mean(x1,xn) Moyenne des variables x1,,xn

    var(x1,xn) Variance empirique des variables x1,,xn

    Probabilits : Les fonctions suivantes sont les fonctions de rpartition en t des lois dsignes. Probnorm(t) Loi normale centre rduite

    Probchi(t,n) Loi du Chi2 n degrs de libert

    Poisson(t,l) Loi de Poisson de paramtre l

    Probf(t,n,p) Loi de Fisher de paramtres n et p

    Probbnml(p,n,t) Loi binmiale de paramtres n et p

    Probhypr(N,k,n,t) Loi hypergomtrique de paramtres N, k et n

    Fonctions particulires :

    Input(vchar,fornum) Transforme une variable caractre vchar en variable numrique au format fornum

    Put(vnum,forchar) Transforme une variable numrique vnum en variable caractre au format forchar

    Lagn(x) Retourne la valeur n fois prcdente de x ; pour n=1 on note Lag(x)

    Difn(x) Retourne x - Lagn(x) ; pour n=1 on note Dif(x)

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 26 Anne 2006-2007

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

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 27 Anne 2006-2007

    table malib.a

    total coefficient v1 v2 un 2 2 4 6 1 5 3 3 5 1 9 4 5 4 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;

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 28 Anne 2006-2007

    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;

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 29 Anne 2006-2007

    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 : IF _error_ THEN STOP; demande larrt de ltape DATA si une erreur dexcution se produit. 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;

  • LANGAGE SAS Etape DATA

    Axelle Chauvet-Peyrard 30 Anne 2006-2007

    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;

  • Langage SAS Etape PROC

    Axelle Chauvet-Peyrard 31 Anne 2006-2007

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

  • Langage SAS Etape PROC

    Axelle Chauvet-Peyrard 32 Anne 2006-2007

    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 sous-population 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 notre traitement.

    Linstruction FORMAT sert appliquer un format certaines des variables traites.

    Exemple : 1 PROC MEANS data=donnees ; 2 VAR var1 var2 ; 3 BY cat ; 4 WHERE cat NE sans reponse ; 5 OUTPUT out=moyennes mean=moy1 moy2 ; 6 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 sous-populations ; on appelle moy1 la moyenne de var1 et moy2 la moyenne de var2.

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 33 Anne 2006-2007

    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.

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 34 Anne 2006-2007

    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.

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 35 Anne 2006-2007

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

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 36 Anne 2006-2007

    Lecture de sortie : The CONTENTS Procedure Data Set Name: MALIB.BIDON Observations: 50 Member Type: DATA Variables: 6 Engine: V8 Indexes: 0 Created: 9:52 Monday, January 28, 2002 Observation Length: 40 Last Modified: 9:52 Monday, January 28, 2002 Deleted Observations: 0 Protection: Compressed: NO Data Set Type: Sorted: NO Label: -----Engine/Host Dependent Information----- Data Set Page Size: 4096 Number of Data Set Pages: 1 First Data Page: 1 Max Obs per Page: 101 Obs in First Data Page: 50 Number of Data Set Repairs: 0 File Name: W:\SAS\bidon.sas7bdat Release Created: 8.0101M0 Host Created: WIN_NT

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

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 37 Anne 2006-2007

    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= ;

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

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 38 Anne 2006-2007

    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= ; 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 note tata Math 15 tata Franais 10 titi Math 14 titi Franais 18

    toto Math 8 toto Franais 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;

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 39 Anne 2006-2007

    Ce programme fournit le rsultat suivant :

    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.

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 40 Anne 2006-2007

    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 :

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 41 Anne 2006-2007

    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.

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 42 Anne 2006-2007

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

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 43 Anne 2006-2007

    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= ; 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 * permet de calculer des quantiles. Les observations sont regroupes selon leur rang en n groupes.

    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 :

  • Langage SAS Procdures de manipulation de donnes

    Axelle Chauvet-Peyrard 44 Anne 2006-2007

    joueur points rang

    A 15 3 B 10 6 C 23 1 D 14 4 E 22 2 F 9 7 G 10 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 points rang A 15 1 B 10 0 C 23 2 D 14 1 E 22 2 F 9 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 points rang A 15 66,66666 B 10 33,33333 C 23 100 D 14 50 E 22 83,33333 F 9 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.

  • LANGAGE SAS Procdures de traitement statistique

    Axelle Chauvet-Peyrard 45 Anne 2006-2007

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

  • LANGAGE SAS Procdures de traitement statistique

    Axelle Chauvet-Peyrard 46 Anne 2006-2007

    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= ; TABLES listes_variables ; < 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 :

    9 TABLES var1 var2 varn ; dite les tableaux de frquence des variables var1 jusqu varn. 9 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 comment le supprimer

    effectif de la case nofreq

    poucentages nopercent

    pourcentages en ligne norow

    par dfaut

    pourcentages en colonne nocol

    noprint

    ce que la procdure peut diter comment le demander

    effectifs thoriques expected

    carts entre effectif thorique et rel deviation

    contributions la distance du chi cellchi2

    en plus

    test du chi et statistiques drives du chi

    chisq

  • LANGAGE SAS Procdures de traitement statistique

    Axelle Chauvet-Peyrard 47 Anne 2006-2007

    Pour un tableau de frquence

    ce que la procdure dite comment le supprimer

    effectif de la modalit nofreq

    pourcentage nopercent

    effectifs cumuls

    pourcentages cumuls nocum

    Lecture de sorties : proc freq data=malib.bidon; tables zone taille*zone; run; The FREQ Procedure Cumulative Cumulative zone Frequency Percent Frequency Percent IF 4 8.00 4 8.00 NE 9 18.00 13 26.00 NW 2 4.00 15 30.00 SE 15 30.00 30 60.00 SW 20 40.00 50 100.00 Table of taille by zone taille zone Frequency Percent Row Pct Col Pct IF NE NW SE SW Total 1 0 4 0 11 18 33 0.00 8.00 0.00 22.00 36.00 66.00 0.00 12.12 0.00 33.33 54.55 0.00 44.44 0.00 73.33 90.00 2 1 4 2 4 2 13 2.00 8.00 4.00 8.00 4.00 26.00 7.69 30.77 15.38 30.77 15.38 25.00 44.44 100.00 26.67 10.00 3 3 1 0 0 0 4 6.00 2.00 0.00 0.00 0.00 8.00 75.00 25.00 0.00 0.00 0.00 75.00 11.11 0.00 0.00 0.00 Total 4 9 2 15 20 50 8.00 18.00 4.00 30.00 40.00 100.00

  • LANGAGE SAS Procdures de traitement statistique

    Axelle Chauvet-Peyrard 48 Anne 2006-2007

    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 2 3 Total locale 33 9 0 42 0.7857 0.4121 2.5714 67.35 18.37 0.00 85.71 rgionale 0 4 3 7 4.7143 2.4725 15.429 0.00 8.16 6.12 14.29 Total 33 13 3 49 67.35 26.53 6.12 100.00 Statistics for Table of distribution by taille Statistic DF Value Prob Chi-Square 2 26.3846

  • LANGAGE SAS Procdures de traitement statistique

    Axelle Chauvet-Peyrard 49 Anne 2006-2007

    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= ; VAR liste_variables_quantitatives ; < BY variable ; > < CLASS variable ; > < FREQ variable ; > < 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.

  • LANGAGE SAS Procdures de traitement statistique

    Axelle Chauvet-Peyrard 50 Anne 2006-2007

    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 Label N Mean Std Dev Minimum Maximum va va (en MF) 50 1562.42 3154.38 139.0000000 17842.00 ventes 50 0.0200000 0.0433028 0.0020000 0.2630000 proc means data=malib.bidon sum ; var ventes ; class zone distribution ; run ; Analysis Variable : ventes N zone distribution Obs Sum IF nationale 1 0.2630000 rgionale 3 0.1960000 NE locale 8 0.0190000 rgionale 1 0.0740000 NW rgionale 2 0.1890000 SE locale 14 0.1740000 rgionale 1 0.0100000 SW locale 20 0.0750000 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.

  • LANGAGE SAS Procdures de traitement statistique

    Axelle Chauvet-Peyrard 51 Anne 2006-2007

    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 ; CLASS variabl