TP SAS initiation IUP MIAGE L3



Documents pareils
SAS de base : gestion des données et procédures élémentaires

INITIATION AU LOGICIEL SAS

Traitement des données avec Microsoft EXCEL 2010

EXCEL TUTORIEL 2012/2013

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Excel avancé. Frédéric Gava (MCF)

Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP

BIRT (Business Intelligence and Reporting Tools)

GUIDE Excel (version débutante) Version 2013

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Dossier I Découverte de Base d Open Office

TABLEAU CROISE DYNAMIQUE

Créer le schéma relationnel d une base de données ACCESS

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

données en connaissance et en actions?

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

La place de SAS dans l'informatique décisionnelle

Le Langage SQL version Oracle

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Débuter avec Excel. Excel

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Note de cours. Introduction à Excel 2007

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Encryptions, compression et partitionnement des données

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

Le langage SQL Rappels

Le Langage De Description De Données(LDD)

Parcours FOAD Formation EXCEL 2010

SUPPORT DE COURS ACCESS 2010

Initiation à LabView : Les exemples d applications :

La base de données dans ArtemiS SUITE

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

L export de SAS vers Excel expliqué à ma fille

Création de Sous-Formulaires

Édu-groupe - Version 4.3

LES ACCES ODBC AVEC LE SYSTEME SAS

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

COURS WINDEV NUMERO 3

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE MINISTERE DE LA FORMATION PROFESSIONNELLE. Microsoft. Excel XP

EXCEL et base de données

CREG : versailles.fr/spip.php?article803

Guide d utilisation pour

SAP BusinessObjects Web Intelligence (WebI) BI 4

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Alain DI MAGGIO Mise à jour sur le site 11/01/10

COURS DE MS EXCEL 2010

Cours iguess. inotes v10.1

Microsoft Excel Présentation du tableur Excel

MEDIAplus elearning. version 6.6

Excel 2010 Intermediaire

8. Gestionnaire de budgets

TD d économétrie appliquée : Introduction à STATA

Ouvrir le compte UQÀM

TABLEAU CROISE DYNAMIQUE

Business Intelligence

Comment utiliser FileMaker Pro avec Microsoft Office

Cours Excel : les bases (bases, texte)

Gestion de références bibliographiques

1. Introduction Création d'une requête...2

SOMMAIRE. Travailler avec les requêtes... 3

Guide pour les chercheurs. Version 1.0

Tutoriel Prise en Main de la Plateforme MetaTrader 4. Mise à jour : 7/09/

Langage SQL : créer et interroger une base

1 Modélisation d être mauvais payeur

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Groupe Eyrolles, 2003, ISBN : X

Once the installation is complete, you can delete the temporary Zip files..

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Modes Opératoires WinTrans Mai 13 ~ 1 ~

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

l'ordinateur les bases

Présentation du langage et premières fonctions

Création et Gestion des tables

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

Importation de fichiers Eagle

Créer un tableau avec LibreOffice / Calc

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Configuration de GFI MailArchiver

Utilisation avancée de SugarCRM Version Professional 6.5

Formation. Module WEB 4.1. Support de cours

PARTAGER UN ANNUAIRE COLLECTIF DE SIGNETS AVEC DEL.ICIO.US

Introduction à MATLAB R

Numbers sur ipad. Atelier Formation Numbers sur ipad. [Notes extraitres de l'aide en ligne]

Manuel d utilisation du site web de l ONRN

La Clé informatique. Formation Excel XP Aide-mémoire

Comment accéder à d Internet Explorer

WINDOWS SHAREPOINT SERVICES 2007

Initiation à la programmation en Python

Excel 2007 Niveau 3 Page 1

Création et utilisation de formulaire pdf

Séance 0 : Linux + Octave : le compromis idéal

Transcription:

TP SAS initiation IUP MIAGE L3 Année 2008-2009

Sources Cours SAS, IUT STID Grenoble, Eric PREUD'HOMME I.G.W.T. Juin 2001 «Maîtriser SAS Base et SAS Macro», DUNOD, Hélène Kontchou Kouomegni et Olivier Decourt IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 2

Le «système SAS» (Statistical Analysis System) est le logiciel de traitement de données le plus complet du marché. Les procédures SAS sont très complètes et dépassent largement le cadre de l initiation que nous allons faire. SAS est très répandu. Il a acquis depuis son lancement en 1960 une situation dominante dans beaucoup de secteurs d activités. En France l INSEE, ELF, EDF, les banques, les assurances, les laboratoires pharmaceutiques, les organismes de Sécurité Sociale l ont adopté. La situation de monopole est telle que SAS Institute a entrepris une grande opération de diversification. Pour SAS, le calcul statistique n est plus qu accessoire dans la stratégie qui vise à s immiscer dans toutes les étapes de la gestion de l information à travers les réseaux de l entreprise, de la saisie à la prise de décision : KDD (Knowledge Discovery in Data) et Data Mining. Les solutions SAS couvrent l ensemble des métiers de l entreprise (ressources humaines, finance, marketing, commercial, achats, risque, pilotage des systèmes d information) et répondent aux spécificités des secteurs d activité (télécommunications, distribution, banque, assurance, industrie pharmaceutique). Elles contribuent à l optimisation de l organisation et des coûts, à la croissance des revenus et permettent de mettre en œuvre un véritable pilotage de la performance de l entreprise. SAS est un logiciel très puissant et très complet mais en contre-partie son apprentissage est complexe et son coût élevé. SAS est composé de différents modules qui se louent séparément. SAS peut s utiliser, dans le cadre de votre formation, en assimilant le langage SAS 1 ou en utilisant les modules «cliquer-résultat» comme SAS/ ASSIST, SAS Enterprise Guide ou SAS/Enterprise Miner. Nous privilégierons la première approche car elle permet une utilisation plus approfondie de SAS même si c est au prix d un certain temps d'apprentissage. Le Système SAS fonctionne sur plusieurs systèmes (WINDOWS, UNIX...). SAS est une marque déposée par SAS Institute Inc 1 SAS possède en fait 3 langages. Le langage SAS et son module Macros bien sûr, mais aussi le langage SQL et le langage le SCL pour créer des applications type Visual Basic (SAS/AF, SAS/FSP) IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 3

Sommaire I. Présentation de SAS 7 A. Introduction 7 B. Les fenêtres SAS 8 C. Notion de programme 11 1. Saisie du programme 11 2. Sauvegarde des instructions du programme 11 3. Exécution du programme (F8) 11 4. Analyse du déroulement du programme 12 5. Visualisation des résultats et personnalisation de la fenêtre OUTPUT (complément) 12 II. Fichiers de données SAS 13 A. Nom des fichiers SAS 13 B. Les bibliothèques 14 1. Les 2 bibliothèques prédéfinies WORK et SASUSER 14 2. Comment créer VOTRE bibliothèque? 14 3. Détail sur votre bibliothèque (LIBRARY) 15 C. Visualisation des fichiers SAS 16 1. Visualiser les données à partir de la fenêtre EXPLORER 16 2. Visualiser la structure de la table via la fenêtre Explorer 17 D. Notions de FORMAT et INFORMAT 17 III. Les programmes SAS 19 IV. Les étapes DATA 19 A. Lecture des données 19 1. Données incluses dans le programme. (CARDS) 19 2. Utilisation de fichiers de données SAS existants : Instruction SET 22 3. Utilisation de fichiers de données externes à SAS : INFILE 26 4. Importation d un fichier externe via les menus 27 B. Traitements des données 30 1. Les opérateurs 30 2. Les fonctions 31 C. Fusion de tables 34 1. Fusion verticale de deux fichiers 34 2. Fusion horizontale de deux fichiers 35 D. Autres notions importantes 38 1. L instruction DO / END 38 2. L instruction RETURN 39 3. L instruction RETAIN 39 V. Quelques procédures pour la gestion des données 40 A. Proc PRINT 40 B. Proc contents 40 C. Proc sort 41 D. Proc datasets 42 E. Proc Transpose 43 F. Proc Format 45 1. Les champs de valeurs 46 2. Les options principales étant 46 3. Visualisation des formats utilisateurs 47 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 4

4. Format permanent Library= ; puis Libname library nom de bibliothèque ; 49 5. Informat (INVALUE) 50 G. Proc Tabulate 52 H. Proc SQL 56 1. La syntaxe 56 2. Les options 57 3. Les commandes SQL 57 VI. Les graphiques 68 1. La procédure GCHART 69 2. La procédure GPLOT 72 VII. Quelques procédures pour l analyse statistique 74 A. Les analyses univariées 74 1. Les variables quantitatives : la PROC UNIVARIATE 74 2. Détails statistiques 77 3. Les graphiques avec la Proc Univariate 78 B. Les analyses n-variées 81 1. Analyse portant sur des variables qualitatives 81 2. Analyse portant sur des variables quantitatives et qualitatives 85 3. Les variables quantitatives, la corrélation 88 VIII. Analyse interactive de données : SAS/INSIGHT 91 A. Ouverture d une table 91 1. Aperçu rapide de quelques menus 93 B. Analyse d une Variable qualitative 94 C. Variable quantitative ; Analyse univariée 99 1. Boxplots, histogrammes, moments 99 2. Fonction de répartition 101 3. Densité de probabilité 101 D. Etude de plusieurs variables quantitatives 102 1. Nuage de points (scatter plot) 103 2. Stratification par une variable qualitative, ou quantitative agrégée (TOOL) 103 3. Régression (Fit XY) 104 4. Lancement d INSIGHT avec le langage SAS 105 IX. L ODS : Gestion des sorties SAS 105 A. Quelques notions basiques sur l HTML 106 B. Utilisation de l ODS de SAS. Objets de sortie 107 C. Trois sorties possibles 108 1. Sortie HTML basique 109 2. Sélection d objets en sortie : ODS TRACE, ODS SELECT, ODS EXCLUDE 110 3. Sorties HTML sophistiquées 114 4. Sorties vers des fichiers de données 121 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 5

Table des exercices Exercice 1...21 Exercice 2...26 Exercice 3...29 Exercice 4...33 Exercice 5...34 Exercice 6...37 Exercice 7...41 Exercice 8...45 Exercice 9...51 Exercice 10...55 Exercice 11...62 Exercice 12...68 Exercice 13...71 Exercice 14...75 Exercice 15...78 Exercice 16...81 Exercice 17...84 Exercice 18...88 Exercice 19...90 Exercice 20...92 Exercice 21...97 Exercice 22...100 Exercice 23...102 Exercice 24...103 Exercice 25...104 Exercice 26...111 Exercice 27...113 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 6

I.Présentation de SAS A.Introduction SAS est le seul éditeur à pouvoir collecter toutes les informations provenant des systèmes opérationnels, quels que soient leur source et leur format, et à les intégrer dans un processus décisionnel grâce à sa plateforme qui couvre toutes les étapes de traitement de l information : data warehousing, requêtes et rapport, analyse, restitution et partage de la connaissance. La documentation en ligne est accessible à l adresse suivante: http://v9doc.sas.com/sasdoc/ Les modules abordés dans ce cours sont : SAS/BASE (statistiques descriptives simples + gestion des données), SAS/INSIGHT (module «clique-bouton» d exploration des données). SAS peut s utiliser en mode écran ou en différé. Mode écran : taper la commande sas & Pg_sas.sas est le nom du programme SAS. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 7

B.Les fenêtres SAS Lancez le programme SAS, vous allez voir apparaître le DMS ( Display Manager System) de SAS qui contient cinq fenêtres essentielles 2 : Résultats de compilation Explorer : permet de créer des bibliothèques pour gérer les fichiers de données. Enhanced Editor : Pour entrer votre Code SAS Pour gérer toutes les sorties des programmes Contient tous les résultats La fenêtre Explorer Permet de gérer les bibliothèques et les fichiers de données. On peut créer, visualiser, modifier une fichier de données. 2 Si tel n'est pas le cas, allez dans le menu Windows/Cascade ou si une des fenêtres est absente, faites View/'nom de la fenêtre' IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 8

La fenêtre Enhanced EDITOR Elle contient, comme son nom l'indique, les instructions SAS à exécuter. Grâce aux menus attachés à CETTE fenêtre, vous pouvez saisir un programme, le sauvegarder, le rappeler, le modifier... La fenêtre LOG (Touche F6) Après exécution d'un programme, cette fenêtre contient chaque instruction exécutée et éventuellement les erreurs rencontrées. Il est indispensable de consulter cette fenêtre avant de lire les résultats contenus dans la fenêtre OUTPUT. La fenêtre OUTPUT (Touche F7) Cette fenêtre contient tous les résultats des instructions exécutées par SAS: tests, tableaux de valeurs... Elle ne doit être consultée qu'après la LOG. Il vous est possible de sauvegarder tout ou partie du contenu de cette fenêtre et de récupérer le contenu sous WORD. La fenêtre RESULTS Permet de gérer toutes les sorties produites par les programmes SAS exécutés préalablement. Elles permet d accéder rapidement à la sortie qui vous intéresse. Ainsi, après exécution du programme contenu dans l Enhanced EDITOR précédent, on observe le résultat suivant: Vous constatez que les instructions et les commentaires d'exécution sont "passés" dans la fenêtre "LOG", quant aux résultats, ils figurent dans la fenêtre "OUTPUT". IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 9

Quant à la fenêtre Results, elle contient le «plan» des résultats disponibles. Nous voyons qu une procédure MEANS a été exécutée et que nous disposons des «Summary Statistics» : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 10

C.Notion de programme 1.Saisie du programme Activez la fenêtre EDITOR et cliquez sur FILE/NEW pour vider son contenu. Vous allez taper dans la fenêtre le programme suivant : data conso; input numero montant; cards; 311000 1000 311001 2600 311003 3200 ; run ; proc print ; run ; Création d une table SAS nommée CONSO contenant 2 variables (2 champs : NUMERO et MONTANT) et 3 observations (lignes de données). Le «;» ponctue toutes les lignes de SAS. L instruction RUN conclue une étape DATA ou une procédure. Procédure permettant l édition des données de la table SAS précédemment créée. 2.Sauvegarde des instructions du programme 3 Toujours dans la fenêtre " EDITOR" faites FILE/SAVE AS et enregistrez ce programme dans votre répertoire sous le nom «PREMIER.SAS» par exemple. 4 3.Exécution du programme (F8) Nous allons exécuter le programme précédent. Assurez-vous que la fenêtre LOG est visible. Dans la fenêtre "EDITOR" allez dans LOCALS/SUBMIT, ou cliquez sur le bouton ou encore tapez sur F8. Une fois l'exécution achevée, allons dans la fenêtre LOG (F6) pour voir les commentaires d'exécution. Il est fondamental d'y aller avant d'interpréter les résultats car elle contient les éventuels messages d erreurs. Remarque : Pour n exécuter qu une partie du programme, sélectionnez préalablement la partie souhaitée avant de taper F8 ou de cliquer sur le bouton. 3 Le fichier de programme est un fichier texte DOS banal qui peut ensuite être édité sous Word 4 L extension «.SAS» est réservée au fichiers de programme SAS. Ce sont des fichiers ASCII standard. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 11

4.Analyse du déroulement du programme Vérifier que le programme s est bien exécuté en basculant sous la fenêtre LOG. SAS a prévu des repères visuels : le bleu est associé à la bonne exécution, le vert à un signalement et le rouge à une erreur. 5.Visualisation des résultats et personnalisation de la fenêtre OUTPUT (complément) Si tout s'est bien passé, la fenêtre OUTPUT (F8) apparaît avec les résultats. Par défaut SAS affiche dans la fenêtre OUTPUT : la date, le numéro de page. Vous pouvez les effacer en mettant en début de programme les options suivantes : Options nodate nonumber ; Vous pouvez aussi changer la taille du contenu de la fenêtre OUTPUT en paramétrant la taille des lignes et des pages. x pouvant prendre les valeurs 64 à 256. Options linesize=x pagesize=y; IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 12

y pouvant prendre les valeurs 15 à 32 767. Remarque : Vous pouvez sauvegarder les résultats contenus dans la fenêtre OUTPUT soit en utilisant le menu FILE / SAVE AS qui créé un fichier.lst soit en sélectionnant les données et en les copiant/collant dans Word par exemple. II.Fichiers de données SAS SAS ne peut effectuer de calculs que sur des fichiers de données type - SAS. Vous devez donc, avant toutes choses saisir vos données dans un programme SAS ou, ce qui est le plus courant, convertir votre fichier EXCEL, DBASE, Lotus 1-2-3, ASCII, tables ORACLE, au format SAS (.sas7bdat). Dans la suite du cours, nous apprendrons à réaliser des importations de données. Jusqu à la version 9 de SAS, les tables SAS étaient limitées à 32 767 variables désormais il n y a plus cette limite. Le nombre d observations est limité par le système d exploitation. A.Nom des fichiers SAS SAS utilise son propre système pour nommer les fichiers de données. Tout fichier SAS a un nom du type LIBREF.FILE où LIBREF est le nom de la bibliothèque (8 caractères maximum) et FILE le nom du fichier (32 caractères maximum). La bibliothèque est l endroit où se trouve le fichier de données SAS. Elle se substitue au chemin du DOS. Prenons par exemple le fichier de données WORK.DONNEE. Il désigne le fichier SAS DONNEE dans la bibliothèque WORK W O R K. DONNEE Correspond en réalité à (pour le DOS) C : \...\S A S \ W O R K \ DONNEE.Sas7bdat Remarques: Tout fichier de données SAS a donc une adresse de stockage. Il est inutile de le sauvegarder car ceci est fait automatiquement fait par SAS. Si vous voulez mettre vos fichiers de données ou dans votre répertoire personnel il vous faudra créer une bibliothèque dont l adresse sera l endroit où vous voulez mettre vos fichiers. Si vous ne préfixez pas un fichier SAS par une bibliothèque, le système va dans la WORK le stocker ou le chercher. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 13

B.Les bibliothèques 1.Les 2 bibliothèques prédéfinies WORK et SASUSER Il y a d'origine deux bibliothèques sous SAS. Une temporaire (WORK) et une permanente (SASUSER). La bibliothèque WORK détruit les fichiers qu elle contient dès que vous quittez SAS. A l inverse de SASUSER. 2.Comment créer VOTRE bibliothèque? La bibliothèque est l endroit où se trouve le fichier de données SAS. Il vous faut la créer à chaque session de SAS. a)a partir de la fenêtre Explorer : Dans la fenêtre explorer appeler le menu contextuel (Clic droit) puis sélectionner New. La boîte de dialogue suivante apparaît. Nom de votre bibliothèque personnelle Sélectionnez votre répertoire personnel IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 14

b)à partir de la barre d outils : Le bouton fait apparaître la même boîte de dialogue que précédemment. c)code SAS (à saisir sou la fenêtre EDITOR) : Libname lib1 C:\Mes Documents\tp ; 3.Détail sur votre bibliothèque (LIBRARY) Si tout a bien fonctionné, vous devriez avoir dans la fenêtre Explorer : Pour avoir des détails sur ces bibliothèques, allez dans View/ Details : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 15

