Introduction sas lyon2 PDF

Title Introduction sas lyon2
Course Base de Donnees et Traitements Econometriques
Institution Université Lumière-Lyon-II
Pages 67
File Size 1.1 MB
File Type PDF
Total Downloads 19
Total Views 121

Summary

Cours SAS
...


Description

BASE DE DONNEES ET TRAITEMENTS ECONOMETRIQUES SOUS SAS

Master EQUADE, LYON 2 X.Joutard, septembre 2013

LES OBJECTIFS DE CE COURS :

Apprentissage de SAS Gérer et manipuler des bases de données (données individuelles, séries temporelles, données de panel) Recours à la gestion SQL Analyse descriptive des données Mettre en œuvre plusieurs méthodes économétriques à l’aide de cet outil

OBJECTIFS A ATTEINDRE PLUS TARD En //, utilisation d’un autre logiciel (STATA) Et du logiciel R (dans d’autres cours)

SITES A CONSULTER http://support.sas.com/documentation/onlinedoc/91pdf/index.html http://www.sasreference.com/ http://www.unt.edu/rss/class/sas1/ http://sas-and-r.blogspot.fr/

BASES DE DONNEES Penn-World Tables Enquête Génération 2004 (CEREQ) Enquête Emploi 1994 (INSEE) Enquête évaluation des risques naturels Données tribunal commerce Brioche Dorée Données Consommation d’Essence (Eurostat) Données Microcrédit METHODES ECONOMETRIQUES Méthodes en Double Différence Méthodes par VI Méthodes sur données de Panel Modèles non linéaires (Variables qualitatives) Modèles sur séries temporelles

I/ INTRODUCTION

ENVIRONNEMENT de SAS Le lancement de SAS ouvre plusieurs fenêtres. Parmi elles, trois sont particulièrement importantes : – La fenêtre Program editor permet d’écrire le programme SAS à exécuter. C’est par là que passe la plupart des instructions de l’utilisateur. SAS signale

– La fenêtre Log rend compte des éventuelles erreurs du programme. C’est donc un outil de contrôle, précieux pour corriger et améliorer les programmes. Après exécution, les erreurs sont notées en rouge !!! les avertissements – exemple : table de données à 0 observations – notées en vert – La fenêtre Output contient toutes les sorties SAS (listings, tableaux, figures, etc...)

Il existe des fenêtres de moindre importance mais qui seront ponctuellement très utiles - Results : table des matières des résultats qui sont affichés dans la fenêtre Output - Explorer : même principe qu’une fenêtre Explorer sous Windows : cela permet de naviguer d’un répertoire à l’autre pour y trouver des fichiers et des tables de données. Ces répertoires (librairies ou bibliothèques sous SAS) contiennent notamment le répertoire provisoire de SAS, Work. - Viewtable : fenêtre permettant de visualiser les données, c'est-à-dire le contenu des tables SAS. Il suffit de cliquer sur la table indiquée dans le répertoire de la fenêtre Explorer

PROGRAMME SAS Un programme SAS est un enchaînement d'étapes de gestion des données (ce sont les étapes DATA) et d'appels de procédures, qui décrivent les traitements à réaliser (ce sont les étapes PROC, comme PROCédure). Ces deux étapes commencent toujours par respectivement DATA et PROC et se finissent invariablement par run. Il est donc facile de les identifier au sein d’un programme. L'étape DATA constitue une étape essentielle dans le traitement des données. Elle permet de lire les données et de les transformer. Elle offre la possibilité de lire des données :

directement saisies au clavier (SAS/ASSIST), ou incluses dans le programme SAS (CARDS), contenues dans un fichier texte provenant d'un éditeur, d'un autre logiciel de statistique, d'un tableur ou encore d'un gestionnaire de base de données.

Les tables de données SAS – définies dans l’étape data et exploitées dans les procédures – contiennent comme information , outre les données: nom de la table, date de création, nom et type de variables...

