Trsas

1 777 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 777
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
10
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Trsas

  1. 1. UNIVERSITE PARIS XII VAL DE MARNEFACULTE DE SCIENCES ECONOMIQUES ET DE GESTION Master 2 Recherche Economie Appliquée Le logiciel SAS 1ère partie P. Blanchard blanchard@univ-paris12.fr ERUDITE http://www.univ-paris12.fr/www/labos/erudite Septembre 2006
  2. 2. 2 Plan du coursPartie I – Introduction à l’étape DATA et aux procédures1) Linterface SAS sous Windows2) Notre premier programme. Eléments du langage SAS.3) Introduction à l’étape DATA • Création/modification dun tableau SAS • Création et modification des variables • Sélection de variables4) Introduction aux principales procédures • Les procédures utilitaires : PROC PRINT et PROC CONTENTS • Les procédures statistiques : PROC MEANS, PROC FREQ et PROC CORR • Les instructions BY/CLASS et la procédure PROC SORT • Les procédures graphiques : Proc GCHART, PROC GPLOT • Les procédures économétriques : PROC REG et PROC AUTOREG5) Présentation du programme, de l’OUTPUT et du LOGPartie II – Approfondissements sur l’étape DATA et les procédures1) Approfondissements sur l’étape DATA • Création dun tableau à partir dun fichier externe au format ASCII ou EXCEL • Sélection des variables et des observations • Les instructions de totalisation • Les boucles sur les variables et sur les observations • Manipulation des variables chaîne de caractères. Les labels • Concaténation et fusion contrôlée de tableaux2) Approfondissements les procédures • Importation et exportation d’un fichier au format XLS • La création de tableaux par une procédure • La procédure PROC FORMAT • PROC TABULATEAnnexes : Informats, Formats et fonctionsP. Blanchard – Logiciel SAS – Master 2 Recherche
  3. 3. 3IntroductionI) Informations pratiques P. Blanchard, bureau 218, tel: 01 41 78 46 49, email: blanchard@univ-paris12.fr Pré-requis à ce cours: Windows. Documentation SAS : officielle, INSEE, BDF, Internet… Bibliographie (par niveau croissant de difficulté). • L. D. Delwiche & S. J. Slaughter, The Little SAS Book : A Primer, 2003, SAS Institute. • E. Duguet, Introduction à SAS, Economica, 2004. • R. Aster, Professional SAS Programming Shortcuts, Breakfast, 2002, 1st edition. Les fichiers de données et de programmes pour les exercices peuvent être téléchargés sur la page WEB: http://www.univ-paris12.fr/www/labos/erudite/membres/pb/etrie.html SAS (http://www.sas.com/france) propose une licence gratuite pour les étudiant(e)s suivant une formation SAS et organise aussi un Master’s club.. Il existe aussi une liste de discussion pour SAS LISTSERV@LISTSERV.UGA.EDU Cours/td : 18h + 4 td de 1.5h Questions/réponsesP. Blanchard – Logiciel SAS – Master 2 Recherche
  4. 4. 4FORMULAIRE LICENCE GRATUITE A DOMICILE « ETUDIANT » Doit être complété par l’étudiant et remis à son professeur qui l’adressera au CRI DiffuseurBENEFICIAIREfi Mme fi Mlle fi M.Nom* :Prénom* :Adresse personnelle* :Code Postal* :Ville* :Téléphone* :E.mail* :Date probable de fin d’études* :Centres d’intérêt professionnels* :ETABLISSEMENTNom* : Université Paris XII Val de Marne – Faculté de Sciences Economiques et de GestionDépartement/Filière* : Département d’EconomieProfesseur(s) enseignant SAS* : Pierre BlanchardDiplôme (intitulé)* : Master 2 RechercheLogiciel(s) SAS enseigné(s)* : SAS 9.1Adresse* : 61 avenue du Général de GaulleCode Postal* : 94010Ville* : Créteil cédex« Je suis étudiant à l’Université Paris XII val de Marne et SAS fait partie intégrante de mon cursus.J’ai adhéré au Masters’ Club de l’Academic Program, en complétant le formulaire d’adhésion ou derenouvellement sur http://www.sas.com/france/academicJe m’engage à installer les logiciels SAS® sur mon ordinateur, situé à mon adresse personnelle, renseignéeci-dessus, à n’utiliser les Logiciels que pour un usage personnel et pédagogique à but non lucratif, àn’effectuer aucune copie desdits Logiciels et à ne jamais les utiliser dans un environnement professionnel(ex. : stage).Je reconnais que la société SAS Institute Inc., Cary, Caroline du Nord, USA, est propriétaire, au sens duCode de la Propriété Intellectuelle, des Logiciels et de sa documentation.Je suis informé qu’en cas d’atteinte avérée aux droits de propriété intellectuelle de SAS, j’encourre uneindemnité à payer à SAS de 1000 (mille) euros »La licence gratuite est composée des Progiciels Base SAS®, SAS/ETS®, SAS/GRAPH®, SAS/STAT®,SAS/IML®, SAS/INSIGHT®, SAS/Enterprise Guide®, SAS/QC® et SAS/ACCESS® TO PC FILE FORMATSsur poste client Windows.Date et Signature de l’étudiant : Signature ProfesseurCADRE RESERVE A SASRéf4 :Site :Date de Licence :* Informations obligatoires * Les présentes informations sont nécessaires aux fins de permettre la mise à disposition du Progiciel à lUtilisateur. Seul SAS est destinataire des informations que vous nous communiquez. Certaines informations peuvent ponctuellement être partagées avec nos partenaires. Conformément à la loi Informatique et Libertés du 6 janvier 1978, vous disposez dun droit daccès, dopposition et de modification sur les données qui vousP. Blanchard – Logiciel SAS – Master 2 Recherche
  5. 5. 5 concernent. Pour lexercer, nhésitez pas à vous adresser à : Responsable CNIL - SAS Institute France - Domaine de Grégy - BP5 – F-77166 Grégy-sur-Yerres ou à envoyer un mail à acces_donnees@fra.sas.com.".P. Blanchard – Logiciel SAS – Master 2 Recherche
  6. 6. 6II ) Les caractéristiques essentielles de SAS1. Le sigle SAS signifie Statistical Analysis System et se prononce SASSE et non S.A.S. Lasociété SAS a été fondé en 1976 par J. Goodnight.2. SAS est un logiciel qui a pour ambition de couvrir toutes les étapes du traitement desdonnées. SAS est donc un logiciel de gestion et d’analyse statistique des données.3. SAS est principalement un logiciel de traitement de données individuelles peu orienté vers letraitement des séries temporelles.4. SAS est proposé sous la forme de modules. Par ailleurs, SAS ne sachète pas, il se loue àlannée (fichier SID.TXT). cf. page suivante pour l’installation5. SAS existe pour pratiquement tous les types dordinateurs et tous les systèmesdexploitation.P. Blanchard – Logiciel SAS – Master 2 Recherche
  7. 7. 7NOTES POUR LINSTALLATION DE SAS-LICENCE GRATUITE ETUDIANT V 9.1Si une ancienne version de SAS est déjà installée, il vaut mieux la désinstaller.1°) Mettez le CD SAS. Linstallation se lance automatiquement. Si elle ne démarre pas, exécuter leprogramme SETUP.EXE qui est sur le CD.2°) Utiliser les choix du menu pour END USERS STEP. a) Optionnel : Vérifiez tout d’abord votre système en cliquant sur « verify systemrequirements » ) b) cliquez sur « install sas system »Attention : pour certains portables, il peut y avoir des problèmes d’installation. Cf. le mail reproduità la fin du document.A partir de là, plusieurs fenêtres de dialogue vont apparaître (entre 8 et 10), répondez à chaque fois« suivant » Sauf quand SAS va vous demandez un fichier SID. Taper (ou faites apparaître avecparcourir) dans la fenêtre indiquée D:SID.TXTCe fichier est sur le CD-ROM.3°) Si SAS vous pose une question sur les extensions de nom de fichier, cochez la case : utilisercette réponse pour tous les types, puis cliquez sur « oui »7°) au message, « installation terminée » cliquez sur « Fin » Quand linstallation est terminée SASest installé dans c:PROGRAM FILESSASSAS 9.1Pour lancer SAS, faites Démarrer Programmes SAS puis SAS 9.1En cas de problèmeVous devez arrêter lanti-virus, le firewall, et être connecté en tantquadministrateur.1. Exécuter les pré-requis :D:srwbundlesvcredst7setup.exe.2. Télécharger puis installer les Run-Timehttp://www.microsoft.com/downloads/release.asp?ReleaseID=283373. Puis installer SAS en outrepassant les pré-requis :D:sassetup.exe nomsupdateoù D: est le lecteur de CD-Rom.Si cela échoue, essayez avec cette syntaxe :"D:sassetup.exe nomsupdate"P. Blanchard – Logiciel SAS – Master 2 Recherche
  8. 8. 8Partie I) Introduction à l’étape DATA et aux procédures1) Linterface SAS sous Windows • Notre version de SAS est la version 9.1 et fonctionne sous WINDOWS XP/2000/Me/NT. • Linterface sous WINDOWS (version anglaise/française). • Utilisation: mode menu ou programme.Autres fenêtres utiles.Attention: sous SAS, il y a deux éditeurs, le Enhanced Program Editor (le plus utile) et le ProgramEditor.P. Blanchard – Logiciel SAS – Master 2 Recherche
  9. 9. 92) Notre premier programmeLe tableau donneesnom revenu consoAA 22.3 19.9BB 30.3 10.1etc.Exemple n°1.DATA essai ; SET donnees ; lconso = LOG(conso) ; lrev = LOG(revenu) ;RUN ;PROC PRINT DATA = essai ;RUN ;DATA essai ; SET essai ; pmc = conso/revenu ;RUN ;PROC REG DATA = essai ; MODEL lconso = lrev / DW;RUN ; QUIT ;PROC MEANS DATA = essai N MEAN MIN MAX NMISS ; VAR revenu conso pmc ;RUN ;Quels principes pour SAS ?P. Blanchard – Logiciel SAS – Master 2 Recherche
  10. 10. 10 PROC.A) Un programme SAS se compose dune suite détapes DATA et de PROC Notre programmese compose de deux étapes DATA et de trois étapes PROC. • Létape DATA a pour objet de créer ou de modifier un tableau (on dit aussi une table) de données (stocké dans un fichier de données SAS, temporaire ou permanent). • Une étape PROC a pour objet dutiliser un tableau SAS existant pour en faire une analyse (statistique, graphique, économétrique…).Etape DATA Etape PROCCommence par DATA Commence par PROCLit des données Effectue une analyse statistique, graphique…Crée ou modifie des variables/observationsCrée ou modifie un tableauSe termine par RUN, DATA ou PROC Se termine par RUN, QUIT, DATA ou PROCDATA essai ; SET donnees ; | lconso = LOG(conso) ; | lrev = LOG(revenu) ; | Etape DATARUN ; |PROC PRINT DATA = essai ; | Etape PROCRUN ; |- Un tableau SAS peut être utilisé par une ou plusieurs étapes DATA et/ou PROC.- Une instruction DATA ou PROC est terminée dans 2 cas:- Une instruction RUN est généralement mise à la fin de chaque étape DATA ou PROC.- Elle permet d’exécuter un bloc d’instructions à l’aide de la souris sans nécessairement exécuter la totalité du programme. C’est une bonne idée pour mettre un programme au point par petit bout.PROC PRINT DATA = essai ; RUN ;- Il ny a pas de END à la fin d’un programme (ne pas mettre ENDSAS ;). Par contre, on mettraun RUN ; sinon, la dernière instruction ne sera pas exécutée (ou pas au bon moment).P. Blanchard – Logiciel SAS – Master 2 Recherche
  11. 11. 11B) On distingue les instructions d’appel, les instructions, les options des instructions dappel,les options des instructions, les variables, les tableaux et les fonctions. • Les instructions d’appel sont DATA ou PROC. • Les instructions de l’instruction d’appel sont parfois obligatoires (par exemple MODEL), parfois facultatives (par exemple VAR) selon les cas. • Par définition, les options peuvent ne pas être spécifiées (options par défaut). Attention, il y a deux types d’options : les options de l’instruction d’appel et les options des instructions. • Les instructions, les noms des variables et des tableaux peuvent être spécifiées en minuscules, en majuscules ou dans un mélange des deux. • Il peut y avoir plusieurs d’instructions dans une instruction d’appel. Lordre des instructions dans une PROC (ou dans DATA) est indifférent. Idem pour les options. • /* … */ permet d’introduire des commentaires dans le programme. Très utile.Exemple n°2.PROC PRINT ; RUN ; /* correct */PROC MEANS DATA = temp ; RUN ;PROC REG ; RUN ; /* incorrect */PROC REG DATA = temp SIMPLE ; /* instructions et options */ MODEL y = x1 x2 x3 /DW COVB STB ; TEST x1 = 1 ;RUN ; QUIT ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  12. 12. 12C) Les principales règles syntaxiquesChaque instruction se termine par un ;Les instructions, les variables, les fonctions… peuvent être écrites en minuscules ou majuscules.Une instruction peut être écrite sur plusieurs lignes.Une instruction peut commencer à n’importe quelle colonne.Lespace est le caractère séparateur entre les instructions, les options, les variables ou les noms detableau. L’oubli du ; est l’erreur la plus fréquente dans un programme SAS. Cette erreur peut êtredifficile à détecter. • Vous noterez que le ; sépare les instructions d’appel et les instructions entre elles (mais pas de ; entre les instructions et les options). • Par contre, mettre deux points-virgule ne génère aucune erreur (= 1 instruction vide). • Plusieurs instructions peuvent se trouver sur la même ligne. • Néanmoins, il vaut mieux aérer le programme avec les lignes vides. • Une instruction commence et finit à n’importe quelle colonne d’une ligne donnée. Ceci permet d’utiliser lindentation pour isoler linstruction dappel des instructions qui en font partie.Exemple n° 3.PROC PRINT DATA = temp ; RUN ; PROC MEANS DATA = temp ; RUN ;/* ou */PROC PRINT DATA = temp ; RUN ;PROC MEANS DATA = temp ; RUN ;PROC PRINT DATA = temp ; /* pas PROC P RINT ; */RUN ;PROC MEANS DATA = temp ; /* stat. des. par année */ BY annee ; VAR conso revenu ;RUN ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  13. 13. 13D) Les tableaux SAS et les variables• Un tableau SAS peut être crée soit dans une étape DATA soit dans une étape PROC. Un tableau SAS comporte une ligne par observation et une colonne par variable:Obs Nomvar1 Nomvar2 … Nomvark1 4 1268.2 Texte 12 4.2 -2 Texte 2…• Un tableau SAS est stocké dans un fichier (temporaire ou permanent) dont l’extension est la plupart du temps .sas7bdat (V8/V9).• Un tableau SAS peut contenir 2 types de variables : des variables numériques ou chaînes de caractères. (Attention, une fois qu’une variable a été définie numérique ou caractère, elle ne peut changer de type). - i) Les valeurs numériques, par exemple 5.31, 1.4E13 et 8 sont des valeurs numériques correctes. SAS ne fait pas de différence entre les entiers et les réels (1 ou 1.0). Une valeur manquante est notée par un point (•) et peut résulter d’un calcul (x=log(0)) ou d’une affectation ( x = • ). - ii) Les variables chaînes de caractères dont le contenu est entré entre apostrophes ou guillemets et dont la longueur est au maximum de 32767 car. (V8/V9). Une valeur manquante est notée par un une chaine vide (rep1 = ;). - iii) Pour créer une variable logique (0/1), il faut le faire sous la forme dune variable numérique ou dune chaîne de caractères.• Les noms des variables et des tableaux ont de 1 à 32 caractères et sont composés de lettres, de chiffres et du blanc souligné ( _ ). Le premier caractère doit être impérativement une lettre ou le blanc souligné. Les caractères accentués ne sont pas admis. Idem pour les symboles spéciaux &, *, $, % ...rep1 = OUI ;rep2 = oui ;rep3 = "OUI" ;rep3 = ‘d’’accord’ ;cc = 123 ; /* attention aux apostrophes/guillemets non balancés /Exemples de noms de variables corrects ou incorrects : pnb_fr , x1 , y , numtelephone , 1pb ,bizarre , _123 , moi , keynes , x$ , taux% , a&b , télé, _mes erreurP. Blanchard – Logiciel SAS – Master 2 Recherche
  14. 14. 14• Fonctionnement de l’étape DATAL’instruction DATA est une boucle sur le tableau.DATA essai ;SET mesdonnees ; lconso = LOG(conso) ; lrev = LOG(revenu) ;RUN ;Données en Etape DATA Tableau SASentrée (tableau crée (essai)mesdonnees)Obs 1 Instruction 1 Obs 1Obs 2 Obs 2Obs 3 Instruction 2 Obs 3… … Instruction 3 …P. Blanchard – Logiciel SAS – Master 2 Recherche
  15. 15. 15E) Les librairies SASExemple n°4.DATA temp ; SET donnees ;...RUN ;Définir un LIBNAME revient à assigner un nom physique de répertoire à un nom logique delibrairie. C’est le nom logique (une sorte de synonyme) qui sera utilisé dans le programme SAS.Exemple n°5.LIBNAME malib E:Mes Documents ; RUN; /* une partie des étapes DATA est reproduite */DATA deux ; SET malib.donnees ;...DATA malib.deux ; SET malib.donnees ;...DATA malib.un ; SET deux ;...DATA un ; SET deux ;...DATA work.un ; SET work.deux ;...On suppose que tous les tableaux des SET et le répertoire MES Documents existent. 1. Le LIBNAME assigne la librairie logique « malib » au répertoire « Mes Documents » du disque dur E : (minuscules = majuscules sous DOS/Windows). Le nom logique (malib) doit avoir 8 caractères maxi mais le nom du tableau peut avoir 32 car. maximum. 2. En effet, SAS tourne sur des ordinateurs dont les conceptions en terme de stockage sur disque diffèrent (façon d’accéder à un répertoire d’un disque).NB:P. Blanchard – Logiciel SAS – Master 2 Recherche
  16. 16. 16 • Où est la librairie par défaut ? proc contents • L’utilisation de plusieurs LIBNAME est possible mais pas souvent utile. • On peut aussi définir une librairie ave licône NEW LIBRARY ou avec lEXPLORER. • Les tableaux SAS sont stockés sur disque sous la forme de fichiers de données de SAS et ont lextension .SD2 (V6) ou sas7bdat (V8-V9) sur micro-ordinateurs. • LIBNAME in V6 "c:vieuxfichiers" ; RUN ; pour des lire des tableaux SAS version 6. • Dans la documentation SAS, une table SAS est souvent appelée un "member" (un membre d’une librairie). • Il est possible de faire (mais non conseillé):DATA deux ; SET C:Mes Documentsdonnees’ ; /* sans extension */...DATA C:Mes Documentsdeux’ ; SET C:Mes Documentsdonnees’;...PROC PRINT DATA = C:Mes Documentsdeux’ ; RUN ;DATA ‘deux’ ; SET malib.donnees ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  17. 17. 173) Introduction à létape DATALétape DATA sert à préparer des données qui seront stockées dans un tableau pour une analyseultérieure (PROC). Elle a donc pour objet de créer ou modifier un tableau SAS en créant oumodifiant des variables et/ou des observations. L’étape DATA opère soit sur des tableaux SAS déjàexistants, soit sur des données présentes dans le programme lui-même (dites données dans le flotdentrée), soit sur des fichiers crées par certains logiciels (pas Excel).A) Création/modification dun tableau SASa) Création d’un nouveau tableau à partir d’un autre tableau SAS.Exemple n°6.DATA regress1 ; SET datac ; lconso = LOG(conso) ; lrevenu = LOG(revenu) ;RUN ;PROC PRINT DATA = regress1 ; VAR lconso lrevenu ;RUN ; /* DATA = regress1 optionnel */b) Modification d’un tableau existantExemple n°7.DATA datac ; SET datac ; /* attention risqué si erreur */ lconso = LOG(conso) ; lrevenu = LOG(revenu) ;RUN ;PROC PRINT ; VAR lconso lrevenu ; RUN ; /* DATA = datac optionnel */P. Blanchard – Logiciel SAS – Master 2 Recherche
  18. 18. 18c) Lecture de données dans le flot dentrée.Cette solution est utile quand on veut introduire des données peu nombreuses. Cela évite de créerun fichier de données séparé du programme. Par conséquent, les données sont dans le programme.Exemple n°8.DATA essai2 ;INPUT nom $ salaire datenais csp $ ; /* $ signale 1 var. chaîne de car. */DATALINES ; /* on peut mettre aussi CARDS ; */DUPONT 100000.4 1954 cadreDURANT 50000.1 1960 ouvrierTOTO • 1985 cadre /* notez la valeur manquante notée • */; /* notez le ; qui annonce la fin des CARDS */PROC PRINT ;RUN ;notes:- Lespace sépare les valeurs en colonnes (format ASCII).- Il ne faut pas oublier de valeurs pour 1 observation.- Ordre des valeurs = ordre des colonnes.- Il y a de très nombreuses options qui permettent de lire n’importe quelle autre structure de données.- La lecture de données sur fichiers externes (ASCII) est facile (INFILE et FILENAME) et puissant (cf. la documentation de C. Truy).- Autre solution pour créer un tableau VIEWTABLE (Menu Outils + Editeur de tables SAS)P. Blanchard – Logiciel SAS – Master 2 Recherche
  19. 19. 19B) Création/modification des variables dun tableau SASa) L’instruction IF ... THEN ... ELSE (ELSE est optionnel) ; qui permet lacréation/modification conditionnelle d’une ou plusieurs variables. IF/THEN/ELSEIl y a plusieurs formes possibles pour linstruction IF/THEN/ELSEExemple n°9.IF datenais <= 1992 THEN classe = ‘jeune’ ; ELSE classe = ‘agé’ ;IF etage > 3 AND ascenseur = ‘non’ then type = 1 ; else type = 0 ;IF banque = ‘BNP’ THEN DO ; pays = ‘France’ ; type = ‘dépôt’ ; END ; ELSE DO ; pays = ‘Autre’ ; type = ‘nd’ ; END ;IF cout < 0 THEN cat = <0 ; ELSE IF cout = 0 THEN cat = =0 ; ELSE cat = >0 ;IF date = 1983 THEN dum83 = 1 ; ELSE dum83 = 0 ;/* ou */ dum83 = date EQ 1983 ;/* ou */ dum83 = date = 1983 ;NB- opérateurs logiques: = EQ ^= NE > GT < LT >= GE <= LE . Attention >< et <> signifient respectivement minimum et maximum.- opérateurs de comparaisons multiples: NOT AND & et OR | !- opérateur IN : IF x IN(1,3,5,7,9) THEN impair = ‘oui’ ;- opérateurs mathématiques: =, +, -, *, /, **- fonctions: cf. photocopie en annexe.Exemple : la fonction LAGP. Blanchard – Logiciel SAS – Master 2 Recherche
  20. 20. 20b) Linstruction SELECT/WHEN Son objectif est de remplacer le IF...THEN...ELSE peu SELECT/WHEN.clair. Elle est en outre plus rapide lors du traitement de gros fichier.Exemple n°10.DATA essai1 ; SET essai ;SELECT ; WHEN(effectif=.) taille = nd ; WHEN(0<effectif<50) taille = 1 ; WHEN(50<=effectif<100) taille = 2 ; WHEN(100<=effectif) taille = 3 ; OTHERWISE taille = pb ;END ; RUN ;Exemple n°11.DATA essai1 ; SET essai ;SELECT (a); WHEN(1) DO ; b = 1 ; c = 5 ; END; WHEN(2) DO ; b = 2 ; c = 2 ; END ; WHEN(5) b = 3 ; /* ou DO ; b=3 ; END ; */ OTHERWISE ;END ; RUN ;NB :• une autre solution à IF et SELECT sera présentée en 2ème partie (PROC FORMAT).• condition multiple WHEN(a=1 AND c = 0) …• attention si a est une valeur manquanteDATA essai1 ; SET essai ;SELECT ; WHEN(a<0) b = 1 ; ...END ; RUN ;/* ou */ /* b=1 car une val. manq. est codée comme -10308*/DATA essai1 ; SET essai ; IF a <0 THEN b = 1 ; RUN ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  21. 21. 21c) La sélection de variables dans l’étape DATAExemple n°12.DATA tab1 ; SET donnees ; KEEP budget consomm ;...DATA tab1 ; SET donnees ; DROP datnaiss ;...DATA tab1; SET donnees ; RENAME budget = revenu ;...• RENAME budget = revenu ; se lit comme RENAME anciennom = nouveaunom ;• on peut utiliser KEEP et DROP en même temps, mais ce nest pas conseillé.• on utilisera DROP ou KEEP selon le nombre de variables à conserver ou à éliminer.• Les instructions KEEP, DROP et RENAME peuvent se mettre nimporte où dans une étape DATA.• Et avec un ordre indifférent.P. Blanchard – Logiciel SAS – Master 2 Recherche
  22. 22. 22Exemple n°13.DATA tab1 ; SET donnees ; /* contient au moins x1 budget */ KEEP lconso budget x1 lagbudget ; RENAME x1 = conso ; lconso = LOG(x1) ; lagbudget = LAG(budget) ;RUN ;• Ne pas faire lconso = LOG(conso) ; En effet, le RENAME nest effectif quà la fin de létape DATA.• Dans le même ordre didée, comme le RENAME ne se fait qu’à la fin, il ne faut pas mettre conso dans le KEEP, mais x1.• De même, si on fait un KEEP, il ne faut pas oublier de mettre la liste complète des variables à garder y compris lconso et lagbudget dans le KEEP (sinon créée mais pas gardée).Attention de ne pas sembrouiller dans les DROP, KEEP et RENAME comme instruction ou option.Exemple n°14.DATA tab1 ( KEEP = budget consomm ) ; /* options au nom de tableau */SET donnees ;...DATA tab1 ( DROP = dat_naiss ) ; SET donnees ;...DATA tab1 ( RENAME = ( budget = revenu ) ) ; SET donnees ;...P. Blanchard – Logiciel SAS – Master 2 Recherche
  23. 23. 234 ) Introduction aux principales procéduresLes données utilisées dans ce qui suit :DATA temp ;INPUT nom $ num sexe $ csp $ revenu conso datenaiss DDMMYY8. ;CARDS ;un 1 h employé 10 9 19/02/80deux 2 f cadre 11 7 19/03/81trois 3 h ouvrier 5 4 29/08/64quatre 4 h employé 8 7 10/12/54cinq 5 h cadre 14 10 05/10/90six 6 h ouvrier 6 4 10/11/06sept 7 h ouvrier 7 6 12/06/89huit 8 f cadre 11 10 30/05/87neuf 9 h ouvrier 9 8 01/04/81dix 10 h employé 9 8 10/09/79onze 11 f employé 8 7 18/09/78douze 12 h ouvrier 9 • 17/07/94;RUN ;NB : DDMMYY8. est un informat. En réalité 19/02/80 est stocké par SAS comme une nombre égal à 7354 (c’est à dire le nombre de jours écoulés depuis le 1/1/1960). A noter que c’est un peu pareil avec Excel (sauf que 0 est pour le 1/1/1900). Le symbole • repère une valeur manquante.P. Blanchard – Logiciel SAS – Master 2 Recherche
  24. 24. 24A) Les procédures utilitaires1) PROC PRINTpermet dimprimer le contenu dun tableau.Exemple n°15.PROC PRINT DATA = temp ; VAR nom sexe csp conso ;RUN ; Essai de Proc print 09:17 Monday, March 24, 2003 1 Obs nom sexe csp conso 1 un h employé 9 2 deux f cadre 7 3 trois h ouvrier 4 4 quatre h employé 7 5 cinq h cadre 10 6 six h ouvrier 4 7 sept h ouvrier 6 8 huit f cadre 10 9 neuf h ouvrier 8 10 dix h employé 8 11 onze f employé 7 12 douze h ouvrier •Quelques variantes utiles.PROC PRINT DATA = temp (OBS=10) ; RUN ;PROC PRINT ; VAR X1-X10 ; RUN ; /* dans certains cas */PROC PRINT ;VAR nom datenaiss revenu conso ;FORMAT nom $4. datenaiss DDMMYY10. revenu dollar10.2 conso comma4.1 ; RUN ;Autre façon de visualiser une table: Le wiewer de SAS avec lEXPLORER puis sélection de lalibrairie et de la table SAS.P. Blanchard – Logiciel SAS – Master 2 Recherche
  25. 25. 25 PROC2) PROC CONTENTSExemple n°16.PROC CONTENTS DATA = temp SHORT ; RUN ; The CONTENTS Procedure -----Alphabetic List of Variables for WORK.TEMP----- conso csp nom num revenu sexeExemple n°17.PROC CONTENTS DATA = temp ; RUN ; The CONTENTS Procedure Data Set Name: WORK.TEMP Observations: 12 Member Type: DATA Variables: 6 Engine: V8 Indexes: 0 Created: 14:15 Tuesday, September 24, 2002 Observation Length: 48 Last Modified: 14:15 Tuesday, September 24, 2002 Deleted Observations: 0 Protection: Compressed: NO Data Set Type: Sorted: NO -----Engine/Host Dependent Information-----Data Set Page Size: 4096Number of Data Set Pages: 1First Data Page: 1Max Obs per Page: 84Obs in First Data Page: 12Number of Data Set Repairs: 0File Name: C:DOCUME~1PIERRE~1LOCALS~1TempSAS Temporary Files_TD932temp.sas7bdatRelease Created: 8.0202M0Host Created: WIN_PRO -----Alphabetic List of Variables and Attributes----- # Variable Type Len Pos ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 6 conso Num 8 16 4 csp Char 8 40 2 nom Char 8 24 1 num Num 8 0 5 revenu Num 8 8 3 sexe Char 8 32Variantes: • PROC CONTENTS DATA = malib._ALL_ SHORT ; • PROC CONTENTS ; RUN ; pour le dernier tableau crée.P. Blanchard – Logiciel SAS – Master 2 Recherche
  26. 26. 26B) Les procédures de statistiques descriptives1) PROC MEANSExemple n°18.PROC MEANS DATA = temp ; VAR revenu conso ;RUN ; The MEANS Procedure Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ revenu 12 8.9166667 2.4293034 5.0000000 14.0000000 conso 11 7.0833333 2.0652243 4.0000000 10.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒLes principales options de PROC MEANS options sont : • N NMISS MEAN STD MIN MAX ... • les quantiles (ou fractiles): P1 P5 P10 Q1 (P25) MEDIAN (P50) Q3 (P75) P90 P95 P99 QRANGE etc. • CSS CV KURTOSIS RANGE SKEWNESS SUM USS STDDEV (ou STD) VAR ... • CLM (intervalle de confiance à 95%) ...NB : On peut obtenir d’autres statistiques et certains graphiques avec PROC UNIVARIATE.P. Blanchard – Logiciel SAS – Master 2 Recherche
  27. 27. 272) L’instruction PROC FREQExemple n°19.PROC FREQ DATA = temp ; TABLES sexe ; RUN ; The FREQ Procedure Cumulative Cumulative sexe Frequency Percent Frequency Percent ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ f 3 25.00 3 25.00 h 9 75.00 12 100.00NB: Frequency = Effectif et PERCENT = Fréquence.Exemple n°20.PROC FREQ DATA = temp ; TABLES csp*sexe ; RUN ; Table of csp by sexe csp sexe Frequency‚ Percent ‚ Row Pct ‚ Col Pct ‚f ‚h ‚ Total ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ cadre ‚ 2 ‚ 1 ‚ 3 ‚ 16.67 ‚ 8.33 ‚ 25.00 ‚ 66.67 ‚ 33.33 ‚ ‚ 66.67 ‚ 11.11 ‚ ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ employé ‚ 1 ‚ 3 ‚ 4 ‚ 8.33 ‚ 25.00 ‚ 33.33 ‚ 25.00 ‚ 75.00 ‚ ‚ 33.33 ‚ 33.33 ‚ ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ ouvrier ‚ 0 ‚ 5 ‚ 5 ‚ 0.00 ‚ 41.67 ‚ 41.67 ‚ 0.00 ‚ 100.00 ‚ ‚ 0.00 ‚ 55.56 ‚ ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Total 3 9 12 25.00 75.00 100.00P. Blanchard – Logiciel SAS – Master 2 Recherche
  28. 28. 28OptionsNOFREQ: n’édite pas les effectifs.NOPERCENT: n’édite pas les % par rapport au total des effectifs. NOROW: n’édite pas les % parrapport à la somme en ligne.NOCOL: n’édite pas les % par rapport au total de chaque colonne.NOCUM: n’édite pas les effectifs cumulés (pour tableau à 1 caractère).MISSING: les valeurs manquantes comptent dans le calcul (comme une modalité et dans le calculdes effectifs totaux et donc des %) sinon elles sont comptabilisées à part.MISPRINT: les valeurs manquantes sont dans le tableau mais ne comptent pas comptent dans lecalcul des %.Exemple n° 21.PROC FREQ DATA = temp ; TABLES csp*sexe /NOROW NOCOL ;RUN ; csp sexe Frequency‚ Percent ‚f ‚h ‚ Total ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ cadre ‚ 2 ‚ 1 ‚ 3 ‚ 16.67 ‚ 8.33 ‚ 25.00 ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ employé ‚ 1 ‚ 3 ‚ 4 ‚ 8.33 ‚ 25.00 ‚ 33.33 ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ ouvrier ‚ 0 ‚ 5 ‚ 5 ‚ 0.00 ‚ 41.67 ‚ 41.67 ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Total 3 9 12 25.00 75.00 100.00P. Blanchard – Logiciel SAS – Master 2 Recherche
  29. 29. 29Exemple n°22.PROC FREQ DATA = temp ; TABLES sexe csp*sexe ; RUN ;NB :- A noter quen présence de variables numériques (revenu, age, chiffre d’affaires...) il est la plupartdu temps nécessaire de recoder la variables en une variable (numérique ou caractère) composé d’unnombre de classe limité.- Il y a de très nombreuses options (statistiques notamment).Exemple n°23.PROC FREQ DATA = temp ; TABLES csp*sexe / CHISQ;RUN ;Statistiques pour table de csp par sexeStatistique DF Valeur Proba.ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒKhi-2 2 4.4444 0.1084Test du rapport de vraisemblance 2 5.1783 0.0751Khi-2 de Mantel-Haenszel 1 3.9855 0.0459Coefficient Phi 0.6086Coefficient de contingence 0.5199V de Cramer 0.6086AVERTISSEMENT : 100% des cellules nécessitent un effectif inférieur à 5. Le Khi-2 ne peut pas convenir.Taille de léchantillon = 12/* Le tableau à 2 car. n’est pas reproduit de nouveau */P. Blanchard – Logiciel SAS – Master 2 Recherche
  30. 30. 303) L’instruction PROC CORRExemple n°24.PROC CORR NOSIMPLE DATA = temp ; VAR revenu conso; RUN ; The CORR Procedure 2 Variables: revenu conso Pearson Correlation Coefficients Prob > |r| under H0: Rho=0 revenu conso revenu 1.00000 0.83503 0.0007 12 11 conso 0.83503 1.00000 0.0007 11 11• Une variante utile est :PROC CORR ; VAR conso age revenu ; WITH pmc secteur ;• Différents coefficients de corrélation peuvent être calculés.• Les principales options sont: a) NOSIMPLE : pas de stat. des. fournies. b) NOMISS : si une observation est manquante pour une variable, elle est éliminée pour toutes les autres variables de l’analyse (cylindrage). c) NOPROB : pas d’affichage du niveau de significativité marginale associée à chaque coefficient de corrélation. d) SSCP et/ou COV fait afficher la matrice des produits croisés (XtX) et/ou de la matrice de variance-covariance.P. Blanchard – Logiciel SAS – Master 2 Recherche
  31. 31. 31C) Les instructions BY/CLASS et la procédure PROC SORT1) Linstruction PROC SORT ... ; Cette instruction joue un rôle fondamental dans SAS pourdes raisons que nous verrons dans un deuxième temps.Exemple n°25.PROC SORT DATA = temp ; BY pays ; RUN ; /* tri par ordre croissant de pays */ /* numérique ou caractère */On trie le dernier tableau crée. Le résultat trié aura donc le même nom, le fichier de base est perdu.PROC SORT ; BY region annee ; RUN ;PROC SORT ; BY region DESCENDING annee ; /* ordre croiss. de region (alphab.)*/RUN ; /* et décroiss. d’année : 83,82,81. */ /* region et non région !!! */PROC SORT DATA =temp OUT = ftrie ; BY pays ; /* fichier dorigine conservé */RUN ;Remarques: pour supprimer les doublons dans un tableau SAS, on peut faire:PROC SORT DATA =temp OUT = ftrie NODUPKEY ; /* supprime les doublons / clés de tri */BY pays annee ; RUN ;ouPROC SORT DATA =temp OUT = ftrie NODUPLICATES ; /* supprime les doublons / obs. */BY pays annee ; RUN ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  32. 32. 322) Les instructions BY et CLASS : une application à PROC MEANS ;Exemple n°26.PROC MEANS ; BY csp ; RUN ;PROC FREQ ; TABLES csp ; BY sexe ; RUN ; /* attention il faut un PROC SORT */PROC REG ;MODEL conso = revenu ; BY region ; RUN ; /* et ici un autre !!!! */MAIS ATTENTION, il est indispensable que le tableau soit dabord trié sur les mêmes variables etdans le même ordre que celles de linstruction BY.Exemple n°27.PROC SORT DATA = temp ; BY csp ; RUN ;PROC MEANS ; VAR revenu conso ; BY csp ; RUN ;----------------------------------------- csp=cadre ------------------------------------------ The MEANS Procedure Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ revenu 3 12.0000000 1.7320508 11.0000000 14.0000000 conso 3 9.0000000 1.7320508 7.0000000 10.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ---------------------------------------- csp=employé ----------------------------------------- Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ revenu 4 8.7500000 0.9574271 8.0000000 10.0000000 conso 4 7.7500000 0.9574271 7.0000000 9.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ---------------------------------------- csp=ouvrier ----------------------------------------- Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ revenu 5 7.2000000 1.7888544 5.0000000 9.0000000 conso 4 5.4000000 1.6733201 4.0000000 8.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒP. Blanchard – Logiciel SAS – Master 2 Recherche
  33. 33. 33 Une alternative à BY est CLASS sexe ; qui évite d’avoir à trier le tableau. Les résultats ont une présentation légèrement différente.Exemple n°28.PROC MEANS DATA = temp ; VAR revenu conso ; CLASS csp ; RUN ; The MEANS Procedure N csp Obs Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ cadre 3 revenu 3 12.0000000 1.7320508 11.0000000 14.0000000 conso 3 9.0000000 1.7320508 7.0000000 10.0000000 employé 4 revenu 4 8.7500000 0.9574271 8.0000000 10.0000000 conso 4 7.7500000 0.9574271 7.0000000 9.0000000 ouvrier 5 revenu 5 7.2000000 1.7888544 5.0000000 9.0000000 conso 4 5.4000000 1.6733201 4.0000000 8.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒMises en garde: • si la variable est continue, chaque valeur distincte est une modalité. BY peut produire alors des résultats très volumineux, voire inutilisables comme par exemple, si l’on fait PROC MEANS ; BY revenu ; RUN ; • En général, BY sutilise plutôt sur des variables de type caractère ou sur des variables continues avec peu de valeurs différentes (année..).. • CLASS ne fonctionne pas pour toutes les procédures (PROC PRINT ; BY ; ). • On peut donc faire PROC REG ... ; BY ; RUN ; ou PROC FREQ ... ; BY ; RUN ; etc.P. Blanchard – Logiciel SAS – Master 2 Recherche
  34. 34. 34D) Les procédures graphiquesElles sont de deux types:a. les procédures basse définition. On laisse de côté.b. les procédures haute définition.Les graphiques haute définition sont affichés dans une fenêtre spécifique.Les graphiques haute définition crées peuvent être facilement exporter dans des formats très variésde fichier graphique bmp, jpg,wmf, gif, ps... par le menu (fichier, exporter).P. Blanchard – Logiciel SAS – Master 2 Recherche
  35. 35. 351) PROC GPLOT: graphique dit XY.Exemple n°29.Goptions Ftext = swissb ; /* ce n’est pas une étape DATA ni une PROC */Axis1 Label=(Revenu) ;Axis2 Label =(N) ;Symbol1 Color = Black I=Join Value=Circle ;RUN ;PROC GPLOT DATA = temp ; PLOT revenu*num ;RUN ; QUIT ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  36. 36. 36Exemple n°30. (on peut demander plusieurs graphiques dans une demande).PROC GPLOT DATA = temp ; PLOT revenu*num ; PLOT conso*revenu ;RUN ; QUIT ;Exemple n°31. (superposition)DATA temp ; SET temp ;Age = 2006 - YEAR(datenaiss) ;RUN ;Goptions Ftext = swissb ;Axis1 Label=(Revenu et Age) ; Axis2 Label =(N) ;Symbol1 Color = Black I=Join Value=Circle ;Symbol2 Color = Red I=Join Value=square ;RUN ;PROC GPLOT DATA = temp ; PLOT revenu*num age*num / OVERLAY haxis = axis2 vaxis = axis1 ; TITLE Graphique overlay ; Footnote Source : PB ;RUN ; QUIT ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  37. 37. 372) PROC GCHART: permet de représenter une série (num. ou car.) sous la forme d’histogramme ou sectoriel.Exemple n°32.PROC GCHART DATA = temp ; PIE sexe ; HBAR csp ; TITLE Utilisation de PROC GCHART ; Footnote Source : PB ;RUN ; QUIT ; • Graphiques en couleur • HBAR csp / TYPE = PCT ; pour avoir les % et non les effectifs. • Nombreuses variantesP. Blanchard – Logiciel SAS – Master 2 Recherche
  38. 38. 38Exemple n°33.Goptions Ftext = swissb ;Axis1 Label=(CSP) ; Axis2 Label =(Revenu moyen) ;Symbol1 Color = Black I=Join Value=Circle ;Symbol2 Color = Red I=Join Value=square ;RUN ;PROC GCHART DATA = temp ; VBAR csp / TYPE = MEAN SUMVAR = revenu ;RUN ; QUIT ; • TYPE peut être égal à FREQ, CFREQ, PCT, CPCT SUM ou MEAN. • Très nombreuses options qui dépendent souvent du type de graphique. • Rôle du QUIT.Exemple n°34. création automatique des classesPROC GCHART DATA = temp ; VHBAR revenu / MIDPOINTS = 6 8 10 12 ; /* HBAR est aussi possible */RUN ; QUIT ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  39. 39. 39Un dernier graphique !Comment le faire ?P. Blanchard – Logiciel SAS – Master 2 Recherche
  40. 40. 40E) Les instructions économétriques1) PROC REGPROC REG permet destimer une modèle économétrique par les moindres carrés ordinaires.Exemple n°35.PROC REG ; MODEL conso = revenu ; /* specification informatique */RUN ; QUIT ; The REG Procedure Model: MODEL1 Dependent Variable: conso Analysis of Variance Sum of Mean Source DF Squares Square F Value Pr > F Model 1 32.71384 32.71384 23.03 0.0007 Error 10 14.20282 1.42028 Corrected Total 11 46.91667 Root MSE 1.19176 R-Square 0.6973 Dependent Mean 7.08333 Adj R-Sq 0.6670 Coeff Var 16.82479 Parameter Estimates Parameter Standard Variable DF Estimate Error t Value Pr > |t| Intercept 1 0.75353 1.36303 0.55 0.5925 revenu 1 0.70988 0.14791 4.80 0.0007Le modèle est donc : Consoi = β1 + β 2 × Re venui + ui : écriture économétriqueP. Blanchard – Logiciel SAS – Master 2 Recherche
  41. 41. 41Les principales options disponibles dans PROC REG options_reg ; sont: - DATA = nomtab nom du tableau utilisé, le dernier par défaut - NOPRINT nimprime aucun résultat - SIMPLE imprime des stat. des. pour les variables utilisées dans la procédure - ALL imprime toutes les statistiques possibles dans PROC REG (volumineux)Exemple n°36.Goptions Ftext = swissb ;Symbol1 Color = Black Value=Circle ;Symbol2 Color = Red Value=square ;RUN ;PROC REG SIMPLE DATA = temp ; MODEL conso = revenu age / NOINT DW COVB ; PLOT Residual.*Obs. ; PLOT conso*Obs. Predicted.*Obs. / OVERLAY ;RUN ; QUIT ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  42. 42. 42Exemple n°37.Pour obtenir un test dhétéroscédasticité et des estimations robustes à lhétéroscédasticité, faire :PROC REG DATA = essai ;MODEL lnc = lnp lny /ACOV SPEC; RUN ; QUIT ;(résultats des mco non reproduits)Dependent Variable: LNC Consistent Covariance of EstimatesVariable Intercept LNP LNYIntercept 1.1212904796 0.2181771074 -0.241869513LNP 0.2181771074 0.1102122418 -0.050163679LNY 0.241869513 -0.050163679 0.0523332408 Test of First and Second Moment Specification DF Chi-Square Pr > ChiSq 5 5.70 0.3365P. Blanchard – Logiciel SAS – Master 2 Recherche
  43. 43. 43Exemple n°38.PROC REG ;MODEL consom = revenu age ;TEST revenu = 0 , age = 1 ; RUN ; QUIT ;Exemple n°39.PROC REG ; MODEL y = x1 x2 x3 z1 z2 ;RESTRICT x1 + x2 + x3 = 1 ; RUN ; QUIT ;2) PROC AUTOREG. AUTOREGExemple n°40./* test de Chow */PROC AUTOREG DATA = temp ; MODEL conso = revenue age / CHOW = (8); TITLE test de Chow ; RUN ;Test de Chow Structural Change Test BreakTest Point Num DF Den DF F Value Pr > FChow 8 3 40 5.29 0.0036Exemple n°41./* PRAIS-WINSTEN */PROC AUTOREG ; MODEL y = x / METHOD = YW GODFREY DWPROB ; TITLE Prais-Winsten ;RUN ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  44. 44. 445) Présentation du programme, de loutput et du LOG• Le contenu de chaque fenêtre (pgm, output, log…) peut être imprimé, sauvegardé, coupé-collé.• D’autres fenêtres peuvent apparaître (aide, graphique...)• les affichages s’empilent dans le Log et dans l’Output après chaque exécution (RUN).• Il est inutile de sauvegarder le LOG et l’OUTPUT en règle générale.i) il faut documenter le programme. * commentaire ; ou par /* commentaire */Exemple n° 42.DM ‘CLEAR LOG ; CLEAR OUTPUT ; ‘ ; /* efface output et log à chaque exéc. */* Blanchard P., essai.sas, 5/03/2003 ;DATA temp ; SET consom ;.../* édition des données */PROC PRINT DATA = temp ; RUN ;PROC PRINT DATA = temp ; RUN ; /* édition du tableau temp *//***************//* commentaire *//***************/PROC PRINT DATA = temp ; RUN ;Exemple n° 43. Bleu foncé DATA temp ; SET temp ; Bleu clair age = 2006 - YEAR(datenaiss) ; chaine = v ; Vert foncé violet RUN ; rouge PROC FREQ ; TABLES Sexe age ; vert TITLE Mon Titre ; RUN ; Noir ceci est une erreur ; /* ceci est un commentaire */DATA, PROC FREQ, RUN et QUIT : BFSET, TABLES et TITLE : BCP. Blanchard – Logiciel SAS – Master 2 Recherche
  45. 45. 45ii) LOUTPUTExemple n° 44.OPTIONS NOCENTER ; RUN ;TITLE ; FOOTNOTE ; RUN ;. . .PROC MEANS ; RUN ;PROC MEANS ; TITLE Mon Titre ; RUN ; Le Système SAS 13:39 Thursday, April 20, 2006 1 La procédure MEANSVariable Nb Moyenne Écart-type Minimum Maximumƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒnum 12 6.5000000 3.6055513 1.0000000 12.0000000revenu 12 8.9166667 2.4293034 5.0000000 14.0000000conso 11 7.0833333 2.0652243 4.0000000 10.0000000datenaiss 12 8206.33 4909.87 -1848.00 17115.00ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Mon Titre 13:39 Thursday, April 20, 2006 2 La procédure MEANSIdem ci dessus- On peut faire du couper-coller (mais il y a mieux l’ODS, cf. plus loin).- Utilisation de Title et de Footnote • une instruction TITLE est en effet jusquà la prochaine instruction TITLE ; • TITLE ; annule tous les titres (au début du programme) • TITLE doit être placée dans une PROC avant le RUN ; sinon il modifie le titre de la PROC précédente. Par conséquent, l’ordre des instructions est PROC ... ; TITLE ... ; RUN ; • TITLEn (avec n=1,...,10) permet décrire des textes sur plusieurs lignes: par exemple, TITLE texte en première ligne ; TITLE3 texte en troisième ligne ; • L’instruction FOOTNOTE qui suit la même logique que TITLE.- OPTIONS NOCENTER NODATE NONUMBER LINESIZE = 64-256 ORIENTATION = PORTRAIT ou LANDSCAPE PAGENO = 1 ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  46. 46. 46iii) Le LOGC’est un élément indispensable pour contrôler le bon déroulement de l’exécution. A examiner avantde regarder les résultats.Exemple n° 45.DATA temp ; SET temp ;age = 2006 - YEAR(datenaiss) ;lconso = LOG(conso) ;RUN ;PROC MEANS ; RUN ;77 DATA temp ; SET temp ;78 age = 2006 - YEAR(datenaiss) ;79 lconso = LOG(conso) ;80 RUN ;NOTE: Des valeurs manquantes ont été générées à la suite dune opération surdes valeurs manquantes. Chaque endroit est défini par : (Nombre de fois) dans (Ligne):(Colonne). 1 dans 79:10NOTE: 12 observations copiées de la table WORK.TEMP.NOTE: La table WORK.TEMP a 12 observations et 9 variables.NOTE: Létape DATA a utilisé (Durée totale du processus) : temps réel 0.04 secondes temps processeur 0.04 secondes8182 PROC MEANS ; RUN ;NOTE: 12 observations copiées de la table WORK.TEMP.NOTE: La procédure MEANS a utilisé (Durée totale du processus) : temps réel 0.01 secondes temps processeur 0.01 secondesP. Blanchard – Logiciel SAS – Master 2 Recherche
  47. 47. 47Exemple n° 46.DATA temp ; SET temp ;age = 2006 - YEAR(datenaiss) ;lconso = LOG(conso) ;RUN ;PROC MOYENNE ; RUN ;PROC MEANS RUN ; /* RUN n’est pas en BF */8788 PROC MOYENNE ; RUN ;ERREUR: Procédure MOYENNE introuvable.NOTE: Le Système SAS a interrompu le traitement de cette étape en raisonderreurs.NOTE: La procédure MOYENNE a utilisé (Durée totale du processus) : temps réel 0.01 secondes temps processeur 0.00 secondes8990 PROC MEANS RUN ; --- - 22 200ERREUR 22-322: Erreur de syntaxe ; syntaxe requise : ;, ALPHA, CHARTYPE, CLASSDATA, CLM,COMPLETETYPES, CSS, CV, DATA, DESCEND, DESCENDING, DESCENDTYPES, EXCLNPWGT, EXCLNPWGTS,EXCLUSIVE, FW, IDMIN, KURTOSIS, LCLM, MAX, MAXDEC, MEAN, MEDIAN, MIN, MISSING, N, NDEC, NMISS, NONOBS, NOPRINT,NOTHREADS, NOTRAP, NWAY, ORDER, P1, P10, P25, P5, P50, P75, P90, P95, P99, PCTLDEF, PRINT,PRINTALL, PRINTALLTYPES, PRINTIDS, PRINTIDVARS, PROBT, Q1, Q3, QMARKERS, QMETHOD, QNTLDEF, QRANGE, RANGE,SKEWNESS, STDDEV, STDERR, SUM, SUMSIZE, SUMWGT, T, THREADS, UCLM, USS, VAR, VARDEF.ERREUR 200-322: Le symbole nest pas reconnu et sera ignoré.P. Blanchard – Logiciel SAS – Master 2 Recherche
  48. 48. 48Partie II) Approfondissements sur l’étape DATA et les procéduresI ) Approfondissements sur l’étape DATA1) Lecture dun fichier externe au format EXCELPour importer (i.e. convertir) un fichier Excel  SAS, il y a de nombreuses possibilités: • Utiliser lutilitaire dimportation utilisable avec les menus. • Utiliser la procédure PROC IMPORT (cf. plus loin). • Utiliser des logiciels spécialisés (DBMS-copy, STAT-Transfer...). • Utilisation dODS (pour lexportation uniquement). Non traité ici. • Utilisation du DDE. Non traité ici.Soit le tableau Excel (c:Documents and Settingstab.xls) à importer. A B1 nomvar1 nomvar22 1 a3 2 b4 3 c5 4 d6 5 eVous noterez qu’il est souhaitable qu’il n’y ait pas de colonne et de ligne vides et il faut que lescolonnes aient des intitulés conformes à la syntaxe SAS pour les noms de variables. Si une donnéeest manquante, saisir dans la cellule =NA().Etape 1 : définir un Libname en exécutant, par exemple, l’instruction suivante dans la fenêtreEditeur:LIBNAME moi ‘c:Mes Documents’ ; RUN ;Etape 2 : Appel du Menu File / Import Data et choisir Microsoft Excel 97 ou 2000 (.xls). Next.Etape 3 : Avec Parcourir sélectionner le fichier Excel à convertir puis Next.Etape 4 : Définir Library avec moi et donnez un nom de tableau dans Member. Puis Next.Etape 5 : Cliquez sur Finish.P. Blanchard – Logiciel SAS – Master 2 Recherche
  49. 49. 492) La sélection dobservations dans l’étape DATAIl y a trois techniques principales de sélection d’observations.i) L’instruction IFExemple n°47.DATA tab1 ; SET donnees ; /* en general on ne met qu’un IF */ IF annee = 1963 ; IF 10 <= age <= 50 ; IF ((x1=5) AND (c=20 OR c=25)) ; IF annee IN(1989,1991,1993) ; IF test ; /* IF test = 1 */ ... /* il peut y avoir d’autres instructions */RUN ;Voici une variante.DATA essai ; SET tableau ; IF annee <= 1979 THEN DELETE ; pmc = conso/revenu ;...RUN ;Exemple n°48.DATA essai ; SET tableau ; IF _N_ <= 1000 ; /* ou */ IF 100 <= _N_ <= 1000 ;RUN ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  50. 50. 50ii) Linstruction/option WHERESupposons que l’on souhaite faire un calcul statistique en se limitant aux individus de sexe féminin.On peut faire :Exemple n°49.DATA femme ; SET total ; IF sexe = ‘F’ ; /* solution 1, déjà vue */RUN ;/* ou */DATA femme ; SET total ; WHERE sexe = ‘F’ ; /* WHERE = instruction */RUN ;/* puis */PROC MEANS DATA = femme ; RUN ;/* mieux encore */PROC MEANS DATA = total ; VAR salaire ; WHERE sexe = F ; RUN ;NB : avantages de WHERE • Mais surtout, WHERE offre dautres possibilités, comme par exemple : WHERE nom CONTAINS ‘BLANCHARD’ ; WHERE salaire BETWEEN 100 AND 100000 ; WHERE ident IS MISSING ; autres possibilités : LIKE, SAME. • WHERE fonctionne aussi avec les procedures (mais PAS IF). • WHERE en général plus rapide que IF. /* NB : WHERE = option au nom de tableau */DATA femme (WHERE = (sexe = F)) ; SET total ; RUN ;PROC MEANS DATA = total(WHERE=(sexe=F)) ; VAR salaire ;RUN ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  51. 51. 51iii) Les options OBS et FIRSTOBS de SETLes options suivantes sont très intéressantes et ne sont valables que sur le tableau en entrée.Exemple n°50.DATA tab1 ; SET donnees (FIRSTOBS=80 OBS = 100 ) ;/* qui est identique à */DATA tab1 ; SET donnees ; IF 80 <= _N _<= 100;Si l’on veut faire la même chose pour tout le programme SAS, on peut mettre au début duprogramme :Exemple n°51.OPTIONS FIRSTOBS=80 OBS=100 ;• Notez que OBS = 100 ne veut pas dire les 100 suivantes, mais jusquà la 100ième.• Il faut bien sûr que OBS > FIRSTOBS• OPTIONS OBS=MAX FIRSTOBS=1 ; annule OPTIONS ... ;• On peut utiliser ces options pour tester un programme d’un point de vue syntaxique sur une partie des données avec OPTIONS OBS = 0 ;Exemple n°52.DATA tab1 ; SET donnees (OBS = 0 ) ;/* ou */PROC MEANS DATA = essai(OBS=0) ; VAR x1 x2 x3 x4 ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  52. 52. 523) Les variables de totalisation.Considérons que lon dispose de 2 variables dans un tableau SAS (essai1):A = 1 10 2 30 44B = 1 10 2 . 44Supposons que lon veuille créer 2 variables de cumul suma (pour a) et sumb (pour b) plus unevariable donnant le numéro de lobservation (nobs = 1, 2, 3 …).Une possibilité est dutiliser linstruction RETAIN.Exemple n°53.DATA essai1 ; SET essai1 ;RETAIN nobs 0 suma 0 sumb 0 ;nobs = nobs + 1 ; /* 1 2 3 4 5 */suma = suma + a; /* 1 11 13 43 87 */sumb = sumb + b ; /* 1 11 13 . . (propagation des val. manq.) */P. Blanchard – Logiciel SAS – Master 2 Recherche
  53. 53. 534) Les boucles sur les observations et sur les variablesa) Les boucles sur les observationsExemple n°54.DATA simul ; /* (pas de SET, c’est rare) */ DO N = 1 TO 10 ; x = UNIFORM(0) ; perturb = NORMAL(0) ; y = 3 + (-2*x) + perturb ; OUTPUT ; /* (sinon on ne crée que la dernière observation */ /* Dans une étape DATA, il y a un OUTPUT implicite */ END ;PROC PRINT ; RUN ; Obs N x perturb y 1 1 0.95395 0.49853 1.59063 2 2 0.23939 -0.94737 1.57385 3 3 0.65603 0.44621 2.13415 4 4 0.85442 -1.12369 0.16746 5 5 0.93359 0.25209 1.38491 6 6 0.86566 0.51277 1.78145 7 7 0.53576 -0.76820 1.16028 8 8 0.36002 0.45920 2.73916 9 9 0.57523 2.42160 4.27114 10 10 0.85086 1.68401 2.98230DO WHILE condition ; action(s) ; END ; /* condition évaluée au début, => au moins 0 itération */DO UNTIL condition ; action(s) ; END ;/* condition évaluée à la fin, => au moins 1 itération */P. Blanchard – Logiciel SAS – Master 2 Recherche
  54. 54. 54b) Les boucles sur les variables. Cest très utile car cela permet deffectuer des traitementsrépétitifs sur de nombreuses variables avec peu dinstructions.Exemple n°55.DATA temp ; SET temp ;ARRAY vecvar x1-x12 x14 x1 r40-r55 effec ;DO OVER vecvar ; vecvar = LOG(vecvar) ; /* ttes les var. de vecvar sont passées en log. */END ;Exemple n°56.DATA temp(DROP = i) ; SET temp ;ARRAY vliste(4) ventes export import invest ;DO i = 1 TO 4 ; vliste(i) = vliste(i) * 1.206 ; /* passage en TTC */END ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  55. 55. 555) Les types de variables. Les Labels. Manipulation des chaînes de caractères.a) Retour sur la création des variablesLors de laffectation dune valeur à une variable, il sopère quatres opérations purement techniques :• une déclaration du type de la variable (caractère/numérique),• une définition de la longueur de la variable,• linitialisation de la variable à une certaine valeur (par défaut, valeur manquante).• éventuellement association avec un format (cf. plus loin).Rappelez-vous que SAS ne connaît que les variables numériques (réelles) et les variables de typechaîne de caractères.Exemple n°18DATA temp ;INPUT x nom $ prenom $ pays $ ;CARDS ; 1 moi jacques A 2 dupont rené 1 f toto 123 bb • Pour la première observation (celle qui conditionne le type et la longueur des variables) : x vaut 1, nom vaut moi et prenom vaut jacqueset pays vaut A. • Pour la deuxième observation, x vaut 2, nom vaut dup (troncation automatique) et prenom vaut rené (pas de troncation). Pays vaut 1. • Pour la troisième observation, x vaut ., nom vaut tot (troncation automatique) et prenom vaut 123. Pays vaut b./* La solution consiste à faire */DATA temp ;LENGTH nom $ 6 prenom $ 7 pays $ 2 ;INPUT x nom $ prenom $ pays $CARDS ;1 moi jacques A2 dupont rené 13 toto 123 bbP. Blanchard – Logiciel SAS – Master 2 Recherche
  56. 56. 56• On ne peut pas changer le type dune variable définie.• mais on peut créer une autre variable de type différentExemple n°19Si an est une variable caractère (qui vaut 86, 87, 88 etc.), l’instructionDATA temp ; SET temp;IF an = 86 ;• SAS effectue automatiquement, quand c’est possible, des conversions de type de variable (avec un warning dans le LOG).Exemple n°20Si an est une variable caractère (qui vaut 86, 87, 88 etc.), l’instructionDATA temp ; SET temp;annee = 0 ; annee = an ;crée année en numérique.P. Blanchard – Logiciel SAS – Master 2 Recherche
  57. 57. 57b) Les labelsExemple n°21DATA temp ; SET temp;LABEL pmc = "propension marginale à consommer" ;pmc = conso/revenu ;NB : • 256 car. maxi pour un label • Attention les éditions peuvent être plus volumineuses • il y a aussi un LABEL pour les tables SAS (option au nom de tableau, moins utile). • un label peut être défini dans une procédure mais il nest pas alors conservé dans le tableau SAS • On peut mettre des caractères accentués dans le LABEL, cest dailleurs un des rares endroits où lon puisse le faire dans SAS (avec les titres et les commentaires). • Néanmoins, avec les noms plus longs de variables avec SAS 8 (32 car.), ceci est moins utile.c) Les chaînes de caractèresExemple n°22ville = PARIS ;IF ville = paris THEN ... ; /* est faux */ville = PARIS ;IF ville > paris THEN ... ; /* est vrai */P. Blanchard – Logiciel SAS – Master 2 Recherche
  58. 58. 587) Concaténation et fusion contrôlée de tableaux SASJusqu’à présent, nous avons utilisé l’instruction SET dans le contexte suivant :DATA temp ; SET essai ;etc...En pratique, les informations dont on a besoin sont fréquemment stockées dans des fichiers (destableaux) différents. Comment procéder alors ?a ) Comment créer plusieurs tableaux dans une seule étape DATA.Examinons comment créer trois tableaux à partir dun seul.Exemple n°23DATA hommes femmes erreurs ; SET total ;IF sexe = ‘F’ THEN OUTPUT femmes ;ELSE IF sexe = ‘H’ THEN OUTPUT homes ;ELSE OUTPUT erreurs;PROC PRINT DATA = erreurs ; RUN ;On peut bien sur faire d’autres opérations dans l’étape DATA.P. Blanchard – Logiciel SAS – Master 2 Recherche
  59. 59. 59b ) La concaténation (verticale) de tableau SAS par SET.Considérons les trois tableaux SAS suivants :Exemple n°24tab1 tab2 tab3nom age nom age nom nbanneeB 10 d 40 e 88A 20 e 50 f 99C 30Considérons que nous souhaiterions réunir ces trois tableaux par une opération de concaténationverticale (les empiler les uns en dessous des autres). Pour cela, il faut faire :DATA total ; SET tab1 tab2 tab3 ;Cette instruction procède à une concaténation verticale des trois tableaux telle que le tableaurésultant soit total :nom age nbanneeb 10 .a 20 .c 30 .d 40 .e 50 .e . 88f . 99notez :- que le nouveau tableau a autant de colonnes quil y avait dans les tableaux tab1, tab2 et tab3 de variables ayant des noms différents,- que les données des différents tableaux ne sont pas nécessairement triées,- que les observations sont complétées par des valeurs manquantes quand une variable est dans un tableau et pas dans un autre,- que le fait quil y ait 2 individus e ne pose pas de pb particulier (sauf si on voulait en ignorer un; pb des doublons, cf. plus loin).- Que fait : DATA total ; SET tab2 tab1 ;- Il peut y avoir autant de tableaux que lon veut dans cette instruction. Bien sur, il est possible dutiliser les options/instructions DROP, KEEP, WHERE, RENAME, IF, SELECT….P. Blanchard – Logiciel SAS – Master 2 Recherche
  60. 60. 60Voyons une variante résolvant le problème de nbannee et age :Exemple n°25DATA total ; SET tab1 tab2 tab3(RENAME=(nbannee=age)) ;produittotalNom ageb 10a 20c 30d 40e 50e 88f 99P. Blanchard – Logiciel SAS – Master 2 Recherche
  61. 61. 61c ) Les fusions contrôlées de tableaux par MERGE ; BY ;Cette instruction se révèle fondamentale.i) fusion contrôlée : Supposons que lon dispose de trois fichiers de donnéesExemple n°26ESE EAE DDASident effectif ident va ident salaire1 11 2 22 1 132 21 3 32 3 333 31 5 52 4 434 41 5 53 6 63Si les trois tableaux ne sont pas triés par ident, il faut le faire, à cause de l’utilisation du BY.PROC SORT DATA = ese ; BY ident ; RUN ;DATA total ; MERGE ese eae dddas ; BY ident ;ident effectif va salaire1 11 . 132 21 22 .3 31 32 334 41 . 435 . 52 536 . . 63P. Blanchard – Logiciel SAS – Master 2 Recherche
  62. 62. 62ii) Cylindrage. On ne souhaite conserver que les individus (repérés par leur identifiant)présents dans les trois fichiers à la fois.Exemple n°27 EAE DDASESEident effectif Ident va ident salaire1 11 2 22 1 132 21 3 32 3 333 31 5 52 4 434 41 5 53 6 63DATA cylind ; MERGE ese(in=in1) eae(in=in2) ddas(in=in3) ;BY ident ;IF in1 & in2 & in3 ;ident effectif Va salaire3 31 32 33P. Blanchard – Logiciel SAS – Master 2 Recherche
  63. 63. 63d) La gestion des doublons: les options FIRST et LAST.Soit le tableau totaltotalNom ageb 10a 20c 30d 40e 50e 50f 99Considérons que lindividu e soit en doublon. Comment léliminer ?Exemple n°28PROC SORT DATA = total ; BY nom ;DATA total1 ; SET total ; BY nom ;IF FIRST.nom ;total1 contient :Nom agea 20b 10c 30d 40e 50f 99que produit IF LAST.nom ?P. Blanchard – Logiciel SAS – Master 2 Recherche
  64. 64. 64II) LODS : LODS signifie Output Delivery System.Exemple n°57.ODS RTF file = c:resultat1.rtf BODYTITLE STYLE = DEFAULT ;TITLE ; OPTIONS NODATE NONUMBER ;PROC MEANS ; RUN ;ODS RTF CLOSE ;RUN ;La procédure MEANSVariable Nb Moyenne Écart-type Minimum Maximumnum 12 6.5000000 3.6055513 1.0000000 12.0000000revenu 12 8.9166667 2.4293034 5.0000000 14.0000000conso 11 7.2727273 2.0538213 4.0000000 10.0000000datenaiss 12 8206.33 4909.87 -1848.00 17115.00NB: • Le résultat apparait aussi dans l’Output sauf si ODS LISTING CLOSE ;. • On peut sélectionner certains résultats, créer des fichiers au format HTML. • Avantage fondamental : couper/coller sous Word. Les tableaux sont de vrais tableaux. • Attention : si erreur de syntaxe, le fichier sera vide. • On peut essayer différents styles avec STYLE = Analysis, Astronomy, Banker, BarrettsBlue, Beige, Brick, Brown, Curve, D3d, Default, EGDefault, Education, Electronics, Festival, Gears, Journal, Magnify, Meadow, Minimal, Money, NoFontDefault, Normal, Printer, Rsvp, Rtf, Sasweb, Science, Seaside, Sketch, Statdoc, Statistical, Theme, Torn, Watercolor, blockPrint, fancyPrinter, sansPrinter, sasdocPrinter, serifPrinter. • On peut créer son propre style (complexe). • Les procédures PROC PRINT, PROC REPORT et PROC TABULATE peuvent utiliser les styles de manière spécifique avec l’option STYLE=… • BODYTITLE signifie que les titres SAS apparaitront dans le corps du texte et non en en-tête sous Word.P. Blanchard – Logiciel SAS – Master 2 Recherche
  65. 65. 65III) Approfondissements sur les procédures A) Lecture dun fichier externe au format EXCEL : Pour importer (i.e. convertir) un fichier Excel  SAS, il y a de nombreuses possibilités. • possibilité dutiliser lutilitaire dimportation/exportation utilisable avec les menus. • Utiliser la procédure PROC IMPORT • Utiliser des logiciels spécialisés (DBMS-copy, STAT-Transfer...). • Utilisation dODS (pour lexportation uniquement). Non traité ici.Exemple n°2 : PROC IMPORT/PROC EXPORTSoit le tableau Excel (tab.xls) A B1 nomvar1 nomvar22 1 a3 2 b4 3 c5 4 d6 5 eOn peut limporter en faisant (le module PC-File Format est requis)LIBNAME in c:pierre02 ;RUN ;/* import dun fichier excel vers SAS*/PROC IMPORT out=in.tabtest1 DATAFILE ="c:pierre02tab.xls" DBMS=excel2000 replace; GETNAMES=YES;RUN;Pour lexporter,LIBNAME in c:pierre02 ; RUN ;/* export dun tableau SAS vers un fichier excel */PROC EXPORT DATA= in.tabtest OUTFILE= "C:pierre02tab2.xls" DBMS=EXCEL2000 REPLACE ;RUN;PROC IMPORT peut importer aussi des fichiers ACCESS, DBF, WKS…PROC EXPORT peut exporter vers des fichiers XLS et ASCIIP. Blanchard – Logiciel SAS – Master 2 Recherche
  66. 66. 66B) La création de tableaux par des procédures : l’instruction OUTPUT OUT . Création d’untableau par une procédure : l’exemple de PROC MEANS ;Considérons le tableau temp (cf. page suivante) qui contient 13 observations pour la variablerevenu notamment.num nom sexe csp revenu conso1 AA h employé 10 92 BB f cadre 11 73 CC h ouvrier 5 44 DD h employé 8 75 EE h cadre 14 106 FF h ouvrier 6 47 GG h ouvrier 7 68 HH f cadre 11 109 II h ouvrier 9 810 JJ h employé 9 811 KK f employé 8 712 LL h ouvrier 9 513 MM f . . 5On voudrait connaître1°) le % que représente le revenu d’un individu de sexe donné par rapport au revenu moyen desautres individus de même sexe.2°) le % que représente le revenu d’un individu par rapport au revenu moyen des autres individus.Comment faire ?P. Blanchard – Logiciel SAS – Master 2 Recherche
  67. 67. 67Exemple n°29PROC SORT DATA = temp ; BY sexe ;PROC MEANS NOPRINT DATA = temp ; BY exe ;OUTPUT OUT = stat MEAN(revenu) = mrevenu ;PROC PRINT DATA = stat ; RUN ;DATA temp1 ; MERGE temp stat ; BY sexe ;prev = revenu/mrevenu ;RUN ;PROC PRINT ; VAR nom sexe revenu mrevenu prev ; RUN ;Obs sexe _TYPE_ _FREQ_ mrevenu 1 f 0 4 10.0000 2 h 0 9 8.5556Obs nom sexe revenu mrevenu prev 1 BB f 11 10.0000 1.10000 2 HH f 11 10.0000 1.10000 3 KK f 8 10.0000 0.80000 4 MM f . 10.0000 . 5 AA h 10 8.5556 1.16883 6 CC h 5 8.5556 0.58442 7 DD h 8 8.5556 0.93506 8 EE h 14 8.5556 1.63636 9 FF h 6 8.5556 0.70130 10 GG h 7 8.5556 0.81818 11 II h 9 8.5556 1.05195 12 JJ h 9 8.5556 1.05195 13 LL h 9 8.5556 1.05195P. Blanchard – Logiciel SAS – Master 2 Recherche
  68. 68. 68Exemple n°30PROC MEANS NOPRINT ; VAR revenu ; ;OUTPUT OUT = stat1 MEAN(revenu) = mrevenu ;PROC PRINT dATA = stat1 ; RUN ;DATA temp ; SET temp ; ind = 1 ;DATA stat1 ; SET stat1 ; ind = 1 ;DATA temp2 ; MERGE temp stat1 ; BY ind ;prevtot = revenu/mrevenu ;PROC PRINT ; VAR nom sexe revenu mrevenu prevtot ; RUN ;Obs _TYPE_ _FREQ_ mrevenu 1 0 13 8.91667Obs nom sexe revenu mrevenu prevtot 1 BB f 11 8.91667 1.23364 2 HH f 11 8.91667 1.23364 3 KK f 8 8.91667 0.89720 4 MM f . 8.91667 . 5 AA h 10 8.91667 1.12150 6 CC h 5 8.91667 0.56075 7 DD h 8 8.91667 0.89720 8 EE h 14 8.91667 1.57009 9 FF h 6 8.91667 0.67290 10 GG h 7 8.91667 0.78505 11 II h 9 8.91667 1.00935 12 JJ h 9 8.91667 1.00935 13 LL h 9 8.91667 1.00935A noter :• Vous noterez linterprétation de _FREQ_ (le nombre dindividus de chaque sous population).• CLASS est préférable à BY car pas de tri nécessaire avant (nb max de var. de class. = 30).• Les résultats sont présentés différemment, cf. _TYPE_ pour sélectionner le niveau dagrégation.• Avec NOPRINT, rien n’est affiché dans l’Output. Pour visualiser le résultat, il faut faire : PROC PRINT DATA = result ;• Avec plusieurs variables, cela marche aussi.P. Blanchard – Logiciel SAS – Master 2 Recherche
  69. 69. 69C) Les procédures PROC FORMAT, PROC FREQ et PROC TABULATE1) L’instruction PROC FORMATExemple n°50PROC FORMAT LIBRARY = in ;VALUE $fsexe "m", "M", "h", "H" = "Homme" "f", "F" = "Femme" ;VALUE fage 0-17 = "- de 18 ans" 18-59 = "18-59 ans" 60-HIGH = "retraité" ;VALUE fchoix 1 = "oui" 2 = "non" 0,3-9 = "ND" ;VALUE fzero LOW - <0 = <0 0 = 0 0< - HIGH = >0 ;RUN ;Notez que cette façon de faire permet en quelque sorte de recoder à peu de frais les variablesnumériques. Cest un de ces grands avantages.Ensuite, on l’utilise dans une procédure (PROC MEANS, PROC GCHART, PROC FREQ…).P. Blanchard – Logiciel SAS – Master 2 Recherche
  70. 70. 70Exemple n°51/* on suppose que PROC FORMAT dans le pgm */DATA essai ;INPUT sexe $ age choix ;CARDS ;m 11 1f 21 2m 31 3f 41 2H 12 1 /* attention : on a H */m 22 1f 32 0f 42 1m 13 2m 23 .. 33 2m 43 1;PROC FREQ ; TABLE sexe*age sexe*choix / NOROW NOCUM ; FORMAT age fage. choix fchoix. sexe $fsexe.;RUN ;NB : Que se passerait-il sans l’instruction FORMAT … ; ???P. Blanchard – Logiciel SAS – Master 2 Recherche
  71. 71. 71Table of sexe by ageFrequency‚Percent ‚- de 18 ans ‚18-59 ans‚ TotalƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒˆHomme ‚ 3 ‚ 4 ‚ 7 ‚ 27.27 ‚ 36.36 ‚ 63.64ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒˆFemme ‚ 0 ‚ 4 ‚ 4 ‚ 0.00 ‚ 36.36 ‚ 36.36ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒˆTotal 3 8 11 27.27 72.73 100.00Frequency Missing = 1Table of sexe by choixFrequency‚Percent ‚ND ‚oui ‚non ‚ TotalƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆHomme ‚ 1 ‚ 4 ‚ 1 ‚ 6 ‚ 10.00 ‚ 40.00 ‚ 10.00 ‚ 60.00ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆFemme ‚ 1 ‚ 1 ‚ 2 ‚ 4 ‚ 10.00 ‚ 10.00 ‚ 20.00 ‚ 40.00ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆTotal 2 5 3 10 20.00 50.00 30.00 100.00Frequency Missing = 2P. Blanchard – Logiciel SAS – Master 2 Recherche
  72. 72. 722) L’instruction PROC TABULATEVoici un petit exemple donnant une idée ce que quelle permet (sur les donnée de csp/sexe):Exemple n°52PROC FORMAT LIBRARY = work ;VALUE $fsexe "h" = "Homme" "f" = "Femme" ;PROC TABULATE DATA = test ; CLASS sexe csp ;VAR revenu ;TABLE sexe ALL , (csp ALL)*revenu*(MEAN N) / RTS = 16 ;FORMAT sexe $fsexe.;RUN ;P. Blanchard – Logiciel SAS – Master 2 Recherche
  73. 73. „ƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†‚ ‚ csp ‚ ‚‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰‚ ‚ cadre ‚ employé ‚ ouvrier ‚ All ‚‚ ‡ƒƒƒƒƒƀ

×