C.Visualisation des fichiers SAS Copiez le fichier DONNEES.sas7bdat sous votre répertoire personnel. Basculez dans SAS et cliquez sur les bibliothèques (Libraries) de la fenêtre EXPLORER, descendez sous votre bibliothèque personnelle. Le fichier SAS Donnees est bien situé sous votre bibliothèque. Remarque Importante : Pour revenir en arrière (Fermer la fenêtre donnant le contenu d une bibliothèque et afficher la liste des bibliothèques cliquez sur de la barre d outils. 1.Visualiser les données à partir de la fenêtre EXPLORER A partir de la fenêtre EXPLORER, cliquez sur votre table SAS, le menu contextuel (clic droit) fait apparaître le menu OPEN permettant de visualiser le contenu de la table. En cliquant sur les en-têtes de colonnes (variables) vous pouvez changer la mise en forme, masquer des colonnes ou même visualiser les attributs de la colonne (Nom, Format, ). IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 16

2.Visualiser la structure de la table via la fenêtre Explorer Sélectionner la fenêtre Explorer puis cliquez sur la bibliothèque puis choisissez Views Columns (Afficher les colonnes) dans le menu contextuel (clic droit). Column name Length Format Informat Label C est le nom de la variable qui sera utilisé dans les procédures les étapes DATA etc. Son type (numérique ou caractère) est symbolisé par une icône. Longueur maxi : 32 caractères. C est la longueur (en bytes) $ variable caractère 8 variable numérique C est le format d affichage de la variable. C est le format de lecture, utile si vous importez des données. Toujours pour la date, remarquez que vous ne pouvez importer que des dates en format ddmmyy8. Etiquette de la variable à ne pas confondre avec le nom de la variable. Longueur maxi 256 caractères. D.Notions de FORMAT et INFORMAT SAS dissocie les formats en lecture (INFORMAT), des formats d affichage (FORMAT). SAS dispose d environ 70 formats d affichage pour les variables. (nombre, date, heure, chaîne de caractère..).si vous ne trouvez pas votre bonheur, vous pouvez toujours définir vos propres formats (format d affichage), informats, masques d affichage. Liste de quelques FORMAT (format d affichage) et INFORMAT (format en lecture). IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 17

Format Valeur non Format (pour Valeur Remarque (syntaxe) formatée notre exemple) formatée $w. Mot_long $3. Moti Lit une chaîne de longueur w. (8 par défaut) w.d 125.236 6.2 125.24 C est le format numérique standard. BESTw. best3. Sas cherche le meilleur format. COMMAw.d 23451.23 comma10.2 23,451.23 Séparateur des milliers (version US) COMMAXw.d 23451.23 commax10.2 23.451,23 Séparateur des milliers (version française!) DATEw. 10847 date5. date7. date9. 12SEP 12SEP89 12SEP1989 DATETIMEw. d DDMMYYw 11316 11316 11316 10847 datetime7. datetime12. datetime18. ddmmyy5. ddmmyy6. ddmmyy8. 12SEP89 12SEP89:03 12SEP89:03:19 :43 25/12 251290 25/12/90 Les chiffres apparaissant après la date sont les heures minutes secondes. Format européen classique. Remarques sur les Dates Les dates sous SAS sont codées sous forme numériques. Le 0 correspond au 1/1/1960 le 1 au 2/1/1960 etc... Les nombres négatifs correspondent aux dates antérieures au 1/1/1960. Ainsi le 26/7/1989 est codé 10799 par SAS. (Il y a donc 10799 jours entre le 1/1/1960 et le 26/7/1989!) Les dates sur deux chiffres sont codées à partir de 1900. 56 signifie 1956. Pour modifier cela, en rapport avec l an 2000, voir l option YEARCUTOF de l instruction OPTIONS. Enfin SAS possède un système spécial de codage d une date et d une heure dans un même nombre. C est le nombre de secondes entre le 1/1/1960 minuit et votre date et heure. Ainsi, le 5/6/1989 9H30 est codé 928661400. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 18

III.Les programmes SAS Un programme SAS se compose de deux types d'instructions: les blocs DATA (pour données) et les blocs PROC (pour procédure). Un bloc DATA est un regroupement d'instructions SAS permettant de créer un ou plusieurs fichiers SAS à partir de données se trouvant dans des fichiers SAS créés auparavant ou dans des fichiers externes à SAS (texte, excel, access, oracle ). C'est à l'intérieur d'un bloc DATA que les transformations à apporter aux données sont effectuées. Un bloc PROC permet l'analyse des données à l'aide d'une procédure. Il est possible de documenter un programme en y ajoutant des commentaires. Pour ce faire, les deux formes suivantes peuvent être utilisées: /* COMMENTAIRE */ ou * COMMENTAIRE; La première forme permet également d'éliminer temporairement de l'exécution un bloc d'instructions en insérant au début du bloc les symboles /* et à la fin, */. Les programmes sas ont une extension.sas (ex : programme.sas). IV.Les étapes DATA A.Lecture des données L étape DATA est l étape quasi incontournable en langage SAS pour créer ou modifier un fichier de données. Nous allons distinguer 3 types d étape DATA pour lire les données : 1.Données incluses dans le programme. (CARDS) a)syntaxe très simplifiée Nom(s) du (des) fichier(s) de données SAS à créer. DATA nom fichier SAS ; INPUT var1 type1 var2 type2... var n type n ; instructions complémentaires ; CARDS ; liste des données RUN ; Noms des variables suivis de leur type, de leur informat. Le type contient les informations sur le type de la variable ($ si elle est de type texte, rien sinon), sur son format, sa longueur, sa position etc. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 19

Exemple Les deux points indiquent que les données sont manquantes pour la taille et le poids. Attention : Si la longueur de la variable n est pas renseignée, SAS impose une longueur de 8. Exemple Les deux points indiquent que les données sont manquantes pour la taille et le poids. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 20

b)lecture et restitution de dates (Informat et Format) De façon générale, lorsque SAS lit des données «spéciales» il faut lui préciser un format d entrée (nommé informat) derrière le nom de la variable dans l instruction INPUT. Vous pouvez ensuite déclarer un format de sortie (format) qui est en général lié à l informat. Exemple Exercice 1 : Saisir le programme précédent en omettant la déclaration du FORMAT puis en la rajoutant. Quelle différence observe t on au niveau des résultats? IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 21

2.Utilisation de fichiers de données SAS existants : Instruction SET a)syntaxe très simplifiée DATA nom(s) fichier(s) SAS (options); SET fichiersas 1 (options 1 ) fichiersas n (options n )[ options point=nomvariable nobs=nomvariable end=nomvariable ]; instructions complémentaires (IF, KEEP, DROP ; RUN ; L instruction SET ci-dessus permet de spécifier le (ou les) fichier de données SAS, éventuellement assortis d options, à partir duquel on va en construire un autre. b)copie d'un fichier SAS existant (1)Copie totale en utilisant l étape DATA Exemple Ces instructions permettent la création d'un fichier ACP qui est la copie conforme du fichier ACP de la bibliothèque SERVEUR. Remarque importante: Vous pouvez, tout simplement, faire un copier coller entre les deux bibliothèques dans l explorer! Si vous utilisez le langage SAS la PROC COPY permet de faire ce travail. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 22

(2)Copie partielle en ne conservant que certaines variables (KEEP) On ne conserve que les variables NOM, MONTANT et NOMBRE en ne supprimant que certaines variables (DROP) On supprime la variable AGE en conservant certaines observations (IF THEN, WHEREErreur! Signet non défini., OBS) IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 23

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 24

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 25

en éliminant certaines observation (delete) (3)Copies multiples sur des fichiers différents OUTPUT Il est possible de créer plusieurs fichiers à la fois en les spécifiant derrière l instruction DATA. L instruction OUTPUT nom_de_fichier permettra ensuite d affecter les observations dans les fichiers choisis. Exercice 2 : Au préalable, copiez le fichier Donnees sous votre espace utilisateur. - Dans SAS, créez une bibliothèque nommée MALIB qui pointe sur votre répertoire de travail. - Créez à partir de ce fichier, deux fichiers SAS distincts MINEURS et MAJEURS en fonction de la valeur de la variable AGE (<18 = MINEURS, >=18 = MAJEURS). Ces deux fichiers doivent être placés sous votre répertoire de travail. 3.Utilisation de fichiers de données externes à SAS : INFILE a)syntaxe très simplifiée DATA nom(s) fichier(s) SAS (options); INFILE fichiersas DLM= 09 x DSD MISSOVER FIRSTOBS=n de ligne; INPUT nom_col1 $ nom_col2. ; RUN ; DLM : défini le délimiteur (exemple : 09 x pour tabulation) MISSOVER : Par défaut, SAS va à la ligne suivante s il n a pas saisi toutes les données sur la ligne courante que son INPUT demandait. (option FLOWOVER). Il est beaucoup plus habituel de considérer comme manquantes les données ne figurant pas sur la ligne en question (option Missover). FIRSTOBS : définit la première ligne sur laquelle figurent les données. FORMAT : C est le format d affichage de la variable (Format de sortie). INFORMAT : C est le format de lecture (Format d entrée). IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 26

Vous pouvez préciser la longueur des variables. Remarque : Il est plus simple d utiliser les menus FICHIER / Importer des données. b)données ou fichiers inhabituels Dans le fichier précédent, les observations étaient sur une ligne. (Il y avait un individu par ligne). SAS permet également d importer des fichiers textes lorsqu il y a une observations sur plusieurs lignes ou plusieurs observations sur une ligne. (1)Cas où il y a plusieurs observations par ligne Le fichier PS.TXT contient les données suivantes: Pour l importer correctement, il suffit d inclure un «@@» dans le input qui permet de garder la ligne en mémoire tant que tout n a pas été lu. Voici le programme SAS correspondant: (2)Cas où il y a une observation sur plusieurs lignes Voici le contenu du COMMUNE.TXT: TOULOUSE 31555 ALBI 81004 AYGUEVIVES 31001 Pour l importer correctement, il faut donner un «/» dans l instruction INPUT pour préciser la fin de chaque ligne: 4.Importation d un fichier externe via les menus L importation d un fichier externe eut se faire en clique-bouton à partir du menu FILE puis IMPORT DATA. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 27

La première fenêtre permet de sélectionner le format du fichier à importer : La deuxième fenêtre propose un explorateur permettant de choisir le fichier à importer. Le bouton OPTIONS permet de gérer la 1 ère ligne des observations, les séparateurs Le nom de la table SAS et de la bibliothèque où elle va être stockée sont renseignés dans la troisième fenêtre. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 28

La dernière fenêtre propose de stocker dans un fichier.sas le code ainsi généré. L export se fait de la même façon à partir du menu FILE / IMPORT DATA. Exercice 3 - Application à partir du fichier DONNEES.TXT. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 29

B.Traitements des données Pour créer une nouvelle variable, il suffit de choisir un nom pour cette variable, d'appliquer la formule appropriée et de placer le nom de la variable à la gauche du signe d'égalité. 1.Les opérateurs Opérateurs arithmétiques: Opérateurs logiques: ** puissance (exposant) * multiplication / division + addition - soustraction < ou LT inférieur à <= ou LE inférieur ou égal à > ou GT supérieur à >= ou GE supérieur ou égal à = ou EQ égal à ^= ou NE différent de ou! ou ou OR & ou AND et ^ ou NOT négation La priorité d'exécution va d'abord aux éléments entre parenthèses, puis à (1) **, NOT; (2) *, /; (3) -, +; (4) EQ, NE, LT, GT, LE, GE; (5) AND et (6) OR. L'opérateur permet de concaténer deux chaînes de caractères. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 30

2.Les fonctions SAS compte également un bon nombre de fonctions qui peuvent être utilisées pour transformer les données. Voici un résumé des plus intéressantes. a)les fonctions d arrondie SAS FUNCTIONS: Truncation Functions CEIL(argument) returns the smallest integer that is greater than or equal to the argument FLOOR(argument) returns the largest integer that is less than or equal to the argument FUZZ(argument) returns the nearest integer if the argument is within 1E-12 INT(argument) returns the integer value ROUND(argument,roundoff-unit) rounds to the nearest round-off unit TRUNC(number, length) truncates a numeric value to a specified length b)les fonctions aléatoires Génération de nombres aléatoires Génère une réalisation d'une VA suivant une... RANBIN (seed,n,p) loi binomiale B(n,p) RANCAU (seed) loi de cauchy de paramètres 0,1. RANEXP (seed) loi exponentielle de paramètre 1 RANGAM (seed,a) loi Gamma de paramètres a,1. RANNOR (seed) (ou NORMAL) loi normale N(0,1) RANPOI (seed,m) loi de Poisson de paramètre m RANUNI (seed) (ou UNIFORM) loi uniforme U[0,1] Remarque: seed (graine en anglais) vous permet d'obtenir les mêmes séquences de nombres aléatoires (avec la même graine initiale). Si vous n'utilisez pas cette possibilité, choisissez pour seed la valeur 0 (la graine est déterminée à partir de l'heure et de la date) Voir l exemple suivant. Exemple: Générez 1000 réalisation d'une N(2,3²). DATA alean23; Un fichier temporaire WORK.ALEAN23 est créé. DO I=1 TO 100; Nous allons répéter 100 fois un groupe d'instruction (FOR du Pascal) x=rannor(12)*3+2; x est une réalisation d'une N(2,3²) Nous plaçons cette valeur dans le fichier OUTPUT; END; KEEP x; RUN; PROC PRINT; RUN; La boucle est terminée. Nous ne conservons que la variable x dans le fichier(i est inutile) Remarque: Si vous exécutez 2 fois cette séquence, vous obtiendrez la même série de nombre (car la graine est imposée à 12. Par contre, si vous mettez 0, les deux séquences obtenues seront différentes. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 31