Elles peuvent également être le résultat de précédentes étapes DATA du programme ou bien d'une procédure. Elles sont construites dans un format spécifique illisible en dehors de SAS. En ligne, on a les observations (enregistrements) : exemple, des individus, des ménages, des pays (données individuelles), ou des dates (séries temporelles) En colonne ; on a des variables. Elles peuvent être de type numérique ou alphanumérique !! Certaines variables ne contenant que des nombres seront pourtant codées en format alphanumérique. Il sera parfois nécessaire de les convertir en numérique (via la fonction INPUT) Une table SAS est soit temporaire, soit permanente.

Lorsqu'elle est temporaire, elle n'est conservée que le temps de la session en cours. Elle est généralement stockée dans une bibliothèque temporaire désignée par WORK

et qui est visible en allant dans la fenêtre Explorer. !!! Répétons qu’une fois la session SAS fermée, cet ensemble de données disparait. Lorsqu'elle est permanente, elle est stockée dans la bibliothèque que vous spécifierez (par un LIBNAME, cf. plus loin). On peut ainsi la réutiliser lors d’une nouvelle session. Là encore, après avoir défini le chemin de votre bibliothèque (le répertoire sur votre PC où vous irez chercher (et/ou sauver) cette table, cette bibliothèque et son contenu seront visibles à partir de la fenêtre Explorer. LIBRAIRIES Pour accéder à une table de données existantes (situé dans un répertoire du disque de l’ordinateur) ou bien sauver une tables de données sas (dans un répertoire du disque de l’ordinateur), on a recours aux LIBRAIRIES de sas qu’on définit généralement en début de programme :

LIBNAME e ‘C:\Users\joutard\Desktop\cours_donnees_logiciels'’ ; Cela signifie qu’on désigne par e le répertoire sous Windows qui se trouve là où sont stockées les tables SAS. Il existe par ailleurs en permanence la librairie WORK qui est en quelque sorte la librairie par défaut. Si aucune librairie n’est spécifiée au départ du programme, toutes les tables SAS crées se retrouveront dans cette librairie. Par ailleurs, cette librairie est particulière, dans la mesure où elle est temporaire !

SYNTAXE ET COMMENTAIRES Les contraintes de syntaxe pour SAS sont peu nombreuses : – Les noms de variables, tableaux, figures ne doivent pas comporter d’espace et doivent ne pas commencer pas une lettre ou un Under score. – Chaque instruction se termine par un point-virgule. Aller à la ligne ne suffit pas ! – SAS ne fait pas de distinction dans le programme entre minuscule et majuscule

Des commentaires peuvent être placés à n’importe quel endroit du programme sous la forme /* commentaire */. Pour neutraliser une ligne dans un programme, il suffit de mettre au début de la ligne : *

II/ LECTURE / ECRITURE des DONNEES Source Interne : saisie des données data table1; input age y $; cards; 20 oui 23 non 18 oui ; run; Source Externe : Lecture d’une Table SAS data pwt71; set e.pwt71; run;

/* Table sortie */ /* Table entrée */

Rq : Si on veut que lire les 10 premières observations, on introduira l’optionobs=10 entre ( ) au niveau de l’instruction set . Si on ajoute firstobs=5, la lecture ne commencera qu’à partir de la 5ième observation jusqu’à la 15ième : data pwt71; set e.pwt71 (firstobs=5 obs=10); run;

Source Externe : Lecture d’une Table sous format Texte data table2; infile ‘C:\Users\joutard\Desktop\cours_donnees_logiciels \yc2.txt' firstobs=10; input an obs y c; run; RQ : pour un séparateur autre que l’espace (blanc), utiliser delimiter= 'char' | 'nn'x (par exemple delimiter=’09’x pour un fichier ASCII) Source Externe : Lecture d’une Table EXCEL Passer par la procédure d’importation (cf menu File/ImportData ci-dessous) Ou Passer par la PROC IMPORT libname a 'E:\bases de données\micro_credit';

proc import datafile="E:\bases de données\micro_credit\nbvaleurs1.xls" out=a.ainvest dbms=xls replace; run;

Ecriture d’une Table SAS sur une source Externe data e.table1; /* Table sortie stockée dans le répertoire désigné par e*/ set table1; /* Table entrée */ run ;

