Download - SAS 9.4 Sous Linux - Logiciel Hermétique Pour Système Ouvert

Transcript
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    1/31

    Apprentissage Statistique

    SAS 9.4 sous linuxLogiciel hermtique pour systme ouvert

    PHILIPPEBESSE

    4me anne GMM - MMS

    Attentionce cours est dense, la lecture de ce document ne suffira pas la bonne comprhension des outils qui y sont dcrits de faon

    synthtique. La participation active aux TDs est indispensables lacquisition des comptences incontournables pour une utilisationraisonnable et raisonne de ce logiciel fort complexe.

    quipe de Statistique et ProbabilitsInstitut de Mathmatiques de Toulouse UMR CNRS C5219

    Dpartement Gnie Mathmatique et Modlisation

    Institut National des Sciences Appliques de Toulouse 31077 Toulouse cedex 4.

    1

    http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    2/31

    1 Introduction au logiciel SAS

    Introduction au logiciel SAS

    Rsum

    Ces vignettes proposent une introduction lmentaire un usageclassique du logiciel SASpour lancer des analyses statistiques. Lob-

    jectif est volontairement restreint aux commandes et procdures de

    base disponibles dans la version de la licence acadmique de SAS

    correspondant galement aux usages les plus frquents dans les

    grandes entreprises. Sont donc concerns : SAS/Stat, SAS/Graph et

    lAnalyse interactive de donnes.

    Plan du cours :

    Introduction

    Gestion des donnes et procdures lmentaires

    Graphes haute rsolution Macros-commandes

    Bases de donnes

    Avant propos

    Le systme SAS est, sinon le logiciel de traitement de donnes le plus com-plet ni le plus rpandu, celui qui traite quotidiennement le plus gros volume dedonnes. Il a acquis, depuis sa mise en route au dbut des annes 60, une situa-tion dominante dans beaucoup de secteurs dactivits. En France, les grandes

    entreprises de lnergie et administrations : INSEE, EDF, GDF,..., toute lin-dustrie pharmaceutique lont adopt ainsi que les entreprises du tertiaire im-pliqus dans la gestion volumineuse de bases clientles (banques, assurances,marketing, VPC...). Afin dafficher une diversification de ses activits, depuisde nombreuses annes, SAS ne signifie plusStatistical Analysis Sytem ; le cal-cul statistique est devenu accessoire au regard des tches dingnierie globaledes systmes dinformation.

    Historiquement, SAS a suivi lexpansion des sites IBM sur lesquels il a tconu et conserve, de cet environnement initial, les caractristiques fondamen-tales : complexit, lourdeur, cot mais aussi puissance et efficacit. SAS Insti-

    tute, a en effet adopt la stratgie dIBM pour fidliser ses clients et sattache

    suivre le grand principe de la compatibilit verticale ; toute nouvelle versiondu logiciel est cense accepter les applicatifs conus avec les versions ant-rieures. Cela semble premire vue positif pour les utilisateurs mais, en undemi-sicle de dveloppement, ceci a aussi des consquences trs nfastes surla clart, la cohrence, la souplesse du ou plutt des langages spcifiques celogiciel. Son apprentissage est donc long, fastidieux si lon veut en matriserles subtilits. Son utilisation ne se justifie que dans un environnement o les be-soins en statistiques et le volume des donnes traites sont considrables et quidispose de ressources financires consquentes : outre le cot de location dulogiciel, il faut prendre en compte les salaires des statisticiens professionnelset spcialistes qui sauront dvelopper et maintenir les applications spcifiquesncessaires aux diffrents services de lentreprise. Ce sont les raisons qui fontque de nombreux services de Recherche et Dveloppement lui prfre un outilde type libre accs comme R.

    1 IntroductionLe systme SAS est un ensemble de modules logiciels pour la gestion et

    le traitement statistique des donnes. A travers diffrents types dinterfacesutilisateur. Il permet lcriture de Programmes SASqui excutent :

    les saisies, importations, interrogations, manipulations, fusions, transfor-mations de donnes ;

    les ditions dtats, tableaux de bord, de rapports, numriques et gra-phiques;

    les analyses statistiques, modlisation, prvision ; des applications spcifiques dfinies sous forme de macro-commandes

    pouvant tre pilotes par menus ou partir dun navigateur ; les ditions plus ou moins automatises de rapports et pages web.

    Depuis la version 8, SAS propose des solutions: analyse guide des donnes,analyse marketing,Prvision de sries chronologiques... qui sont autant den-vironnements de travail associs une interface graphique spcifique et uneproblmatique. Ils permettent un traitement de linformation sans crire uneligne de programme. Les modulesInsight(Analyse interactive des donnes) et

    Enterprise Minersont trs labors en ce sens. Il serait certes possible, en pre-mire approche, de se contenter de cette utilisation lmentaire mais lusagemontre que ces solutions sont ncessairement limites et quun usage pro-

    http://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-2data.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-3graph.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-4macros.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-5sql.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-5sql.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-4macros.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-3graph.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-2data.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    3/31

    2 Introduction au logiciel SAS

    fessionnel, associ des contraintes spcifiques, rend incontournable lusagedune programmation basique.

    1.1 Table SAS

    Aprs saisie ou importation en provenance de fichiers ASCII ou dun SGBD

    (Systme Relationnel de Gestion de Base de Donnes), les donnes sont grespar SAS sous la forme dun SAS Data Setnomm par la suiteTable SAS.

    Unetable SASest lassociation dun ou deux fichiers binaires contenant lesdonnes et leur descriptif :

    Nom de la table Commentaire ou label Date et heure de cration Nombre dobservations

    et, pour chaque variable : Nom abrg Signification ou label Type Type de codage Longueur Position

    1.2 Programme SAS

    Unprogramme SASest un enchanements dtapesde gestion des donnes(Data Step) et dappels de procdures, dcrivant, dans une syntaxe souventspcifique chaquemodule, les traitements raliser sous le couvert doptions

    prises par dfaut ou explicitement dfinies. Les diffrentes tapes ou proc-dures communiquent entre elles exclusivement par lintermdiaire de tablesSAS, permanentes ou temporaires, et avec lextrieur par des tables SAS oudes fichiers textes usuels en un format quelconque.

    /* exemple de programme SAS */

    /* Lecture, impression et tabulation de donnes. */

    data Europe;

    infile "edc.fun.overseas";

    input date $ 1-7 dest $ 8-10 boarded 11-13;

    proc print data = europe;

    proc tabulate data = europe;

    class date dest;

    var boarded;

    table date, dest*boarded*sum;

    run;

    1.3 Les modules et leur documentation

    Toutes les documentations en anglais ainsi que des tutoriels sont disponiblesen ligne. Des items sont spcifiques la version de SAS utilise (9.3), au sys-tme dexploitation et chacun des modules offerts la location. Ceux les plusutiliss concerns par ce cours sont : Base SAS, SAS/STAT, SAS/GRAPH.

    Base SAS Cest la documentation de base et le manuel de rfrence pourtous les traitements de gestion des donns : ltape Data, la syntaxe de sescommandes, la gestion des tables SAS, lditeur de texte des programmes.Cet item contient galement la description des procdures lmentaires (Pro-cedures Guide), du macro langage pour lcriture de macro-commandes, desoutils de production automatique des rapports et graphes (ODS) en html, desrequtes SQL de bases de donnes, de production de documents XML...

    SAS Procedures Fonctions et syntaxes de toutes les procdures lexcep-tion des procdures statistiques plus complexes : statistiques lmentaires,frquences, graphiques basse rsolution, impression, tri, tabulation, transpo-

    sition,...

    SAS/Stat Users Guide. Toutes les procdures statistiques et la grande va-rit de leurs options : tous les modles de rgression, les classifications, lesdures de vie, la statistique non-paramtrique, les analyses multidimension-nelles.

    SAS/Graph Software Dtails des possibilits graphiques en haute rsolu-

    tion et de leurs innombrables options.

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    4/31

    3 Introduction au logiciel SAS

    SAS/IML Le module de calcul matriciel interactif intgr est un langageinterprt, comme Matlab ou R. Il traite des objets matriciels avec la syntaxedun langage volu (PL1). Il est adapt la mise en place rapide de mthodesoriginales construites partir des oprateurs classiques de lalgbre linaire.Trs rarement utilise dans lindustrie, il nest pas dcrit dans ce document.

    2 Modes dutilisation de SAS

    2.1 Sous linux

    Excution diffre

    Cest la meilleure faon dexcuter des programmes oprationnels maislongs sans rester coller son cran. Ils sont excuts en diffr par exempleavec la commandeat. Il suffit de taper

    sas nom_de_fichier.sas -fsdevice x11.motif &

    o nom_de_fichier.sas est un fichier contenant un programme SAS ;les rsultats sont alors regroups dans le fichier nom_de_fichier.lsttandis que le compte rendu de lexcution ainsi que les messages derreursse trouvent dans le fichier nom_de_fichier.log. Il existe de nombreusesoptions : type de terminal, taille mmoire.... Le caractre & permet de re-prendre la main avant la fin de lexcution qui se droule en arrire plan etainsi, ventuellement, de tuer le processus sas en cas de problmes.

    Mode interactif

    Taper simplement la commande sas & qui lance SAS en tche de fond afinde pouvoir ractiver, si ncessaire, la fentre du processshell(xterm).

    2.2 Sous windows

    Pour lessentiel, une fois que SAS est lanc partir du menu des pro-grammes ou partir de son icne, le fonctionnement est le mme quen modeinteractif sous Linux. Larborescence des rpertoires est videmment spci-fique au systme dexploitation mais aussi aux paramtres de configurationde linstallation. Des facilits sont apportes par Windows comme le copier /

    coller des graphiques entre les fentres SAS et un traitement de texte.

    2.3 Les fentres

    Cinq fentres apparaissent alors lcran avec une ergonomie relativementintuitive mais, trs sophistique et ouvrant sur de trs nombreuses possibilits,il serait inefficace de vouloir la dcrire de faon exhaustive. Elle est dcouvriren fonction des besoins.

    Chaque fentre contient une barre de menus droulants contextuels :

    Fichier pour lire ou crire dans des fichiers extrieurs SAS, importer ou ex-porter des donnes dans diffrents formats, quitter SAS (exit) en fermanttoutes les fentres.

    dition pour grer le texte (slectionner, couper, copier, coller...),

    Affichage pour rendre active une des fentres.

    Outils pour accder des utilitaires de gestion de graphiques, de tables sas, derapports, dimages, de textes et pour configurer les options personnalisant

    son environnement (couleurs, polices...).Solutions pour excuter les modules spcifiques (sils ont t pays !) pour laralisation de tableaux de bord, le dveloppement dapplications.

    Fentre Pour changer lorganisation des fentre ou en slectionner une spci-fique.

    Aide pour accder laide en ligne dtaille ainsi qu un tutoriel (Gettingstarted with SAS Software).

    Ces fentres sont :

    diteur est un diteur de texte rudimentaire 1,pour entrer et modifier les pro-

    grammes SAS avant den demander lexcution. Outre les commandes duchoix dition du menu, il faut savoir que pour :

    Sortie affiche tous les rsultats (texte) produits par lexcution des diffrentesprocdures. Les graphiques haute rsolution apparaissent dans une fentrespcifique.

    Journal affiche le compte rendu de la bonne excution et les messages der-reur. Elle est la premire fentre consulter.

    1. Il est vivement recommander douvrir un diteur fiable et entrer le programme avant de lasoumettre par simple copie de la souris. Cela permet dviter des mauvaises surprises : caractres

    spciaux cachs, crash de SAS...

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    5/31

    4 Introduction au logiciel SAS

    Explorateur affichage arborescent des librairies (rpertoires) et tables grespar SAS.

    Rsultas permet de grer lensemble des rsultats (textes et graphiques) defaon arborescente. insrer n lignes il faut taper in dans la zone des numros de lignes,

    supprimer une ligne il faut y taperd

    et, pour supprimer un block, entrerddsur la premire et la dernire ligne du bloc, passer alternativement du mode insertion au mode superposition il faut

    taperx. Enfin, le menu spcifique Excuter permet de lancer lexcution

    (comme < F3 >) du programme de lditeur ou celui du tampon copiavec la souris et de rappeler (comme< F4 >) le programme excuterdans la fentre

    Dautres fentres souvrent par exemple lors de la production de graphes ou au

    lancement de modules interactifs spcifiques.Attentionaux courants dair, il est important de grer correctement la multi-

    tude des fentres qui remplissent lcran et surtout de les refermer dans le bonordre afin dviter de se retrouver bloqu, par exemple sur unpopupqui attendune rponse.

    2.4 Bibliothques

    Ce sont, du point de vue du systme dexploitation, les rpertoires dans les-quels SAS gre les fichiers et tables SAS de faon temporaire, le temps dunesession ou excution du programme, ou permanente.

    SasUser : bibliothque permanente cre par dfaut. Les tables de cette bi-bliothque sont nommes sasuser.nomtab.

    Work : bibliothque contenant les tables temporaires cres par dfaut parles diffrentes tapes et procdures. Elles sont effaces la fin de lasession ou de lexcution du programme. Les tables sont nommeswork.nomtabou plus simplement de faon implicite : nomtab.

    SasHelp contient un groupe de catalogue permettant le fonctionnement pardfaut dune session SAS, les donnes servant dexemples et toute laideen ligne.

    Maps contient les tables de donnes gographiques (fonds de carte).

    Plutt que dutiliser toujours la librairie SasUser, il est possible de dfinir sapropre librairie (ou rpertoire) de tables permanentes (commandelibname).

    3 Commandes globales

    Cette section aborde quelques lments de programmation SAS. En plus desdeux types de structures dj cits (tape data et procdures), certaines com-mandes peuvent intervenir tout moment afin de prciser ou modifier certainesoptions. Elles restent actives durant toute la session ; voici les principales.

    3.1 Rfrencement

    libname libref SAS-data-library;Les rpertoires (unix ou windows) contenant des bibliothques de tablesSAS autres que sasuser (par dfaut) doivent tre allous avant leurutilisation mentionnant cette rfrence logique.

    filename fileref external-file;Un fichier extrieur SAS (fichier ASCII) peut galement tre rfrenc.

    3.2 Mises en formes des sorties

    Commentaires Tout texte sous la forme : * texte ; ou /* texte */ estignor de SAS et permet dexpliciter le fonctionnement dun programme.

    options liste doptions;permet de spcifier certains paramtres : obs=n limite le nombre dobservations traiter pour tester par exemple

    un programme,

    linesize=n fixe le nombre de caractres par ligne en sortie, pagesize=n fixe le nombre de lignes par page, date|nodateprsence ou absence de date en haut de page, number|nonumberprsence ou absence de numrotation des pages, pageno=n fixe le numro de la premire page.

    titlen titre;permet de faire imprimer jusqu n = 10lignes de titre sur chaque pageen sortie, par dfaut, la premire ligne contient : The SAS System,

    footnoten note de bas de page;permet de faire imprimer jusqu n = 10notes de bas de page sur chaque

    page en sortie.

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    6/31

    5 Introduction au logiciel SAS

    Options usuelles :

    options linesize=75 pagesize=66 nodate number;

    title "Mon titre";

    footnote "Note de bas de page";

    3.3 Production de rapports

    Il est possible depuis la version 8 de produire directement des sorties dansun format standard afin de les introduire sans un traitement de texte (.rtf) ouune page web (.html). Cest le systme ODS (open delivery system).

    ods rtf body="nomfichier.rtf";

    /* Programme SAS */

    ods rtf close;

    Remplacerrtfparhtml, ps, pdffournit dautres formats de sortie.La version 9 permet galement la sortie de graphiques sur le mme principe.

    Ils sont de bonne dfinition et directement produits pas les procdures sta-tistiques (princomp, anova, corr, reg, glm...) mais leurs optionssont contraintes. Ces possibilits seront abordes au momment de lutilisationde ces procdures.

    4 Analyse interactive des donnes

    A notre grand regret, le module SAS/Insight danalyse interactive des don-

    nes nest plus maintenu dans SAS partir de la version 9.4. Lintroduction ce module pour trs pratique et trs efficace pour faire de lexploration efficacede donnes est en consquence supprime. On peut penser que la stratgie deSAS consiste favoriser le dveloppement dun autre produit quivalent : JMPmais qui est plus compliqu mettre en uvre et puis cest un autre logiciel !Encore une raison pour utiliser plus systmatiquement lopen sourceR.

    http://www.math.univ-toulouse.fr/~besse/Wikistat/pdf/st-tutor1-start-R.pdfhttp://www.math.univ-toulouse.fr/~besse/Wikistat/pdf/st-tutor1-start-R.pdfhttp://www.math.univ-toulouse.fr/~besse/Wikistat/pdf/st-tutor1-start-R.pdfhttp://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    7/31

    1 SAS de base : gestion des donnes et procdures lmentaires

    SAS de base : gestion des donnes et

    procdures lmentaires

    RsumDescription des commandes (module SAS de base) les plus utiles

    de ltapedataet principales procdures lmentaires pour crer,

    transformer, normaliser, concatner, fusionner, transposer, trier des

    tables SAS. Procdures de calcul des statistiques lmentaires.

    Retour auplan du cours.

    1 Introduction

    Le systme SAS offre un trs large ventail de traitements permettant das-

    surer toutes les fonctions de gestion des donnes quun statisticien peut tre

    amen mettre en uvre. Cette richesse est aussi source de complexit. Nous

    nous contenterons de dcrire les exemples les plus standards. Ces traitements

    sont pris en charge par les tapesdata(data step), qui reconnaissent un lan-

    gage de programmation proche de PL/1 1, et quelques procdures spcifiques.

    Unprogramme SASse dcompose en :

    1. une (ou des) tape(s)data,

    2. une (ou des) appels des procdures (proc).

    Ces deux parties sont gnralement indpendantes, il est donc inutilement co-teux de r-excuter ltape data, dont les rsultats sont stocks dans une table

    SAS (permanente ou temporaire), chaque mise au point des procdures qui

    suivent.

    Les commandes lmentaires :

    proc print;

    run;

    1. Cr par IBM dans les annes 70s dans lespoir de remplacer la fois le Fortran et leCoboL ; ce fut le premier langage structur. Le dploiement conjoint dUnix et du langage C a t

    fatal au PL/1.

    permettent de vrifier dans la fentre sortiela bonne constitution de la der-

    nire table SAS cre.

    2 tape Datade cration dune table

    2.1 Lecture dune tableLobjectif est de construire une table SAS dans le cas de figure le plus usuel

    o les donnes sont contenues dans un fichier texte (ascii) provenant dun di-

    teur, dun autre logiciel statistique ou encore dun gestionnaire de bases de

    donnes. Les donnes peuvent galement tre directement saisies au clavier

    (SAS/Insight) ou incluses au programme SAS (commande include card).

    Enfin, SAS peut lire tout autre format de fichier que ceux succinctement d-

    crits ci-dessous (articles de longueur variable, binaire,.. . ) sur tout support mais

    cest vite compliqu !

    syntaxe

    data table-sas ;

    infilefileref ou nom-de-fichier ;

    inputliste de variables et spcifications ;

    Options

    La liste des variables dfinit chaque identificateur ; il est suivi du caractre

    $ pour prciser, ventuellement le type alphanumrique de la variable. Il

    est fortement conseill de dclarer chaque variable qualitative de type alpha-

    numrique.

    dlm= ; si le dlimiteur entre les valeurs est un ; ou 09x pour un

    caractre de tabulation,

    dsddeux dlimiteurs successifs sont interprts comme une valeur man-

    quante, sinon insrer un .,

    lrecl si la ligne est trs longue, majorant du nombre de caractres dun

    enregistrement,

    firstobsnumro de la ligne laquelle commencer la lecture,

    obsnumro de la dernire ligne lire.

    http://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    8/31

    2 SAS de base : gestion des donnes et procdures lmentaires

    2.2 Lecture en format libre

    Les donnes associes une unit statistique sont spares par des blancs ou

    tout autre caractre dlimiteur spcifi dans loption dlm ( ; : ,.. . ) ; les units

    sont spares par des retours la ligne. Si les lignes du fichier en entre sont

    trop longues, dpassant la valeur par dfaut, elles sont tronques en lecture. Il

    est ncessaire de dclarer un majorant de cette longueur dans loption lrecl.

    Une observation par ligne

    Chaque observation est dcrite par une ligne du fichier.

    data sasuser.fich1;

    infile ~/data/fich.dat dlm=;;

    input var1 var2 $ var3;

    run;

    Attention, si une donne manque dans le ficher pour satisfaire le nombrede variables, SAS poursuit la lecture sur la ligne suivante sans prvenir. Il est

    primordial de toujours vrifier la bonne lecture des donnes. Le cas chant,

    une donne manquante est code par un point ..

    Une observation sur plusieurs lignes

    Chaque unit statistique est dcrite sur n lignes du fichier. Plusieurs dcla-

    rationsinputou des caractres "/" permettent de prciser le dcoupage.

    data sasuser.fich1;

    infile ~/data/fich.dat dlm=;;input var1 var2 $ var3 /

    var4 $ var5 var6;

    run;

    Plusieurs observations par ligne

    Le double caractre "@@" a pour effet de maintenir un article dans le buffer

    de lecture jusqu ce quil soit compltement lu.

    data sasuser.fich1;

    infile ~/data/fich.dat;

    input var1 var2 $ var3 @@ ;

    run;

    Lorsque le volume des donnes est trs rduit, celles-ci peuvent tre int-

    gres au programme avec la commandecards:

    data sasuser.fich1;input var1 var2 $ var3 @@ ;

    cards;

    1.5 A 55 2.4 B 44 2.7 B 61 2.3 A 48

    ;

    run;

    Attention la place du dernier point-virgule.

    2.3 Lecture formate

    Le format libre ci-dessus nest plus utilisable lorsque, pour des raisonsdconomies despace disque, les donnes sont colles ; il faut alors indiquer

    explicitement, la suite du nom de chaque variable, les positions (ou champs)

    concerns.

    data sasuser.fich1;

    infile ~/data/fich.dat;

    input var1 1-12 var2 $ 13-18 var3 19-25;

    run;

    2.4 Importation / exportationLes donnes peuvent tre directement importes partir dautres formats car

    issus dautres logiciels comme Excel si le module SAS/Access est implment

    pour pouvoir accder ce type de format. Sinon seuls certains type de fichier

    sont accessibles comme ceux .csv. Cest le rle de la procdure import

    dont voici un exemple dutilisation. Le fichier .csv contient une premire

    ligne avec les noms des variables, les valeurs sont spares par des "," et la

    marque dcimale est le point. De manire rciproque, une table SAS peut tre

    exporte dans un format donne, texte (ascii) ou Excel.

    proc import datafile="nom-de-fichier.csv"

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    9/31

    3 SAS de base : gestion des donnes et procdures lmentaires

    out=sasuser.table-sas dbms=dlm replace;

    getname=yes;

    datarow=2;

    run;

    /* traitements*/

    proc export data= sasuser.table-sas

    outfile="nom-de-fichier2.xls"

    dbms=excel;

    De faon plus labore, laprocdure SQLautorise linterrogation de bases

    de donnes (Oracle, Access, MySQL...) en relation avec le module SAS/Ac-

    cess.

    3 tape datade transformations

    3.1 Fonctionnement

    Ltape data est capable dinterprter un langage de programmation volu

    qui, par sa syntaxe, est proche de PL/1. On y retrouve les mmes structures :

    if, then, else, do. La diffrence fondamentale est quune tape data

    peut tre assimile, en gnral, une lecture de la table traiter. Elle inclut

    implicitement une boucle considrant chacune des observations de la premire

    la dernire dune table ; une variable du langage estune colonne ou variable

    statistique.

    Syntaxe

    La syntaxe habituelle est la suivante :data table_out ;

    set table_in ;

    . . . instructions ;

    run ;

    Chaque observation ou ligne de table_inest lue, transforme par excu-

    tion des instructions puis enregistre sur table_out. Pardfaut, toutes

    les variables de table_in sont considres et recopies sur table_out

    ainsi que celles qui ont t cres par les instructions mais il est possible

    den laisser tomber (drop) ou de nen conserver (keep) que certaines.

    Keepet Drop

    Ces commandes peuvent apparatre comme des options des commandes

    data,set ou dautres procdures :

    data table_out (drop=var1 var2) ;

    set table_in (keep=var1 var2 var3) ;

    ou encore comme commandes dune tape data :

    keep|drop var1 var2

    Lutilisation dedropoukeepdpend du nombre relatif de variables limi-

    ner par rapport au nombre conserver.

    3.2 Fonctions

    Le langage reconnat les expressions arithmtiques usuelles, sait grer des

    constantes numriques ou alphanumriques (constante) et des varia-

    bles qui sont enregistres sur table_out moins davoir t limines

    (drop, keep). Il reconnat, de plus, la plupart des fonctions mathmatiques

    usuelles (round, sin, log, sqrt,...), les fonctions de gestion de

    chanes de caractres (lenght, scan, substr,...), celles spcifiques

    aux diffrentes lois de probabilits (quantiles) et dautres usage plus statis-

    tique (sum, mean, min, max, var, std,...). Ces dernires sap-

    pliquent une liste de valeurs avec la syntaxe suivante :

    sum (var1, of var10-var20, var 25)

    3.3 Exemples

    /* transformations de variables quantitatives */data sasuser.table1;

    set sasuser.table2 (drop=var10 var11);

    newvar1=sqrt(var3);

    newvar2=log(var4)/mean(of var5-var9);

    run;

    /* codage en classes dune variable quantitative */

    data sasuser.table1 (keep taillec sexe csp);

    set sasuser.table2 ;

    if sexe=M then do;

    http://wikistat.fr/pdf/st-m-logiciel-sas-5sql.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-5sql.pdfhttp://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    10/31

    4 SAS de base : gestion des donnes et procdures lmentaires

    if taille > 190 then taillec=grand;

    else if taille > 170 then taillec=moyen;

    else taillec=petit;

    end;

    else then do;

    if taille > 180 then taillec=grand;

    else if taille > 160 then taillec=moyen;

    else taillec=petit;

    end;

    run;

    /* codage en classes dune variable quantitative */

    /* meme chose avec la commande select :*/

    data sasuser.table1 (keep taillec sexe csp);

    set sasuser.table2 ;

    select (sexe);

    when (M)if taille > 190 then taillec=grand;

    else if taille > 170 then taillec=moyen;

    else taillec=petit;

    when(F)

    if taille > 180 then taillec=grand;

    else if taille > 160 then taillec=moyen;

    lse taillec=petit;

    otherwise put probleme;

    end;

    run;

    Il est facile de supprimer ou plutt, de ne pas recopier dans la table cre

    des observations vrifiant ou non une condition logique.

    /* exemples de regroupement de modalits */

    select(mon);

    when(mon in(mars,avri,mai )) sais=printps;

    when(mon in(juin,juil,aout)) sais=ete;

    when(mon in(sept,octo,nove)) sais=automne;

    when(mon in(dece,janv,fevr)) sais=hiver;

    otherwise;

    end;

    select(a);

    when(1);

    when(3,4,5) x=x*10;

    otherwise;

    end;

    /* limination dobservations */

    data sasuser.table1;

    set sasuser.table2 ;

    if var1 = nul then delete;

    /* SAS passe a la suivante*/

    ...

    run;

    /* selection implicite dobservations */

    data sasuser.table1;

    set sasuser.table2 ;

    if var1 = bon ;

    /* sinon SAS passe a la suivante*/

    ...

    run;

    Des commandes spcifiques ltape Data nont pas t dcrites :

    retain, return, put, output, missing, list, link,label, goto, do. Ainsi, lexemple suivant utilise une variable dfinie de

    faon implicite et une boucle pour rpter les diffrents niveaux dun facteur.

    /* dfinition implicite dune variable */

    data table1; /* fichier temporaire */

    input var n ;

    d o i = 1 t o n ;

    input gain @@ ;

    output ;

    end;

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    11/31

    5 SAS de base : gestion des donnes et procdures lmentaires

    cards ;

    0 16

    2 8 2 9 2 6 2 4 2 6 2 5 2 2 9 2 3 2 9 2 4 2 0 2 2 2 0 2 9 2 2

    0.04 11

    186 229 220 208 228 198 222 273 216 198 213

    0.07 12

    179 193 183 180 143 204 114 188 178 134 208 196

    0.10 8

    130 87 135 116 11 8 1 65 151 5 9

    0.13 11

    154 130 130 118 118 104 112 134 98 100 104

    ;

    run;

    3.4 Tableau de variables

    Des traitements plus sophistiqus (itratifs, conditionnels) peuvent tre op-

    rs sur les variables dune table en les dclarant sous la forme dun tableau

    (array) dont les colonnes peuvent alors tre indices. Plus prcisment, cette

    dclaration revient considrer un vecteur ligne contenant successivement

    chaque ligne de la table en cours de lecture.

    De nombreux exemples sont fournis dans les textes des macros-commandes.

    4 Procdures de transformationDautres transformations usuelles sont proposes sous forme de procdures.

    4.1 Rangs

    La procdure ranks calcule les rangs des valeurs de variables quantitatives

    et les recopie dans une nouvelle table. Par dfaut, les valeurs gales sont affec-

    tes du rang moyen. Une option (group=) permet de spcifier le nombre de

    valeurs de rangs utilises et ainsi de dcouper en classes une variable quantita-

    tive avec des effectifs sensiblement gaux.

    Syntaxe

    proc rank ;

    by variable ;

    ranks liste de nouvelles variables ;

    varliste de variables ;

    Options

    data=table sasindique le nom de la table, par dfaut, la dernire cre,

    out=table sasspcifie le nom de la table cre qui contiendra les variables

    initiales et les rangs,

    fraction|groups=n|normal=blom pour obtenir, respectivement, les va-leurs de la fonction de rpartition, un dcoupage en n classes de mme

    effectif, les valeurs dune distribution normale, plutt que, par dfaut, les

    valeurs des rangs.

    descendingrangs par valeurs dcroissantes, ties=spcifie la faon de grer les ex-quos (mean|high|low).

    Commandes

    by suivi du nom dune variable qualitative indique que les statistiques sont

    calcules par groupe dobservations; la table doit tre trie.

    ranks doit tre spcifie si lon veut que les variables initiales soient recopies

    en sortie. Sinon, les variables gardent le mme nom. Il y a une correspon-

    dance terme terme entre les noms des deux listes de variables.

    var les rangs des variables de la liste varsont calculs et recopis dans la table

    de sortie ; par dfaut, toutes les variables numriques sont traites.

    4.2 Normalisation

    La rduction ou la standardisation de variables quantitatives sobtient en

    excutant la procdure standard.

    Syntaxe

    proc standard ;by variable ;

    varliste de variables ;

    6 SAS d b ti d d t d l t i

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    12/31

    6 SAS de base : gestion des donnes et procdures lmentaires

    weightvariable ;

    Options

    data=table sasindique le nom de la table, par dfaut, la dernire cre,

    out=table sasspcifie le nom de la table cre qui contiendra les variables

    initiales et celles standardiss. printimprime moyennes et carts-types des variables traites,

    mean=spcifie la nouvelle valeur moyenne (=0),

    std=spcifie la nouvelle valeur de lcart-type (=1),

    replacedemande que toute donne manquante soit remplace par la nou-

    velle moyenne (mean=),

    vardefprcise le diviseur dans le calcul de la variance (df, n, wdf,wgt).

    Commandes

    by suivi du nom dune variable qualitative indique que les statistiques sont

    calcules par groupe dobservations ; la table doit tre trie.var les variables de la listevarsont standardises et recopies dans la table de

    sortie ; par dfaut, toutes les variables numriques sont traites.

    weight nom de la variable contenant les pondrations des observations.

    4.3 Transposition

    La procduretransposelit toute ou partie dune table SAS et la recopie

    aprs transposition : les lignes deviennent des colonnes et les colonnes des

    lignes. Une nouvelle variable _name_contient alors, en sortie, les noms des

    variables transposes qui dsignent maintenant les observations. La commandeby permet de rorganiser des donnes complexes. Attention, si une variable est

    de type caractre, toutes les variables transposes le deviennent.

    Syntaxe

    proc transpose ;varliste de variables ;

    idvariable ;

    copyliste de variables ;byliste de variables ;

    Options

    data=table sasindique le nom de la table, par dfaut, la dernire cre,

    out=table sasspcifie le nom de la table cre,

    prefix= spcifie le prfixe utilis pour crer les noms des nouvelles va-

    riables,

    name=spcifie le nom de la variable cre qui contiendra les noms des

    anciennes variables pour dsigner les observations (par dfaut_name_).

    Commandes

    by : une observation est cre pour chaque variable transpose et pour chaque

    groupe ; la variable de groupage est incluse en sortie mais non transpose.

    La table doit tre trie.

    copy les variables de la liste copysont recopies dans la table de sortie sans

    transposition.

    var les variables de la liste var sont transposes et recopies dans la table

    de sortie ; par dfaut, toutes les variables numriques, napparaissant pasailleurs sont traites.

    id nom de la variable en entre contenant les noms des variables aprs trans-

    position.

    4.4 Tri

    La procduresortpermet de trier une table SAS.

    Syntaxe

    proc sort ;

    by variable1 ;

    Options

    data=table sasindique le nom de la table, par dfaut, la dernire cre,

    out=table sas spcifie le nom de la table cre qui contiendra les obser-

    vations tries.

    noduplimine les observations identiques.

    Commandes

    by liste des variables qui servent de cl de tri ; lordre est croissant par dfaut.

    7 SAS de base : gestion des donnes et procdures lmentaires

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    13/31

    7 SAS de base : gestion des donnes et procdures lmentaires

    Sur les tables tries, SAS gre deux variables gnres par la commande BY

    permettant didentifier les dbuts et fin de groupes de lignes prenant les mmes

    valeurs dune variable utilise dans le tri. Par exemple, si la table est tries par

    la variable sexe, la commande BY sexe gnre les variables temporaires

    First.sexeet LAST.sexequi prennent des valeurs 0 ou 1 pour indiquer

    respectivement la premire observation ou la dernire de chaque modalit de

    la variable.

    5 Concatnation de tables

    5.1 Concatnation verticale et fusion

    Cette opration consiste complter une table SAS par une ou plusieurs

    autres contenant les mmes variables mesures sur dautres observations. Elle

    est trs simple raliser, il suffit de mentionner toutes ces tables dans la com-

    mande set en renommant, liminant, conservant ventuellement certaines va-

    riables. Sil ny a pas une bonne correspondance entre les variables, des don-nes manquantes sont gnres.

    data sasuser.concvtable;

    set sasuser.table1 (rename=(var1=var15))

    sasuser.table2 (rename=(var5=var15));

    run;

    Si chacune des tables est trie sur la mme cl, ce tri peut tre conserv dans

    la table concatne, il sagit alors dune fusion, en spcifiant la variable cldans une commandeby.

    data sasuser.fusiontable;

    set sasuser.table1 (rename=(var1=var15))

    sasuser.table2 (rename=(var5=var15));

    by vartri;

    run;

    Dautres possibilits sont offertes par la procdure append.

    5.2 Concatnation horizontale

    Les mmes units statistiques ont t observes sur des paquets de variables

    contenues dans des tables SAS distinctes. La table regroupant toutes les va-

    riables est obtenue en utilisant plusieurs fois la commandeset.

    data sasuser.conchtable;set sasuser.table1;

    set sasuser.table2;

    run;

    Le mme rsultat peut tre obtenu avec la commande merge. Elle permet,

    en plus, de contrler la bonne correspondance des lignes de chaque table (trie)

    suivant les valeurs dune cl et introduit, le cas chant, des donnes man-

    quantes.

    data sasuser.mergetable;

    merge sasuser.table1 sasuser.table2;

    by varcom;

    run;

    5.3 Affichage dune table

    Le menu affichage permet de vrifier le bon contenu dune table. Parailleurs,

    la procdure printdite la liste dune table SAS dans la fentre SAS.sortie

    en calculant ventuellement des sommes partielles.

    Syntaxe

    proc print ;

    by variable ;

    varliste de variables ;

    Options

    data=table sasindique le nom de la table, par dfaut, la dernire cre,

    noobssupprime les numros des observations,

    roundarrondit les rsultats avec deux dcimales.

    8 SAS de base : gestion des donnes et procdures lmentaires

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    14/31

    8 SAS de base : gestion des donnes et procdures lmentaires

    Commandes

    by suivi du nom dune variable qualitative indique que les statistiques sont

    calcules par groupe dobservations ; la table doit tre trie.

    var les variables de la liste var sont dites dans la fentre sortie ; par

    dfaut, toutes les variables sont traites.

    6 Procdures statistiques lmentaires

    6.1 procdure tabulate

    La procduretabulateest trs intressante manipuler et apporte beaucoupde richesse pour les sorties SAS. Des livres entiers lui sont dailleurs consa-

    crs. Elle permet en particulier de crer des tableaux de bord(reporting) syn-

    thtiques qui compilent, rcapitulent et ventuellement analysent les donnes.

    La syntaxe est la suivante :

    Syntaxe

    proc tabulate ;class ;

    var ;

    table... ;run ;

    Options

    data=table sasindique le nom de la table, par dfaut, la dernire cre,

    Chaque ligne de commande a un rle trs spcifique en fonction de la syntaxeet de la ponctuation.

    Les variables qualitatives contenues dans la liste1 servent dfinir desgroupes dobservations sur lesquels des statistiques seront calcules. Ce

    sont ces variables qui dfiniront les lignes et les colonnes du tableau

    calculer.

    Les variables contenues dans la liste2doivent ncessairement tre num-riques. Cest sur ces dernires que lon pourra effectuer des oprations.

    linstructiontablepermet de prciser et dfinir larchitecture du tableau.En particulier, il est possible de concatner, croiser ou encore regrouper

    des catgories.

    La matrise de linstruction table est donc ncessaire si lon souhaite construiredes tableaux compliqus. Cette instruction est extrment sensible la ponctua-

    tion : la virgule marque la limite entre les lignes et les colonnes, un espace in-

    dique une juxtaposition de deux lments dans une mme dimension (ligne ou

    colonnes) et ltoile signifie que lon imbrique deux lments dans une mme

    dimension. Typiquement, on utilisera donc la syntaxe suivante :

    table (lignes) , (colonnes * cellules);

    Entre les parenthses de la dimension ligne, on trouve des noms de variables

    cites dans class. Il en va de mme entre les parenthses de la dimensioncolonne.

    Pour les cellules, on retrouve soit une statistique comme une frquence ou

    un pourcentage, soit une variable de calcul (dj cite dans var) suivie dunetoile et de sa statistique.

    data exemple; /* Cration de la table */input jour veh $ effectif ener $;

    cards;

    1 voiture 6 e

    1 camion 3 g

    2 voiture 4 g

    2 camion 5 g

    3 voiture 12 e

    ;

    run;

    Exemple dutilisation de la procdure.

    proc tabulate data=exemple;

    var jour effectif;

    class veh;

    table veh, effectif*max effectif*mean;

    run;

    proc tabulate data=exemple;

    var effectif;

    class veh ener;

    9 SAS de base : gestion des donnes et procdures lmentaires

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    15/31

    9 SAS de base : gestion des donnes et procdures lmentaires

    table veh, ener*(effectif*mean);

    run;

    6.2 procdure univariate

    Cette procdure regroupe tous les rsultats qui peuvent tre obtenus, par

    SAS, dans le cadre dune tude uni-varie de variables quantitatives : indica-teurs de tendance centrale (moyenne, mdiane, mode), indicateurs de disper-

    sion, dautres caractristiques de la distribution (quantiles, skewness, kurto-

    sis), les graphiques en basse rsolution (histogrammes, tige-et-feuille, bote-

    -moustaches, droites de Henri), le test de Student de nullit de la moyenne,

    les tests de normalit dune distribution et les tests non-paramtriques (signe,

    Wilcoxon,. . . ).

    Syntaxe

    proc univariate ;

    varliste de variables ;by variable ;

    weightvariable ;output ;

    Options

    La liste des options permet de prciser les rsultats attendus.

    data=table sasindique le nom de la table par dfaut, la dernire cre,

    normalpour obtenir des tests de normalit,

    plotpour obtenir les graphiques, si la commande by est employe, les

    botes sont affiches en parallle, vardef=prcise le diviseur dans le calcul de la variance (df, n, wdf, wgt).

    Commandes

    by suivi du nom dune variable qualitative indique que les statistiques sont

    calcules par groupe dobservations ; la table doit tre trie.

    output indique le nom du fichier et la liste des statistiques qui y seront enre-

    gistres.

    var liste des variables concernes par la procdure, par dfaut, toutes les va-

    riables quantitatives.

    weight nom de la variable contenant les pondrations des observations.

    6.3 procdure means

    Les rsultats fournis par cette procdure sont inclus dans ceux produits par

    la procdure univariate dcrite ci-dessus. Elle sutilise de la mme faon et

    diffre par la prsentation des rsultats rsums sous la forme dun tableau plusfacile consulter. Elle ne fournit ni statistique non-paramtrique ni graphe. La

    procdure summary ne diffre de la procdure means que dans le choix des

    options par dfaut.

    6.4 procdure freq

    Cette procdure traite les variables qualitatives. Elle fournit donc des tris

    plat et complte ces rsultats par des tudes bi ou multi-varis de tables de

    contingences. On obtient ainsi les profils lignes et colonnes, les statistiques

    des tests dindpendance (2)et des comparaisons avec les valeurs dduites

    du modle dindpendance.

    Syntaxe

    proc freq ;

    by variable ;tablesliste des croisements requis ;

    weightvariable ;

    Options

    data=table sasindique le nom de la table par dfaut, la dernire cre,

    order=freqdition ordonne par effectifs dcroissants,

    Commandes

    by suivi du nom dune variable qualitative indique que les statistiques sont

    calcules par groupe dobservations; la table doit tre trie.

    tables liste des croisements exprims sous une des formes : a*b, a*(b c),

    (a b)*(c d), (a- -d)*c. Les options prcisent les rsultats et statistiques

    demandes ; la plus utile est chisqqui excute un test du 2, dautres

    permettent dviter certaines ditions (profils).

    weight nom de la variable contenant les pondrations des observations.

    10 SAS de base : gestion des donnes et procdures lmentaires

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    16/31

    10 SAS de base : gestion des donnes et procdures lmentaires

    6.5 procdure corr

    Cette procdure tudie les liaisons entre variables quantitatives et propose

    donc les indicateurs usuels comme les coefficients de corrlation de Pearson

    et de Spearman, dautres qui le sont moins, et les tests associs. Les rsultats

    peuvent tre enregistrs dans des tables sas.

    Syntaxe

    proc corr ;

    by variable ;varliste de variables ;

    weightvariable ;

    withliste de variables ;

    Options

    data=table sasindique le nom de la table, par dfaut, la dernire cre,

    hoeffding kendall pearson spearman slectionne les types de mesure decorrlation,pearsonpar dfaut,

    vardef=prcise le diviseur dans le calcul de la variance (df, n, wdf,wgt),

    Commandes

    by suivi du nom dune variable qualitative indique que les statistiques sont

    calcules par groupe dobservations ; la table doit tre trie.

    var les variables de la liste varsont croises avec celles de la liste with ; par

    dfaut, toutes les variables numriques.

    with par dfaut, tous les couples de variables apparaissant dans la liste var.weight nom de la variable contenant les pondrations des observations.

    6.6 Produit de matrices avecscore

    La procdurescorepermet de calculer le produit entre deux matrices (re-

    prsentes par deux tables SAS) sans faire appel au module SAS/IML. La pro-

    cdurescoremultiplie, individu par individu, les variables dune table SAS

    par des coefficients (appels scores) associs ces variables et prsents dans

    lautre table SAS considre. Cette procdure est utilise, par exemple, pour

    calculer les coordonnes sur le plan factoriel dun individu supplmentaire

    partir des rsultats dune ACP effectue au pralable. On peut lappliquer di-

    rectement sur les sorties des procdures princomp,candisc,factor. . . ,

    qui contiennent une matrice de type score.

    Syntaxe

    proc score ;

    by variable ;

    id variable ;

    var liste de variables ;

    run ;

    Options

    La procdurescoremultiplie les individus dune table SAS par des "scores"

    contenus dans une autre table SAS. Elle effectue le produit de la matrice des

    individus par la transpose de la matrice des scores. La table contenant

    les scores doit possder une variable _TYPE_. Cette variable peut prendre les

    valeursSCOREpour indiquer les coefficients, et MEANet STD si on souhaite

    centrer et rduire les donnes avant dappliquer les coefficients.

    data=tablesas contenant les individus,

    out=tablesas en sortie. Par dfaut, elle contient les nouvelles variables et

    les variables de la table initiale.

    score=tablesas contenant les coefficients. Elle doit possder une variable

    _TYPE_et peut galement comprendre une variable _NAME_donnant le

    nom de la nouvelle variable ou des nouvelles variables (colonnes) cres. type=nomindique que les coefficients sont conservs dans les lignes pour

    lesquelles _TYPE_prend la valeur nom (cf. exemple de la rgression o

    TYPE=PARMS). Cette option est utiliser si _TYPE_est diffrent de

    SCORE.

    nostdindique que lon ne centre pas et que lon ne rduit pas les donnes

    avant application des coefficients.

    Commandes

    by suivi du nom dune variable qualitative pour effectuer les calculs selon les

    groupes dfinis par les modalits de cette variable. La table doit tre trie.

    11 SAS de base : gestion des donnes et procdures lmentaires

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    17/31

    g p

    var liste des variables sur lesquelles on applique les coefficients. Ces variables

    doivent tre prsentes dans les tables appeles par score=et data=.

    id liste des variables prsentes dans la table sortie dfinie par out=. Par dfaut

    toutes les variables.

    Exemples

    /* Creation de la table contenant les scores */

    data coeff;

    input _TYPE_ $ _NAME_ $ var1 var2;

    cards;

    MEAN clin 1 3

    STD clin 2 1

    SCORE clin 0.5 -0.5

    ;

    run;

    /* Creation des donnes sur lesquelleson souhaite appliquer les scores */

    data donnees;

    input var1 var2 @@;

    cards;

    3 4 1 2 .....

    ;

    run;

    /* Creation de la nouvelle variable clin

    partir de scores aprs centrage et

    rduction des donnes *

    /

    proc score data=donnees score=coeff out=sortie;

    var var1 var2;

    run;

    qui donne la table sortiesuivante :

    var1 var2 clin

    3 4 0

    1 2 0.5

    .. .. ..

    /* 0 = (3-1)/2*0.5 +(4-3)/1*(-0.5) */

    /* 0.5= (1-1)/2*0.5 + (2-3)/1*(-0.5) */

    Utilisation des rsultats de la procdurereg pour calculer la valeur ajuste

    de nouvelles observations.

    proc reg data=donnees outest=coeff;model y = var1 var2;

    run;

    /* affichage de la table coeff contenant les

    coefficients de la regression */

    proc print data=coeff;

    run;

    /* table coeff */

    _TYPE_ _DEPVAR_ ... INTERCEP var1 var2

    PARMS y 1.5 0.3 -0.7

    Il est alors possible, pour une nouvelle observation, destimer la valeur de la

    variable y en appliquant la procdure score. Celle-ci tient automatiquement

    compte de la constanteINTERCEPdu modle si on prcise type=PARMS.

    /* calcul des y ajusts pour les nouvelles

    observations */

    proc score data=autretab score=coeff type=PARMS

    out=valajust;

    var var1 var2;

    run;

    Calcul des coordonnes dindividus supplmentaires (ACP).

    /* ACP du tableau initial */

    /* la table coeff contient les coordonnes des

    vecteurs propres permettant le calcul des composantes

    principales */

    proc princomp data=table1 outstat=coeff;

    var var1-var5;

    run;

    12 SAS de base : gestion des donnes et procdures lmentaires

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    18/31

    g p

    /* Calcul des composantes principales des individus

    supplmentaires, on centre et rduit les donnes

    automatiquement avant calcul des composantes

    principales qui sont sauves dans la table

    compr2 */

    proc score data=table2 score=coeff out=compr2;

    var var1-var5;run;

    1 Graphiques Haute Rsolution avec SAS/GRAPH

    http://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    19/31

    Graphiques Haute Rsolution avec

    SAS/GRAPH

    RsumLe moduleSAS/GRAPHpermet de tracer des graphes dont la rso-

    lution est adapte au priphrique utilis (cran, imprimante, page

    web.. . ) et avec toutes les options possibles. Cette vignette dcrit les

    principales procdures (gchart, gplot, annotate) et options parmi un

    nombre de disponibles qui est considrable. Bien que la plupart des

    procdures statistiques fournissent (open delevery system) des gra-

    phiques par dfaut, la construction spcifique du graphique adapt

    au problme pos est souvent incontournable.

    Retour auplan du cours.

    1 Introduction

    1.1 SAS/Graph

    Le module SAS/GRAPH propose une trs grande varits de procdures

    graphiques assorties dun nombre considrables doptions. En plus des proc-

    dures de base : gchart et gplot, bien dautres procdures et types de graphiques

    sont accessibles :

    fonds de cartes (gmap),

    surfaces ou nuages de points en trois dimensions ( gcontour, g3d),

    dessiner dautres polices de caractres (gfont),

    combiner plusieurs graphes de natures diffrentes sur une mme page

    (greplay),

    tester linstallation de SAS/GRAPH, les paramtres du priphrique cou-

    rant et les options en vigueur (gtestit),

    gradar, gkpi, gslide, gtile, gareabar, gbarline...

    Dautre part, tout texte ou figure gomtrique complmentaires peuvent tre

    rajouts sur un graphe en les dcrivant dans une table SAS spciale dite dan-

    notation :Annotate Data Set.

    1.2 ODS Graphics

    Pour "simplifier" le paysage, de nouvelles procdures graphiques directe-

    ment accessibles du module SAS de base et sans utiliser SAS/Graph, sont ap-

    parues partir de la version 9.2 (en test puis en production dans la 9.3) de

    SAS en relation avec le service ODS : sgdesign, sgpanle, sgplot,

    sgrender, sgscatter. Les objectifs sont les mmes mais les jeux dop-tions et syntaxes changent ! Nanmoins la mme logique de dfinition des gra-

    phiques est utilise notamment dans notamment avec les tables dannotation.

    Comme ce nouveau service ODS (open delevery system) Graphics, pro-

    posent systmatiquement des graphiques par dfaut dans toutes les procdures

    statistiques, il est lgitime de sinterroger sur la ncessit de mettre en uvre

    des procdures spcifiques, lourdes, complexes, notamment par la richesse des

    options proposes. Lexprience montre assez systmatiquement, quutiles et

    efficaces en phase exploratoire ou de mise au point, des graphes par dfaut

    sont vite limits. La comprhension dun rsultat statistique, sa porte, son

    impact sont souvent le rsultat dun graphique pertinent adapt la structuredes donnes et la mthode utilise. Quelque soit le logiciel, une pratique

    professionnelle requiert les comptences indispensables pour dchiffrer une

    documentation excessivement complexe afin daboutir au graphique voulu et

    pas celui impos par dfaut. Autrement dit, il sagit de savoir qui contrle le

    rsultat final, le statisticien ou le logiciel.

    2 Environnement

    2.1 Taille des graphiques

    Le graphique demand est trac dans une zone dont les dimensions sont dfi-

    nies par les paramtres hsize et vsize de la commande globale goptions

    (les valeurs maximales sont prises par dfaut) diminus de lespace ncessaire

    ldition des titres, sous-titres, notes, lgendes,.. . . Les dimensions peuvent

    tre exprimes en trois units : pouce, cm ou pct qui signifie pourcen-

    tage de la dimension totale. Cette dernire unit est prfrable pour exprimer

    les tailles de caractres et symboles lorsque les dimensions globales, lis au

    priphrique de sortie, sont sujettes modifications.

    2 Graphiques Haute Rsolution avec SAS/GRAPH

    http://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    20/31

    2.2 Sauvegarde des graphiques

    En labsence de commande explicite, le graphe apparat sur le priphrique

    par dfaut, lcran de lordinateur, dans la fentre de visualisation des rsultats.

    Une fois les graphiques mis au point, ils peuvent tre sauvs dans des fichiers

    ou un traitement de texte.

    Un fichier de format.jpgest systmatiquement cr (sous windows) dansun rpertoire temporaire ainsi quun fichier sashtml.html contenant le gra-

    phique ; consulter la fentre du journal. Il devrait tre possible de contrler la

    destination de ce fichier.

    2.3 Image cran

    Un clic droit sur le graphique (windows mais unix ?) ouvre un menu qui

    permet de sauver limage dans le format .pngavec la dfinition de lcran.

    2.4 ODS

    Comme vu en introduction, le graphique peut tre automatiquement orient

    dans une fichier au bon format (.rtf, .html...) et sans doute avec une meilleure

    dfinition que celle de lcran.

    ODS RTF BODY=nomfichier.rtf;

    ODS GRAPHICS ON;

    /* Programme SAS */

    ODS GRAPHICS OFF;

    ODS RTF CLOSE;

    3 Commandes globales

    Elles dfinissent des objets (axes, symboles, trames, lgendes) et les options

    utiliss pour les tracs ; elles demeurent valables jusqu une nouvelle dfini-

    tion ou la fin de la session sas.

    3.1 Axes

    Des types daxes, numrots de 1 99 sont dfinis avant de pouvoir tre

    utiliss dans les diffrents graphiques. Ils prcisent lchelle (liste de valeurs,

    logarithmique), lapparence (longueur, couleur, paisseur, style de ligne, ori-

    gine), les marques dchelle (nombre, couleur, paisseur, hauteur), les valeurs

    des chelles (format), le libell (police,.. . ).

    axis1 order=(1973 to 1981 by 2)

    label=(annee)

    minor=(number=1)

    width=3;axis2 order=(0 to 10000 by 1000)

    label=(Revenu en francs)

    minor=none

    width=3;

    3.2 Lgendes

    Comme pour les axes, diffrents types de lgendes (de 1 99) sont dfinis-

    sables. Ils spcifient positions et textes des libells qui identifient les diffrents

    graphismes et symboles utiliss.

    3.3 Symboles

    Les diffrents types de symboles (1 99) sont dfinis afin de dcrire les

    modes de reprsentation recherchs. Sont concerns : le symbole (forme,

    taille, couleur) utilis pour reprsenter un point, le type de lignes reliant les

    points (couleur, continue, hachure, pointille,.. . ), la faon ou mode dinter-

    polation incluant barres, botes moustaches, escaliers, splines, intervalles de

    confiance, rgression (linaire, polynomiale, spline).

    symbol1 interpol=sm50s /* lissage spline */value=diamond /* symbole */

    height=3 /* taille du symb.*/

    width=2; /* epaisseur */

    3.4 Options graphiques

    Outre ceux dcrits ci-dessus (hsize, vsize), cette commande redfinit

    les valeurs de plus de 80 paramtres affectant

    les diffrents aspects du graphique :

    bordercadre autour du graphique,

    3 Graphiques Haute Rsolution avec SAS/GRAPH

    http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    21/31

    gunit=cm|in|pctunit de mesure, rotate=landscape|portraitorientation du graphique,

    le texte :

    ftextpolice du texte,

    ftitlepolice des titres,

    texte, symboles, types de hachures, lgendes.

    Les paramtres reprennent leurs valeurs par dfaut la suite de : reset=all|global allconcerne tous les paramtres tandis que que global

    naffecte pas ceux dfinis dans la mme commande.

    3.5 Titres et notes

    Les commandes title et footnote dfinissent des lignes de texte au-

    tour du graphique, elles suivent le mme principe que celui dcrit au para-

    graphe I.1.4 et dautres options sont disponibles : taille, couleur et police des

    caractres, position, rotations de la ligne de texte et des caractres, tracs de

    lignes.

    goptions reset=global gunit=pct border

    ftext=swissb htext=3;

    title1 height=5 Institut;

    title2 de;

    title3 height=5 Mathmatiques;

    footnote1 font=script justify=left

    Universite de Toulouse;

    Il est important de noter que chaque paramtre peut tre initialis ou redfini

    diffrents endroits dun programme SAS : dans les commandes spcifiques

    (symbol, legend, axes, pattern, title, footnote), par la

    commandegoptions et dans chacune des procdures. Ceci impose de bien

    distinguer les paramtres globaux, applicables tous les graphes, des para-

    mtres spcifiques chaque graphe.

    4 procdure gchart

    Cette procdure trace des diagrammes en barres (hbar), en colonnes et his-

    togrammes (vbar), en secteurs (pie) et arolaires (star). Elle peut traiter

    des variables quantitatives ou qualitatives ; les variables quantitatives sont co-

    des explicitement ou automatiquement en classes ou, selon les besoins, som-

    mes ou moyennes.

    4.1 Syntaxe

    proc gchart ;

    by variable ;vbarliste de variables

    > ;

    hbarliste de variables

    ;

    pieliste de variables

  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    22/31

    levels=nombre de classes,

    type=spcifie ce que reprsente le graphique (par dfaut une frquence) :

    cfreq(frquence cumule), cpt (pourcentage cumul),pct (pourcen-

    tage),sum ou mean(associes sumvar=).

    group=reprsentation de plusieurs graphes cte cte suivant les moda-

    lits de la variable spcifie (hbarou vbar),

    subgroup= dcoupage des barres ou colonnes selon la participation desmodalits de la variable spcifie (hbarou vbar).

    4.5 Options daxes

    Deux options permettent de de dfinir les axes ou de leur assigner des dcla-

    rations antrieurs : gaxis=axisn pour laxe des groupes et maxis=axisn

    pour celui des bornes on caractrise la dfinition daxe concerne (cf. para-

    graphe V.2.1.).

    5 procdure gplotGraphiques en haute rsolution de nuages de points en deux dimensions.

    5.1 Syntaxe

    proc gplot ;

    by variable ;

    plotliste de graphiques

    > ;

    bubbleliste de graphiques

    > ;

    5.2 Options gnrales

    data=table sasindique le nom de la table ou, par dfaut, la dernire cre,

    annotate=table sastable contenant les complments graphiques.

    uniformimpose les mmes chelles aux axes des diffrents graphiques.

    5.3 Options dapparence

    Elles spcifient les couleurs, les polices de caractres, les tailles des bulles

    (bubble), le hachurage daires, la dfinition de lgendes, la superposition

    (plot).

    5.4 Options daxes

    Deux options permettent de dfinir les axes ou de leur assigner des dclara-

    tions antrieurs : vaxis=axisnpour laxe vertical et haxis=axisnpour

    laxe horizontal on caractrise la dfinition daxe concerne (cf. paragraphe

    5.2.1.). De plus,frametrace un cadre tandis que noaxissupprime les axes.

    5.5 Commandes

    by suivi du nom dune variable qualitative indique que les graphiques sont

    tracs par groupe dobservations ; la table doit tre trie.

    plot liste des graphes sous la forme : y*x, avec la mme

    syntaxe que prcdemment pour dsigner plusieurs graphes (a*(a b),. . . ).La variabley fournit les ordonnes et x les abscisses des points reprsen-

    ts par des symboles dfinis dans la commande symboln ou par diff-

    rents symboles selon les valeurs de la variable spcifie qui induit une

    classification. Dans ce dernier cas, une lgende est cre par dfaut.

    bubble liste des graphes sous la forme : y*x = size o sizeest une va-

    riable indiquant la taille des bulles tracer autour des centres de coordon-

    nesx et y.

    6 Annotate data setUne table dannotations, dfinie lors dune tape data, est une table SAS

    contenant les descriptifs dun ensembles de graphiques qui viendront se

    superposer aux rsultats des procdures prcdemment dcrites (gchart,

    gplot,...). Il est alors possible de positionner tout libell ou toute figure

    gomtrique simple et ainsi de personnaliser ses graphiques.

    Des applications immdiates sont, par exemple, la production de plans fac-

    toriels avec identifications des points (variables, individus, modalits) par des

    libells explicites ou encore le trac du cercle des corrlations en analyse en

    composantes principales.

    5 Graphiques Haute Rsolution avec SAS/GRAPH

    http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    23/31

    Par principe, chaque ligne ou observation dune table dannotations est

    une commande de ralisation dun graphique particulier. Les valeurs de cha-

    cune des variables spcifient comment raliser ce graphique : type, empla-

    cement, couleur,. . . . Les variables de la table dannotation ont des noms pr-

    dfinis ; les plus usuelles sont :

    function indique ce quil faut trac : bar, draw, frame, pie, symbol, label,. . . ,

    x positionnement en abscisses,

    y positionnement en ordonnes,

    size hauteur des caractres,

    xsys unit de mesure des abscisses,

    ysys unit de mesure des ordonnes,

    hsys unit de mesure des hauteurs,

    color couleur,

    position dun texte par rapport aux coordonnes (cal gauche, centr,. . . ),

    line type de ligne (par dfaut, continue),text texte du libell

    style police de caractres.

    La mise en uvre de ces fonctionnalits est un peu fastidieuse mais cest

    la seule faon de faire diter par SAS certains types de graphiques dont les

    fameux plans factoriels avec les libells en clair de tous les points.

    Cration dune table dannotations :

    data annocomp;

    set outcomp;

    x = prin1;y = prin2;

    xsys= 2;

    ysys= 3;

    text= lib_ind;

    size= 0.8;

    label x = axe1;

    label y = axe2;

    keep x y text xsys ysys size;

    run;

    1 SAS macros : criture de macros commandes

    http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    24/31

    SAS macros : criture de macros

    commandes

    Rsum

    Cette vignette dcrit brivement les principes et objets du macro

    langage de SAS permettant dcrire des macros commandes : ma-

    cros variables, macros fonctions, passages de paramtres et syntaxe

    dune macro commande.

    Retour auplan du cours.

    1 Introduction

    1.1 Motivations

    Ds quil sagit dcrire des programmes SAS suffisamment gnraux afin,

    par exemple, de les appliquer diffrents jeux de donnes, il est ncessaire, par

    souci defficacit, de faire appel aux ressources de SAS permettant de dfinir

    desmacro-variableset des macro-commandes.

    Lcriture de macros SAS est une activit courante dans les grandes en-

    treprises et les socits de service spcialises dans ce logiciel. Lobjectif est

    de concevoir puis carrosser un ensemble de traitement spcifiques afin de les

    rendre accessibles des utilisateursnon spcialistes de SASmais gros consom-

    mateurs comme dans lindustrie pharmaceutique ou le marketing.

    1.2 Principes

    Le principe gnral consiste associer une chane de caractres, une suite

    de commandes ou, un texte un identificateur. Par la suite, toute occurrence

    de cet identificateur ou macro variable est remplace par le texte dsign au

    cours dun traitement pralable lexcution proprement dite des commandes.

    Le pr-processeur implicitement invoqu reconnat diffrents objets : va-

    riables, commentaires, commandes, fonctions, arguments, qui lui sont propres

    (prcds des caractres & ou %) ; ils lui confrent les possibilits dun langagede programmation rudimentaire mais structur.

    Le macro-langage, au mme titre, augmente les possibilits du langage de

    base. Il permet de passer des paramtres entre les tapes DATA et PROC et de

    systmatiser lenchanement dune squence donne dinstructions.

    Les macro-variables et macro-commandes sont connues, sauf dclaration

    explicite contraire (%global, %local), dans lenvironnement dans lequelelles sont dclares : globalement pour toute une session SAS ou localement

    lintrieur dune macro.

    2 Macro-variables

    2.1 syntaxe

    La dclaration dune macro-variable consiste associer par la commande

    %let une chane de caractres (jusqu 65534) un identificateur (de 1 32caractres) :

    %let nomvar1=taille;%let nomvar2=poids;%let varlist=csp sexe age taille poids revenu;/* affichage du contenu : */%put &varlist;

    Certaines dclarations de macros variables sont implicites : compteur dune

    boucle%do, paramtres dune macro-commande,.. . .

    Dans la suite du programme, les rfrences une macro-variable sont pr-

    cdes du caractre& :

    title "tude des variables &varlist";proc plot;

    plot &nomvar1*&nomvar2;run;

    Le caractre & est traduit au niveau du pr-traitement : remplacer la macro-variable qui suit par la chane de caractres avant de passer lexcution.

    Attention aux chanes de caractres. Si la chane est entre "... ", une macro

    variable contenue dans la chane est interprte, remplace par sa "valeur". Ce

    nest pas le cas si la chane est entre ....

    2 SAS macros : criture de macros commandes

    http://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    25/31

    Une macro-variable peut contenir elle-mme des commandes ou instruc-

    tions SAS mais, dans ce cas, il est prfrable de dfinir une macro-commande.

    Le systme gre des macros variables prdfinies comme sysdate etsysday qui contiennent respectivement la date et le jour du dbut de la ses-sion SAS en cours. Excuter et consulter la fentre du journal :

    %put &sysdate;%put &sysday;%put &_automatic_;

    La dernire commande liste toutes les macros variables du systme. Ces ma-

    cros variables peuvent tre incluses dans un programme pour dater les sorties.

    2.2 call symput

    Linstruction call symputpermet de crer une macro-variables en luiaffectant les valeurs dune variable dune table SAS. Cette instruction sutilise

    exclusivement dans une tape DATA.

    CALL SYMPUT("nom-macro-var",valeur-macro-var);

    Cela signifie que le contenu de cette macro variable nest pas prdfini par

    une chane de caractres mais peut voluer en cours dexcution. Ainsi dans

    lexemple :

    data _NULL_;

    set table-sas;call symput("nobs",_N_);

    run;

    Comme la variable prdfinie _N_est incrment par le numro de lobser-vation courante, lissue de lexccution la macro variable contient comme

    "valeur" le nombre dobservations de la table-sas. Cest videmment trspratique quand cette information nest pas connue a priori sur lensemble des

    tables qui seront traites.

    3 Macro fonction

    Un ensemble de macros fonctions sappliquant des macros variables sont

    prdfinies. En voici des exemples

    %let semaine = lundi - mardi - mercredi - jeudi -vendredi - samedi - dimanche;

    %let longueur = %length(&semaine);%let jour2 = %scan(&semaine,2,-);

    Dans cet exemple, la macro-variable longueur contient la longueur de la chane

    de caractres semaine soit 63. La macro-variable jour2 correspond ensuite au

    2me mot de la chane (soit mardi). Le troisime argument indique que le

    sparateur est un tiret.

    Par dfinition, une macro-variable sert stocker du texte. Par exemple, la

    valeur dune macro-variable laquelle on affecte1+2 est la chane de carac-tres1+2 et non lentier 3. Toutefois, il est possible de forcer le compilateurmacro effectuer lopration avec la macro fonction %eval qui opre dessoustractions, multiplications et divisions seulement sur des entiers partir

    dexpressions contenant des macro-variables. Si la valeur value contient des

    dcimales, la valeur est tronque la partie entire.

    %let i = 22;%let j = &i/7; /* j contient 22/7 */%let k = %eval(&i/7); /* k contient 3 */

    4 Macro-commandes

    4.1 Syntaxe dune macro commande

    La dclaration dune macro-commande (oumacrotout court) suit les mmes

    principes,

    %macro impdat;%* ceci est un commentaire;proc print;run;%mend impdat;

    3 SAS macros : criture de macros commandes

    http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    26/31

    elle peut inclure des paramtres qui deviennent des macro-variables locales :

    %macro plot(yvar,xvar);proc plot;

    plot &yvar*&xvar;run;

    %mend plot;

    Lexcution dune macro est invoque en faisant prcder son nom du ca-

    ractre% :

    %impdat;%plot(taille,poids);

    4.2 Valeurs et ordre des paramtres

    Les paramtres peuvent avoir des valeurs par dfaut :

    %macro plot(yvar=taille,xvar=poids);proc plot;

    plot &yvar*&xvar;run;%mend plot;

    Il nest plus ncessaire de leur assigner des valeurs. Attention lordre des

    paramtres qui est significatif dans le cas de paramtres sans valeurs par dfaut.

    Sinon, le nom du paramtre est obligatoire au moment de lappel. Par principe,

    les premiers paramtres dune macro commande sont ceux les plus utiliss qui

    nont pas de valeur par dfaut.

    5 Exemple

    Exemple rudimentaire dune macro commande pour faire de lAnalyse en

    composantes principales partir de la procdureprincomp.

    %macro acp(ldataset, lident, llistev, red=);%global dataset ident listev;

    %let dataset=&ldataset;%let ident=&lident;%let listev=&llistev;%* Acp de dataset ;%* ident : variable contenant les;%* identificateurs des individus;

    %* llistev : liste des variables (numeriques);%* par defaut : reduites sinon red=cov;

    %* options edition;options linesize=80 pagesize=60 number;title "A.c.p. des donnees de &dataset";footnote;

    proc princomp data=donneesoutstat=eltpr out=compr

    vardef=N &red;var &listev;run;%mend acp;

    /* acp reduite par defaut */%acp(crime,staten,murder--auto);

    6 Bibliothque de macros commandes

    6.1 Dans un fichier

    Une macro-commande doit tre dclare avant toute utilisation au cours

    dun mme session SAS. Lorsque certaines macro-commandes sont rguli-

    rement utilises, il est pratique de pouvoir les conserver les unes la suite des

    autres dans un fichier muni de lextension .sas. En les ajoutant dans un fi-chier appel macros.sas, par exemple, il suffira ensuite dans nimporte quelprogramme SAS de faire lappel :

    %INCLUDE "macro.sas";

    4 SAS macros : criture de macros commandes

    http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    27/31

    6.2 Dans un rpertoire

    Il est aussi possible de stocker les macros dans une bibliothquede macros

    spcifique un utilisateur ou un groupe. Les rgles suivantes sont respecter :

    1. Chaque dclaration de macro et une seule est enregistre dans un fichier

    qui a pour nom lidentificateur de cette macro suivi de lextension .sas :

    impdat.sas,

    2. Tous ces fichiers sont regroups dans un ou des rpertoires qui constituent

    la ou les bibliothques,

    3. le ou les chemins daccs sont spcifis une fois pour toute dans le fi-

    chier de configuration SAS de lutilisateur. Encore faut-il avoir identifi

    et localis ce fichier et pouvoir y avoir accs !

    En dbut de chaque session, SAS charge le rpertoire de macros.

    1 La Procdure SAS/SQL

    http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    28/31

    La Procdure SAS/SQL

    Rsum

    Cette vignette dcrit lusage de la procdure SQL qui permet linter-

    rogation de tables SAS laide du langage de requte standard.Retour auplan du cours.

    1 Introduction

    Le langage SQL (Structured Query Language) est un langage dinterroga-tion de bases de donnes standardis commun la plupart des logiciels de basede donnes. La procdure sqltudie dans cette vignette en constitue une im-plmentation dans la version 9.3 de SAS. Cette procdure permet dextraire,corriger et mettre jour des donnes dans une table SAS, souvent plus rapide-

    ment que par une tape data.Le terme de tabledsigne toujours une table SAS, correspondant un sto-

    ckage de donnes propre ce logiciel. On utilise galement deux nouveauxtypes dobjets : lesvueset lesindex. Une vue est le stockage dune interroga-tion ou ensemble de requtes : elle contient la description ou dfinition dunetable virtuelle. Une vue est donc une interrogation laquelle on donne un nom,pour son usage ultrieur dans une autre procdure SAS. Le principal intrt dedfinir une vue est le gain despace mmoire. Un index est un systme de poin-teurs permettant dans certains cas daccder plus rapidement aux informationscontenues dans une table SAS.

    2 Syntaxe de la procdure

    2.1 Commandes

    proc sql ;

    alter table dclaration de modification ;

    create table dclaration de cration;

    delete dcl-destruction;

    describe dcl-description;

    drop dcl-suppression;

    insert dcl-insertion;

    reset ;

    select dcl-slection;

    update dcl-mise jour ;validate dcl-valuation;

    Remarques :

    il est inutile de rpter linstruction proc sql avant chaque dclaration,sauf si lon excute une tape data ou si lon fait appel une autre proc-dure entre deux commandes desql.

    linstructionrunnest pas ncessaire.

    2.2 Options inobs=nrestreint le nombre dobservations traites (par exemple dans une

    clausewhere) sur une table fournie en entre de la procdure. outobs=nrestreint le nombre dobservations traites (par exemple ins-

    res) dans une table retourne par la procdure. feedbackrappelle la dfinition des vues parentes lors de la description

    dune vue (commande describe). noprintpas ddition

    3 Dtail des commandes

    3.1 La commandecreate

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

    Cration dune table

    Syntaxe

    create table nom-tableasquery-expression;

    create table nom-tablelikenom-table ;

    2 La Procdure SAS/SQL

    http://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    29/31

    create table nom-table(def-col ) ;

    La premire syntaxe est utilise pour stocker les rsultats dune interrogation.Cest une faon de crer des tables temporaires. La deuxime syntaxe est utili-se pour crer une table ayant les mmes noms de variables et mmes attributsquune autre table. La troisime syntaxe est utilise quand on veut crer unetable dont les colonnes ne sont pas prsentes dans des tables dj existantes.

    Les syntaxes 2 et 3 crent des tables vides, quil faut ensuite remplir avec lacommande insert. Cration dune table SAS permanente dans la librairiesql

    libname sql sql;

    proc sql;

    create table sql.statlab like sasuser.statlab2;

    create table sql.statlab2 as

    select sexenf, gsenf, tenf_n,

    penf_n, tenf_10, penf_10

    from sasuser.statlab2

    where (consm_n=nonfum);

    Cration dune vue

    Syntaxe

    create view nom-vueasquery-exp ;

    Une vue tant une interrogation stocke et ne contenant pas de donnes, on nepeut utiliser les instructions suivantes quand on se rfre une vue : insert,

    delete,alter,update.

    Cration dune vue partir dune table

    create view labv2 as

    select sexenf, gsenf, tenf_n, penf_n,

    tenf_10, penf_10

    from sql.statlab2

    where (sexenf=fille);

    proc print data=labv2; run;

    Cration dun index

    Un index stocke la fois les valeurs des colonnes dune table, et un systme dedirections qui permet daccder aux lignes de cette table partir des valeurs delindex. Lutilisation de lindex lors dinterrogations ou autres instructions dela procdure est dtermine par le systme. Lindex est automatiquement mis jour quand on modifie la table laquelle il est associ. Il permet damliorerla performance de certaines commandes, par exemple la comparaison dunecolonne indexe une valeur constante laide de lexpressionwhere.

    Syntaxe

    create indexnom-indexonnom-table ;

    Le mot-cl unique garantit que chaque valeur de la colonne indexe estunique. Ceci peut tre utile quand on manipule des variables telles que le nu-mro de scurit sociale. Cration de lindex simple gseassoci au groupe

    sanguinproc sql;

    create index gse on sql.statlab2 (gsenf);

    Cration de lindex compositeconsmassoci deux variables

    proc sql;

    create index consm on sql.statlab2 (consm_n,consm_10);

    3.2 La commandealterElle permet dajouter ou de supprimer des colonnes dans une table SAS, ou

    den modifier les attributs (longueur, label, format).

    Syntaxe

    alter table nom-table

    < adddef-col >

    < modifydef-col >

    < dropnom-col > ;

    3 La Procdure SAS/SQL

    http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    30/31

    Modification dune table existante

    alter table sql.statlab2

    add gender char(6);

    3.3 La commandedelete

    Elle permet de supprimer des lignes dans une table.

    Syntaxe

    delete from nom-table < wheresql-exp > ;

    Suppression des lignes dune table

    delete from sql.statlab2 where gsenf=A+;

    3.4 La commandedescribe

    Elle donne la dfinition dune vue, et des vues parentes si loptionfeedbackest spcifie.

    Syntaxe

    describe view nom-vue;

    Description dune vue

    describe view labv2;

    3.5 La commandedropElle permet de dtruire indiffremment une table ou une vue.

    Syntaxe

    drop table nom-table < , nom-table > ;

    drop view nom-vue < , nom-vue > ;

    3.6 La commandeinsert

    Elle permet dajouter des lignes une table.

    Syntaxe

    insert into nom-table < (nom-col < , nom-col >>)

    values(value < , value >) ;

    Il existe deux autres manires dutiliser la commande insert(voir laide enligne).

    Insertion de lignes dans une table

    insert into sql.statlab2

    values (fille,AB,0,0,0,0,d)

    values (garcon,AB,10,10,10,10,e);

    3.7 La commandeselect

    Elle permet de slectionner des colonnes dans une table, et dafficher lesrsultats dans la fentre output.

    Syntaxe

    select liste dobjetsfromliste < wheresql-exp > ;

    3.8 La commandeupdate

    Elle permet de modifier les valeurs de certaines observations pour des co-lonnes dune table existante.

    Syntaxe

    update nom-tablesetnom-col=sql-exp < wheresql-exp > ;

    Modification dune table

    update sql.statlab2

    set gender=sexenf;

    3.9 La commandevalidate

    Elle permet dvaluer la syntaxe dune interrogation sans lexcuter, et re-tourne un message dans la fentre log.

    4 La Procdure SAS/SQL

    http://wikistat.fr/
  • 7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert

    31/31

    Syntaxe

    validate query-exp;

    Cette commande est essentiellement utile dans des applications utilisant desmacro-variables. validateretourne alors une valeur indiquant si linterro-gation est valide grce la macro-variableSQLRC(SQL Return Code).

    4 Comparaison de la procdure sql avec

    une tape data

    On veut connatre la taille moyenne 10 ans et par sexe des enfants dont lamre consommait entre 10 et 20 cigarettes par jour au moment de leur nais-sance. crire le programme permettant de calculer ces quantits laide desprocdures summary, sort et print ; puis comparer avec le programmesuivant utilisant la procduresql.

    4.1 Une utilisation de laproc sql

    proc sql;

    select sexenf , mean(tenf_10) as tmoy

    from sasuser.statlab2

    where consm_n=10a20cig

    group by sexenf

    order by tmoy;