TP SAS initiation IUP MIAGE L3 Année 2008-2009 · SAS™ est une marque déposée par SAS...

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

Transcript of TP SAS initiation IUP MIAGE L3 Année 2008-2009 · SAS™ est une marque déposée par SAS...

TP SAS initiation

IUP MIAGE L3

Année 2008-2009

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

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 \ 3

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 SAS1 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 \ 4

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 \ 5

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 \ 6

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 \ 7

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 plate-forme 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 \ 8

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 essentielles2:

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'

Contient tous les résultats Pour gérer toutes les sorties des programmes

Résultats de compilation

Enhanced Editor : Pour entrer votre Code SAS

Explorer : permet de créer des bibliothèques pour gérer les fichiers de données….

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

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 \ 10

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 \ 11

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 ;

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.

Création d’une table SAS nommée CONSO contenant 2 variables (2 champs : NUMERO et MONTANT) et 3

observations (lignes de données).

Procédure permettant l’édition des données de la table SAS précédemment créée.

Le « ; » ponctue toutes les lignes de SAS. L’instruction RUN conclue une étape DATA ou une

procédure.

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

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 d e 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.

Options linesize=x pagesize=y; x pouvant prendre les valeurs 64 à 256.

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

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 \ 14

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.

Sélectionnez votre répertoire personnel

Nom de votre bibliothèque personnelle

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

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 \ 16

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 EXP LORER 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 \ 17

2.Visualiser la structure de la table via la fenêtr e 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

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.

Length C’est la longueur (en bytes) $ variable caractère 8 variable numérique

Format C’est le format d’affichage de la variable. Informat 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.

Label 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 \ 18

Format (syntaxe)

Valeur non formatée

Format (pour notre exemple)

Valeur formatée

Remarque

$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

10847 datetime7. datetime12. datetime18.

12SEP89 12SEP89:03

12SEP89:03:19:43

Les chiffres apparaissant après la date sont les heures minutes secondes.

DDMMYYw 11316 11316 11316

ddmmyy5. ddmmyy6. ddmmyy8.

25/12 251290

25/12/90

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 \ 19

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

DATA nom fichier SAS ; INPUT var1 type1 var2 type2 .... var n type n ; instructions complémentaires ; CARDS ; liste des données RUN ;

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.

Noms des variables suivis de leur type, de leur informat.

Nom(s) du (des) fichier(s) de données SAS à créer.

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

Exemple

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.

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 \ 21

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 \ 22

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 fichierSAS1(options1)…fichierSASn(optionsn)[ 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 \ 23

(2)Copie partielle

en ne conservant que certaines variables (KEEP)

en ne supprimant que certaines variables (DROP)

en conservant certaines observations (IF THEN, WHEREErreur ! Signet non défini., OBS)

On ne conserve que les variables NOM, MONTANT et NOMBRE

On supprime la variable AGE

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

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

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

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 \ 27

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 \ 28

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 \ 29

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 \ 30

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:

** puissance (exposant)

* multiplication / division + addition - soustraction

Opérateurs logiques:

< 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 OR

ou

& 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 \ 31

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,round-off-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²)

OUTPUT; Nous plaçons cette valeur dans le fichier

END; La boucle est terminée.

KEEP x; Nous ne conservons que la variable x dans le fichier(i est inutile)

RUN; PROC PRINT; RUN;

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 \ 32

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ériq ue*/ 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 \ 33

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) returns the number of days between two dates DATE() returns the current date as a SAS date value DATEPART(datetime) extracts the date from a SAS datetime value DATETIME() returns the current date and time of day DAY(date) returns the day of the month from a SAS date value JULDATE(date) returns the Julian date from a SAS date value MDY(month,day,year) returns a SAS date value from month, day, and year values MINUTE(time | datetime) returns the minute from a SAS time or datetime value MONTH(date) returns the month from a SAS date value QTR(date) returns the quarter of the year from a SAS date value TIME() returns the current time of day TIMEPART(datetime) extracts a time value from a SAS datetime value TODAY() returns the current date as a SAS date value WEEKDAY(date) returns the day of the week from a SAS date value YEAR(date) returns the year from a SAS date value YRDIF(sdate,edate,basis) returns the difference in years between two dates

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

Exercice 5 • Modifier le format de la variable MONTANT de lib1.D onnees1

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 \ 35

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 \ 36

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;

b)Fusion horizontale sophistiquée (MERGE avec option BY) Syntaxe simplifiée 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 \ 37

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éalablemen t triées. � Créer une table nommée FUSION.

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

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;

Exemple

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 \ 39

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 gro s 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 \ 40

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 \ 41

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 \ 42

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 \ 43

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 \ 44

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; 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