Adressage des données (préciser le format) au sein d’une étape Data Format : input an 4.0 obs 5.0 y 9.1 c 9.1 ; Position des caractères : input an 1-4 obs 5-8 y 11-18 c 21-28;

Visualisation des données (par une Procédure)

proc print ; /* sans instruction data=, c’est le dernier tableau manipulé dans le programme qui est reproduit*/ proc print data=table2(obs=10) ; /* 10ières observations */ proc print data=table2 ; var an y ; /* les seules variables an y sont visualisées */ run ;

Affichage des caractéristiques d’une table SAS (par une Procédure) proc contents ; /* sans instruction data=, c’est le dernier tableau manipulé dans le programme qui est reproduit*/ Liste les variables par ordre alphabétique, leur label, leur type, leur longueur, leur position dans la base proc contents position ; Liste les variables par ordre alphabétique puis par position

III/ LES ATTRIBUTS DES VARIABLES

Chaque variable possède les attributs suivants : Attributs obligatoires : • Nom • Longueur de stockage (length) • Type (caractère ou numérique) Attributs facultatifs : • Label : champ texte plus long que le nom, qui accepte blancs et caractères accentués, et qui permet de fournir une courte description de la variable ; si un label est défini, c’est lui qui est affiché lors de la visualisation de la table. • Format de lecture (format) : la longueur de stockage étant définie, on peut appliquer à la variable un format de lecture, qui correspond à une manière de présenter les valeurs de cette variable ; le format est utile dans le cas de nombres à décimales ou de dates. • Format d’écriture (informat) : c’est l’équivalent du format, mais il sert au moment de l’écriture des données dans la table et non au moment de leur lecture. Les formats : Formats prédéfinis : Les formats numériques s’appliquent aux variables de type numérique. Le format n. indique que la variable numérique sera lue / écrite sur n caractères. Le format n.d indique que la variable numérique sera lue / écrite sur n caractères dont d décimales. Le format Zn. force l’écriture sur n caractères en complétant à gauche par des 0. Les formats caractères s’appliquent aux variables de type caractère, et commencent par un « $ ». Le format $n. indique que la variable caractère sera lue / écrite sur n caractères. Cas particulier des formats date : En SAS, une date est une variable numérique qui représente le nombre de jours écoulés depuis une certaine date de référence interne au système. Afin de rendre les valeurs plus parlantes, on peut appliquer un des formats prédéfinis suivants (il en existe d’autres) : Format DATE9. YYMMDD8. DDMMYY8.

Exemple avec le 14 janvier 2005

14JAN2005 05-01-14 14/01/05

Visualisation des Formats par l’utilisateur Dans la fenêtre de visualisation de la table (que l’on obtient en double cliquant sur une table dans la fenêtre Explorer), il suffit de faire un clic droit sur l’en-tête de la colonne dont on désire connaître les attributs, puis de choisir « Column Attributes ». Vous pouvez aussi retrouver tous les attributs de toutes les variables d’une table en visualisant les propriétés de la table. Deux méthodes : • Dans la fenêtre explorer, clic droit sur la table puis « Properties ». • Procédure PROC CONTENTS (voir précédemment). Formats définis par l’utilisateur : proc format L’utilisateur peut définir ses propres formats et informats grâce à la procédure proc format.La définition de formats s’avère particulièrement utile lorsqu’on souhaite faire du regroupement de modalités sans modifier les valeurs d’origine. Note : Tous les formats se terminent par un « . ». Supposons que l’on dispose d’une variable numérique continue salaire et que l’on souhaite faire un traitement qui utilise les tranches de salaire. Trois possibilités s’offrent : • Créer une nouvelle variable avec une étape DATA, qui à chaque observation associe la tranche de salaire de l’individu. Problème : Redondance d’information. • La même chose, mais en supprimant la variable salaire : Perte d’information. • La bonne solution consiste à créer un format. Un format est un objet SAS, qui existe en propre et indépendamment de toute table, et qui associe des modalités caractère à des plages de valeur données (numériques ou caractères). Un format se crée grâce à une proc format. La procédure ne génère pas de sortie dans l’OUTPUT. proc format ; value nom_format plage1= « valeur1 » plage2= « valeur2 » … ; Une fois la proc format soumise, le format est créé pour toute la durée de la session. On peut aussi stocker le format compilé dans un catalogue, afin de pouvoir l’utiliser une prochaine fois sans avoir à soumettre à nouveau le programme. Le nom d’un format ne doit pas excéder 8 caractères et ne doit pas finir par un chiffre. Si les plages de valeurs sont numériques, le format est dit numérique. Sinon, il est dit caractère, et son nom doit commencer par un $. Les plages de valeurs peuvent s’écrire sous forme d’intervalle (par exemple : 0-100) ou sous forme de liste (par exemple : 0,1,2,5). Le signe < sert à exclure une borne de l’intervalle. Les plages doivent être des ensembles disjoints. proc format; value tranche low-=18; ou alternativement if age>=18; ou alternativement if age>=18 then output; ou alternativement if age10000; quit; Créer la table Test2 qui contient les compagnies d’automobiles européennes. proc sql; create table test2 as select * from a.business where industry="Automobiles" and nation in ("Britain", "France", "Germany"); quit;