c)les fonctions de conversion PUT et INPUT Afin de convertir un champ numérique en caractère et inversement, vous devez utiliser respectivement les fonctions PUT et INPUT. L exemple suivant illustre ceci : /*num est de type numérique, car est de type caractère*/ data origine; input num car $; datalines; 12 34 ; run; data finale; set origine; /*passage de variable numérique en variable caractère*/ numtocar=put(num,2.); /*passage de variable caractère en variable numérique*/ cartonum=input(car,2.); run; proc contents data=finale; run; Remarque : Voir aussi les fonctions PUTC, PUTN, INPUTC et INPUTN qui sont utilisées pour convertir en caractère ou numérique. L instruction PUT suivi du nom de la variable et de son format est utilisé dans les étapes DATA pour convertir le format de la variable. L exemple suivante illustre comment convertir la variable numérique MONTANT en euros : Data _Null_; montant=1145.32; put montant euro10.2; run; Ce qui donne dans la fenêtre LOG : Cf. PUT Statement dans la documentation SAS Language Reference: Dictionary. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 32

L instruction PUT et la fonction PUT renvoie le même résultat. Cependant, l instruction PUT permet de stocker le nouveau format dans une variable. Exercice 4 - : Dans le fichier Donnees, créez une variable AN_NAIS contenant l année de naissance calculée à partir de la variable AGE. d)la fonction RENAME La fonction RENAME permet de renommer une variable. L exemple suivant illustre cette fonction : /*la variable OLD est renommée NEW*/ data sortie; set entree; old=new ; run; e)les fonctions sur les dates SAS possède une multitude de fonction sur les dates, le tableau ci-dessous en présente quelques unes : DATDIF(sdate,edate,basis) DATE() DATEPART(datetime) DATETIME() DAY(date) JULDATE(date) MDY(month,day,year) MINUTE(time datetime) MONTH(date) QTR(date) TIME() TIMEPART(datetime) TODAY() WEEKDAY(date) YEAR(date) YRDIF(sdate,edate,basis) returns the number of days between two dates returns the current date as a SAS date value extracts the date from a SAS datetime value returns the current date and time of day returns the day of the month from a SAS date value returns the Julian date from a SAS date value returns a SAS date value from month, day, and year values returns the minute from a SAS time or datetime value returns the month from a SAS date value returns the quarter of the year from a SAS date value returns the current time of day extracts a time value from a SAS datetime value returns the current date as a SAS date value returns the day of the week from a SAS date value returns the year from a SAS date value returns the difference in years between two dates IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 33

Exercice 5 Modifier le format de la variable MONTANT de lib1.donnees1 en lui attribuant un format euro10.2 C.Fusion de tables 1.Fusion verticale de deux fichiers Cette fusion augmente le nombre d observations, ou individus d une table SAS. FICHIER 1 OBS X Y 1 23 Nom1 2 54 Nom2 3 123 Nom3 FICHIER 2 OBS X Y 1 678 Nom4 2 787 Nom5 FICHIER CONCATENE 1+2 SET FICHIER1 FICHIER2 OBS X Y 1 23 Nom1 2 54 Nom2 3 123 Nom3 4 678 Nom4 5 787 Nom5 Pour ce faire, il convient d utiliser le code suivant : DATA WORK.TOUT; SET FICHIER1 FICHIER2; RUN; Ce fichier contiendra l'ensemble des individus de ces deux fichiers sur les variables correspondantes. Remarque : Si une variable se trouve dans un des fichiers sans être dans le second, les individus seront portés manquants pour cette variable dans le second fichier. On peut également faire figurer des options derrière les noms des fichiers de données : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 34

data essai; set Fichier1(where=(X>100)) Fichier2 (where=(x<800)); run; Fusion avec l utilisation de l option IN= IN=Variable est une option des instructions SET et MERGE permettant de savoir d où vient l observation lorsque l on fusionne plusieurs fichiers de données : data work.tous; set Fichier1 Fichier2(in=x); if x=1 then Y= ZZ ; output; run; Ici X prend la valeur 1 lorsque l observation vient de Fichier2. 2.Fusion horizontale de deux fichiers a)fusion horizontale simple: L'instruction MERGE Cette instruction permet de fusionner deux fichiers (en augmentant le nombre de variables cette fois). Elle suppose que les individus (lignes) sont les mêmes et dans le même ordre5! Nous ne présentons ici qu'une version simple de cette instruction: FICHIER 1 OBS X Y 1 23 Nom1 2 54 Nom2 3 123 Nom3 FICHIER 2 OBS Z T 1 678 Nom4 2 787 Nom5 3 89 Nom6 FICHIER CONCATENE MERGE FICHIER1 FICHIER2 OBS X Y Z T 1 23 Nom1 678 Nom4 5 Sinon votre fichier résultat ne sera plus cohérent. L option BY permet d effectuer cette fusion en se basant sur une ou plusieurs variables identifiant les individus. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 35

2 54 Nom2 787 Nom5 3 123 Nom3 89 Nom6 Le code correspondant est le suivant : DATA WORK.TOUT; MERGE WORK.FICHIER1 WORK.FICHIER2; RUN; Syntaxe simplifiée b)fusion horizontale sophistiquée (MERGE avec option BY) DATA nom de fichier ; MERGE fichier1 fichier2 fichier3 ; BY Variable1 Variable2 ; RUN ; Remarques : Les variables dans le BY doivent figurer dans TOUS les fichiers de données à concaténer. Les fichiers doivent être triés par rapport aux variables figurant dans le BY ou être indexés par rapport à ces variables. Il est possible de spécifier un ordre décroissant Cf. Aide en Ligne. Prenons les deux fichiers CONSO_C et CONSO_V contenant les consommations des individus de consultations et de visites : Fichier CONSO_C : Obs NOM CONSULT 1 Nom1 20 2 Nom2 60 3 Nom3 100 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 36

Fichier CONSO_V : Obs NOM VISITE 1 Nom2 30 2 Nom4 60 Nous souhaitons fusionner ces deux fichiers en un seul. Chaque ligne représentant un patient. Nous allons dire à SAS de fusionner les deux fichiers par rapport aux individus : data ensemble; merge conso_c conso_v; by nom; run; Attention : Pour que BY fonctionne, les fichiers doivent avoir été triés par rapport à la variable contenue dans le BY (ici nom). Si tel n est pas le cas, utilisez PROC SORT. Obs NOM CONSULT VISITE 1 Nom1 20. 2 Nom2 60 30 3 Nom3 100. 4 Nom4. 60 Exercice 6 Fusionner les tables SAS, DONNEES et CARTO, sur la clé de fusion (NOM, PRENOM). Remarque : les tables DONNEES et CARTO ont été préalablement triées. Créer une table nommée FUSION. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 37

Exemple D.Autres notions importantes 1.L instruction DO / END L'énoncé DO permet de répéter un certain nombre de fois un bloc d'instructions. Il a la forme générale suivante: DO variable=début TO fin [BY incrément]; instruction1; instruction2;...; END; Cet exemple crée le fichier NORM qui contient 10 nombres aléatoires obtenus à partir d'une distribution normale de moyenne 0 et d'écart-type 1. L instruction OUTPUT dit à SAS d'écrire l'observation courante dans le fichier qu'on est en train de créer. L'énoncé DO est également utilisé dans les énoncés IF/THEN et ELSE pour exécuter un bloc d'instructions lorsque le résultat de la comparaison est vraie ou fausse. Exemple IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 38

