Formation sous SAS. Project - 27.09.2011 Ce document rassemble les informations fournies lors de la formation doctorale organisée par l'association PROJECT. Deux parties le composent: La partie procédures introduit les commandes qui seront utilisées lors de la formation. s'agit d'une introduction primaire au langage de programmation sous SAS. Il La partie exercice présente l'application qui constituera le l conducteur de la formation. Nous partirons d'un jeu de données de base pour découvrir les principales fonctionnalités du logiciel. Contenu 1 Procédures 2 1.1 Généralités......................................... 2 1.1.1 L'environnement SAS............................... 2 1.1.2 Programmer sous SAS.............................. 2 1.2 Manipulation des données................................. 2 1.2.1 Importer des données............................... 2 1.2.2 Mise en forme des données............................ 3 1.2.3 Fusionner ou séparer des bases.......................... 4 1.2.4 Exporter des données............................... 4 1.3 Statistiques descriptives et graphiques.......................... 5 1.3.1 Statistiques descriptives.............................. 5 1.3.2 Acher des tableaux............................... 5 1.3.3 Graphiques simples................................ 5 1.4 Un peu d'économétrie.................................... 6 1.4.1 Régression simple................................. 6 1.4.2 Modèles binaires.................................. 6 1.4.3 Données de panel................................. 6 2 Exercice. 8 2.1 Partie 1 - Importation et manipulation des données.................. 8 2.2 Partie 2 - Statistiques descriptives et graphiques.................... 9 2.3 Partie 3 - Analyse des données et économétrie..................... 9 1
1 Procédures 1.1 Généralités. 1.1.1 L'environnement SAS. L'interface de SAS est composée de cinq fenêtres. L'éditeur vous permet d'entrer les instructions à exécuter. Le programme ainsi composé peut être sauvegardé au format ".sas" Le résultat des instructions exécutées à partir de l'éditeur aparaissent dans l'output. Ces sorties peuvent être sauvegardées au format ".lst" Toutes les informations relatives à l'exécution d'un programme s'achent dans le log. Lorsqu'une erreur survient, c'est vers cette fenêtre qu'il faut se tourner. Les anomalies sont achées en vert et les erreurs en rouge. La fenêtre results est essentielle pour naviguer entre les diérents résultats qui ont été achés dans l'output. Les diérents objets présents dans vos dossiers peuvent être visualisés dans l'explorer. 1.1.2 Programmer sous SAS. Le langage de programmation utilisé sous SAS est relativement intuitif. Quelques informations sont cependant à noter avant de débuter. Chaque ligne d'instruction doit se terminer par un point-virgule. Chaque ensemble d'instruction doit se terminer par l'instruction "RUN;". Pour exécuter un ensemble d'instructions, il sut de le sélectionner et de cliquer sur le bouton RUN (ou d'appuyer sur "F5"). SAS ne diérencie pas majuscule et minuscule. Il faut toujours vérier dans le log qu'aucune erreur n'a eu lieu avant d'interpréter l'output. SAS travaille directement sur les bases de données et ne les charge pas. Toute modication est alors automatiquement sauvegardée. Il est conseillé d'éviter de travailler sur la version originale de la base. Il est possible d'insérer des commentaires dans le code sous la forme /* Commentaire /*. Il faut toujours fermer le tableur avant de faire une modication sur une base. 1.2 Manipulation des données. 1.2.1 Importer des données. Avant d'appeler des données, il nous faut créer une librairie. Il s'agit de déclarer le répertoire qui contient les chiers avec lesquels nous travaillons. L'instruction LIBNAME permet de donner un nom à sa "librairie". > LIBNAME nomlibrairie "chemindelalibrairie" ; 2
Importer une base de données qui est déjà au format SAS est simple. La commande DATA permet de créer une nouvelle base. La commande SET permet d'y insérer une base déjà existante. > DATA lib.base2 <Options>; > SET lib.base1 <Options>; Les commandes keep et drop permettent de choisir les variables à conserver lorsqu'on utilise une base pour en créer une nouvelle. Il est aussi possible de sélectionner certaines observations avec l'option WHERE. > DATA lib.base2; > SET lib.base1 (WHERE = (var1=1) ); > KEEP var1 var2 var3; L'importation de données provenant d'excel se fait simplement avec la procédure IMPORT. L'option REPLACE permet d'écraser la base si elle est déjà existante. La commande GETNAMES permet de déclarer que la première ligne de la base contient le nom des variables. > PROC IMPORT DATAFILE="C:... Table.xls" OUT=lib.base REPLACE; > GETNAMES = yes; La création de variable se fait simplement en déclarant leur nom et en les dénissant avec l'opérateur "=". > var2 = log (var1); Pour acher la base de données, il est possible d'utiliser le tableur (En allant chercher l'objet dans la fenêtre de l'exporer). La procédure PRINT permet d'acher les données dans l'output. L'option KEEP permet de n'acher que certaines variables. Si elle n'est pas précisée, c'est toute la base qui est achée. > PROC PRINT data=lib.base1 (KEEP = var1 var2 var3); La procédure Contents permet de résumer de manière synthétique une base de données. > PROC CONTENTS data=lib.base1; 1.2.2 Mise en forme des données. La commande rename permet de renommer les variables. > RENAME var2 = Prix ; Lorsque vous disposez de variables qualitatives codées, il est possible de nommer les diérentes modalités grâce aux formats. Il faut alors dénir le format... > PROC FORMAT; > VALUE $csp > "1" = "Ouvrier" > "2" = "Employé" >... > ; 3
... et appliquer ce format à (ou aux) variable(s) correspondante(s). > FORMAT var1 $sex.; Nous pouvons aussi appliquer un label à la variable. Ces labels remplaceront le nom des variables dans les tableaux et graphiques (Si la commande label y est précisée). > LABEL > var1 = sexe de l'individu > var2 = catégorie socio-professionnelle > var2 = âge de l'individu > ; La procédure SORT permet de trier per ordre croissant la base. > PROC SORT data=lib.base1; > BY var1 ; 1.2.3 Fusionner ou séparer des bases. Il est possible de fusionner simplement deux bases contenant exactement les mêmes variables. > DATA lib.base3; > SET lib.base1 lib.base2; Si par contre les deux bases dièrent au niveau des variables, nous devons utiliser la procédure MERGE. Les deux bases devront alors avoir une variable qui sert d'identiant (Telle qu'un numéro d'observation). Note : Lorsqu'on utilise la commande "by", il faut toujours trier la base grâce à la procédure SORT au préalable. > DATA lib.base3; > MERGE lib.base1 lib.base2; > BY ident; Lors d'une étape DATA, il est possible de séparer une base en plusieurs bases. > DATA lib.base2 lib.base3 ; > SET lib.base1; > IF var1 = 1 THEN OUTPUT base2 ; > IF var1 = 2 THEN OUTPUT base3 ; 1.2.4 Exporter des données. La base sur laquelle nous travaillons sous SAS peut être exportée au format.xls grâce à la procédure EXPORT. > PROC EXPORT data=lib.base outle="c:...base.xls" REPLACE ; 4
1.3 Statistiques descriptives et graphiques. 1.3.1 Statistiques descriptives. Les statistiques descriptives de base s'obtiennent grâce à la procédure MEANS. Il sut d'entrer en option les statistiques désirées pour les obtenir. Si on ne précise pas de variable concernée par la commande VAR, SAS achera les statistiques demandées pour toute la base. > PROC MEANS data=lib.base1 <N MEAN MIN MAX STD> ; > VAR var1 var2 var3 ; > <OUTPUT OUT = resultats MEAN = var1 var2 var3;> La procédure UNIVARIATE permet de sortir des statistiques descriptives détaillées pour une variable. > PROC UNIVARIATE data=lib.base1 ; > VAR var2; 1.3.2 Acher des tableaux. La procédure FREQ permet d'acher un tableau de fréquence pour les variables catégoriques. > PROC FREQ data=lib.base1 ; > TABLES var1 var2 <OUT=>; Il est aussi possible de créer avec cette procédure un tableau à deux entrées (en posant une astérisque entre les variables). > PROC FREQ data=lib.base1 ; > TABLES var1*var2 / CHISQ EXPECTED DEVIATION CELLCHI2 ; La procédure FREQ contient de nombreuses options. procédure sont facilement récupérables en ligne. Des tutoriaux au sujet de cette seule 1.3.3 Graphiques simples. La plupart des graphiques sont eectués grâce à la procédure GPLOT. > SYMBOL INTERPOL = scatter COLOR = red VALUE = square ; > PROC GPLOT data=lib.base1 ; > PLOT var1*var2 ; Les graphiques relatifs aux variables catégoriques (histogrammes, graphiques circulaires...) sont eectués grâce à la procédure GCHART. > PROC GCHART data=lib.table ; > VBAR var1 ; 5
Nous achons ici un histogramme vertical. Nous aurions très bien plus taper les commandes HBAR, PIE... pour changer le type de graphique. La distribution d'une variable peut être représentée graphiquement en utilisant la procédure UNIVARIATE. > PROC UNIVARIATE data = lib.table ; > HISTOGRAM var1 / KERNEL ; 1.4 Un peu d'économétrie... 1.4.1 Régression simple. Une régression linéaire basique (MCO) s'opère avec la procédure REG. L'option outest permet de classer les coecients estimés dans une base à part. L'option SIMPLE demande d'acher des statistiques simples relatives à la régression. La commande OUTPUT permet d'acher dans la fenêtre du même nom les résidus, valeurs prédites... La commande TEST permet notamment d'eectuer des tests de nullité jointe (Fischer). > PROC REG data=lib.base OUTEST=parametres SIMPLE; > MODEL y = x1 x2 x3 ; > OUTPUT OUT = residus RESIDUAL = resid ; > OUTPUT OUT = prediction P = predictions ; > TEST x1 = x2 = 0 ; > QUIT; 1.4.2 Modèles binaires. Les modèles de type logit ou probit peuvent s'eectuer sous SAS grâce à la procédure LOGIS- TIC. L'option descending permet de tester la probabilité que y=1 plutôt que 0. L'option CLASS permet de discrétiser automatiquement une variable catégorique en dummies. > PROC LOGISTIC data=lib.table DESCENDING ; > CLASS x3 ; > MODEL y = x1 x2 x3 ; > QUIT ; 1.4.3 Données de panel. La procédure TSCSREG permet d'introduire des modèles en panel sous SAS. L'option FIXONE correspond à un modèle à eets individuels xes. FIXTWO comprend des eets xes indiduels et de périodes. L'option RANONE correspond à un modèle à eets individuels aléatoires. Notons qu'il faut trier la base (PROC SORT) par individu puis par période avant de lancer une régression en panel. > PROC SORT DATA = lib.base1; > BY individu année; > PROC TSCSREG DATA = lib.base1; > MODEL y = x1 x2 x3 / RANONE; > ID individu année; 6
Des tutoriaux sur les méthodes de régression plus poussées et tests sous SAS sont bien entendu disponible sur internet. 7
2 Exercice. Nous allons maintenant travailler sur une application directe des outils présentés dans la partie Procédure. Nous nous pencherons dans un premier temps sur une base de donnée ctive appelée enquete11.xls. elle contient cinquante observations et neuf variables. Les données originales sont sous format brut. Le premier travail consistera a nettoyer et à mettre en forme les données. Nous la fusionnerons ensuite avec une base déjà enregistrée au format SAS intitulée enquete0910. Nous procéderons enn à un traitement statistique et économétrique simple. 2.1 Partie 1 - Importation et manipulation des données. 1. Créez une librairie nommée enquete. Il s'agira du dossier où vous avez déposé les chiers relatifs à la formation. Importez sous SAS la base enquete11.xls. 2. Achez la base de donnée dans l'output. 3. Renommez les variables comme telles: var1: Individu var2: Age var3: CSP var4: Sexe var5: Salaire var6: Budget var7: Avis var8: Satisfait var9: Annee 4. Ajoutez les labels aux variables en suivant le modèle (Les modalités sont présentes à titre indicatif): Variable label modalités Individu Identiant de l'individu Age Age de l'individu CSP Catégorie socio-professionnelle 1=ouvrier 2=employé 3=intermédiaire 4=cadre 5=indépendant Sexe Sexe de l'individu 0=femme 1=homme Salaire Salaire mensuel Budget Budget alloué au secteur Avis Avis sur le produit 1=très insatisfait 2=insatisfait 3=neutre 4=satisfait 5=très satisfait Satisfait Se déclare satisfait 0=non 1=oui Annee Année de la réponse Table 1: Labels à appliquer 8
5. Pour une observation dans la base, le salaire est manquant. Supprimez cette observation avec l'option WHERE. 6. Fusionnez la base avec la base enquete0910. 7. Eectuez un tri des données par sexe. 8. Séparez la base en deux. Une base enquetemenpour les hommes et une base enquetewomenpour les femmes. 9. Exporter ces deux bases au format.xls. Vériez sous excel la compatibilité de ce nouveau chier. 2.2 Partie 2 - Statistiques descriptives et graphiques. 1. Obtenez les statistiques descriptives sur toute les variables de la base. Quelle est la moyenne des salaires? Quel est l'écart-type des âges? 2. Représentez graphiquement la densité des salaires. 3. Achez la répartition des CSP dans un tableau avec la procédure FREQ. 4. Eectuez un tableau croisé entre sexe et CSP. 5. Représentez graphiquement le lien entre salaire et avis. (Nuage de points) 6. Représentez graphiquement le lien entre CSP et avis. (Histogramme) 2.3 Partie 3 - Analyse des données et économétrie. 1. Eectuez une régression poolée du salaire, sexe, age sur l'avis. (MCO) 2. Eectuer une régression poolée du salaire, sexe, age, CSP sur la satisfaction binaire. (LOGIT) 9