La commande ORDER BY La clause ORDER BY permet de trier le résultat de la requête d’après la valeur d’une ou plusieurs variables. Par défaut, le tri se fait par ordre croissant. En ajoutant DESC, on précise l’ordre décroissant. Des options permettent de restreindre le nombre d’observations traitées : INOBS=n

restreint à n le nombre d’observations de chaque table à incorporer (les n premières). Ceci est utile pour tester des requêtes sur des fichiers très longs.

Exemple : Créer la table Test3 qui contient les compagnies françaises, ordonnées par le profit (ordre décroissant).

proc sql; select * from a.business where nation="France" order by profits desc; quit; Remarque : Par défaut, la PROC SQL affiche le résultat d’une requête sans éliminer les doublons. Il est possible de ne garder qu’un exemplaire de chaque ligne en ajoutant DISTINCT dans la clause SELECT.

La commande GROUP BY La clause GROUP BY permet de regrouper les modalités d’une variable. Cette clause est utilisée uniquement lorsque la requête utilise une fonction de groupe. Sans la clause GROUP BY, la somme est effectuée sur toute la table. Exemple : proc sql; create table test4 as select sum(profits) as profits, nation from a.business group by nation; quit; Les fonctions de groupe permettant un calcul sur l’ensemble des observations d’une table spécifiée après la clause FROM ou sur chaque groupe défini par une clause GROUP BY sont les suivantes : o MEAN, AVG : moyenne o COUNT, N : compte le nombre de valeurs non manquantes o CV : coefficient de variation o MAX o MIN o SUM o VAR : variance Exemple : Créer la table Test5 qui contient le nombre de salariés moyen, minimum et maximum par secteur d’activité. proc sql; create table test5 as select Industry, mean(employs) as Sal_moyen format=3.0, min(employs) as Sal_min, max(employs) as Sal_max from a.business group by Industry; quit;

L’expression HAVING permet d’opérer sur un sous-ensemble d’observations de la table. C’est l’équivalent du WHERE appliqué au groupe. La clause GROUP BY doit toujours précéder une expression HAVING et définit le groupe sur lequel l’expression HAVING va opérer.

Exemple : Créer la table Test6 qui contient le nombre de salariés moyen, uniquement pour les secteurs d’activité qui ont en moyenne plus de 50 salariés. proc sql; create table test6 as select Industry, mean(employs) as Sal_moyen format=3.0 from a.business group by Industry having sal_moyen>50; quit;

3. Les jointures Une jointure est une opération d’appariement de plusieurs tables selon une clé, qui est un identifiant commun aux différentes tables. Pour écrire une jointure, il suffit de citer les variables recherchées dans la clause SELECT, et de préciser dans la clause WHERE (ou ON) la condition d’égalité entre les variables qui réalisent la jointure entre les tables. La clause FROM doit contenir le nom de toutes les tables à lier. Dans la clause FROM, il est possible de donner un alias à une table : FROM nom_de_table AS alias ; Ceci est utile lorsque les tables à joindre ont des variables qui ont le même nom. On désigne alors la variable par alias.variable. Il existe quatre types de jointures (stricte, à gauche, à droite, complète). Jointure stricte (interne) La condition de fusion des tables est exprimée dans une clause WHERE. Elle peut porter sur plusieurs variables.