2.L instruction RETURN L'instruction RETURN arrête l'exécution courante d'un bloc DATA et se positionne au début du bloc pour l'exécuter de nouveau. Avant de retourner au début du bloc, SAS écrit d'abord l'observation dans le fichier créé, à moins que des énoncés OUTPUT ne soient utilisés à l'intérieur du bloc (dans ce cas, l'emplacement de ces énoncés détermine si l'observation est écrite ou non). Exemple 3.L instruction RETAIN L'énoncé RETAIN demande à SAS de garder en mémoire les valeurs prises par certaines variables lors de l'exécution précédente du bloc DATA. Si on utilise RETAIN sans spécifier les variables à retenir, les valeurs de toutes les variables du bloc DATA seront conservées. En l'absence de l'énoncé RETAIN, SAS considère que les valeurs de la dernière exécution du bloc sont manquantes. Exemple Cet exemple calcule la somme des valeurs de MONTANT. La valeur de départ de SOMME est 0. On peut aussi spécifier plus d'une variable sur un même énoncé RETAIN; on doit indiquer après chaque nom de variable, la valeur de départ de celle-ci. Exemple : RETAIN SOMX 0 SOMY 0; On peut créer un compteur ou additionner les valeurs prises par une variable (comme dans l'exemple précédent) en utilisant une instruction de la forme: N+1; ou SOMX+X; Avec une instruction de cette forme, on n'a pas besoin d'utiliser un énoncé RETAIN. La valeur initiale de la variable accumulatrice est automatiquement 0. Pour une valeur de départ différente de 0, utiliser un énoncé RETAIN. Exemple : Créer une table contenant les 10 plus gros consommants par ville data top_ten(drop=cpt); retain cpt 0; set fusion_tri; by ville; cpt=cpt+1; if first.ville then cpt=1; if cpt <=10 then output; run; IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 39

V.Quelques procédures pour la gestion des données A.Proc PRINT Cette procédure permet d éditer les observations d une table. Syntaxe simplifiée : PROC PRINT DATA= chemin et nom du fichier de données ; RUN ; Code SAS : proc print data=lib.matable; run; B.Proc contents Cette procédure permet de visualiser la structure d une table. Syntaxe simplifiée : PROC CONTENTS DATA=nom_du_fichier_de_données ; RUN ; Code SAS : proc contents data=malib.donnees; run; IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 40

C.Proc sort La PROC SORT permet de réaliser des tris. Syntaxe simplifiée : PROC SORT [liste des options]; BY [DESCENDING] variables ; RUN ; Ci-dessous les options les plus fréquentes de la proc Sort : DATA=fichier-système-SAS spécifie le fichier-système-sas à trier, si DATA= est omis, SAS utilise le dernier fichier-système-sas créé. OUT=fichier-système-SAS spécifie le fichier de sortie éventuel, si OUT= est omis, le fichier original est remplacé. NODUPKEY=vérifie et élimine les observations ayant des valeurs pour la variable BY identique. Code SAS : proc sort data=malib.donnees; by descending montant; run; data temp; set malib.donnees; if _N_<11; run; proc print; run; Exercice 7 - : Saisir le code SAS ci-dessus, quel est le montant le plus élevé? Remarque : Cette procédure possède également des options permettant d'optimiser les temps de tris sur de gros volumes (TAGSORT, NOEQUALS, THREADS) que nous n'aborderons pas dans cette présentation. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 41

D.Proc datasets La PROC DATASETS permet de gérer vos fichiers de données. Vous pouvez copier tout ou partie d un fichier de données, en supprimer, visualiser leur contenu, éditer le contenu d une bibliothèque.. Syntaxe simplifiée : PROC DATASETS library=nom de bibliothèque <options>; DELETE fichiers; /* Pour supprimer les fichiers spécifiés. */ CHANGE nom actuel du fichier=nouveau-nom...; /* Pour renommer un fichier */ MODIFY fichier; /* Pour modifier, entre autres, les noms des variables d un fichier de données, modifier les formats, les étiquettes etc... Le fichier doit être situé dans la bibliothèque indiquée dans la procédure DATASETS. */ RENAME variable1=nouveau nom variable2=nouveau nom...; /* Pour renommer certaines variables du fichier de données spécifié dans la commande Modify. */ FORMAT liste de variables format1 liste de variables format2... /* pour modifier le format des variables sélectionnées */ RUN ; Code SAS : proc datasets library=malib; delete donnees1; run; PROC DATASETS LIBRARY=MALIB; MODIFY DONNEES3; FORMAT MONTANT 10.2; RUN; QUIT; Dans cet exemple, les montants auront un format 10.2. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 42

E.Proc Transpose Son nom est très explicite, elle permet en effet de transposer un fichier de données. Les colonnes deviennent les lignes et inversement. Elle permet aussi de réarranger de façon plus complexe certains fichiers. Voici un petit exemple tiré du SAS Procedures guide : DATA A; INPUT A B C; CARDS; 1 2 3 4 5 6 ; PROC PRINT; TITLE 'Le fichier original...'; RUN; PROC TRANSPOSE DATA=A; RUN; PROC PRINT; TITLE 'Le fichier transposé'; RUN; Ce qui donne Le fichier original... OBS A B C 1 1 2 3 2 4 5 6 Le fichier transposé OBS _NAME_ COL1 COL2 1 A 1 4 2 B 2 5 3 C 3 6 SAS a créé trois variables _NAME_,COL1 et COL2 qui contiennent les «lignes» du fichier précédent. La variable _NAME_ contient tous les noms de variables. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 43

Syntaxe simplifiée PROC TRANSPOSE (options); VAR variables; Les variables à transposer BY variables; Permet la création de sous-groupes... le fichier devra avoir été trié avant. Les variables BY ne sont pas transposées. ID variable ; Colonne contenant les noms des futures colonnes COPY variables : variables à recopier dans le fichier final sans les transposer. RUN ; Les principales options étant : DATA= et OUT= pour spécifier les fichiers de données d entrée et de sortie. Exemples utilisation de id. On modifie légèrement le programme précédent : DATA A; INPUT A B C D $; CARDS; 1 2 3 X 4 5 6 Y; PROC PRINT; TITLE 'Le fichier original...'; RUN; PROC TRANSPOSE DATA=A; ID D; RUN; PROC PRINT; TITLE 'Le fichier transposé'; RUN; Utilisation de COPY Le fichier original... OBS A B C D 1 1 2 3 X 2 4 5 6 Y Le fichier transposé OBS _NAME_ X Y 1 A 1 4 2 B 2 5 3 C 3 6 En ajoutant COPY C ; au dessous du ID D ; on obtient : Le fichier original... OBS A B C D IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 44

1 1 2 3 X 2 4 5 6 Y Le fichier transposé OBS C _NAME_ X Y 1 3 A 1 4 2 6 B 2 5 Exercice 8 A partir de Donnees, utiliser la procédure TRANSPOSE pour : Transposer la structure suivante : NOM PRENOM AGE SEXE MONTANT801 MONTANT802 La table de sortie devra s appeler DONNEES2. Renommer _801 en MONTANT01 et _802 en MONTANT02 Remplacer dans cette table les valeurs manquantes de montant801 et montant802 par des 0. Vérifier que MONTANT01 et MONTANT02 sont au format 10.2 Remarques pour l exercice : Au préalable trier la table Donnees sur la clé de transposition et créer la table Donneestri en sortie du tri. Attention, l option NODUPKEY de la PROC SORT permet de supprimer les doublons sur la clé F.Proc Format Il vous est possible, sous SAS, de définir vos propres formats et de les utiliser en faisant simplement référence à leur nom comme n importe quel autre format prédéfini. La procédure Format effectue ce travail. Les formats personnalisés ainsi créés sont stockés dans un catalogue SAS temporaire: WORK.FORMATS. 6 Une confusion à ne pas commettre : Lorsqu une variable est reformatée, sa valeur interne ne change pas, seule son apparence change. Pour un recodage, la valeur de la variable change (En général).7 Syntaxe simplifiée PROC FORMAT <options> ; VALUE nom champ de valeurs= valeur formatée ; Définit les formats d affichage INVALUE nom champ de valeurs= valeur formatée ; Définit ceux d entrées (input) PICTURE nom champ de valeurs= masque d affichage ; Pour présenter les données numériques en ajoutant des symboles ($25,152 ; 12-25-52...) 6 Si vous voulez les conserver, utilisez l option LIBRARY= ci dessous (pour les récupérer, utilisez «LIBNAME LIBRARY votre bibliothèque ;»). 7 Remarque : La procédure FREQ utilise la valeur de la variable formatée pour définir les classes du tri croisé. Il suffit de changer de format pour effectuer des regroupements en classes ou le contraire. L avantage de ceci est de ne jamais toucher au fichier original. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 45

SELECT entrées ; EXCLUDE entrées ; RUN ; Ne sélectionne dans le catalogue FORMATS que les noms de formats ou d informats indiqués ici. (entrées = nom de formats ici) N exclut du catalogue FORMATS que les noms de format ou d informats indiqués ici 1.Les champs de valeurs Ils peuvent être de quatre types Syntaxe Exemple Signification valeur 12 Seule 12 sera concernée valeur,valeur,...,valeur 14,18,25,36 Seules 12,18,25 et 36 seront concernées valeur-valeur 12-48 12<-48 12-<48 Tous les nombres entre 12 et 48 (inclus) seront concernés. [12 ;48] correspond à ]12 ;48] correspond à [12 ; 48[ Champ,champ,... 14, 12-48, 57,57-<62 Tous ces champs seront concernés. Pour inclure ou exclure certaines valeurs, vous pouvez utiliser «<». Ainsi, invalue anota 0-<10= Faible 10-12= Moyen 12<-20= Bon ; associera à 10 et à 12 moyen. Les mots clés Low, High et Other peuvent aussi être utilisé dans les champs de valeurs : invalue anota low-<10= Faible 10-12= Moyen 12<-high= Bon ; 2.Les options principales étant LIBRARY= nom de bibliothèque On donne ici le nom de la bibliothèque contenant un catalogue (SAS catalog) nommé FORMATS qui, comme son nom l indique, contient tous les formats créés avec la procédure FORMAT. Par défaut, les formats sont stockés dans un catalogue nommé FORMATS dans la bibliothèque WORK (temporaire). Ils seront donc perdus lorsque SAS sera désactivé. Pour conserver vos formats, indiquez votre libname derrière library=. Pour les récupérer déclarer votre bibliothèque sous le nom LIBRARY : LIBNAME LIBRARY /$HOME/TP... ; CNTLOUT=nom de fichier SAS IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 46

Permet de stocker dans un fichier de données SAS des informations sur les formats contenus dans FORMATS. (valeurs, domaine de validité etc...) Vous pouvez récupérer tout ou partie de ces informations pour redéfinir de nouveaux formats grâce à une autre option CNTLIN=nom de fichier SAS. Exemples Nous allons créer un nouveau format nommé «fsexe.» qui transforme «1» en «Masculin» «2» en «Féminin» et tous les autres nombres en «Non spécifié». Proc format ; value fsexe 1='masculin' 2='Féminin' other='non spécifié'; run; /* Nous allons utiliser le Format Fsexe. dans le PRINT ci-dessous */ proc print data=lib1.donnees3; var age sexe; format sexe fsexe.; /* Ne pas oublier le. a la fin du nom de format */ run; Nous obtenons : Remarques : - Dans l exemple ci-dessus, le format a été utilisé ponctuellement dans la procédure PRINT. Si vous voulez «l attacher» à la variable SEXE, il vous suffit de l utiliser dans une étape DATA (cf. plus bas) - Nous pouvons appliquer le Format précédemment défini pour tout autre variable. 3.Visualisation des formats utilisateurs Nous pouvons vérifier les formats en cours en allant dans L EXPLORER et en cliquant sur Work. Enfin, dans cette bibliothèque, il suffit de double cliquer sur le catalogue nommé FORMATS qui contient tous les formats (temporaires) créés par Proc format. Vous sélectionnez FSEXE et choisissez PROPERTIES dans le menu contextuel : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 47

IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 48

4.Format permanent Library= ; puis Libname library nom de bibliothèque ; Tous les formats précédents ont été crées dans la bibliothèque WORK. Ils seront donc perdus dès que SAS sera stoppé. Pour créer un format permanent, il faut utiliser l option LIBRARY= De plus, il vous est possible de spécifier un format lors d une étape DATA. Dans ce cas, le format restera TOUJOURS attaché à la variable. Ceci est utile lorsque vous donnez un caractère définitif à un format, mais cela impose à votre format d être toujours accessible.8 Exemple libname lib_format 'c :\SAS'; Proc format LIBRARY=lib_format ; value fsexe 1='masculin' 2='Féminin' other='non spécifié'; run; Le format fsexe. sera ajouté au catalogue FORMATS de la bibliothèque lib_format. Pour utiliser ce format pour créer un fichier de données nommé lib1.essai dont la variable SEXE sera formatée en utilisant «fsexe.». libname library 'c :\SAS'; /*pour que SAS aille y lire le format fsexe.*/ data lib1.essai; set lib1.donnees5; keep age sexe montant; format sexe fsexe.; run; Les instructions précédentes font que le format fsexe. sera toujours attaché à la variable sexe cidessus. Pour appliquer un format juste une fois, indiquez-le uniquement dans le PROC PRINT par exemple. proc print data=lib1.essai; /*Cet affichage impose au format fsexe d être disponible*/ run; Remarques importantes: A chaque fois que vous voudrez afficher le fichier lib1.essai, le format fsexe. DEVRA ETRE DISPONIBLE. (c est à dire, dans WORK.FORMATS, ou LIBRARY.FORMATS avec le libname adéquat.) Autrement dit, si vous quittez SAS et que vous voulez afficher lib1.essai, vous devrez taper : libname library 'C :\'; proc print data=lib1.essai; 8 Il devra donc être dans WORK ou dans LIBRARY IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 49

run; Lorsque SAS rencontre lib1.essai, il recherche le format fsexe. (car ce format est attaché à la variable sexe). Il commence la recherche dans WORK.FORMATS puis dans LIBRARY.FORMATS. S il ne le trouve pas, un message d erreur marque l interruption de la procédure. Remarque : Vous pouvez également déclarer la bibliothèque de format dans l instruction OPTIONS de la façon suivante : Options fmtsearch=(mesforms.formats) ; Puis : Proc format library=mesforms.formats fmtlib ; Run ; Le format crééé doit apparaître dans la fenêtre OUTPUT. 5.Informat (INVALUE) Vous pouvez définir vos propres formats d entrée. L exemple suivant illustre cette notion : proc format; invalue fnote 'N'=6 'MM'=8 'M'=10 'AB'=12 'B'=14 'TB'=16 'ABS'=. ; run; data temp; input nom $ @; do i=1 to 3; input note : fnote. @; output; end; keep nom note; cards; Jean-pierre AB B M Herve N MM MM Anestis TB TB TB Bernard TB N TB run; proc print data=temp; run; On obtient : Nous définissons l Informat Fnote. ici Note manquante remplacée par un point. Le caractère @ permet d attendre la fin de la ligne avant de sauter à la ligne suivante. Nous avons encore trois notes à lire avant de changer de ligne. Nous les lisons l une après l autre. Pour ôter la variable i du fichier de données OBS NOM NOTE 1 Jean-pie 12 2 Jean-pie 14 3 Jean-pie 10 4 Herve 6 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 50

5 Herve 8 6 Herve 8 7 Anestis 16 8 Anestis 16 9 Anestis 16 10 Bernard 16 11 Bernard 6 12 Bernard 16 Cf. Procedures guide pour des compléments sur cette procédure FORMAT. Exercice 9 Créer un format f_sexe : 1 : Homme 2 : Femme 0 : Non renseigné Créer un format f_age : 0<=age<=18 : moins de 18 ans 19<=age<=65 : 19-65 ans age>65 : plus de 65 ans Visualiser les formats créés IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 51

G.Proc Tabulate Syntaxe simplifiée Elle permet d effectuer des statistiques élémentaires et de les afficher en tableaux. Nous pouvons obtenir des tris croisés très sophistiqués!!!9 Il est possible d effectuer des statistiques élémentaires et de les afficher sous forme de tableau. Proc TABULATE <options> ; Class variables ; quantitatives discrètes) variables de classe qui seront utilisées dans Table (qualitatives ou Var variables ; Table (lignes), (colonnes) * (calculs) ; By variables ; Format var1 format1 var2 format 2... ; cf. format Label var1= étiquette1 etc. ; Weight variable ; variable de poids à affecter à chaque individu. Run ; Les principales options étant : variables à analyser (quantitatives) Ne rien mettre pour un tri croisé banal Data=nom du fichier de données SAS Depth=niveau maxi de profondeur de la table ; Format=format de chaque cellule du tableau Missing Les manquants constituent une modalité à part entière. Si cette option n est pas utilisée les manquants ne sont pas inclus dans les modalités des variables de classement. élimine les séparateurs horizontaux Noseps Order= Data Les modalités des variables de classement sont classées par ordre d apparition dans le fichier original Freq Les modalités sont classées par ordre décroissant d effectifs Internal (c est l option par défaut)les modalités sont classées par ordre croissant (alphanumérique) Sous-totaux L'instruction ALL permet de réaliser des sous-totaux en lignes ou en colonnes. ALL n'entraîne pas forcément une somme de la ligne ou de la colonne. Si la statistique moyenne est demandée sur la colonne ou la ligne, ALL retournera la moyenne générale. 9 La syntaxe n est pas toujours simple! L outil Enterprise Guide peut alors se révéler utile si l on est complètement réfractaire au langage SAS IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 52

Vous allez comprendre la syntaxe de commande «table» à l aide des exemples ci-dessous. Exemples de tri croisés simples : Le programme suivant permet de dresser un tri croisé AGE*SEXE. proc tabulate data=lib1.donnees5; class age sexe; table age, sexe; run; car nous allons effectuer un tri croisé avec les variables age et sexe Le N à l affichage indique que SAS a calculé, pour chaque cellule, l effectif de non manquants. Comparez avec le programme suivant : proc tabulate data=lib1.donnees5; class age sexe; car nous allons effectuer un tri croisé avec les variables age et sexe table age*sexe / condense; le «/condense» demande à SAS de condenser l affichage au maximum pour limiter le nombre de pages à afficher. Run; On a à l affichage : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 53

Le N à l affichage indique que SAS a calculé, pour chaque cellule, l effectif de non manquants. Syntaxe simplifiée de la commande table Exemple Elle est obligatoire dans la procédure Tabulate. Elle contient des expressions de une à trois dimensions (var1*var2*var3) séparées par des virgules et éventuellement terminée par un «/» suivi des options. Les variables indiquées dans «table» sont soient déclarées dans var soit dans class mais pas dans les deux. Les expressions peuvent être du type : element*element (croisé) element element (concaténation=cellules adjacentes) (element element) (agrégation) Les éléments sont des variables statistiques ou des statistiques MEAN, SUM, N, NMISS, VAR etc. (voir plus loin)t proc tabulate data=lib1.donnees1; class sexe; var age; table sexe,mean*age / condense; run; va donner : Nous avons la moyenne de l âge par sexe. Statistiques disponibles Symbole SAS signification N: effectif SUMWGT: la somme des poids (var WEIGHT) SUM: la somme. MEAN: la moyenne VAR: la variance STD: la déviation standard IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 54

Range: L étendue (max-min) PCTN : Pourcentage PCTSUM : Pourcentage (somme) CV: coefficient de variation T: statistique de Student pour tester µ=0 P90 : 9ième décile MEDIAN : médiane Exercice 10 En utilisant la PROC TABULATE, créer les tableaux suivants. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 55

Complément : Quelques options de la commande table : Condense Pour limiter le nombre de pages à afficher Misstext=... Pour indiquer le texte à afficher dans les cellules contenant les valeurs manquantes. Printmiss Par défaut SAS n affiche pas les cellules vides, l option en question permet de les afficher quand même. H.Proc SQL Le langage SQL (Structured Query Language) est un langage d interrogation de bases de données standardisé commun à la plupart des logiciels de base de données. Cette procédure permet d extraire, corriger et mettre à jour des données dans une table SAS, souvent plus rapidement que par une étape data. Le terme de table désigne toujours une table SAS, correspondant à un stockage de données propre à ce logiciel. On utilise également deux nouveaux types d objets : les vues et les index. Une vue est le stockage d une interrogation : elle contient la description ou définition d une table virtuelle. Une vue est donc une interrogation à laquelle on donne un nom, pour son usage ultérieur dans une autre procédure SAS. Le principal intérêt de définir une vue est le gain d espace mémoire. Un index est un système de pointeurs permettant dans certains cas d accéder plus rapidement aux informations contenues dans une table SAS. 1.La syntaxe PROC SQL <options>; ALTER TABLE nom_table ADD/MODIFY/DROP colonne [format] ; IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 56

Remarques : ou CREATE TABLE nom_table AS SELECT noms_cols, FROM noms_tables,... WHERE conditions ; ou DELETE nom_table WHERE conditions ; ou DESCRIBE nom_table/nom_vue; ou DROP TABLE/VIEW nom_table ; ou INSERT INTO nom_table SELECT ; ou RESET <options>; ou SELECT noms_cols, FROM noms_tables,... WHERE conditions ; ou UPDATE nom_table SET (nom_cols1, ) = ; ou VALIDATE liste ; QUIT ; o il est inutile de répéter l instruction PROC SQL avant chaque déclaration, sauf si l on exécute une étape DATA ou si l on fait appel à une autre procédure entre deux commandes de SQL. o l instruction RUN n est pas nécessaire. 2.Les options o inobs=n restreint le nombre d observations traitées (par exemple dans une clause WHERE) sur unetable fournie en entrée de la procédure. o outobs=n restreint le nombre d observations traitées (par exemple insérées) dans une table retournée par la procédure. o feedback rappelle la définition des vues parentes lors de la description d une vue (commande describe). o noprint pas d édition. 3.Les commandes SQL a)la commande CREATE Elle permet de créer des tables, des vues, ou des index, à partir d autres tables ou d autres vues. Syntaxe (1)Création d une table : CREATE TABLE nom-table AS SELECT... FROM... ; => Création d une table à partir d une interrogation SQL IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 57

CREATE TABLE nom-table LIKE nom-table ; => Création d une table avec les mêmes noms de variables et les mêmes attributs qu une autre table. CREATE TABLE nom-table (nom_col1 type1, nom_col2 type2,...) ; => Création de la Les syntaxes 2 et 3 créent des tables vides, qu il faut ensuite remplir avec la commande INSERT. structure d une table. Exemples Syntaxe (2)Création d une vue : CREATE VIEW nom_vue as Select... From <order by nom_col1, nomcol2...>; Remarque : Une vue étant une interrogation stockée et ne contenant pas de données, on ne peut utiliser les instructions suivantes quand on se réfère à une vue : insert, delete, alter, update. Exemple : Création d une vue à partir d une table. (3)Création d un index : Un index stocke à la fois les valeurs des colonnes d une table, et un système de directions qui permet d accéder aux lignes de cette table à partir des valeurs de l index. L utilisation de l index lors d interrogations ou autres instructions de la procédure est déterminée par le système. L index est automatiquement mis à jour quand on modifie la table à laquelle il est associé. Il permet d améliorer la performance de certaines commandes, par exemple la comparaison d une colonne indexée à une valeur constante à l aide de l expression where. Syntaxe IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 58

CREATE <UNIQUE> INDEX nom_index ON nom_table ; Le mot-clé UNIQUE garantit que chaque valeur de la colonne indexée est unique. Ceci peut être utile quand on manipule des variables telles que le numéro de sécurité sociale. Exemple : Création d un index idx_nompre sur les champs nom et prénom b)la commande ALTER Elle permet d ajouter ou de supprimer des colonnes dans une table SAS, ou d en modifier les attributs (longueur, label, format). Syntaxe ALTER TABLE nom-table < ADD nom_col1 <, type_col1 >> < MODIFY nom_col2 <, type_col2 >> < DROP nom_col3 <, nom-col3 >>; Exemple : Modification d une table existante c)la commande DELETE Elle permet de supprimer des lignes dans une table. Syntaxe DELETE FROM nom_table < WHERE conditions >; Exemple : Suppression des lignes dont le nom n est pas renseigné. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 59