Utilisation de COPY

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 \ 45

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 TRANSPOS E 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 d e

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 \ 46

SELECT entrées ; Ne sélectionne dans le catalogue FORMATS que les noms de formats ou d’informats indiqués ici. (entrées = nom de formats ici)

EXCLUDE entrées ; N’exclut du catalogue FORMATS que les noms de format ou d’informats indiqués ici

RUN ;

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 \ 47

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 \ 48

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

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 ci-dessus. 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 \ 50

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 Nous définissons l’Informat Fnote. ici

'AB'=12 'B'=14 'TB'=16 'ABS'=. ; Note manquante remplacée par un point.

run; data temp; input nom $ @; 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.

do i=1 to 3; input note : fnote. @; Nous les lisons l’une après l’autre.

output; end; keep nom note; Pour ôter la variable i du fichier de données

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 :

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 \ 51

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 \ 52

G.Proc Tabulate

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.

Syntaxe simplifiée

Proc TABULATE <options> ; Class variables ; variables de classe qui seront utilisées dans Table (qualitatives ou quantitatives discrètes) Var variables ; variables à analyser (quantitatives) Ne rien mettre pour un tri croisé banal

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 :

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. Noseps élimine les séparateurs horizontaux 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 \ 53

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; car nous allons effectuer un tri croisé avec les variables age et sexe

table age, sexe; run;

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 \ 54

Le N à l’affichage indique que SAS a calculé, pour chaque cellule, l’effectif de non manquants.

Syntaxe simplifiée de la commande table

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

Exemple

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 \ 55

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 s uivants.

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

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 \ 57

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 ; Remarques :

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.

(1)Création d’une table : Syntaxe

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 \ 58

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

structure d’une table.

Les syntaxes 2 et 3 créent des tables vides, qu’il faut ensuite remplir avec la commande INSERT. Exemples

(2)Création d’une vue : Syntaxe 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 \ 59

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 \ 60

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 \ 61

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 \ 62

Exercice 11 Dans Donnees2, créez la variable MOY_MNT (moyenne d es montants de janvier et février) à partir de MONTANT01 et MON TANT02. A partir de la table Donnees2, créer la table tempo raire Donnees3 contenant les champs : NOM, PRENOM, AGE, S EXE, MOY_MNT. Cette table ne doit pas contenir les ligne s 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 \ 63

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 \ 64

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 \ 65