A

B

Syntaxe : PROC SQL ; SELECT a.*,b.* FROM table1 as a, table2 as b WHERE a.var1=b.var1; QUIT; Exemple: Créer les tables SAS “Recu” et “Filiere” suivantes: « Recu » Etudiant Note Elisa 12 Laurence 14 Marc 10 Margaux 18 Xavier 15 « Filiere » Nom Julie Marc Margaux Xavier ES

Bac ES S S

Effectuer une jointure stricte sur ces deux tables. data recu; input Etudiant $ Note; cards; Elisa 12 Laurence 14 Marc 10 Margaux 18 Xavier 15 run; data filiere; input Nom $ Bac $; cards; Julie ES Marc S Margaux S Xavier ES run;

proc sql; create table jointure1 as select a.*,b.* from recu as a, filiere as b where a.etudiant=b.nom; quit; Pour ne pas afficher la clé en double: proc sql; create table jointure1 as select a.Etudiant, a.Note, b.Bac from recu as a, filiere as b where a.etudiant=b.nom; quit;

Jointure à gauche La condition de fusion des tables est exprimée dans une clause ON.

A

B

On sélectionne toutes les observations de la table A et les observations de la table B qui correspondent. Syntaxe : PROC SQL ; SELECT a.*,b.* FROM table1 as a LEFT JOIN table2 as b ON a.var1=b.var1; QUIT; Exemple: proc sql; create table jointure2 as select a.*, b.* from recu as a left join filiere as b on a.etudiant=b.nom; quit; proc sql; create table jointure3 as select a.*, b.*

from filiere as a left join recu as b on a.nom=b.etudiant; quit;

Jointure à droite

A

B

On sélectionne toutes les observations de la table B et les observations de la table A qui correspondent. Syntaxe : PROC SQL ; SELECT a.*,b.* FROM table1 as a RIGHT JOIN table2 as b ON a.var1=b.var1; QUIT; Exemple: proc sql; create table jointure4 as select a.*, b.* from recu as a right join filiere as b on a.etudiant=b.nom; quit; proc sql; create table jointure5 as select a.*, b.* from filiere as a right join recu as b on a.nom=b.etudiant; quit;

Jointure complète

A

B

On sélectionne toutes les observations de la table A et toutes les observations de la table B en mettant les observations communes en correspondance. Syntaxe : PROC SQL ; SELECT a.*,b.* FROM table1 as a FULL JOIN table2 as b ON a.var1=b.var1; QUIT; Cette méthode de jointure pose un problème. Pour les observations de la table2 qui n’étaient pas dans la table1, var1 n’est pas renseignée dans la table ou la sélection résultante. La jointure complète n’est donc intéressante que si les deux tables contiennent le même nombre d’observations. Exemple: proc sql; create table jointure6 as select a.*, b.* from recu as a full join filiere as b on a.etudiant=b.nom; quit;

Autres types de jointures Produit cartésien On fusionne chaque observation de la table A avec chaque observation de la table B. Si A contient na observations et B nb observations, le résultat contient naXnb lignes. Syntaxe : PROC SQL ; SELECT a.*,b.* FROM table1 as a, table2 as b; QUIT; Exemple: proc sql; create table jointure7 as select a.*, b.* from recu as a , filiere as b; quit;

VIII / PROCEDURES GRAPHIQUES PROC GPLOT PROC GCHART PROC BOXPLOT PROC GMAP L’ensemble de ces procédures permettent des graphiques en haute résolution qui pourront être reproduit dans une instruction ODS graphics (cf + loin) La PROC GPLOT trace des graphiques sur des variables quantitatives : nuages de points, courbes… La PROC GCHART trace des graphiques sur des variables quantitative et/ou qualitatives : Histogrammes ou diagrammes circulaires. La PROC BOXPLOT trace des box plots (boîtes à moustaches) représentatives de la distr...


Similar Free PDFs