d)la commande DESCRIBE Elle donne la définition d une vue, et des vues parentes si l option FEEDBACK est spécifiée. Syntaxe DESCRIBE TABLE/VIEW nom_vue ; Exemple : Description de la table Donnees5. e)la commande DROP Elle permet de détruire indifféremment une table ou une vue. Syntaxe DROP TABLE/VIEW nom_table1 <, nom_table2 >; Exemple : Suppression de la table TEMPO. f)la commande INSERT Elle permet d ajouter des lignes à une table. Syntaxes IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 60

INSERT INTO nom_table < ( nom_col1 <, nom_col2 > >) VALUES ( value1 <, value2 >) ; INSERT INTO nom_table < ( nom_col1 <, nom_col2 > >) SELECT... FROM... ; Exemple : Insertion des données dans une table nouvellement créée. g)la commande SELECT Elle permet de sélectionner des colonnes dans une table, et d afficher les résultats dans la fenêtre OUTPUT. Syntaxe SELECT liste d objets ou * FROM liste de tables/vues < WHERE conditions >; Exemple : Listage des données d une table. Dans la fenêtre PROGRAM EDITOR Dans la fenêtre OUTPUT Dans la fenêtre LOG IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 61

Exercice 11 Dans Donnees2, créez la variable MOY_MNT (moyenne des montants de janvier et février) à partir de MONTANT01 et MONTANT02. A partir de la table Donnees2, créer la table temporaire Donnees3 contenant les champs : NOM, PRENOM, AGE, SEXE, MOY_MNT. Cette table ne doit pas contenir les lignes pour lesquelles les noms ne sont pas renseignés. Créer l index idx_tempo sur les champs NOM, PRENOM. h)la commande UPDATE Elle permet de modifier les valeurs de certaines observations pour des colonnes d une table existante. Syntaxe UPDATE nom_table SET nom_col=<valeur/expression/sous-requête> < WHERE conditions >; Exemple : Mise à jour des données d une colonne. Dans la fenêtre PROGRAM EDITOR Dans la fenêtre LOG IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 62

Dans la fenêtre OUTPUT i)la commande VALIDATE Elle permet d évaluer la syntaxe d une interrogation sans l exécuter, et retourne un message dans la fenêtre LOG. Syntaxe VALIDATE requête ; Cette commande est essentiellement utile dans des applications utilisant des macro-variables. VALIDATE retourne alors une valeur indiquant si l interrogation est valide grâce à la macro-variable SQLRC (SQL Return Code). Exemple : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 63

j)les opérateurs (1)Les opérateurs arithmétiques Les opérateurs arithmétiques classiques sont disponibles : =, <, <=, >, >=, <>,!=, In, BETWEEN, IS NULL, IS NOT NULL, IS MISSING, IS NOT MISSING, LIKE. Exemple : (2)Les opérateurs ensemblistes Ces opérateurs permettent de combiner les résultats de plusieurs requêtes de type SELECT. L'utilisation de ces opérateurs s'accompagne de plusieurs contraintes : les colonnes doivent être de même type et placées dans le même ordre dans chacun des SELECT : o Chaque SELECT doit récupérer le même nombre de colonnes, o Les titres des colonnes seront ceux définis dans le premier SELECT, o Utilisez des parenthèses pour déterminer les priorités, o Par numéro d'ordre, les colonnes doivent être de même type mais leur taille peut différer. Elle sera celle de la plus longue des colonnes de tous les SELECT impliqués, IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 64

(a)union : UNION L union entre deux tables ou vues de même structure donne une table ou une vue résultante de même structure ayant comme éléments l ensemble des éléments distincts des deux tables ou vues initiales. A B (b)intersection : INTERSECT L intersection entre deux tables ou vues de même structure donne une table ou une vue résultante de même structure ayant comme éléments l ensemble des éléments communs aux deux tables ou vues initiales. A B (c)différence : EXCEPT La différence entre deux tables ou vues de même structure donne une table résultante de même structure ayant comme éléments l ensemble des éléments de la première table ou vue qui ne sont pas dans la deuxième. A B Conserve les lignes ramenées par le premier SELECT et n'apparaissant pas dans celles retournées par le second SELECT. Les lignes communes sont supprimées. Exemple : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 65

Ce qui donne dans l OUTPUT : k)les fonctions (1)SUBSTR La fonction SUBSTR permet d extraire une chaîne de caractère d une longueur donnée en partant d une position spécifiée. Syntaxe SUBSTR(Chaîne, Position de départ, Longueur) Exemple : Extraction d une chaîne de caractère à partir du champ NOM. Ce qui donne dans l OUTPUT: IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 66

(2)UPPER/LOWER La fonction LOWER change en minuscule un champ texte. La fonction UPPER fait l inverse. Exemple : Changement de la casse du champ NOM. Déclaration d un alias (3)CASE Cette fonction permet de retourner les résultats répondant à des conditions spécifiées. Elle rappelle le IF/THEN/ELSE des étapes DATA. Syntaxe CASE <case-operand> WHEN when-condition THEN result-expression <...WHEN when-condition THEN result-expression> <ELSE result-expression> END Exemple : Création d un champ LIB_SEXE à partir d une condition sur le champ SEXE./ IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 67

Ce qui donne dans l OUTPUT : Cette fonction peut être imbriquer avec les autres fonctions du SQL de SAS. Exercice 12 Créer une colonne C_AGE dans TEMPO contenant les valeurs 0-20 si l âge est inférieur à 20 ans, 20-65 si l âge est compris entre 20 et 65 ans, 65+ si l âge est supérieur à 65 ans. Publier dans la fenêtre OUTPUT le tableau suivant (Utiliser la fonction CASE) : Compter le nombre de consommants (couple NOM-PRENOM). Pour plus d informations consulter le manuel : VI.Les graphiques Cette partie présente deux procédures dédiées aux graphiques : la procédure GCHART et la procédure GPLOT rattachées au module SAS/GRAPH. La première permet de réaliser des histogrammes, des diagrammes en bâtons et des diagrammes circulaires. La seconde permet de tracer des courbes et des nuages de points. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 68

Ces deux procédures se terminent par l instruction QUIT en plus du RUN. 1.La procédure GCHART Cette procédure trace en basse résolution (caractères) des diagrammes en barres (hbar), en colonnes (vbar), en secteurs (pie) et aérolaires (star). Elle peut traiter des variables quantitatives ou qualitatives. a)syntaxe PROC GCHART DATA=tablesas; BY <descending> variable ; VBAR variable(s) /<options standards>; HBAR variable(s)/<options standards>; PIE variable(s)/<options standards>; STAR variable(s) /<options standards>; RUN ; QUIT ; Les instructions PIE, HBAR, VBAR possèdent des variantes «3D» (HBAR3D, VBAR3D, PIE3D) qui offrent les mêmes graphiques avec un effet de relief. b)options MIDPOINTS permet d ordonner les valeurs représentées pour une variable de type caractère et de centrer les barres d histogrammes pour une variable numérique. PIE variable_caractère / MIDPOINTS = valeur1 valeur2 valeurp ; VBAR3D variable_numérique / MIDPOINTS = valeur1 valeur2 valeurp ; DISCRETE signifie à SAS que les valeurs de la variable correspondent chacune à un secteur ou à un bâton du graphique ; cette option n est indispensable que si la variable de classes proposée est de type numérique. VBAR variable / DISCRETE LEVELS détermine, pour une variable numérique, en combien de tranches elle doit être découpée si l on a pas précisé DISCRETE et que chaque valeur ne doit pas faire l objet d un bâton ou d un secteur. PIE3D variable_numérique / LEVELS = nombre_de_secteurs ; MISSING est utilisée lorsque l on souhaite que les valeurs manquantes constituent une modalité visible sur le graphique. HBAR variable(s) / MISSING ; SUBGROUP permet de préciser une seconde variable qui subdivisera le graphique. Dans un diagramme en bâton, les barres seront subdivisées en autant de rectangles qu il y aura de valeur à cette variable. Une légende s ajoute automatiquement au graphique. VBAR3D variable(s) / SUBGROUP = variable2 ; IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 69

D autres options concerne la définition des tailles de secteur. Il s agit de la quantité qui correspond à l angle des tranches d un diagramme circulaire ou à la taille d un bâton. Par défaut, ceux-ci sont proportionnels à la fréquence de la valeur considérée. Les options TYPE et SUMVAR permettent de choisir d autres statistiques. TYPE peut prendre les valeurs suivantes : FREQ (par défaut) PCT pourcentage que représente la fréquence par rapport à l ensemble des données ; SUM somme MEAN moyenne Pour SUM et MEAN, il faut préciser la variable quantitative sur laquelle seront calculées les statistiques à partir de l option SUMVAR. VBAR variable(s) / TYPE=PCT ; PIE variable(s) / TYPE = SUM SUMVAR=variable_numérique; Dans le cas des diagrammes en bâtons, TYPE peut prendre les valeurs CFREQ et CPCT correspondant à des cumuls de fréquences et de pourcentages. Exemple IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 70

Exercice 13 Créer les graphiques suivants : Créez une table temporaire DON10000 (dans la SASWORK) contenant toutes les variables de la table DONNEES dont le montant est inférieur à 10000. Triez cette table sur la variable MOIS puis éditez le graphique suivant par mois : Remarque : Afin de choisir les couleurs utilisées dans un graphique de la procédure GCHART, il est possible de faire précéder celle-ci d une instruction PATTERN numérotée de 1 à 99. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 71

PATTERNk COLOR= couleurzone ; Les couleurs restent valides jusqu à la fin de la session. Il est recommandé de les réinitialiser à l aide de l instruction suivante : GOPTIONS RESET=PATTERN ; 2.La procédure GPLOT Cette procédure sert à réaliser des nuages de points entre deux variables, l une sur l axe verticale et l autre sur l axe horizontal. En reliant les points, il est possible de dessiner des courbes avec cette même procédure. a)syntaxe SYMBOL1 INTERPOL = StyleGraphique COLOR=couleur VALUE=marqueur ; PROC GPLOT DATA=nomTableSAS <UNIFORM> ; PLOT vertical * horizontal / <options>; RUN; QUIT; GOPTIONS RESET= SYMBOL; b)options L instruction SYMBOL permet de définir l aspect du nuage de points ou de la couleur. Selon le nombre de graphiques demandés dans la procédure GPLOT. Il est possible de définir jusqu à 255 instructions SYMBOL numérotées en conséquence. Les attributs de cette instruction sont : INTERPOL= NONE (défaut) nuage de points INTERPOL = JOIN courbe INTERPOL = SPLINE courbe lissée COLOR = indique la couleur des points et d un éventuel trait (noir par défaut) VALUE définit le symbole marquant les points du graphique. Les valeurs sont les suivantes : PLUS, X, STAR, SQUARE, DIAMOND, TRIANGLE, DOT, CIRCLE, ou NONE. Les symboles sont valables durant toute la session.. Il est recommande de les réinitialiser avec l instruction : GOPTIONS RESET=SYMBOL ; L option UNIFORM permet de conserver les mêmes axes si l instruction PLOT définit plusieurs graphiques. Les options de l instruction PLOT, les plus couramment utilisées sont : OVERLAY pour superposer tous les graphiques listés dans l instruction PLOT car, par défaut, plusieurs graphiques demandés dans la même instruction PLOT produisent des graphiques distincts. PLOT Y1 * X Y2 * X Yn * X / OVERLAY ; HREF = ou VREF = qui permettent d obtenir le tracé d une droite horizontale ou verticale sur le graphique du nuage de points X * Y. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 72

PLOT X * Y / HREF = valeur1 valeu2 valeurn ; Enfin, l instruction SYMBOL permet de choisir le type de graphique demandé en fonction de la valeur de l option INTERPOL. Exemple On souhaite représente les plus forts consommateurs. L option VREF permet d obtenir une droite de référence. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 73

VII.Quelques procédures pour l analyse statistique A.Les analyses univariées Parmi les différentes analyses possibles, sont présentées celles qui synthétisent la variable mesurée (moyenne, médiane, ou tout nombre décrivant la situation de la population observée vis à vis de la variable), puis celles qui mesurent la dispersion de la population. Les variables, ici, sont nécessairement quantitatives. En effet, une variable qualitative s étudie comme une famille de variables avec autant de variables que de modalités. 1.Les variables quantitatives : la PROC UNIVARIATE Les indicateurs synthétiques "standards" décrits ici sont la moyenne, la médiane, le mode, la somme, l écart type, la statistique T de Student sous l'hypothèse de nullité de la moyenne, un test de normalité... a)syntaxe PROC UNIVARIATE (options); VAR variables; (Les variables dont nous voulons l'étude) BY variables; (Permet la création de sous-groupes... le fichier devra avoir été trié avant) WEIGHT variable;(variable contenant les "poids" de chaque individu. Il vaut 1 par défaut) OUTPUT OUT=FICH.SAS (fichier contenant autant d'individus que de modalités de BY et comme variables, les statistiques données par UNIVARIATE) cf. ex RUN; Les options principales étant: DATA= NOPRINT NORMAL ROUND= FREQ Nom du fichier de données (si ce n'est pas le fichier courant) Effectue un test de normalité (Shapiro-Wilk si n<2000, Kolmogorov si n>2000) Spécifie la façon d'arrondir les variables. (Edition d'une table avec les valeurs des variables, les %, les % cumulés...) PLOT Produit des "graphiques" (Box plot,...) Vous indiquez ici le diviseur utilisé pour le calcul de la variance: VARDEF= DF (n-1) (Choisi par défaut) N (n) WDF (somme des poids moins 1) WEIGHT (somme des poids) IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 74

Exercice 14 Affecter une librairie LIB. Taper le programme suivant : PROC UNIVARIATE DATA=LIB1.DONNEES5 NORMAL PLOT FREQ; VAR AGE; RUN; Examinez tout l'output et comprenez sa signification en vous aidant du tableau de la page suivante. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 75

SORTIE SAS (exemple) Symbole SAS utilisé dans l'output signification N 106 Sum Wgts 106 Sum 18094 Mean 170.6981 Variance 61.45085 Std Dev 7.839059 Skewness 0.480848 Kurtosis -0.05708 USS 3095064 CSS 6452.34 CV 4.592353 Std Mean 0.761397 T:Mean=0 224.1908 Pr> T 0.0001 Num ^= 0 106 Num > 0 106 M(Sign) 53 Pr>= M 0.0001 Sgn Rank 2835.5 Pr>= S 0.0001 W:Normal 0.967964 Pr<W 0.0865 N: effectif SUMWGT: la somme des poids (var WEIGHT) SUM: la somme. MEAN: la moyenne VAR: la variance STD: la déviation standard (en 1/n-1) Skewness:coefficient mesurant l'asymétrie Kurtosis:coefficient mesurant l aplatissement USS: somme des carrés des xi CSS: somme des carrés des écarts à la moyenne CV: coefficient de variation STDMEAN: erreur standard sur la moyenne T: statistique de Student pour tester µ=0 PROBT: c'est le P correspondant au test précédent (bilatéral) Nombre d'observations non nulles Nombre d'observations strictement positives MSIGN: Statistique. utilisée pour tester la nullité de la médiane PROBM: c'est le P correspondant Signrank:statistique du test des rangs (Wilcoxon) cf cidessous PROBS: c'est le P correspondant. NORMAL: c'est la stat. utilisée pour tester la normalité (cf ci dessous) PROBN: et le P correspondant IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 76