(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.

(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.

(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.

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 :

A B

A B

A B

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

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 \ 67

(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.

(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./

Déclaration d’un alias

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

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 va leurs ‘0-20’ si l’âge est inférieur à 20 ans, ’20-65’ si l’âge e st 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 \ 69

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 \ 70

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 \ 71

Exercice 13 Créer les graphiques suivants :

Créez une table temporaire DON10000 (dans la SASWOR K) contenant toutes les variables de la table DONNEES dont le mo ntant est inférieur à 10000. Triez cette table sur la variabl e 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 \ 72

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 \ 73

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 \ 74

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= Nom du fichier de données (si ce n'est pas le fichier courant) NOPRINT NORMAL Effectue un test de normalité (Shapiro-Wilk si n<2000, Kolmogorov si n>2000) ROUND= Spécifie la façon d'arrondir les variables.

FREQ (Edition d'une table avec les valeurs des variables, les %, les % cumulés...) PLOT Produit des "graphiques" (Box plot, ...) VARDEF= Vous indiquez ici le diviseur utilisé pour le calcul de la variance: 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 \ 75

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 significatio n en vous aidant du tableau de la page suivante.

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

SORTIE SAS (exemple) 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

Symbole SAS signification utilisé dans l'output 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: S tatistique. utilisée pour tester la nullité de la médiane PROBM: c'est le P correspondant Signrank: statistique du test des rangs (Wilcoxon) cf ci-dessous 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 \ 77

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

H0 0 0: :µ µ µ µ= ≠ contre H1 (bilatéral) avec pour SAS ici 00 =µ 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 n

− µ0

/ avec

sn

x xii

=−

−∑1

12( ) et 00 =µ la valeur P correspondante. (Si P>0.05, on ne peut rejeter H0

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.

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

r n ni+

∑ − +( ) /1 4 où ri+ est le rang de xi 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 \ 78

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 bibliot hèque

précédemment créée) contenant la moyenne, l’écart-t ype 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. goptions htitle =4 htext =3 gunit =pct ftext =swiss ftitle =swiss; proc univariate data =lib1.donnees5 nextrobs =2 nextrval =4; var age; histogram / midpoints =0 to 100 by 20 pfill =x cfill =blue; title 'Répartition des consommants par âge' ; run ;

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

Paramétrages des hauteurs des titres et du texte

Unité du graphique

Polices utilisées

Les valeurs vont de 0 à 100 groupées par bloc de 20 Couleurs et hachures de l’histogramme

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

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 \ 80

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' midpoints =0 to 100 by 20 ; inset mean='Moyenne :' ( 4.1 ) / noframe position =ne height =2 font =swissxb; format sexe f_sexe. ; title 'Age moyen par sexe' ; run ;

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.

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.

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

Exercice 16 • Créer une table Tempo stockées dans la SASWORK ,à p artir de

Donnees2, contenant les variables : AGE, SEXE, MONT ANT01, MONTANT02 + créer une variable MOY_MNT représentant la moyenne de MONTANT01 et MONTANT02. Limiter le nombr e de lignes de cette table à celles dont le montant moye n 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 \ 82

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 ordre d'apparition dans la table SAS ORDER = FORMATTED modalités triées suivant les valeurs formatées ORDER = FREQ modalités triées par fréquences décroissantes ORDER = INTERNAL (par défaut) 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 ROLE

CELLCHI2 imprime la contribution de chaque cellule au chi2

DEVIATION é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 \ 83

MISSING considère les valeurs manquantes comme une modalité

CHISQ teste par le chi 2 l’hypothèse d’indépendance entre les variables

NOCOL N’affiche pas les % colonnes

NOROW Idem % lignes

NOPERCENT Idem % total

NOFREQ Idem Effectif

NOPRINT Ne créé pas de sortie dans l’OUTPUT

OUT 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 \ 84

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 P rob --------------------------------------------------- --- 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 sup plémentaire Class_age contenant ‘<20 ans’ si la variable âge es t 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 variab le

class_age et ville.

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

2.Analyse portant sur des variables quantitatives e t 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é Statistique

N Nombre d’observations

NMISS Nombre de valeurs manquantes

MIN Valeur minimale

MAX Valeur maximale

MEAN Moyenne

RANGE Différence entre la valeur maximale et minimale

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

observée

SUM Somme

SUMWGT Somme des poids

CSS Somme des écarts à la moyenne au carré

VAR Variance

STD Ecart-type

STDERR Ecart-type de la moyenne

CV Coefficient de variation

SKEWNESS Coefficient d’asymétrie

KURTOSIS Coefficient d'aplatissement

T Statistique du T de Student

PRT 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 \ 87

--------------------------------------- 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 VARA GE 1 0 475 43.2379 49.63 32 2 1 1 420 43.1810 52.72 14 3 3 1 55 43.6727 26.37 24

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

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 \ 89

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 \ 90

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 mont ants

moyens (moyenne entre MONTANT01 et MONTANT02) ? A partir de donnees5 : créer une variable MOY_MNT c ontenant la moyenne des variables MONTANT01 et MONTANT02 puis c alculer les coefficients de corrélation (Pearson) entre la vari able AGE et MOY_MNT

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

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.

Remarque : Il est aussi possible d’ouvrir INSIGHT avec PROC INSIGHT.

proc insight data=lib1.Donnees5; run; 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 \ 92

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’instructi on 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 P UT). • Limiter aux montants moyens inférieurs à 10 000 eur os.

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.

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

1.Aperçu rapide de quelques menus

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.

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.

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

Le menu Analyze permet d’effectuer des calculs et des graphiques de différents types :

B.Analyse d’une Variable qualitative 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...

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.

Régression simple, multiple.

Analyse multivariées (Matrice des corrélations, Valeurs propres, vecteurs propres (ACP) ), Analyse discriminante

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

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 \ 96

En allant dans Tables/ Frequency counts, SAS ajoute de tableaux de fréquences un pour les hommes et un autre pour les femmes.

Pour transférer les calculs dans la fenêtre OUTPUT cliquez sur ce bouton, puis sur SAVE.

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

Exercice 21

• Reproduire le graphique suivant en utilisant la com mande MOSAIC PLOT qui génère des diagrammes à bandes à de ux 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 \ 98

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 \ 99

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 :

* **

Q1 Q2=M Q3Q1-1.5E Q3+1.5E

Plus petite valeur observéesupérieure à Q1-1.5 E

Plus grande valeur observéeinférieure à Q3+1.5E

Valeursextrèmes

E=Q3-Q1

50 % de la pop.

25% 25%

M=MédianeQi=ième quartile

100% de la pop

Sortie SAS :

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

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 cli quant dessus. Refaites les calculs sans lui. (Menu Edit/Observations/Exclude in Calculations, vous pou vez 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 \ 101

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 )

2.Fonction de répartition En allant dans le menu CURVES, vous pouvez intégrer des courbes supplémentaires à la sortie précédentes :

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 :

Tests de Student, de Wilcoxon...

Densité des lois connues (Normales etc.)

Intervalle de confiance...

Fonction de répartition (observée)

Tableau de fréquence.

Fonction de répartition théorique. (d’une loi connue)

Moyenne tronquée (Calculée en ôtant une partie des individus extrêmes)

Courbe de Normalité (Droite de Henry ou autre)

Tests de normalité etc...

Tests de normalité

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

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 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, moment s, …)

D.Etude de plusieurs variables quantitatives

Vous pouvez déplacer ce curseur pour modifier la moyenne...

L’estimation se fait à partir de l’échantillon ou à partir de vos spécifications.

Choix des distributions

Choix des paramètres (si vous choisissez vos

spécifications)

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

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 q uantitative 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

Cliquez sur la couleur rouge, une boîte apparaît :

Couleur de la stratification. Cliquez sur une couleur, puis remplissez la boîte de dialogue qui s’affichera.

Pour zoomer sur le graphique.

Marque de la stratification. Cliquez sur une marque par laquelle vous souhaitez marquer les observations...une boîte de dialogue va s’afficher.

Vous indiquez ici la condition à remplir pour être en rouge.

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.

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

Exercice 25 • ·Mettre en rose les femmes (SEXE=2) et changer le s ymbole

en croix. • Mettre en bleu les hommes (SEXE=1) et changer le sy mbole

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 \ 105

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.

Nuage de points avec la droite des moindres carrés de Y en X.

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

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 Signification <H1> </H1> 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

<BR> Retour à la ligne <HR> Tracé d’une ligne horizontale <FONT FACE=…> </FONT> Pour changer la police de caractère <FONT COLOR=> </COLOR> Pour changer la couleur de la police <G> </G> Mettre en Gras <I> </I> Mettre en Italique <IMG SRC="nom fichier.gif"

ALIGN=…> 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 \ 107

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 :

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.

(Un seul objet(Un seul objet(Un seul objet(Un seul objet : les : les : les : les 10 observa10 observa10 observa10 observations)tions)tions)tions)

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

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 : 3 directions possibles : 3 instructions ODS

� Ne confondez pas la fenêtre OUTPUT et l’ODS OUTPUT qui n’ont rien à voir…

Objet de sortie (= Données+ Mise en forme)

ODS OUTPUT : Fichier de données SAS

ODS LISTING : Fenêtre OUTPUT (par défaut)

ODS HTML : Document WEB

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

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 \ 110

2.Sélection d’objets en sortie : ODS TRACE, ODS SEL ECT, 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> ; Active le mode TRACE ODS TRACE OFF ; 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 \ 111

Exemple :

ods listing; Pour diriger les objets vers la fenêtre OUTPUT

ods trace on; Pour activer le mode TRACE

proc univariate data=lib1.donnees5; var age; run ; ods trace off;

Va donner dans la LOG les noms de nos 5 objets :

Output Added: ------------- Name: MomentsName: MomentsName: MomentsName: Moments Label: Moments Template: base.univariate.Moments Path: Univariate.AGE.Moments ------------- Output Added: ------------- Name: BasicMeasuresName: BasicMeasuresName: BasicMeasuresName: BasicMeasures Label: Basic Measures of Location and Variability Template: base.univariate.Measures Path: Univariate.AGE.BasicMeasures ------------- Output Added: ------------- Name: TestsForLocationName: TestsForLocationName: TestsForLocationName: TestsForLocation Label: Tests For Location Template: base.univariate.Location Path: Univariate.AGE.TestsForLocation ------------- Output Added: ------------- Name: QuantilesName: QuantilesName: QuantilesName: Quantiles Label: Quantiles Template: base.univariate.Quantiles Path: Univariate.AGE.Quantiles ------------- Output Added: ------------- Name: ExtremeObsName: ExtremeObsName: ExtremeObsName: 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 \ 112

• 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; Sélection d’objets

ods listing show; Pour savoir où on en est

proc univariate data=lib1.donnees5 plots; var age; run; ODS LISTING SHOW va nous donner dans la LOG : ods listing show;ods listing show;ods listing show;ods listing show; Current LISTING select list is: 1. quantiles 2. basicmeasures

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

Dans la fenêtre OUTPUT vous n’avez que ces deux 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)).

Résultats avec la sélection d’objets

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

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.

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.

BODY

PAGE

CONTENTS

FRAME

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

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' On ouvre la sortie HTML en c:\TP

body='corps.html' On stocke différentes parties dans 4 fichiers

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.

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 \ 116

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 \ 117

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 \ 118

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 \ 119

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 :

proc print data =lib1.donnees5 ( obs =10); format moy_mnt fond. ; var moy_mnt; run ;

On a :

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 \ 120

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 \ 121

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ée s*/ 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 \ 122

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.