2.Détails statistiques a)test de Normalité NORMAL : statistique testant la normalité de la distribution. Nous voulons vérifier, à partir des données de l échantillon, si la distribution observée est compatible avec l hypothèse d une distribution Gaussienne (H0). La statistique employée est celle de Shapiro-Wilk si n<2000 et celle de Kolmogorov-Smirnov pour les valeurs de n supérieures. Vous avez également le P correspondant (PROBN). Si P>0.05, nous acceptons l'hypothèse de normalité. b)test de comparaison d une moyenne à une valeur fixée (0) T: C'est la statistique du test de Student H 0 : µ = µ 0 : µ µ 0 contre H 1 (bilatéral) avec pour SAS ici µ 0 0 = H0:moyenne=0 contre H1: moyenne 0. Elle suppose la population normale et l'échantillon aléatoire. Méthode de calcul: Pour le test, SAS calcule la statistiquet= x s µ 0 / n 1 2 s = ( xi x ) et n 1 µ = 0 0la valeur P correspondante. (Si P>0.05, on ne peut rejeter H0 i au niveau de signification de 5%, on rejette sinon...) Vous devez toujours vous ramener à la nullité de la moyenne à tester ou utiliser la PROC TTEST avec l option H0. avec c)test de Wilcoxon (comparaison d une médiane à une valeur fixée) SIGNRANK (Sign rank test, Wilcoxon) c'est la statistique de test calculée par + + ri n( n + 1) / 4 où r i est le rang de x i obtenu après avoir enlevé les xi=0. Il permet de tester la nullité de la médiane ou de la moyenne (H0: mediane=0) Nous avons le P correspondant (PROBS).(nous rejetons H0 quand p<0.05). Ce test suppose la distribution symétrique. Si tel n'est pas le cas, il faut utiliser le test suivant: MSIGN (sign-test) c'est la statistique de test calculée par M=p-n/2 où n est le nombre de valeurs non nulles et p le nombre de valeurs strictement positives. Cette statistique est utilisée IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 77

pour tester la nullité de la médiane (H0: mediane=0). Nous avons le P correspondant (PROBM). Quand P<0.05, nous rejetons l'hypothèse nulle. Exercice 15 Créer une table STAT_UNI1 (stockées sous la bibliothèque précédemment créée) contenant la moyenne, l écart-type et la médiane des montants de janvier et février par sexe à partir de la table DONNEES2. 3.Les graphiques avec la Proc Univariate a)la commande HISTOGRAM L exemple suivant présente l utilisation de la commande HISTOGRAM dans la procédure UNIVARIATE. Unité du graphique goptions htitle=4 htext=3 gunit=pct ftext=swiss ftitle=swiss; Paramétrages des hauteurs des titres et du texte Polices utilisées proc univariate data=lib1.donnees5 nextrobs=2 nextrval=4; var age; histogram / midpoints=0 to 100 by 20 pfill=x cfill=blue; Les valeurs vont de 0 à 100 groupées par bloc de 20 title 'Répartition des consommants par âge'; run; Couleurs et hachures de l histogramme Répartition des consommants par âge 3 La procédure UNIVARIATE Variable : age Moments N 6698 Somme poids 6698 Moyenne 38.1737832 Somme obs. 255688 Écart-type 22.9795493 Variance 528.059686 Skewness 0.201788 Kurtosis -0.7714236 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 78

SS non corrigée 13296994 SS corrigée 3536415.72 Coeff Variation 60.1972017 Moy. erreur std 0.28078179 Mesures statistiques de base Position Variabilité Moyenne 38.17378 Écart-type 22.97955 Médiane 38.00000 Variance 528.05969 Mode 39.00000 Étendue 102.00000 Intervalle interquartile 35.00000 Tests de position : Mu0=0 Test -Statistique- -Seuil de significativité- t de Student t 135.9553 Pr > t <.0001 Signe M 3297 Pr >= M <.0001 Rangs signés S 10871858 Pr >= S <.0001 Quantiles (Définition 5) Quantile Estimation 100% Max 102 99% 89 95% 78 90% 71 75% Q3 55 50% Médiane 38 25% Q1 20 10% 6 5% 3 1% 0 0% Min 0 Observations extrêmes ----Minimale--- ----Maximale--- Valeur Obs. Valeur Obs. 0 6662 100 5864 0 6615 102 6399 Répartition des consommants par âge 4 La procédure UNIVARIATE Variable : age Valeurs extrêmes ----------Minimale--------- ----------Maximale--------- Ordre Valeur Fréquence Ordre Valeur Fréquence 1 0 104 98 97 1 2 1 108 99 98 1 3 2 100 100 100 1 4 3 94 101 102 1 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 79

b)les histogrammes comparatifs Pour illustrer les histogrammes comparatifs, nous nous reporterons à l exemple suivant : goptions htitle=4 htext=3 gunit=pct ftext=swiss ftitle=swiss; proc format; value f_sexe 1='Homme' 2='Femme' ; run; data tempo; set lib1.donnees5; keep age sexe; label Age='Age consommant'; run; proc sort data=tempo; by sexe age; run; proc univariate data=tempo noprint; var age; class sexe (order=freq); histogram /nrows=1 ncols=2 intertile=1 cfill=cyan vscale=count /* vaxis=1 2 */ vaxislabel='sexe' Définit le nombre de lignes, de colonnes, l espace entre les colonnes, la couleur, la statistique calculée (COUNT, PERCENT, PROPORTION), les valeurs positionnées sur l âge des ordonnées et le titre de l axe. midpoints=0 to 100 by 20; inset mean='moyenne :' (4.1) / noframe position=ne height=2 font=swissxb; Définit une zone de texte : une statistique, son titre, le format de la stat, l encadrement de la zone de texte, sa position, sa hauteur, sa police. format sexe f_sexe.; title 'Age moyen par sexe'; run; IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 80

Exercice 16 Créer une table Tempo stockées dans la SASWORK,à partir de Donnees2, contenant les variables : AGE, SEXE, MONTANT01, MONTANT02 + créer une variable MOY_MNT représentant la moyenne de MONTANT01 et MONTANT02. Limiter le nombre de lignes de cette table à celles dont le montant moyen est inférieur à 10 000 euros. Créer deux histogrammes en parallèle par sexe, représentant le % de consommant par montant ; les montants étant représentés par des classes d étendue 1000. B.Les analyses n-variées 1.Analyse portant sur des variables qualitatives Les analyses sur ce type de variables se résument souvent au point de vue descriptif à la construction de tableaux croisés et à la mesure de l'association de ces variables. Ces analyses peuvent être réalisées par la procédure FREQ, dont la syntaxe générale est la suivante: PROC FREQ DATA= table des observations <OPTIONS>; BY variables de stratification; /optionnel/ TABLES tableaux </ OPTIONS>; WEIGHT variables; /optionnel/ IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 81

OUTPUT OUT= table de sortie <STATISTIQUES>; L'instruction weight permet de ne pas affecter le même poids à chaque observation. Parmi les options de la proc FREQ, on retiendra ORDER, qui indique l'ordre dans lequel doivent apparaître les modalités : ORDER = DATA ORDER = FORMATTED ORDER = FREQ ORDER = INTERNAL (par défaut) ordre d'apparition dans la table SAS modalités triées suivant les valeurs formatées modalités triées par fréquences décroissantes modalités triées selon les valeurs non formatées. Par exemple : Si A est une variable prenant deux modalités 1 ou 2 et si on utilise l'instruction : PROC FORMAT; VALUE $SEXE "1"="H" "2"="F"; alors, les instructions suivantes : PROC FREQ ORDER=INTERNAL; TABLES A; FORMAT A $SEXE.; PROC FREQ ORDER=FORMATTED; TABLES A; FORMAT A $SEXE.; produisent les deux tableaux de fréquence suivants : ORDER=INTERNAL Cumulative Cumulative A Frequency Percent Frequency Percent ----------------------------------------------- H 2 50.0 2 50.0 F 2 50.0 4 100.0 ORDER=FORMATTED Cumulative Cumulative A Frequency Percent Frequency Percent ----------------------------------------------- F 2 50.0 2 50.0 H 2 50.0 4 100.0 Remarque : l'option ORDER n'agit pas sur les valeurs manquantes, qui apparaissent toujours en premier. Pour obtenir le croisement de la variable A avec la variable B, la syntaxe de l'instruction TABLES est la suivante : TABLES A* B; De même, TABLES ( A B)*(C D) produira 4 tableaux croisés A avec C, A avec D, B avec C et B avec D. L'utilisation des options de l'instruction TABLES permet de mesurer l'intensité de la liaison entre les variables étudiées. La syntaxe est alors : TABLES A*B / option1 option2...; Quelques options de TABLE sont indiquées dans le tableau suivant : NOM DE L'OPTION CELLCHI2 DEVIATION ROLE imprime la contribution de chaque cellule au chi2 édite pour chaque cellule la différence entre l écart observé et l écart théorique sous hypothèse d indépendance IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 82

MISSING CHISQ NOCOL NOROW NOPERCENT NOFREQ NOPRINT OUT considère les valeurs manquantes comme une modalité teste par le chi 2 l hypothèse d indépendance entre les variables N affiche pas les % colonnes Idem % lignes Idem % total Idem Effectif Ne créé pas de sortie dans l OUTPUT Défini le nom du fichier de sortie La sortie se compose d'un tableau croisé, avec éventuellement des statistiques supplémentaires, si elles ont été demandées. Sans option, les cases de ces tableaux indiqueront les effectifs, les fréquences et les fréquences conditionnelles (en ligne et en colonne). Les observations avec au moins une valeur manquante sont exclues. L instruction output permet d obtenir une table de sortie. Les statistiques que l on peut demander sont celles qui ont déjà été demandées après l instruction tables. Un exemple : La table SAS 'test' comprend diverses variables sur les médecins. L exemple suivant illustre l étude de la relation entre le mode de conventionnement et le sexe du médecin. La variable sexe prend la valeur 1 pour les hommes et 2 pour les femmes. La variable conv prend 2 valeurs, 1 si le médecin est en secteur 1, 2 s il est en secteur 2. Le programme est le suivant : PROC FREQ DATA=test; TABLES sexe*conv / CELLCHI2 CHISQ DEVIATION; RUN; La sortie dans l output est présentée page suivante : TABLE OF SEXE BY CONV SEXE CONV Frequency Deviation Cell Chi-Square Percent Row Pct Col Pct 1 2 Total ---------------+--------+--------+ 1 358 44 402 2.5474-2.547 0.0183 0.1394 75.37 9.26 84.63 89.05 10.95 85.24 80.00 ---------------+--------+--------+ IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 83

2 62 11 73-2.547 2.5474 0.1005 0.7677 13.05 2.32 15.37 84.93 15.07 14.76 20.00 ---------------+--------+--------+ Total 420 55 475 88.42 11.58 100.00 STATISTICS FOR TABLE OF SEXE BY CONV Statistic DF Value Prob ------------------------------------------------------ Chi-Square 1 1.026 0.311 Il n est donc pas possible de rejeter l hypothèse de l indépendance du sexe et du mode de conventionnement au niveau de 5%. Exercice 17 A partir de la table Fusion, créer une variable supplémentaire Class_age contenant <20 ans si la variable âge est inférieur à 20 ; 20-65 ans si AGE est compris entre 20 et 65 ; >65 ans si AGE est supérieur à 65. Déterminer s il existe une relation entre la variable class_age et ville. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 84

2.Analyse portant sur des variables quantitatives et qualitatives Pour faire ce type d'analyse, il est nécessaire qu'au moins une des variables étudiées soit quantitative. Dans ce cas, il est souvent intéressant de disposer d analyses pour des sous-groupes d observations déterminés par le filtre d une ou plusieurs variables qualitatives. Ces analyses peuvent être réalisées par la proc SUMMARY ou la proc MEANS. La différence essentielle entre elles est l absence d impression par défaut dans la fenêtre output pour la proc SUMMARY et, a contrario, l absence de table de sortie SAS par défaut avec la proc MEANS. Tout ce qui suit a trait à cette dernière. La syntaxe générale de cette procédure est la suivante : PROC MEANS DATA=table SAS <OPTIONS> <MOTS-CLÉS>; VAR liste de variables quantitatives (sur lesquelles portent les statistiques); CLASS liste de variables qualitatives (déterminant les sous-groupes) ; FREQ variable; /optionnel/ WEIGHT variable; /optionnel/ ID liste de variables; /optionnel/ BY variables de stratification; /optionnel/ OUTPUT OUT=table de sortie <MOTS-CLÉ>=nom des variables en sortie; /optionnel/ La variable qui suit l instruction freq indique le nombre de fois qu il faut compter l observation. De même celle qui suit weight indique le poids affecté à chaque observation. Parmi les options de la proc MEANS, quelques unes méritent d être retenues : ORDER = FREQ modalités triées par fréquence décroissante ORDER = DATA modalités dans l ordre d apparition dans la table SAS ORDER = FORMATTED modalités triées selon les valeurs formatées ORDER = INTERNAL modalités triées selon les valeurs non formatées MISSING intègre les observations pour lesquelles une des variables de l instruction CLASS a des valeurs manquantes. Par défaut, SAS donne les indicateurs suivants par sous-groupe nommés respectivement N, MEAN, STD, MIN et MAX : le nombre d observations, la moyenne, l écart-type, la valeur minimale et la valeur maximale,. D autres indicateurs peuvent être demandés comme suit : PROC MEANS DATA=tab mot-clé1 mot-clé2 mot-clé3; Les mots-clés sont donnés dans le tableau suivant : Mot-clé N NMISS MIN MAX MEAN RANGE Statistique Nombre d observations Nombre de valeurs manquantes Valeur minimale Valeur maximale Moyenne Différence entre la valeur maximale et minimale IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 85

SUM SUMWGT CSS VAR STD STDERR CV SKEWNESS KURTOSIS T PRT observée Somme Somme des poids Somme des écarts à la moyenne au carré Variance Ecart-type Ecart-type de la moyenne Coefficient de variation Coefficient d asymétrie Coefficient d'aplatissement Statistique du T de Student Niveau de signification du Test de Student SAS définit autant de sous-groupes que le produit du nombre de modalités +1 de chacune des variables déclarées dans l instruction CLASS. Le logiciel crée une variable appelée _TYPE_ qui permet de repérer le tri effectué pour chacun des sous-groupes. Grâce à l instruction output, le contenu de la table SAS de sortie peut être programmé. La syntaxe est la suivante : OUTPUT OUT= table de sortie mot-clé1 (var1 var2 var3) = nom1 nom2 nom3 mot-clé2 (var1 var2 var3) = nom1 nom2 nom3 ; Par exemple : OUTPUT OUT= tab N=N1 MEAN (var1 var2) = Moy1 Moy2 ; Cette instruction crée une table 'tab' qui a autant d observations que de sous-groupes définis par les variables de l instruction CLASS et trois variables nommées N1, Moy1, Moy2, qui sont le nombre d observations et les moyennes de var1 et var2 dans chaque sous-groupe. Les variables var1 et var2 doivent être déclarées dans l instruction VAR. Un exemple : La table SAS test comprend diverses variables ayant trait aux médecins et à leur activité. Le programme présenté étudie les relations entre le mode de conventionnement et l âge. La variable conv prend la valeur 1, si le médecin est en secteur 1, et la valeur 2, s il est en secteur 2. Le programme : PROC MEANS DATA=test VAR MEAN; CLASS sexe; VAR age; OUTPUT OUT=sortie MEAN(age)=agemoy VAR(age)=varage; PROC PRINT DATA=sortie; RUN; La sortie dans la fenêtre output : SEXE N Obs Variance Mean IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 86

--------------------------------------- 1 420 52.7213547 43.1809524 2 55 26.3723906 43.6727273 --------------------------------------- La table SAS créée (sortie) : The SAS System OBS SEXE _TYPE FREQ_ AGEMOY VARAGE 1 0 475 43.2379 49.6332 2 1 1 420 43.1810 52.7214 3 3 1 55 43.6727 26.3724 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 87

Exercice 18 Refaire l exercice 1 à partir de la PROC MEANS. Quelles sont les différences? 3.Les variables quantitatives, la corrélation Il est impossible dans ce cas de trier certaines variables en fonction des valeurs prises par d autres à moins de les discrétiser. En ce cas, les analyses n-variées des deux parties précédentes peuvent s appliquer. Il reste donc à mesurer les éventuelles associations entre variables. Ceci peut être réalisé par trois types d indicateurs : - la corrélation de Pearson (coefficient de corrélation linéaire), ainsi que la covariance - les corrélations non-paramétriques, la corrélation de Spearman (corrélation des rangs), le tau-b de Kendall (concordance de 2 variables, Xi>Xj implique Yi>Yj). - les coefficients de corrélation partielle, c est-à-dire corrigée des effets de certaines variables. Ces différentes mesures peuvent se réaliser par la proc CORR dont la syntaxe générale est la suivante : PROC CORR DATA= table des observations <OPTIONS>; BY variables de stratification; /optionnel/ FREQ variable; /optionnel/ WEIGHT variable; /optionnel/ PARTIAL variables; /optionnel/ VAR variables; /optionnel/ WEIGHT variables; /optionnel/ WITH variables; /optionnel/ La variable, nécessairement entière suivant l instruction FREQ, indique combien de fois il faut compter l observation en cours. L instruction WEIGHT donne le poids de chaque observation. L utilisation de cette instruction n est pas compatible avec la sortie de corrélations non-paramétriques. VAR donne la liste des variables pour lesquelles il faut calculer les corrélations. Si l instruction WITH est utilisée, alors ne sont calculées que les corrélations entre les variables qui suivent VAR et celles qui suivent WITH. PARTIAL s utilise pour calculer les corrélations entre les variables nommées après VAR corrigées de l effet des variables nommées dans PARTIAL. Il s agit donc des corrélations entre les résidus des variables à étudier régressées (MCO) par celles dont on veut neutraliser les effets. PARTIAL ne s utilise qu avec les corrélations de Pearson (corrélations linéaires). Ce sont les options de la proc CORR qui définissent le type de corrélation souhaitée : KENDALL calcule le tau-b de Kendall. SPEARMAN calcule les coefficients de corrélations de SPEARMAN. PEARSON est utilisée pour le calcul des coefficients de Pearson (option par défaut). Avec l utilisation de l option PEARSON, quelques statistiques supplémentaires peuvent être demandées : COV demande le calcul de la covariance CSSCP calcule la somme des carrés des écarts à la moyenne et le produit des écarts aux moyennes (la covariance et la variance multipliée par le nombre d observations). SSCP édite la somme des carrés et des produits. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 88

Cette procédure sort dans l output les différentes corrélations demandées, les moyennes des variables de VAR. Exemple : PROC CORR DATA = SORTIE COV; VAR X Y; PARTIAL Z; WITH A; Cette série d instructions permet d'obtenir dans l output la covariance de x et a, ainsi que la covariance de y et a, les variables x et y étant corrigées des effets de z. Il est aussi possible d obtenir la même sortie, mais sous forme de table SAS avec les options suivantes : OUTP= table de sortie (si les corrélations souhaitées sont de Pearson) OUTK= table de sortie (si les corrélations souhaitées sont de Kendall) OUTS= table de sortie (si les corrélations souhaitées sont de Spearman). Par exemple : PROC CORR DATA= entrée OUTP=sortiesor; Cette ligne (complétée des autres instructions nécessaires dans cette procédure) créera une table de sortie nommée sortie comprenant des corrélations de Pearson. Exemple : La table test comprend diverses variables concernant les médecins et leur activité. Le programme suivant donne le coefficient de corrélation entre le nombre de clients et le montant prescrit en pharmacie remboursé à 100%. Ces deux variables sont corrigées de l effet montant total des prescriptions en pharmacie. Le programme : PROC CORR DATA=test OUTP=sortie; VAR nbclient pharm100; PARTIAL pharmtot; RUN; PROC PRINT DATA=sortie; RUN; La sortie dans l output : Correlation Analysis 1 'PARTIAL' Variables: PHARMTOT 2 'VAR' Variables: NBCLIENT PHARM100 Simple Statistics Partial Partial Variable N Mean Std Dev Sum Minimum Maximum Variance Std Dev PHARMTOT 475 493098 272929 234221599 20.0000 1560053.. NBCLIENTS 475 825.3916 363.38 392061 38.0000 2257 55682 235.9710 PHARM100 475 4258 5142 2022327 0 39740 21601126 4648 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 89

Pearson Partial Correlation Coefficients / Prob > R under Ho: Partial Rho=0 / N = 475 NBCLIENT PHARM100 NBCLIENT 1.00000-0.18964 0.0 0.0001 PHARM100-0.18964 1.00000 0.0001 0.0 La table SAS créée : The SAS System OBS _TYPE NAME_ NBCLIENT PHARM100 1 MEAN 0.000 0.00 2 STD 235.971 4647.70 3 N 475.000 475.00 4 CORR NBCLIENT 1.000-0.19 5 CORR PHARM100-0.190 1.00 Le coefficient de corrélation entre ces deux variables étant assez faible, il est difficile alors de l'interpréter. Exercice 19 Existe t il une corrélation entre l âge et les montants moyens (moyenne entre MONTANT01 et MONTANT02)? A partir de donnees5 : créer une variable MOY_MNT contenant la moyenne des variables MONTANT01 et MONTANT02 puis calculer les coefficients de corrélation (Pearson) entre la variable AGE et MOY_MNT IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 90

VIII.Analyse interactive de données : SAS/INSIGHT Ce module inclus dans l outil de DATA MINING de SAS (Enterprise MINER) permet d effectuer de puissantes analyses interactives de données, essentiellement sur des données quantitatives.10 Le grand intérêt de ce module réside dans le fait de pouvoir faire rapidement de nombreux graphiques interactifs, de repérer, d exclure ou d inclure de nouveaux individus. Tous les calculs sont alors modifiés en conséquence. De plus ; on peut effectuer des régressions, des analyses en composantes principales... A.Ouverture d une table Pour le mettre en œuvre allez dans SOLUTIONS/ANALYSIS/INTERACTIVE DATA ANALYSIS ; une fenêtre apparaît dans laquelle vous allez spécifier le nom du fichier que vous souhaitez analyser. Vous devez avoir déclaré préalablement une bibliothèque. Cliquez sur OPEN pour continuer. proc insight data=lib1.donnees5; run; Remarque : Il est aussi possible d ouvrir INSIGHT avec PROC INSIGHT. Vous obtenez : 10 Histogrammes, Boxplots, Diagrammes à bandes, fonctions de répartition, ajustement de lois (test de normalité), Régression simple et multiple, ACP etc. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 91

Type de la variable (Nominale (Nom) ou Numérique (Int) Accès à un menu permettant de trier le fichier, de modifier les places des variables... En cliquant sur le bouton droit de la souris, vous pouvez exclure des calculs l observation en question. SAS effectue automatiquement les corrections nécessaires. Le carré noir devient une croix. Exercice 20 Déclarer la bibliothèque LIB. Créer la table TEMPO (sous la bibliothèque WORK) à partir de Donnees2 contenant les variables suivantes : nom, prenom, moy_mnt, age, sexe, c_age La variable C_age est créée à partir de l instruction suivante : select; when (age<20) class_age='<20 ans'; when (age>=20 and age<65) class_age='20-65 ans'; when (age>=65) class_age='>65 ans'; end; Convertir la variable sexe en caractère (fonction PUT). Limiter aux montants moyens inférieurs à 10 000 euros. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 92

1.Aperçu rapide de quelques menus Ce menu permet d agir sur les fenêtres de graphiques que vous sortirez. Pour copier votre fenêtre dans une autre. Pour animer vos points (nuages) en fonction des modalités d une variable Par défaut INSIGHT modifie les fenêtres en temps réel (cf. Excel) cette option permet de geler une fenêtre. Génial : outil permettant de marquer les observations sur un graphique en fonction d autres modalités. Le menu Edit permet aussi d agir sur les variables (Transformation (Log, Exponentielle,...) sur les observations : Recherche d individus Édition d individus Permet de choisir les observations à étiqueter ou non dans les graphiques. Permet de choisir les observations à montrer ou non dans les graphiques. Permet de choisir les observations à inclure ou à exclure des calculs. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 93

Le menu Analyze permet d effectuer des calculs et des graphiques de différents types : Diagramme à barres, histogramme. Boxplot, diagramme à barres multivariés Nuage de points à 2 ou 3 dimensions Étude de la distribution de Y (Fonction de répartition, superposition lois de proba (Normale), tests etc. B.Analyse d une Variable qualitative Régression simple, multiple. Analyse multivariées (Matrice des corrélations, Valeurs propres, vecteurs propres (ACP) ), Analyse discriminante Nous allons voir comment tracer un diagramme et obtenir un tri à plat. Choisissez la première option du menu précédent, nous allons analyser la variable C_AGE. Pour cela cliquez sur le nom de cette variable, puis sur Y et validez. Remarque : Vous pouvez aussi sélectionner, depuis la feuille de données, une ou plusieurs colonnes du fichier de données en cliquant sur leur nom et choisir ensuite le menu Histogram/Bar Chart. Vous aurez alors directement tous les graphiques concernés dans une fenêtre. Vous obtenez 11 11 Remarquez que SAS a mis dans une colonne OTHER toutes les modalités «rares». Il suffit de cliquer sur le bouton METHOD de la boîte précédente pour paramétrer la «rareté». De plus, vous pouvez en cliquant sur les élément du graphique afficher les effectifs correspondants... IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 94

En cliquant sur le bouton droit de la souris (sur le graphique), vous faites apparaître un menu contextuel avec lequel vous pouvez afficher les valeurs de la répartition (Values...) Pour obtenir le tri à plat de la répartition allez dans Analyse/Distribution Y, pour compliquer, nous mettons SEXE comme variable de Groupement. Nous obtenons un graphique du même type que le précédent. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 95

Pour transférer les calculs dans la fenêtre OUTPUT cliquez sur ce bouton, puis sur SAVE. En allant dans Tables/ Frequency counts, SAS ajoute de tableaux de fréquences un pour les hommes et un autre pour les femmes. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 96

Exercice 21 Reproduire le graphique suivant en utilisant la commande MOSAIC PLOT qui génère des diagrammes à bandes à deux dimensions Etude graphique de la liaison entre deux variables : Sélectionner les colonnes SEXE, AGE, MOY_MNT de la feuille de données en cliquant sur leur nom avec la touche CTRL maintenue enfoncée. Activer ensuite le menu HISTOGRAM/BAR CHART. Cliquer sur la barre du graphique représentant les hommes. Interpréter le résultat obtenu. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 97

Ceci fonctionne sur toutes les fenêtres crées par INSIGHT sauf celles qui sont gelées (Menu Freeze de Windows) IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 98

C.Variable quantitative ; Analyse univariée 1.Boxplots, histogrammes, moments Analysons la variable AGE. Pour cela allons dans Analyse/Distribution Y et choisissons la variable AGE : Rappel de la définition du Box Plot : 100% de la pop 50 % de la pop. * 25% 25% * * Q1-1.5E Q1 Q2=M Q3 Q3+1.5E M=Médiane Qi=ième quartile E=Q3-Q1 Plus petite valeur observée supérieure à Q1-1.5 E Plus grande valeur observée inférieure à Q3+1.5E Valeurs extrèmes Sortie SAS : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 99

Pour modifier le format des valeurs, cliquer sur la valeur puis sur la flèche (en haut à gauche du tableau), cliquer sur format puis sur le format souhaité. Exercice 22 Identifier l individu hors norme (Box Plot) en cliquant dessus. Refaites les calculs sans lui. (Menu Edit/Observations/Exclude in Calculations, vous pouvez aussi le sortir du graphique Hide in Graph) Analyse par groupe Pour distinguer selon les sexes l étude précédente, il suffit d indiquer la variable SEXE dans la case GROUP : Compléments : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 100

Dans la fenêtre précédente, il vous est possible d intégrer différents éléments : (ceux déjà affichés sont indiqués par ) Intervalle de confiance... Tests de Student, de Wilcoxon... Tableau de fréquence. Tests de normalité 2.Fonction de répartition Moyenne tronquée (Calculée en ôtant une partie des individus extrêmes) En allant dans le menu CURVES, vous pouvez intégrer des courbes supplémentaires à la sortie précédentes : Densité des lois connues (Normales etc.) Fonction de répartition (observée) Fonction de répartition théorique. (d une loi connue) Tests de normalité etc... Courbe de Normalité (Droite de Henry ou autre) En choisissant Empirical CDF, vous avez la fonction de répartition suivante : 3.Densité de probabilité Vous pouvez obtenir la superposition de la densité de la loi Gaussienne sur l histogramme précédent : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 101

Choix des distributions L estimation se fait à partir de l échantillon ou à partir de vos spécifications. Choix des paramètres (si vous choisissez vos spécifications) Cliquons simplement sur OK Vous pouvez agir sur les curseurs pour modifier la moyenne et l écart type. La courbe rouge se modifiera en temps réel. Complément Vous pouvez déplacer ce curseur pour modifier la moyenne... Vous pourrez tester l ajustement de la courbe précédente en allant dans Curves/Test for distribution. Exercice 23 Explorer la variable MOY_MNT (distribution, moments, ) D.Etude de plusieurs variables quantitatives IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 102

1.Nuage de points (scatter plot) Cette commande permet de tracer des nuages de points. Il suffit d entrer la variable X et la variable Y. Exercice 24 Effectuer le nuage AGE MOY_MNT 2.Stratification par une variable qualitative, ou quantitative agrégée (TOOL) Nous souhaitons savoir où se placent les individus du groupe A sur ce graphique. Nous allons activer la boîte EDIT/WINDOWS/TOOL Pour zoomer sur le graphique. Couleur de la stratification. Cliquez sur une couleur, puis remplissez la boîte de dialogue qui s affichera. Pour affecter un dégradé de couleur à une variable numérique. Pour changer les couleurs du dégradé, faites glisser une couleur du dessus sur ce bouton. Marque de la stratification. Cliquez sur une marque par laquelle vous souhaitez marquer les observations...une boîte de dialogue va s afficher. Cliquez sur la couleur rouge, une boîte apparaît : Vous indiquez ici la condition à remplir pour être en rouge. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 103

Exercice 25 Mettre en rose les femmes (SEXE=2) et changer le symbole en croix. Mettre en bleu les hommes (SEXE=1) et changer le symbole en rond. 3. Régression (Fit XY) Cette commande permet de faire des régressions linéaires de tous ordres, des ajustements polynomiaux, exponentiels... Nous allons étudier la liaison entre deux variables quantitatives : l âge et le montant moyen. Allez dans Analyse/Fit XY et complétez la boîte comme suit : Vous obtenez les résultats suivants : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 104

Nuage de points avec la droite des moindres carrés de Y en X. Vous pouvez vous amuser à déplacer le curseur ci-dessus vers la droite pour augmenter le degré du polynôme ajustant Y en X.12 Tout est recalculé automatiquement, y compris le nuage des résidus. Coefficients de corrélations Il vous est possible de calculer directement le coefficient de corrélation entre les variables quantitatives en allant dans Analyse/Multivariate. 4.Lancement d INSIGHT avec le langage SAS Il est possible de lancer SAS INSIGHT directement à partir du langage SAS avec la procédure PROC INSIGHT. proc insight data=lib1.donnees5; run; IX.L ODS : Gestion des sorties SAS Les procédures PRINT, MEANS envoient leur résultat dans la fenêtre OUTPUT. 12 Si vous passez au degré 2, vous aurez une parabole au lieu d une droite d ajustement etc. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 105

SAS permet d envoyer ces résultats aussi dans un fichier HTML13 ou directement dans une table SAS. Le but de ce paragraphe est de vous montrer comment y parvenir. A.Quelques notions basiques sur l HTML L HTML est le langage des documents WEB. Il contient du texte, mais aussi des balises permettant de mettre en forme le texte, de pointer vers un autre document etc. Vous pouvez construire un document HTML directement ou en utilisant un logiciel spécialisé comme FRONTPAGE. WORD, EXCEL, SAS etc. permettent aussi de créer des documents HTML. Quelques balises : Balise <H1> </H1> <BR> <HR> <FONT FACE= > </FONT> <FONT COLOR=> </COLOR> <G> </G> <I> </I> <IMG SRC="nom fichier.gif" ALIGN= > Signification Caractères Grande taille. On peut remplacer le 1 par un nombre de 1 à 6 On peut aussi mettre des attributs ALIGN=CENTER pour centrer le texte Retour à la ligne Tracé d une ligne horizontale Pour changer la police de caractère Pour changer la couleur de la police Mettre en Gras Mettre en Italique Insere une image GIF et la centre si ALIGN=CENTER etc. 13 Ceci présente un double intérêt. Les fichiers HTML peuvent contenir des informations sous un format très sophistiqué tout en étant lus par un simple navigateur WEB. D autre part, on peut copier coller des tableaux HTML directement sous EXCEL et réutiliser ces données facilement! IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 106

B.Utilisation de l ODS de SAS. Objets de sortie Certaines procédures envoient un d autres plusieurs objets (ou section) dans la fenêtre OUTPUT. Exemples : La procédure PRINT ci-dessous ne va renvoyer qu un seul objet : Proc print data=lib1.donnees5 (obs=10) obs= Numéro ; Var age montant01 montant02 ; Run ; Va donner : (Un seul objet : les 10 observations) proc univariate data=lib1.donnees5; var age; run; Va donner 5 objets en sortie : Les moments (moyenne, écart type etc.), Les statistiques de base (de position et de dispersion), les tests de position, les quantiles et les valeurs extrêmes. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 107

C.Trois sorties possibles Chaque objet de sortie se compose de données et de mise en forme appelée TEMPLATE. La mise en forme pourra être personnalisée. L instruction ODS permettra de diriger chaque objet vers une sortie (ou plusieurs à la fois!) de notre choix : Objet de sortie (= Données+ Mise en forme) 3 directions possibles : 3 instructions ODS ODS OUTPUT : Fichier de données SAS ODS LISTING : Fenêtre OUTPUT (par défaut) ODS HTML : Document WEB Ne confondez pas la fenêtre OUTPUT et l ODS OUTPUT qui n ont rien à voir IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 108

1.Sortie HTML basique L instruction ODS HTML Body= «Nom de fichier HTML» va rediriger la sortie en fichier HTML. L instruction ODS LISTING CLOSE sert à supprimer la sortie vers l OUTPUT. L instruction ODS LISTING sert à réactiver la sortie vers l OUTPUT. ods html body='$home\univariate.html'; ods listing close; proc univariate data=lib1.donnees5; var age; run; proc means data=lib1.donnees5 ; class sexe; var age; run; ods html close; ods listing; SAS vous affiche alors le contenu du fichier HTML que vous auriez pu lire avec INTERNET EXPLORER ou NETSCAPE. Dans la suite de la sortie, vous avez la procédure MEANS dont vous pouvez copier/coller les résultats sous Excel : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 109

2.Sélection d objets en sortie : ODS TRACE, ODS SELECT, ODS EXCLUDE Comme nous l avons vu précédemment, la procédure UNIVARIATE inscrit 5 objets dans la sortie. Pour sélectionner ceux que nous voulons afficher, il faut repérer le nom des objets : c est le but de l instruction ODS TRACE ODS TRACE ON <options> ; ODS TRACE OFF ; Active le mode TRACE Supprime le mode TRACE (c est l option par défaut) Les options étant : LABEL pour indiquer les chemins de l objet LISTING pour mettre les noms des objets avant les objets dans les sorties. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 110

Exemple : ods listing; ods trace on; proc univariate data=lib1.donnees5; var age; run; ods trace off; Va donner dans la LOG les noms de nos 5 objets : Pour diriger les objets vers la fenêtre OUTPUT Pour activer le mode TRACE Output Added: ------------- Name: Moments Label: Moments Template: base.univariate.moments Path: Univariate.AGE.Moments ------------- Output Added: ------------- Name: BasicMeasures Label: Basic Measures of Location and Variability Template: base.univariate.measures Path: Univariate.AGE.BasicMeasures ------------- Output Added: ------------- Name: TestsForLocation Label: Tests For Location Template: base.univariate.location Path: Univariate.AGE.TestsForLocation ------------- Output Added: ------------- Name: Quantiles Label: Quantiles Template: base.univariate.quantiles Path: Univariate.AGE.Quantiles ------------- Output Added: ------------- Name: ExtremeObs Label: Extreme Observations Template: base.univariate.extobs Path: Univariate.AGE.ExtremeObs ------------- Ces noms (en gras) sont TRES IMPORTANTS car ce sont eux dont on va se servir dans la suite pour sélectionner les objets à afficher!!! Exercice 26 IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 111

Compliquez la procédure UNIVARIATE en ajoutant une option PLOTS par exemple qui permet d obtenir un box plot et un graphique de normalité : ods trace on; proc univariate data=lib1.donnees5 plots; var AGE; run; ods trace off; Combien d objets figurent dans la sortie cette fois ci? Quel est le nom du dernier? Redirigez la sortie en un document HTML, cela change-t-il quelque chose au nom des objets? Sélection des objets : ODS <Destination> SELECT noms des objets ALL NONE ; Exclusion d objets : ODS <Destination> EXCLUDE noms des objets ALL NONE ; Pour savoir ou on en est : ODS <destination> SHOW Exemple : ods listing select quantiles basicmeasures; ods listing show; proc univariate data=lib1.donnees5 plots; var age; run; ODS LISTING SHOW va nous donner dans la LOG : Sélection d objets Pour savoir où on en est ods listing show; Current LISTING select list is: 1. quantiles 2. basicmeasures IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 112

Dans la fenêtre OUTPUT vous n avez que ces deux objets. Résultats avec la sélection d objets Exercice 27 Le programme suivant permet d étudier la liaison entre les variables class_age et ville : ods trace on; data temp; set lib1.donnees1; select; when (age<20) class_age='<20 ans'; when (age>=20 and age<65) class_age='20-65 ans'; when (age>=65) class_age='>65 ans'; end; if num_com=555 then ville='toulouse'; else ville='hors Toul'; run; PROC FREQ DATA=temp; TABLES class_age*ville / CELLCHI2 CHISQ DEVIATION; RUN; ods trace off; Combien d objets seront créés par ce programme? Quels sont leurs noms? Ecrire un programme permettant de ne faire apparaître dans la fenêtre OUTPUT que le tableau croisé Même chose mais dans un document HTML. (vous indiquerez deux instructions ODS HTML une pour indiquer le fichier de sortie (BODY), une autre pour sélectionner les objets (SELECT)). IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 113

3.Sorties HTML sophistiquées a)structure d une Feuille HTML Pour SAS, votre feuille HTML contient 3 éléments : Le corps (BODY) ce sont toutes les sorties de SAS en HTML. La table des matières (CONTENTS) contient le nom des objets de chaque page du BODY. La table des pages (PAGE) qui contient le titre de chaque page et son numéro. CONTENTS BODY PAGE FRAME Ici, notre sortie comporte deux pages. La première page contient la sortie d UNIVARIATE. Cette sortie d UNIVARIATE comporte plusieurs objets. Nous sommes en train de visualiser les TESTS FOR LOCATIONS. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 114

Pour chacun des éléments précédents, SAS vous demande un nom de fichier HTML. Pour éviter de taper le chemin de chaque fichier, vous pouvez utiliser la commande PATH=. Exemple : ods listing close; On ferme l OUTPUT ods html path='c :\TP' body='corps.html' contents='contenu.html' page='page.html' frame='feuille.html' ; proc univariate data=lib1.donnees5 plots; var age; run; proc print data=lib1.donnees5 (obs=10) ; run; ods html close; On ferme les fichiers HTML ods listing; On ouvre la feuille OUTPUT pour la suite. On ouvre la sortie HTML en c:\tp On stocke différentes parties dans 4 fichiers Remarques : En fait Corps.html va être en c:\tp\corps.html etc. Un seul des fichiers précédents est essentiel : c est BODY qui contient tous les résultats. b)changement de Style d une feuille HTML Pour personnaliser les sorties HTML précédente, il suffit d ajouter l option STYLE= dans les instructions précédentes : ods listing close; ods html path='c:\tp' body='corps.html' contents='contenu.html' page='page.html' frame='feuille.html' style=brown; proc univariate data=lib1.donnees5 plots; var age; run; proc print data=lib1.donnees5 (obs=10) ; run; ods html close; ods listing; le fond de l écran de sortie sort marron! Divers modèles sont fournis par SAS : DEFAULT IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 115

BEIGE BRICK BROWN D3D MINIMAL STATDOC Pour créer vos propres styles, il faut avoir recours à une nouvelle procédure PROC TEMPLATE. c)personnalisation des titres et notes de bas de page Dans l instruction Title, ou Footnote, nous pouvez indiquer des éléments HTML permettant de modifier les polices des titres, notes de bas de page : Syntaxe : Title <FONT nom de l attribut= «valeur» > texte du titre </FONT> ; Quelques attributs et leur valeur : FONT FACE= nom de la police Pour changer la police de caractères (Arial, Times etc.) FONT SIZE= taille Pour changer la taille de la police (1 à 7...) FONT STYLE= style de la police Pour changer le style de la police de carcatères (Italic, Roman ) FONT WEIGHT= gras ou non Pour changer le style (Medium, Bold ) FONT WIDTH=espacement de la police : Normal, Narrow ou Wide De même avec FOOTNOTE. Exemple : ods html path='c:\tp' body='body1.html'; title '<font face="arial" color="green" weight="bold" size=6 > Dix individus consommants </font>'; proc print data=lib1.donnees5 (obs=10); var nom prenom age sexe; run; title ; /*pour effacer le titre pour la suite */ d)utilisation de STYLES dans la procédure TABULATE Nous allons utiliser une procédure TABULATE pour illustrer ces notions : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 116

title 'Synthèse des résultats par Age et sexe'; proc tabulate data=lib1.donnees5 format=6.1; class sexe age ; var moy_mnt; table sexe*age, moy_mnt / box={label='montant moyen'}; format age f_age.; run; donne dans la fenêtre OUTPUT : Synthèse des résultats par Age et sexe ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒ Montant moyen moy_ - mnt ƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒ SEXE age ƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒ 1 moins de 18 ans 9999.9 ƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒ 19 à 65 ans 9999.9 ƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒ >=65 ans 9999.9 ƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒ 2 moins de 18 ans 9999.9 ƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒ 19 à 65 ans 9999.9 ƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒ >=65 ans 9999.9 Šƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒœ IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 117

Options à placer derrières les commandes de la procédure TABULATE Pour changer les couleurs et la police des éléments d une page HTML STYLE= {Background=couleur} ; Pour changer la couleur de l arrière plan. STYLE={Foreground=couleur} ; Pour changer la couleur du texte. STYLE={FONT_FACE= nom de la police} Pour changer la police de carcatères (Arial, Times etc.) STYLE={FONT_SIZE= taille} Pour changer la taille de la police (1 à 7...) STYLE={FONT_STYLE= style de la police} Pour changer le style de la police de carcatères (Italic, Roman ) STYLE={FONT_WEIGHT= gras ou non} Pour changer le style (Medium, Bold ) STYLE={FONT_WIDTH=espacement de la police : normal, Narrow ou Wide Quelques couleurs possibles étant : Red, Pink, Orange, Yellow, Yellow-Green, Green, Blue, purple, Black, White, Cyan : Exemple : Reprenons l exemple précédent en changeant les couleurs de fond et de caractères pour différents éléments de la sortie précédente : ods listing close; ods html body='c:\tp.html'; proc tabulate data=lib1.donnees5 format=10.1 style={background=blue foreground=white}; title 'Synthèse des résultats par age et sexe'; class sexe / style={background=cyan}; classlev sexe / style={background=cyan foreground=black font_size=30}; keyword mean / style={background=black font_weight=bold}; var age / style={background=blue foreground=white font_face=times font_style=italic}; table sexe*age, mean / box={label='age moyen'}; run; ods html close; ods listing ; IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 118

STYLES des cellules «Parents» : L inconvénient de la sortie précédente, c est que le style des cellules calculées (nombres) ne correspond pas au style des cellules contenant les noms des notes. Nous pouvons automatiquement les affecter en utilisant l option : *STYLE=<PARENT> table sexe*age*{style=<parent>}, mean / box={label='age moyen'}; e)coloration conditionnelle des cellules : utilisation de FORMAT Cet exemple assez spectaculaire peut vous montrer l utilisation des STYLES différentes selon la valeur de la cellule. Pour cela, nous allons utiliser un format créé spécialement. Nous allons voir ici comment colorier le fond de la cellule en ROUGE si le montant moyen est supérieur à 10000 en JAUNE, s il est compris entre 1000 et 10000 en VERT, sinon. Création d un nouveau Format Pour cela, nous allons définir un nouveau Format appelé FOND. proc format ; value fond low-1000 = 'Green' 1000-10000 = 'Yellow' 10000<-High ='Red'; run; Fond. prend donc les valeurs Green, Yellow et Red selon les valeurs de la variable à laquelle nous allons attribuer ce format : Amusons nous à afficher les montants moyens de 10 consommants de Donnees5 avec ce format : On a : proc print data=lib1.donnees5 (obs=10); format moy_mnt fond.; var moy_mnt; run; Obs MOY_MNT 1 Red 2 Green 3 Red 4 Green 5 Green 6 Green 7 Green 8 Green 9 Red IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 119

10 Green Remarque : La valeur de la variable MOY_MNT n a pas changé! On lui a juste appliqué un masque! En interne, les valeurs sont inchangées Utilisons ce format dans les Styles : ods listing close; ods html body='c:\tp.html' style=brown; proc tabulate data=lib1.donnees5; title 'Répartition des âges selon le sexe'; class sexe class_age; var moy_mnt; table sexe*(age*moy_mnt)*{style={background=fond. foreground=black font_weight=bold}},mean; run; ods html close; ods listing; Ce qui donne : IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 120

4.Sorties vers des fichiers de données a)fichiers simples La version 6 de SAS ne permettait de sauvegarder dans les fichiers de données qu une partie des sorties des procédures. Avec la V8, toutes les sorties des procédures peuvent être exportée dans des fichiers de données. Il est possible de ne mettre qu une partie des sorties en spécifiant le nom des objets. Syntaxe simplifiée : ODS OUTPUT nom de l objet (options) = nom du fichier de données SAS ; Exemple : La procédure Univariate renvoie (en général) 5 objets :Moments, BasicMeasures, TestsForLocation, Quantiles, Extremeobs. Pour sauvegarder ces données dans des fichiers, il suffit de l indiquer derrière ODS OUTPUT comme le montre le programme ci-dessous : ods listing close; On ferme la sortie dans la fenêtre OUTPUT classique /*On redirige la sortie vers des fichiers de données*/ ods output Moments=work.moments BasicMeasures=Work.statdebase TestsForLocation=Work.test Quantiles=work.quantiles Extremeobs=work.extremes; Proc univariate data=lib1.donnees5; var age moy_mnt; run; ods listing; On réactive la sortie OUTPUT classique pour visualiser les fichiers créés. /*Visualisation de deux fichiers */ proc print data=work.moments; title 'Fichier Work.moments'; run; proc print data=work.quantiles; title 'Fichier Work.quantiles'; run; va donner pour le fichier WORK. QUANTILES IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 121

Var Obs Name Quantile Estimate 1 age 100% Max 102 2 age 99% 89 3 age 95% 78 4 age 90% 71 5 age 75% Q3 55 6 age 50% Médiane 38 7 age 25% Q1 20 8 age 10% 6 9 age 5% 3 10 age 1% 0 11 age 0% Min 0 Vous pouvez aussi le visualiser avec l EXPLORER de SAS en allant dans la bibliothèque WORK. IUP MIAGE \ L3 \ 2008-2009 \ Outils Mathématiques \ Sas \ 122