Vous êtes sur la page 1sur 365

COURS, TP

Modules utiliss : Base, Stat, Insight, Ets, Graph, Assist

Introduction
Le systme SAS est LE logiciel de traitement de donnes1. Les procdures SAS sont trs compltes et dpassent largement le cadre du DUT STID. SAS est trs rpandu. Il a acquis depuis son lancement en 1960 une situation dominante dans beaucoup de secteurs dactivits. En France lINSEE, ELF, EDF et depuis peu les banques, les assurances, les CAF lont adopt. SAS peut sutiliser, dans le cadre de votre formation, en assimilant le langage SAS2 ou en utilisant les modules cliquer-rsultat comme SAS/ ASSIST ou SAS Enterprise Guide. Nous privilgierons la premire approche car elle permet une utilisation plus approfondie de SAS mme si cest au prix dun certain temps d'apprentissage. Ajoutons que SAS ne peut tre utilis convenablement que par des personnes ayant les connaissances requises en statistiques et en programmation. Il est devenu incontournable dans la majorit des stages et offres demplois qui nous arrivent.

Le Systme SAS fonctionne sur plusieurs systmes (MAC, PC Dos et WINDOWS, UNIX...). La version WINDOWS ncessite: 16 M0 de mmoire vive RAM (minimum) 500 M0 sur le disque dur. (minimum) Ce logiciel est commercialis par : SAS INSTITUTE B.P.5 77166 GREGY-SUR-YERRES : 0160621111 Fax:0160621199 Contact : Ariane Ligier Bellair SAS est une marque dpose par SAS Institute Inc.

1 SAS commercialise un autre logiciel statistique (trs convivial) SAS JMP3.2. Il noccupe que quelques mgas sur le disque dur. Il est trs convivial (menus...) et assez complet (Plans dexpriences, Surfaces de rponse, Rgression logistique...) mais malheureusement limit dans certains domaines (importation de donnes, paramtrage des sorties, des plans dexpriences fractionns...). Nanmoins, il peut tre une alternative intressante pour ceux qui nont pas besoin de toute la puissance du systme SAS ou qui sont allergiques au langage SAS ! 2 SAS possde en fait 3 langages. Le langage SAS et son module Macros bien sr, mais aussi le langage SQL bien connu dans lunivers des SGBD et le langage le SCL pour crer des applications type Visual Basic (SAS/AF, SAS/FSP)

SOMMAIRE
I. Premier contact avec SAS _________________________________________________ 8
A. Cinq fentres essentielles ______________________________________________________8 B. Mon premier programme SAS ________________________________________________11
1. 2. 3. 4. 5. 6. 7. Saisie du programme _______________________________________________________________11 Sauvegarde des instructions du programme _____________________________________________13 Excution du programme (F8)________________________________________________________13 Visualisation des rsultats et personnalisation de la fentre OUTPUT (complment) _____________14 Sauvegarde des rsultats contenus dans OUTPUT ________________________________________15 Sauvegarde du fichier des donnes ____________________________________________________15 Ne confondez pas... ________________________________________________________________16

II. Fichiers de donnes SAS _________________________________________________ 17


A. Prliminaires sur les fichiers de donnes SAS____________________________________17
1. 2. 3. 4. 1. 2. 3. 4. 1. 2. 1. 2. Nom logique dun fichier de donnes SAS ______________________________________________17 Les 2 bibliothques prdfinies WORK et SASUSER _____________________________________18 Comment crer VOTRE bibliothque ? ________________________________________________19 Visualisation du contenu dun fichier, modifications... _____________________________________22 Choix du type de fichier ____________________________________________________________24 Emplacement du fichier convertir____________________________________________________25 Nom du fichier SAS obtenu _________________________________________________________25 Visualisation du fichier SAS _________________________________________________________26 Donnes incluses dans le programme. (CARDS) _________________________________________31 Utilisation de fichiers de donnes SAS existants : Instruction SET ___________________________36 Slection sur les variables ___________________________________________________________65 Slection dindividus_______________________________________________________________67

B. Conversion automatique dun fichier EXCEL (File/Import) _______________________24

C. Fichier de donnes cr dans un programme SAS : tape DATA ____________________31

D. Utilisation de donnes SAS dans les Procdures ou les tapes DATA) ________________64

III.

LODS : Gestion des sorties SAS _________________________________________ 73

A. Quelques notions basiques sur lHTML ________________________________________74 B. Utilisation de lODS de SAS. Objets de sortie ____________________________________77 C. Trois sorties possibles _______________________________________________________80
1. 2. 3. 4. 5. Sortie HTML basique ______________________________________________________________81 Slection dobjets en sortie : ODS TRACE, ODS SELECT, ODS EXCLUDE __________________83 Sorties HTML sophistiques _________________________________________________________88 Sorties HTML pour les graphiques ____________________________________________________98 Sorties vers des fichiers de donnes __________________________________________________107

IV.
1.

Analyse interactive de donnes : SAS/INSIGHT ___________________________ 112


Aperu rapide de quelques menus ____________________________________________________114

A. Ouverture dune table ______________________________________________________112 B. Analyse dune Variable qualitative ___________________________________________116 C. Variable quantitative ; Analyse univarie ______________________________________120
1. 2. 3. 1. Boxplots, histogrammes, moments ___________________________________________________120 Fonction de rpartition ____________________________________________________________123 Densit de probabilit _____________________________________________________________124 Nuage de points (scatter plot) _______________________________________________________126

D. Etude de plusieurs variables quantitatives _____________________________________126

2. 3. 4. 5.

Stratification par une variable qualitative, ou quantitative agrge (TOOL)____________________126 Rgression (Fit XY) ______________________________________________________________129 Reprsentation 3D interactive _______________________________________________________131 Lancement dINSIGHT avec le langage SAS ___________________________________________132

V. Quelques procdures statistiques _________________________________________ 134


A. SORT (Trier des fichiers) ___________________________________________________135 B. PRINT (Afficher un fichier dans lOUTPUT)___________________________________136 C. TABULATE ______________________________________________________________139 D. RANK (Calculs de rangs) ___________________________________________________146 E. UNIVARIATE (Analyse univarie) ___________________________________________148
1. 2. 3. 1. 2. 3. 1. 2. 3. 4. 5. 6. 1. 2. 3. 4. 5. Syntaxe:________________________________________________________________________148 Dtails _________________________________________________________________________150 Exercices _______________________________________________________________________151 Syntaxe simplifie ________________________________________________________________152 Rappels thoriques _______________________________________________________________153 Exercices: ______________________________________________________________________155 Syntaxe simplifie ________________________________________________________________156 Exemples _______________________________________________________________________156 Quelques options de la commande TABLES ___________________________________________158 Exercice________________________________________________________________________160 Cas Particulier important, TEST du chi2 sur un tri crois existant ___________________________161 Rappels thoriques sur le test d'indpendance du 2 ______________________________________162 Un exemple _____________________________________________________________________163 ANOVA un critre ______________________________________________________________163 Mise en pratique sous SAS _________________________________________________________166 Exercices _______________________________________________________________________169 ANOVA deux critres de classification (modle fixe) ___________________________________171

F. TTEST (Tests de Student un ou deux chantillons, apparis ou non) ______________152

G. FREQ (tris plat, tris croiss, test dindpendance du chi2) ______________________156

H. ANOVA et GLM, Analyse de la variance ______________________________________163

I.
1. 2. 3. 4.

NPAR1WAY :Quelques mthodes non paramtriques ___________________________173


Prliminaires ____________________________________________________________________174 Test de Kolmogorov-Smirnov_______________________________________________________174 Test de Mann et Whitney (ou Wilcoxon ou White) ______________________________________179 Le test de Kruskal et Wallis ________________________________________________________182

J.
1. 2. 1. 2.

CORR , calcul des coefficients de corrlations____________________________________184


Syntaxe simplifie ________________________________________________________________184 Test de nullit ___________________________________________________________________184 Syntaxe simplifie ________________________________________________________________189 Exercice________________________________________________________________________191

K. PRINCOMP, Analyse en Composantes Principales ______________________________189

L. STANDARD , normalisation de variables________________________________________203 M.


1. 2. 3. 4. 5. 6.

CLUSTER : Classification dindividus_______________________________________206


But____________________________________________________________________________206 Choix de la distance ______________________________________________________________206 Qualit de la typologie ____________________________________________________________206 Algorithme _____________________________________________________________________207 Mise en uvre (Proc CLUSTER) ____________________________________________________208 Exercice________________________________________________________________________213

N. CORRESP Analyse des correspondances simples _______________________________214


1. 2. 3. 4. 1. 2. 1. 2. 1. 2. 3. 4. 5. tude des profils lignes ____________________________________________________________215 Etude des profils colonnes__________________________________________________________222 Lien entre les deux analyses ________________________________________________________225 Syntaxe de PROC CORRESP sous SAS _______________________________________________228 Tableau disjonctif complet _________________________________________________________230 Exemple________________________________________________________________________231 Lanalyse factorielle discriminante ___________________________________________________247 Lanalyse discriminante Bayesienne __________________________________________________256 Visualisation de la srie____________________________________________________________270 Choix dun modle de lissage _______________________________________________________271 Estimation des paramtres__________________________________________________________272 Prcision de lajustement___________________________________________________________273 Calcul des prvisions______________________________________________________________273

O. CORRESP Analyse des Correspondance Multiples ______________________________230

P. DISCRIM : LAnalyse discriminante__________________________________________246

Q. La commande FORECAST (Etude de sries chronologiques) _______________________268

VI.
1. 2. 3. 4. 5. 6. 7. 8. 9.

Quelques procdures de gestion de fichiers _______________________________ 275


Objet __________________________________________________________________________275 Syntaxe simplifie ________________________________________________________________275 Exemples _______________________________________________________________________277 Visualisation des formats utilisateurs _________________________________________________278 Exercices _______________________________________________________________________279 Format permanent Library= ; puis Libname library nom de bibliothque ;___________________280 Masques daffichage (picture) _______________________________________________________282 Informat (INVALUE) _____________________________________________________________286 Complments____________________________________________________________________288

A. FORMAT (Crer de nouveaux formats) _______________________________________275

B. TRANSPOSE (Transposer un fichier) _________________________________________289 C. CONTENTS (Inventaire dune bibliothque) ___________________________________292 D. DATASETS (gestion de bibliothques, de fichiers de donnes) ______________________295
1. 2. 3. 4. 5. 6. 7. Concatnation de fichiers __________________________________________________________296 Changement de nom dun fichier_____________________________________________________298 Inventaire dune bibliothque, informations sur un fichier _________________________________298 Suppression de fichiers ____________________________________________________________298 Copie de fichiers _________________________________________________________________299 Modifications sur les variables dun fichier (format, nom...) _______________________________299 Rparer des fichiers endommags par une panne systme.... _______________________________301

VII. Une autre faon d'utiliser SAS: SAS / ASSIST ____________________________ 302
A. Prsentation ______________________________________________________________302 B. Comment lancer SAS/ASSIST ? ______________________________________________303 C. Exemple d'utilisation de SAS/ASSIST: ________________________________________303 D. Comment obtenir les instructions SAS qui ont donn le rsultat prcdent __________305

VIII. IX.

PETIT DICTIONNAIRE ANGLAIS-FRANCAIS ________________________ 307 BIBLIOGRAPHIE COMMENTEE _____________________________________ 308

X. ANNEXES ___________________________________________________________ 311


A. Raccourcis clavier _________________________________________________________312

B. OPERATEURS ET FONCTIONS ____________________________________________313


1. 2. 1. 2. 1. 2. 1. 2. 3. Les oprateurs ___________________________________________________________________313 Les fonctions ____________________________________________________________________315 Formats ________________________________________________________________________320 Les Informats____________________________________________________________________328 La fentre doptions ______________________________________________________________331 Linstruction ____________________________________________________________________332 Voyons un exemple de transfert SAS vers Excel ________________________________________335 Transfert Excel vers SAS __________________________________________________________336 Applications ____________________________________________________________________337

C. Format et Informat ________________________________________________________320

D. Commande ou fentre OPTIONS en langage SAS ______________________________331

E. Echange dynamique de donnes SAS-EXCEL :Liaisons DDE _____________________335

F. Quelques procdures usuelles ________________________________________________340 G. Execution dun FICHIER DE COMMANDES SAS depuis le DOS _________________342 H. Importation de fichiers ayant un format connu PROC IMPORT __________________343 I. J.
1. 2. 3. 4.

Exportation de fichiers PROC EXPORT_______________________________________344 Complment : Donnes importes dun fichier texte ASCII externe ________________345
LEFI __________________________________________________________________________345 Instruction INFILE : Syntaxe simplifie _______________________________________________348 Donnes ou fichiers inhabituels______________________________________________________350 Lecture des donnes par colonnes dans un fichier ASCII externe. ___________________________354

K. Utilisateurs du systme SAS en France au 1.1.1996 ______________________________358 L. INDEX ___________________________________________________________________359

Pour bien utiliser ce cours...

"J'entends, j'oublie J'apprends, je retiens Je fais, je comprends"


Proverbe chinois3

Le but de ce cours est de vous prsenter une petite palette doutils SAS afin de
mettre en pratique vos connaissances en statistiques et en informatique. de TD! Il en faudrait au moins 5 fois plus ! Nous avons donc omis une grande partie des nombreuses options des procdures, commandes et instructions4. Laide en ligne du logiciel ou lexcellente documentation papier5 sont l pour vous permettre dapprofondir les notions vues en cours.

On ne peut faire le tour des possibilits de SAS en 50H

Pour que ce cours soit profitable, il faut le travailler rgulirement. Il ne faut


pas hsiter y revenir hors sance.

N'hsitez pas me faire part de vos commentaires sur ce document afin de


l'amliorer pour les candidats futurs.

Bon courage !

3 Cit par M. Tennenhaus dans une confrence de l'ASU sur l'emploi des logiciels en Statistique 4 Ce document totalise 400 pages environ contre plus de 10000 pour la documentation papier officielle SAS 5 Vous devrez imprativement la consulter si vous voulez tre spcialiste SAS plus tard

I.

Premier contact avec SAS

Lancez le programme SAS, vous allez voir apparatre le DMS ( Display Manager System) de SAS qui contient cinq fentres essentielles6:

A.

Cinq fentres essentielles

Rsultats de compilation

Explorer : permet de crer des bibliothques pour grer les fichiers de donnes. Enhanced Editor : Pour entrer votre Code SAS

Pour grer toutes les sorties des programmes

Contient tous les rsultats

6 Si tel n'est pas le cas, allez dans le menu Windows/Cascade ou si une des fentres est absente, faites View/'nom de la fentre'

La fentre Explorer
Permet de grer les bibliothques et les fichiers de donnes. On peut crer, visualiser, modifier une fichier de donnes.

La fentre Enhanced EDITOR 7


Elle contient, comme son nom l'indique, les instructions SAS excuter. Grce aux menus attachs CETTE fentre, vous pouvez saisir un programme, le sauvegarder, le rappeler, le modifier...

La fentre LOG (Touche F6)


Aprs excution d'un programme, cette fentre contient chaque instruction excute et ventuellement les erreurs rencontres. Il est indispensable de consulter cette fentre avant de lire les rsultats contenus dans la fentre OUTPUT.

La fentre OUTPUT (Touche F7)


Cette fentre contient tous les rsultats des instructions excutes par SAS: tests, tableaux de valeurs ... Elle ne doit tre consulte qu'aprs la LOG. Il vous est possible de sauvegarder tout ou partie du contenu de cette fentre et de rcuprer le contenu sous WORD.

La fentre RESULTS
Permet de grer toutes les sorties produites par les programmes SAS excuts pralablement. Elles permet daccder rapidement la sortie qui vous interesse.

7 En fait, il y en a deux. Il y a lancienne (Program Editor V6.12) et celle-ci beaucoup plus agrable utiliser (indentation automatique, reconnaissance des caractres par des couleurs etc.)

Ainsi, aprs excution du programme contenu dans l Enhanced EDITOR prcdent, on observe le rsultat suivant:

Vous constatez que les instructions et les commentaires d'excution sont "passs" dans la fentre "LOG", quant aux rsultats, ils figurent dans la fentre "OUTPUT".

Quant la fentre Results, elle contient le plan des rsultats disponibles. Nous voyons quune procdure MEANS a t excute et que nous disposons des Summary Statistics :

B.
1.

Mon premier programme SAS


Saisie du programme
Activez la fentre Enhanced EDITOR et cliquez sur FILE/NEW pour vider son contenu. Vous allez taper ( la lettre !) dans la fentre le programme suivant :
/* Petit programme simple */ DATA WORK.TAILPOID; INPUT TAILLE POIDS;
Cration du fichier tailpoid dans la bibliothque Work qui contiendra : Variables du fichier : Taille et poids.

Etape DATA (cration fichier de donnes)

CARDS; 175 85 167.5 75 190 92 188 88 165 57 166 49.5 RUN ;

Donnes

Excuton de cette tape DATA cest dire cration physique du fichier ci-dessus

TITLE 'CALCUL DES STATISTIQUES DE BASES' ; FOOTNOTE 'SOURCE:QUESTIONNAIRE OCT 1992';


Procdure SAS (calcul de stats lmentaires)

PROC MEANS DATA=WORK.TAILPOID N NMISS MIN MAX RANGE MEAN VAR STD; VAR TAILLE POIDS; RUN;

Statistiques de base sur les variables Taille et Poids du fichier Work.Tailpoid

Ce programme cre un fichier de donnes TAILPOID dans la bibliothque WORK contenant deux variables numriques TAILLE et POIDS puis calcule quelques statistiques de base. Linstruction CARDS ; indique SAS lemplacement des donnes. Notez les RUN ; qui terminent les procdures et les tapes DATA et aussi le . qui sert de sparateur dcimal (comme pour MINITAB)

Un mot sur PROC MEANS8 ( passer en premire lecture) PROC MEANS etc. demande SAS deffectuer quelques statistiques lmentaires sur les variables taille et poids dont voici la signification (nous en ajoutons dautres qui peuvent tre demandes en option) : Terme N NMISS MIN MEDIAN Q1 MAX Signification Nombre dobservations Nombre dobservations manquantes Le minimum Mdiane Premier quartile Le maximum Sa syntaxe peut tre trs complexe : Linstruction CLASS indique quelles variables utiliser pour dfinir les sous populations.
proc means data=moi.stid193 mean median q1 q3; var taille; class groupe sexe bac; run;

Terme RANGE MEAN VAR Q3 QRANGE STD

Signification Ltendue (MAX-MIN) La moyenne La variance 3eme quartile Q3-Q1 Lcart-type

Extrait de la sortie :
0000000.461 0000000.261 0000000.261 0000000.361 5 B 0000000.071 0000000.761 0000005.861 0000005.861 2 A 2 0000000.681 0000000.681 0000000.681 0000000.681 1 ORP 0000000.871 0000000.861 0000000.371 0000000.371 2 D 0000000.381 0000000.971 0000000.181 0000002.281 5 C 0000000.081 0000000.861 0000000.471 0000000.471 2 B 1 A elitrauQ elitrauQ naideM naeM sbO CAB EXES EPUORG reppU rewoL N

Pour limiter le croisement des variables prcdentes, vous pouvez utiliser WAYS : Complment sur Proc Means : WAYS, TYPE
proc means data=moi.stid193 mean median q1 q3; var taille; class groupe sexe bac; ways 1 2; run;

Ne va combiner les variables CLASS que 1 1 ou 2 2 et ce, grce WAYS pour navoir quune seule combinaison il suffit de mettre 1. Linstruction TYPE GROUPE*SEXE ; permet de navoir que la variable groupe croise avec la variable SEXE

8 Pour en savoir plus, allez dans laide, puis dans Help on SAS Software PRODUCTS puis dans Search entrez MEANS, vous pouvez ensuite accder la procdure PROC MEANS. Nous verrons plus loin une procdure plus complte pour traiter les donnes quantitatives :PROC UNIVARIATE

2.

Sauvegarde des instructions du programme9


Toujours dans la fentre " EDITOR" faites FILE/SAVE AS et enregistrez ce programme dans votre rpertoire sous le nom PREMIER.SAS par exemple.10

3.

Excution du programme (F8)


Excution de tout le contenu de la fentre Nous allons excuter le programme prcdent. Assurez-vous que la fentre LOG est visible. Dans la fentre "EDITOR" allez dans LOCALS/SUBMIT, ou cliquez sur le bouton ou encore tapez sur F8.

Une fois l'excution acheve, allons dans la fentre LOG (F6) pour voir les commentaires d'excution11. Il est fondamental d'y aller AVANT d'interprter les rsultats car elle contient les ventuels messages derreurs. Excution partielle Pour excuter une partie du programme figurant dans la fentre Program Editor, slectionnez la avec la souris (mettez la en surbrillance) puis faites un submit. Seule la partie slectionne a t excute.

9 Le fichier de programme est un fichier texte DOS banal qui peut ensuite tre dit sous Word (en police courier new pour conserver l'alignement) 10 Lextension .SAS est rserve au fichiers de programme SAS. Ce sont des fichiers ASCII standard. 11 Il vous est possible aussi de sauvegarder le contenu de cette fentre LOG (menu File/...) dans un fichier que vous nommerez PREMIER.LOG par exemple. Vous pourrez ainsi regarder le contenu tte repose !

4.

Visualisation des rsultats et personnalisation de la fentre OUTPUT (complment)


Si tout s'est bien pass, la fentre OUTPUT (F8) apparat avec les rsultats. Par dfaut SAS affiche dans la fentre OUTPUT, la date, le titre SAS, votre titre, le numro de page Vous pouvez changer cela par un Options nodate nonumber ; mettre au dbut de votre premier programme avant de lexcuter nouveau. Vous pouvez aussi changer la taille du contenu de la fentre OUTPUT avec les options LINESIZE= nb de caractres par ligne PAGESIZE=nb de lignes par page : Options linesize=70 pagesize=35 ; Quant aux titres, vous pouvez les grer par linstruction TITLE ou par un CTRL T et les notes de bas de page par un FOOTNOTE ou par un CTRL F.

Correction de votre programme En cas de problme, vous pouvez corriger votre programme. Quand tout est correct, retournez dans la fentre OUTPUT. 12

5.
a)

Sauvegarde des rsultats contenus dans OUTPUT


Dans un document WORD Avec la souris, slectionnez le tableau des rsultats (la zone change de couleur), faites EDIT/COPY TO PASTE BUFFER ( la couleur d'origine revient)13. Basculez vers WORD, slectionnez la police COURIER NEW, et collez le rsultat ! Dans un fichier Texte depuis SAS En effet, vous pouvez aussi sauvegarder directement les rsultats de la fentre OUTPUT dans un fichier texte, nomm PREMIER.LST par exemple, (File/SAVE As) que vous pourrez rappeler sous WORD.

b)

6.

Sauvegarde du fichier des donnes


Elle est automatique ! Nous verrons plus loin que les donnes sont automatiquement place en C :\SASWORK\TAILPOID.SD2 14 Vos donnes sur la taille et le poids sont dans le fichier SAS temporaire WORK.TAILPOID. Vous pouvez y accder sans recrer ce fichier Ainsi, si vous souhaitez faire un nuage de points avec ces donnes, tapez simplement dans la fentre PROGRAM EDITOR ( la suite du programme prcdent) PROC GPLOT DATA=WORK.TAILPOID ; PLOT TAILLE*POIDS ; RUN ; QUIT ;

12 Si vous trouvez que la fentre OUTPUT est peu lisible (trop de lignes par page ou pas assez, trop de caractres par ligne ou pas assez, vous pouvez modifier cela en insrant au dbut de votre programme un OPTIONS LINESIZE=70 PAGESIZE=35 ; allez voir lannexe pour plus dinformations sur les options. 13 Si tel nest pas le cas, vous avez probablement slectionn une zone interdite. Vous ne devez pas faire descendre le curseur au del de la dernire ligne de rsultats. 14 Nanmoins, ce fichier ne peut tre lu QUE par un programme SAS (ou par le SAS viewer qui est un petit programme SAS libre de droits permettant de lire tous les fichiers de donnes SAS)

7.

Ne confondez pas...
Vous venez de voir 4 sortes de fichiers quil ne faut pas confondre : 1)Le fichier de programme dit dans la fentre PROGRAM EDITOR et qui contient vos instructions SAS (PREMIER.SAS) 2)Le fichier de donnes WORK.TAILPOID qui a t cr par votre programme et qui contient les donnes de votre tude statistique. 3) et 4) Les fichiers PREMIER.LOG et PREMIER.LST qui contiennent, si vous les avez crs, les erreurs de compilation de la fentre LOG et les rsultats contenus dans la fentre OUTPUT.

II.

Fichiers de donnes SAS


Mthode SAS ne peut effectuer de calculs que sur des fichiers de donnes type - SAS. Vous devez donc, avant toutes choses saisir vos donnes dans un programme SAS ou, ce qui est le plus courant, convertir votre fichier EXCEL, DBASE, Lotus 1-2-3 , ASCII au format SAS. SAS sait convertir directement (grce FILE/IMPORT) les fichiers EXCEL, DBASE, ASCII15(texte) etc.16

A.
1.

Prliminaires sur les fichiers de donnes SAS


Nom logique dun fichier de donnes SAS
SAS utilise son propre systme pour nommer les fichiers de donnes17. Tout fichier SAS a un nom du type LIBREF.FILE o LIBREF est le nom de la bibliothque (8 caractres maximum) et FILE le nom du fichier (32 caractres maximum). La bibliothque est lendroit o se trouve le fichier de donnes SAS. Elle se substitue au chemin du DOS. Comparaison entre les noms des fichiers de donnes usuels et ceux de SAS Sous EXCEL, WORD, etc.
Chemin et Nom de Extension fichier caractrise lapplication
(XLS pour EXCEL, DOC pour WORD)

Sous SAS
Nom de bibliothque Nom du fichier
identifie le rpertoire DOS o SAS va chercher le fichier dont le nom figure droite.

C:\WORD\COURS . DOC G:\MONREP\TOT . XLS I:\MART\STID193 . XLS

WORK . STID193 WORK . DONNEES SASUSER . STID193

Comment SAS sy retrouve-t-il ? Prenons par exemple le fichier de donnes WORK.BIDULE. Il dsigne le fichier SAS Bidule dans la bibliothque WORK 18
15 Sils ne sont pas trop compliqus : Pas de ligne de titre, le sparateur de variables est un espace. Si FILE/IMPORT ne fonctionne pas avec votre fichier, il faudra utiliser limportation classique utilisant un programme SAS. Cf. Importation dun fichier ASCII de ce document. Grce son langage puissant, SAS peut en effet importer nimporte quel fichier texte aussi compliqu soit il ! 16 Thoriquement SAS reconnat les fichiers SPSS et BMDP. La procdure IMPORT permet deffectuer le transfert. 17 Ceci peut sembler bizarre premire vue. Cela dit SAS est multi plate-forme : il fonctionne galement sous UNIX, NT etc. Ce systme de noms particuliers permet aux programmes SAS de fonctionner sur nimporte quelle plate-forme aprs quelques modifications mineures des programmes (Libname par ex.) 18 Work est une bibliothque prdfinie par SAS. Elle est situe physiquement en C:\SAS\WORK. Cest dire que le fichier Bidule sy trouve physiquement

WORK.BIDULE
Correspond en ralit
(pour le DOS)

C:\SAS\WORK\
Remarques:

BIDULE.SD2

Tout fichier de donnes SAS a donc une adresse de stockage. Il est inutile de le sauvegarder (contrairement MINITAB ou EXCEL) car ceci est fait automatiquement fait par SAS. Par contre vous pouvez recopier le fichier un autre endroit pour plus de sret... (cf. PROC DATASETS)19 Si vous voulez mettre vos fichiers de donnes sur disquette (A:) ou dans votre rpertoire rseau (Z:\TOTO) il vous faudra crer une bibliothque dont ladresse sera lendroit o vous voulez mettre vos fichiers.20

2.

Les 2 bibliothques prdfinies WORK et SASUSER


Il y a d'origine deux bibliothques sous SAS. Une temporaire (WORK) et une permanente (SASUSER). La bibliothque WORK dtruit les fichiers quelle contient ds que vous quittez SAS. A linverse de SASUSER. Elles correspondent respectivement aux rpertoires DOS physiques C:\Windows\Temp\SAS temporary Files et C:\Mes Documents\SASV821.

Remarques: Vous pouvez vrifier que le fichier TAILPOID de votre premier programme SAS se trouve bien en C:\WINDOWS\TEMP sous le nom tailpoid.sd2. Toutefois vous ne pourrez visualiser ce fichier quavec un programme SAS ou le SAS VIEWER22. Les fichiers de ces bibliothques sont donc sauvegards physiquement sur C:, le disque dur de l'ordinateur dont vous vous servez. Ceci est dangereux si vous ntes pas le seul utilisateur de ce micro... Il est donc conseill de crer votre propre bibliothque et d'y mettre vos fichiers de donnes SAS.

19 On peut tre tent de faire les copies de fichiers de donnes SAS en utilisant le gestionnaire de programmes ou lexplorateur de Windows puisque nous connaissons le nom DOS du fichier. Cela dit, si la copie dun fichier devient systmatique, il est prfrable de leffectuer via la procdure DATASETS pour respecter la compatibilit multi plateforme dont nous parlions dans la note prcdente. 20 (cf. instruction Libname plus loin dans ce document) 21 Ceci peut changer dun systme un autre. 22 Application fournie gracieusement par SAS permettant de consulter les fichiers de donnes.

3.

Comment crer VOTRE bibliothque ?


Nous allons maintenant crer une nouvelle bibliothque appele MOI qui pointe sur le rpertoire D:\DATA (ce rpertoire nexiste pas chez vous, cest simplement un exemple de dmonstration).

a)

Avec lexplorer

Activez la fentre Explorer.23 Au moins trois bibliothques par dfaut sont actives sous SAS : SASHELP, SASUSER, WORK

Pour ajouter une nouvelle bibliothque, cliquez sur le bouton droit et choisissez NEW, de la barre doutils, ou entrez la commande LIBASSIGN dans la ou cliquez sur ligne de commande.

23 Allez dans View/Explorer si vous ne la voyez pas.

Entrez le nom daccs de votre bibliothque

Tapez ici votre rpertoire ou cliquez ici

En cliquant sur Browse, cette fentre apparat pour vous permettre de slectionner votre rpertoire.

Validez. Si tout a bien fonctionn, vous devriez avoir dans la fentre Explorer :

La nouvelle bibliothque MOI est rfrence.

Pour avoir des dtails sur ces bibliothques, allez dans View/ Details :

b)

Cration dune bibliothque dans un programme SAS Pour faire la mme chose en utilisant un programme, il suffirait de taper : LIBNAME MOI 'D:\DATA'; et de le compiler. Remarque : La bibliothque MOI est rfrence (elle a une adresse, SAS peut dsormais y accder), son adresse physique est D:\DATA . Si je cre sous SAS le fichier de donnes MOI.STID193, il sera physiquement stock en D:\DATA\STID193.SD2

Exercice: Crez-vous une bibliothque (8 caractres maximum) avec comme adresse physique votre rpertoire serveur(et ventuellement un sous - rpertoire). Modifiez mon premier programme pour que le fichier de donnes TAILPOID soit directement cr dans votre rpertoire. Vrifiez dans la "LOG" que tout s'est bien pass. Remarques: SAS oublie les noms de vos bibliothques mais pas le contenu !- ds que vous le quittez24. Pensez les redclarer au dbut de chaque session. Dautre part, le nom MOI na aucune importance ; on peut mettre nimporte quel nom (<=8 caractres) condition de sen rappeler !

24 Sauf si vous cochez la case ENABLE AT STARTUP de la fentre de cration de bibliothques.

4.

Visualisation du contenu dun fichier, modifications...


Il suffit de cliquer sur la bibliothque dans laquelle il se trouve, puis de cliquer sur le fichier concern. En suite, en cliquant sur le bouton droit de la souris, vous faites apparatre un menu contextuel qui vous permet de visualiser le fichier : Ici, nous avons ouvert la bibliothque WORK, nous y avons trouv notre fichier de donnes :

Remarque Importante : Pour revenir en arrire (Fermer la fentre donnant le contenu dune bibliothque et

afficher la liste des bibliothques cliquez sur

de la barre doutils.

Exercice : Recherchez le fichier TAILPOID que vous avez cr Cf. Mon premier programme . Et visualisez-le avec les commandes prcdentes. Pour modifier les donnes de faon intractive, passez en Edit/Edit Mode25 et Edit/Table LEVEL EDIT ACCESS. Ajoutez une nouvelle ligne de donne (Edit/Add Row, faites un Edit/Commit New Row pour valider la saisie dune nouvelle ligne). Un File/Close permet de terminer la modification. Vous pouvez maintenant rexcuter la fin26 de votre petit programme pour obtenir des statistiques jour. Pour cela mettez en surbrillance la portion du programme a excuter et faites un Local/Submit.
PROC MEANS DATA=MOI.TAILPOID N NMISS MIN MAX RANGE MEAN VAR STD; VAR TAILLE POIDS; RUN;

25 Le Browse Mode est le mode de lecture seule. 26 Si vous excutez tout le programme, le fichier de donnes sera remis sa forme dorigine cause de linstruction DATA

B.

Conversion automatique dun fichier EXCEL27 (File/Import)


Prenons le fichier EXCEL : STID193.XLS qui contient des donnes sur les STID1ere anne 1993 : (Les variable sont : Groupe, ordre (dans le groupe), Sexe, Srie
du Bac, Date (de naissance), Nombre de frres et soeurs(NBFS), Notfr, Nothis, Notmat (les notes en franais, histoire go et maths au bac), la faon dont ils ont connu lIUT (IUT ?), leur taille et leur poids et le code postal de leur lyce.

Nous allons le transformer en un fichier de donnes SAS pour pouvoir travailler dessus sous SAS. Vous allez tre guid pas pas par un assistant pour effectuer le travail. 1) Dclarez, si ce nest pas dj fait votre bibliothque sous SAS. 2) Sous SAS, allez dans FILE/IMPORT DATA, vous obtenez :

1.

Choix du type de fichier

Choisissez EXCEL 97 2000 comme format de fichier importer. Cliquez ensuite sur NEXT .

27 Ceci suppose que le module ACCESS to PC FILE FORMAT est install. Si tel nest pas le cas, il faut convertir votre fichier Excel en CSV et importer ce type avec SAS. Cest un peu plus lourd mais cela fonctionne. Pour limportation de fichiers ASCII voir en fin de ce document.

2.

Emplacement du fichier convertir


SAS vous demande ensuite WHERE IS THE FILE LOCATED ? Cest dire : o se trouve le fichier importer ?, Vous pouvez alors taper le chemin et le nom du fichier ou, si vous ne vous en rappelez plus, effectuer un Browse pour parcourir les diffrents rpertoires. En ce qui nous concerne, le fichier est en P:\LOGICIEL. Il vous suffit donc de taper P:\LOGICIEL\STID193.XLS ou daller le chercher dans les rpertoires (BROWSE) et de cliquer sur Next.

3.

Nom du fichier SAS obtenu


SAS demande ensuite la bibliothque et le nom du fichier SAS rsultat28.

Mettez ici le nom de votre fichier : STID193

Choisissez ici la bibliothque

Nous choisissons ici MOI comme bibliothque29 et STID193 comme nom de fichier. SAS demande ensuite si vous souhaitez rcuprer le programme ayant permis de faire cette importation. Nous nen avons pas besoin ici.30 Cliquez sur Finish. Si tous sest bien pass, dans la fentre LOG, vous devez avoir le message suivant : NOTE: MOI.STID193 WAS SUCCESSFULLY CREATED.

28 Comme vous le savez tout fichier de donnes SAS possde un nom accol son nom de bibliothque qui nest autre que le chemin du DOS 29 (qui a t prcdemment dclare) 30 Ce programme, utilisant la procdure IMPORT peut tre utile lorsque vous avez un grand nombre de fichiers importer

4.

Visualisation du fichier SAS


Il y a deux mthodes :

a)

La fentre Explorer Slectionnez votre bibliothque. Reprez le fichier STID193. Cliquez sur le bouton droit de la souris (menu contextuel) et choisissez View Columns31 :

Column name Length

Format Informat

Label

Cest le nom de la variable qui sera utilis dans les procdures les tapes DATA etc. Son type (numrique ou caractre) est symbolis par une icne. Longueur maxi : 32 caractres. Cest la longueur (en bytes) $ variable caractre 8 variable numrique Cest le format daffichage de la variable. Remarquez le format de la date de naissance. Cest le format de lecture, utile si vous importez des donnes. Toujours pour la date, remarquez que vous ne pouvez importer que des dates en format ddmmyy8. Etiquette de la variable ne pas confondre avec le nom de la variable. Longueur maxi 256 caractres.

31 Sivous importez unfichier EXCEL97, vous aurez peut tre une diffrence au niveau de la date. SAS va lire une DATETIME (date heure) dont il faudra tenir compte plus tard.

Pour visualiser votre fichier, choisissez OPEN , vous visualisez alors votre fichier 32:

Grce au menu DATA, vous pouvez effectuer des recherche (Where), des tris (Sort) etc... Nous sommes en fait ici dans le module SAS/FSP qui permet deffectuer des manipulations intractives sur les fichiers de donnes.

Attention : Etiquettes (LABEL) des variables.

32Si les variables de votre fichier possdent des tiquettes (label), ce sont les labels qui sont en tte de colonne.

Comment slectionner une partie dun fichier ? Cherchons par exemple les individus de STID193 masculins ayant plus de 10 en maths et en franais : Allez dans DATA/WHERE

et tapez la close prcdente en cliquant successivement sur les nom de variables et sur les operateurs (AND, OR, GT (=Greater Than plus grand que,), EQ (Equal, Egal), LT (Less Than, plus petit que), GE (great or equal = suprieur ou gal), LE (Less or equal = inferieur ou gal), NE (Non equal= diffrent).33 Validez en cliquant sur OK. Vous obtenez les 11 individus rpondant la question :

a) Cherchez les individus masculins ns aprs le 10 octobre 1972.


33 Pour une constante, cliquez sur le champ CONSTANT Enter Value, puis entrez la valeur. Remarquez bien que la valeur peut tre une date. 10JAN69:000:00:00DT est une constante valide pour SAS. (Le DT sert SAS pour identifier une date-heure : DATETIME. D pour une date seule (DATE) ; T pour une heure seule(TIME).

Vous pouvez sauvegarder le rsultat de la requte dans un autre fichier de donnes SAS. Grce File/ Save As :

Le fichier sera enregistr sous le nom MOI.PARTIE

Table=fichier de donnes SAS

En cliquant sur Advanced, vous pouvez mettre un LABEL explicitant ce que contient votre fichier. Vous pouvez aussi protger votre fichier de donnes en lecture, criture etc

b) Cherchez les individus des groupes B et C ayant une note strictement suprieure 10 dans les trois matires et ns le 1/1/73 ou aprs 34

34 Attention la spcification de la date. Voir la note prcdente.

b)

Visualisation dun fichier de donnes dans lOUTPUT Cest une mthode beaucoup plus rudimentaire nutiliser que pour de petits fichiers et pour cas de force majeure ! Vous pouvez donc visualiser, dans la fentre OUTPUT, un fichier de donnes en tapant dans le program Editor : PROC PRINT DATA=MOI.STID193 ; RUN ; Voir la PROC PRINT dans ce document pour avoir plus de dtails sur sa syntaxe.

C.

Fichier de donnes cr dans un programme SAS : tape DATA


Ltape DATA est ltape quasi incontournable en langage SAS pour crer ou modifier un fichier de donnes35. Nous allons distinguer 3 types dtape DATA :

1.

Donnes incluses dans le programme. (CARDS)


Nous lavons dj rencontre avec mon premier programme SAS :

a)

Syntaxe trs simplifie

DATA nom fichier SAS ;

Nom(s) du (des) fichier(s) de donnes SAS crer.

INPUT var1 type1 var2 type2 .... var n type n ; instructions complmentaires ; CARDS ; liste des donnes 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.
Les donnes commencent ici. Noms des variables suivis de leur type, de leur informat.

35 Il y a aussi la mthode EXPLORER (File/New) plus graphique, ou des procdures qui permettent de crer un fichier de donnes, mais ceux-ci sont figs : procdure CORR rendant les coefficients de corrlations, pocdure REG les rsidus etc. Seule la procdure SQL permet de crer des fichiers de donnes avec souplesse. Notons aussi lODS qui permet de rorienter toutes les sorties dans des fichiers de donnes SAS.

Exemples :
DATA work.donnee; input groupe $ taille poids; cards; A 175 85 B 167.5 75 B 190 92 C . . C 165 57 A 166 49.5 ; RUN ; proc print data=work.donnee; run;
Nous allons crer un nouveau fichier donnee dans work. Le $ indique SAS que groupe est une variable texte. Les donnes suivent...

Le ; marque la fin du jeu de donnes. Ltape DATA se termine par un RUN.

Dans le programme suivant, nous introduisons les noms des individus. Testez ce programme, quel est son inconvnient pour la variable nom ?

DATA work.donnee; input nom $ groupe $ taille poids; cards; Jean-philippe A 175 85 Claude B 167.5 75 Marie-christine B 190 92 Eric C . . Carmino C 165 57 Etienne A 166 49.5 ; run ; Proc Print data=work.donnee ; run ;

Les deux points indiquent que les donnes sont manquantes pour la taille et le poids.

Pour y remdier, nous allons introduire un informat. Nous allons demander SAS de lire 15 caractres et non pas 8. Linformat se nomme $15. Remplacer donc linput par : input nom $15. groupe $ taille poids;

b)

Lecture et restitution de dates (Informat et Format) De faon gnrale, lorsque SAS lit des donnes spciales il faut lui prciser un format dentre (nomm informat) derrire le nom de la variable dans linstruction INPUT. Vous pouvez ensuite dclarer un format de sortie (format) qui est en gnral li linformat. La liste des formats et informats courants figurent en annexe.36

Exemple Nous allons lire la variable date dentre pour les personnes prcdentes. Si nous voulons lire des dates, il va falloir prciser SAS leur forme dentre cest dire leur informat. En effet, il existe plusieurs faons dcrire une date : 08/04/1997 ; 08APR97 ; Thu, April 8, 1997 etc... Tapez le programme suivant :
DATA work.donnee; input nom $15. dat_entr date8.; Date8. est le format des dates ci-dessous cf.annexe cards; Jean-philippe 08JAN89 Voici les donnes. Claude 05FEB88 Marie-christine 02MAR90 Eric 31DEC95 Carmino 12APR75 Etienne 10JUL85 ; run ; proc print data=work.donnee ; run ;

Vous obtenez laffichage suivant :


OBS 1 2 3 4 5 6 NOM Jean-philippe Claude Marie-christine Eric Carmino Etienne DAT_ENTR 10600 10262 11018 13148 5580 9322

Contrairement ce quil semble, SAS a bien lu les dates (elles sont codes en interne sous forme de nombre)37. Nous allons maintenant demander SAS de les afficher convenablement en donnant un format daffichage.38
36 Il vous est galement possible de dfinir vos propres formats et informats en uitlisant PROC FORMAT. 37 Le nombre obtenu est le nombre de jours entre le 1/1/1960 et la date en question. Dans notre exemple, il y a donc 10600 jours entre le 8/1/89 et le 1/1/1960 ! 38 Notons que ce format ne change rien la reprsentation interne de la date. Elle sera toujours code sous forme de nombre. Seule son apparence changera.

DATA work.donnee; input nom $15. dat_entr date8.;

format dat_entr date8.;

Nous conservons le mme format pour laffichage

cards; Jean-philippe 08JAN89 Claude 05FEB88 Marie-christine 02MAR90 Eric 31DEC95 Carmino 12APR75 Etienne 10JUL85 ; run ; proc print data=work.donnee ; run ;

Nous obtenons :
OBS 1 2 3 4 5 6 NOM Jean-philippe Claude Marie-christine Eric Carmino Etienne DAT_ENTR 08JAN89 05FEB88 02MAR90 31DEC95 12APR75 10JUL85

Exercice Modifiez le programme prcdent pour obtenir laffichage suivant dans la fentre OUTPUT (date la franaise)
RTNE_TAD 58/70/01 57/40/21 59/21/13 09/30/20 88/20/50 98/10/80 MON enneitE onimraC cirE enitsirhc-eiraM edualC eppilihp-naeJ SBO 6 5 4 3 2 1

Modifiez ce programme pour afficher le jour (de la semaine) de la date dentre de chaque personne. (on pourra choisir un format adapt cf. annexe)

c)

Instructions supplmentaires Vous pouvez ajouter des instructions dans une tape data de manire calculer de nouvelles variables partir de variables existantes. Exemple : Nous voulons calculer la date de sortie (dat_sort) des individus prcdents sachant quils restent exactement 900 jours sur place. Nous ajoutons les deux lignes (en gras) au programme :
DATA work.donnee; input nom $15. dat_entr date8.; format dat_entr date8.; dat_sort=dat_entr+900; format dat_sort date8.; cards; Jean-philippe 08JAN89 Claude 05FEB88 Marie-christine 02MAR90 Eric 31DEC95 Carmino 12APR75 Etienne 10JUL85 ; run ; proc print data=work.donnee; run;

Nous obtenons :
TROS_TAD 78CED72 77PES82 89NUJ81 29GUA81 09LUJ42 19NUJ72 RTNE_TAD 58LUJ01 57RPA21 59CED13 09RAM20 88BEF50 98NAJ80 MON enneitE onimraC cirE enitsirhc-eiraM edualC eppilihp-naeJ SBO

Gnial non ? Exercice En utilisant la fonction TODAY( ) qui donne la date courante, calculez lanciennet39 en jour, puis en annes des individus en ne tenant compte que de la date dentre. Calculez les statistiques lmentaires sur cette variable (Proc Means)

39 Diffrence entre la date dentre et la date courante.

6 5 4 3 2 1

2.

Utilisation de fichiers de donnes SAS existants : Instruction SET


Dans ce paragraphe, vous apprendrez crer de nouveaux fichiers partir de fichiers existants, ajouter des variables, recoder des variables etc...en utilisant ltape DATA du langage SAS40.

DATA nom(s) fichier(s) SAS (options);

SET fichierSAS1(options1)fichierSASn(optionsn)[ options


point=nomvariable nobs=nomvariable end=nomvariable ]; instructions complmentaires (IF, KEEP, DROP ; RUN ;
Linstruction SET ci-dessus permet de spcifier le (ou les) fichier de donnes SAS, ventuellement assortis doptions41, partir duquel on va en construire un autre. Nous allons retrouver les keep, drop... que vous venez de voir mais sous forme dinstructions et non plus doptions. Les options de linstruction SET (END=, POINT= , NOBS= ) sont dcrites un peu plus loin dans ce paragraphe.

40 Notez aussi que la procdure DATASETS permet deffectuer directement des modifications sur le fichier dorigine (changement de nom, de format etc... des variables dorigine) 41 (WHERE= KEEP= etc. permettant de slectionner certaines variables ou certains individus dun fichier.

a) (1)

Copie d'un fichier SAS existant Copie totale en utilisant ltape DATA LIBNAME MOI Z:\ ; LIBNAME PUB P:\LOGICIEL ; DATA MOI.ACP; SET PUB.ACP; RUN; Ces instructions permettent la cration d'un fichierACP qui est la copie conforme du fichier ACP de la bibliothque PUB. (trs utile pour copier un fichier du rpertoire public sur le votre)

Remarque importante: Ce nest pas la faon la plus rapide de copier deux fichiers ! Vous pouvez, tout simplement, faire un copier coller entre les deux bibliothques dans lexplorer ! Si vous utilisez le langage SAS la PROC COPY permet de faire ce travail.

(2)

Copie partielle Cest le rel intrt de ltape DATA pour copier des fichiers. Nous allons retrouver ici certains termes (KEEP, DROP...) qui sont cette fois des instructions et non plus des options attaches qux fichiers de donnes (Voir page 64).

en ne conservant que certaines variables (KEEP) DATA WORK.NOTSTID; le fichier notstid est cr... SET MOI.STID193; partir du fichier STID193 de la bibliothque MOI... KEEP NOTEMAT NOTEHIS NOTEFR_; en ne conservant que les variables notes. RUN; Remarque : Le programme : DATA WORK.NOTSTID; SET MOI.STID193 (KEEP=NOTEFR_ NOTEHIS NOTEMAT); RUN; ferait la mme chose. en ne supprimant que certaines variables (DROP) DATA work.saufsexe; SET MOI.STID193; DROP SEXE; RUN;

On enlve la variable sexe.

en conservant certaines observations (IF THEN, WHERE, OBS, FIRSTOBS) DATA WORK.HOMME; SET MOI.STID193; IF SEXE=1; RUN;

on ne conserve que les individus dont SEXE=1

On peut aussi utiliser les options (cf. plus loin) DATA WORK.HOMME; SET MOI.STID193 (where=(sexe=1)); RUN; DATA WORK.BONMAT; SET MOI.STID193; KEEP GROUPE NOTEMAT ; IF NOTEMAT>=10 AND GROUPE='A'; RUN;

on ne conserve que les gens du groupe A ayant la moyenne en math.

Remarque : Ce IF est diffrent de ceux que vous avez lhabitude de voir en INFO. Il permet de faire des slections sur des individus. On a aussi en utilisant loption WHERE= : (cf. Plus loin) DATA WORK.HOMMAT; SET MOI.STID193 (KEEP=GROUPE NOTEMAT WHERE=(GROUPE=A AND NOTEMAT>10)); RUN;

Remarque (rappel) : Loption WHERE ne peut pas tre utilise avec OBS et FIRSTOBS suivantes. DATA SET RUN; DATA SET RUN; en liminant certaines observation (delete) DATA WORK.LESBONS; SET MOI.STID193; On limine les gens ayant moins de 12 de moyenne. IF MEAN(NOTEFR_,NOTEHIS,NOTEMAT)<12 THEN DELETE; RUN; DATA WORK.PRESENT; SET MOI.STID193; Cette fois on enlve tout ceux ayant au moins une note manquante... IF NMISS(NOTEFR_,NOTEHIS,NOTEMAT)>0 THEN DELETE; RUN; Remarque: Pour plus dinformation sur les fonctions NMISS, MEAN consultez lannexe (Oprateurs et fonctions). WORK.PARTIE; MOI.STID193 (OBS=15);

on ne conserve que les 15 premiers individus

WORK.EXTRAIT; MOI.STID193 (FIRSTOBS=100 OBS=106);

on ne conserve que les individus du 100me au 106me .

(3)

Copies multiples sur des fichiers diffrents OUTPUT Il est possible de crer plusieurs fichiers la fois en les spcifiant derrire linstruction DATA. Linstruction OUTPUT nomdefichier permettra ensuite daffecter les observations dans les fichiers choisis. data work.homme work.femme; set moi.stid193; if sexe=1 then output work.homme; if sexe=2 then output work.femme; run; Gnial non ?

Exercices A partir du fichier STID193 import pralablement, crez un fichier temporaire ne contenant que les gens ayant la moyenne dans les trois matires; Crez un fichier WORK.HOM ne contenant que les hommes de STID avec les variables taille, poids et sexe. Faites de mme un fichier WORK.FEM. Crez trois fichiers de donnes ENFANT1, ENFANT2, ENFANT3 contenant les individus de STID ayant respectivement 1, 2 ou 3 frres et surs (variable NBFS). On effectuera ce travail en une seule tape DATA. Toto veut excuter le programme suivant. data essai; set pub.stid193; jour=date; format jour downame10.; if jour='Sunday'; run; proc print data=essai(obs=10); var groupe ordre jour; run; Il stonne car il ne fonctionne pas. Identifiez lerreur de TOTO sur la notion de Format et apportez une solution. On pourra utiliser la fonction SAS WEEKDAY()42

42 Attention toutefois,car la fonction WEEKDAY ne fonctionne quavec des variables DATE. Si vous avez une variable de type DATETIME (cest le cas si vous avez import votre fichier depuis EXCEL 97-2000), vous devez en extraire la date grce la fonction DATEPART.

b) (1)

Crations de variables, modifications, tableaux de variables Cration ( partir des variables existantes) La syntaxe est trs simple, il suffit de dclarer le nom de la variable = sa dfinition : Data moi.stid193 ; Set moi.stid193 ; Taille_metre=taille/100 ; Run ; Ce programme cre la variable taille_metre qui est la taille en mtre (taille/100). Cette variable est ajoute au fichier existant. Data moi.stid193 ; Set moi.stid193 ; NOTEMAX=MAX(NOTEFR_,NOTEHIS,NOTEMAT) ; NOTEMIN=MIN(NOTEFR_,NOTEHIS,NOTEMAT) ; Run ; Ce programme va crer les variables notemax, notemin qui sont le max et le min pour chaque individu de leurs trois notes obtenues au bac. Ces variables seront ajoutes au mme fichier MOI.STID193 ; Remarque : Si les variables sont indices, on peut spcifier cela autrement : PMAX=MAX(POIDS1,POIDS2,POIDS3,POIDS4); Peut tre remplac par : PMAX=MAX(OF POIDS1-POIDS4); Trs utile lorsquon a un grand nombre de variables. Cration dune variable de type caractre ; instruction LENGTH data work.essai; *on va crer une variable identif de 4 caractres ; length identif $4.; set moi.stid193; identif=put(groupe,$1.)!!put(ordre,2.0); keep identif groupe ordre sexe taille poids; run; Excutez cet exemple et visualisez le rsultat en faisant un VT work.essai dans la ligne de commandes. Comment est cre la variable Identif ?

(2)

Modification Supposons quun prof de maths dcide de mettre 0 ceux qui nont pas de notes de maths dans le fichier STID193. Nous allons modifier en consquence les notes de maths... Nous avons alors : DATA WORK.COPY;
Cration dun fichier temporaire copy. Nous ne voulons pas altrer loriginal !

SET MOI.STID193; IF NOTEMAT=. THEN NOTEMAT=0;Si notemat est manquant alors notemat=0. RUN; Plusieurs variables... Supposons que les professeurs dcident dtendre cette manipulation toutes les autres notes ! Il est possible de rpter le programme prcdent trois fois ; toutefois comme la modification est identique, nous allons regrouper les trois variables dans un tableau.

(3)

Tableau de variables ( passer en premire lecture) Un tableau de variables est un mot cl avec un indice qui remplace un ensemble de variables, en gnral de mme type43. Le tableau vous permet deffectuer dun seul coup un mme traitement vos variables en utilisant leur nouveau nom dans une boucle par exemple : DATA WORK.COPY (DROP=I);
on te la variable i du fichier copy (cest une variable temporaire utilise dans les calculs) On cre le tableau notes qui a 3 variables notefr_ notehis et notemat. Notes{1} dsigne notefr_ etc...

SET MOI.STID193; ARRAY NOTES{3} NOTEFR_ NOTEHIS NOTEMAT; DO I=1 TO 3 ; IF NOTES{I}=. THEN NOTES{I}=0; END; RUN;

Dans cet exemple : Notes{1} est la variable NOTEFR_, Notes {2} la variable NOTEHIS etc. Exercice : Le fichier de donnes ACP contient les tempratures annuelles de quinze villes en C. Mettez ces tempratures en F sachant que F=1.8*C+32.

43 Attention, aucune nouvelle variable nest cre. Il ne sagit que dun changement provisoire de nom pour allger les algorithmes de calcul.

c)

Changement dtiquette, de nom, de format dune variable ( passer en premire lecture) Changement dtiquette LABEL nom de variable= Etiquette ; Cette instruction permet daffecter des tiquettes des variables pour avoir des sorties plus lisibles :

(1)

DATA WORK.TEMP; SET PUB.ACP; KEEP JAN FEV; LABEL JAN='TEMPERATURE JANVIER' FEV='TEMPERATURE FEVRIER'; RUN; Si vous demandez la visualisation du fichier, vous obtiendrez :

Etiquettes des variables...

(2)

Changement du nom dune variable :

RENAME nom de variable renommer(une ou plusieurs)=nouveau nom LIBNAME PUB I :\STID9799\PUBLIC\LOGICIEL ; DATA WORK.TEMP; SET PUB.ACP; KEEP JAN FEV; On ne conserve que la t de janvier et de fvrier RENAME JAN=JANVIER FEV=FEVRIER; La variable jan devient Janvier etc. RUN; Remarque (complment) : Ici, nous avons recr un fichier (TEMP) ce qui peut tre couteux en temps dexcution. Il est possible de passer par la procdure DATASETS pour effectuer ce travail : (Attention, ce programme modifiera dfinitivement le nom de la variable NOTEFR_ ; si vous lexcutez souvenez vous du nouveau nom ! ! !) PROC DATASETS LIBRARY=MOI; MODIFY STID193; RENAME NOTEFR_=FRANCAIS; RUN; QUIT; Ici nous renommons la variable NOTEFR_ en Franais directement sur le fichier de dpart. Remarque : Pour visualiser la modification allez dans Global/Access/Display Libraries slectionnez le fichier puis dans le menu contextuel (clic droit) choisissez la VAR Window. Pour plus de dtails sur DATASETS reportez vous au paragraphe La procdure DATASETS de ce document.

(3)

Changement du FORMAT dune variable Linstruction FORMAT permet de changer le format daffichage des variables. Ils suffit de spcifier le nom de la variable et son nouveau format. Vous pouvez lutiliser dans une tape DATA ou dans la procdure DATASETS comme le montre lexemple ci dessous...

Exemple : PROC DATASETS LIBRARY=MOI; MODIFY STID193; FORMAT NOTEHIS NOTEMAT 4.1 TAILLE 6.2; RUN; QUIT; Dans cet exemple, les notes de Math et Histoire-go auront un format 4.1 et la taille un format 6.2.44. Pour visualiser le rsultat faites un PROC PRINT et vous obtenez:
OBS 103 104 105 106 NOTEHIS 12.0 6.0 12.0 6.0 NOTEMAT 17.0 12.0 18.0 15.0 TAILLE 165.00 160.00 167.00 168.00

Ici, on voit que la variable taille est code sur 6 caractres dont 2 dcimales.

44 Le premier chiffre indique la taille maximale du nombre et le deuxime, le nombre de dcimale(s). Pour avoir plus dinformations sur les formats disponibles, allez voir en annexe.

d)

Mot-cls particuliers : Lors de lexcution dune tape DATA, SAS gnre des variables temporaires trs utile pour des traitements particuliers.

(1)

_N_ compteur de ltape DATA _N_ est une variable prdfinie du type compteur de boucle. Elle peut permettre de reprer le numro de lobservation en cours de lecture dans une tape DATA. Voici un exemple dutilisation : Le fichier CASOCIET (fichier de donnes SAS, rpertoire public/logiciel) contient le chiffre daffaire annuel dune socit de 1971 1996. (Variable C1) :
OBS 1 2 3 4 5 6 7 8 9 10 11 ... C1 9050 9380 9378 9680 10100 10160 10469 10738 10910 11058 11016

Nous souhaiterions, pour rendre le fichier plus lisible , crer une variable Anne qui renvoie lanne associe au chiffre daffaire. Le programme suivant rpond la question : DATA WORK.ESSAI; SET MOI.CASOCIET; ANNEE=_N_+1970; RUN; PROC PRINT DATA=WORK.ESSAI; RUN; Tapez-le et vrifiez. Supposons que le chiffre daffaire de CASOCIET corresponde au chiffre daffaires des annes 1945, 1947, 1949,1951 etc. Modifiez le programme pour ladapter cette situation.

(2)

Variables instantanes Mditez lexemple suivant : data work.groupe; set moi.stid193 ; if sexe=1 then hom+1; if sexe=2 then fem+1; total+1; keep groupe sexe taille poids hom fem total; run ; Proc print data=work.groupe (obs=10) ; Run ; Comment sont construites les variables hom, fem et total ?

Une utilisation de ce qui prcde va tre faite dans lexemple suivant.

e)

Options de linstruction SET Ci-dessous, nous dcrivons les options de linstruction SET. Les mots cls : END= ; POINT= ; NOBS=

(1)

END= Ce mot clef se place derrire le SET et permet de crer une variable temporaire qui prendra la valeur VRAIE lorsque ltape DATA aura lu toutes les observations. Syntaxe ultra simplifie SET nomdefichier END=nomdevariable ;

data work.groupe; set moi.stid193 end=final ; if sexe=1 then hom+1; if sexe=2 then fem+1; total+1; keep groupe sexe taille poids hom fem ; /*nous detectons la fin du fichier*/ if final then do; put hom=; put fem=; end; run; va donner dans la LOG :
06=MEF 64=MOH

(2)

POINT= Loption POINT= de linstruction SET permet de slectionner lindividu dont le numro est dans la variable suivant POINT= Dans lexemple suivant, nous allons lectionner un individu sur 10 dans le fichier STID193. data unsurdix; do i=1 to 110 by 10 ; set moi.stid193 point=i; Nous allons lire la ieme observation de ce fichier if _error_ then abort;
Si elle nexiste pas (dpassement du fichier) , la variable automatique _ERROR_ vaut 1, nous arrtons ABORT. Nous inscrivons cette observation dans le fichier Nous passons la valeur de i suivante INDISPENSABLE : sinon on entre en boucle infinie.45

output; end; stop; run;

Attention : loption POINT= ne peut sutiliser avec BY, WHERE, WHERE=.

45 En effet, pour sortir de ltape data il faut dpasser la fin du fichier, comme ici nous ne pointons que sur des observations existantes, nous ny arriverons jamais ; do le STOP pour arrter ltape DATA quand la boucle est finie.

(3)

NOBS= Cette option de linstruction SET cre une variable contenant le nombre total dobservations du fichier de donnes. La valeur de cette variable est affecte lors de la compilation. Vous pouvez donc vous y rfrer avant linstruction SET. Cette variable nestpas disponible en dehors de ltape DATA qui la contient. Nous pouvons modifier le programme prcdent de la sorte : data unsurdix; do i=1 to dernier by 10 ; set moi.stid193 point=i nobs=dernier; output; end; stop; run; Dernier vaudra 106. Nous navons plus besoin de la condition derreur du programme prcdent car nous nallons pas dpasser la fin du fichier.

(4)

Option IN= Cre une variable prenant la valeur 1 si lobservation vient du fichier ou figurait le IN et 0 sinon. Voir un exemple dans la concatnation de fichiers.

f)

Fusion de fichiers Si vous devez augmenter fusionner des fichiers contenant les mmes46 variables sur des individus diffrents (par ex. STID93, STID94STID99), utilisez la fusion verticale. Si vous devez fusionner des fichiers contenant les mmes individus mais sur des variables diffrentes (par ex. ventes sur les dernier trimestre : TOTOCT, TOTNOV,TOTDEC), utilisez la fusion horizontale (MERGE).

46 Si des variables nexistent pas dans les deux fichiers, la colonne contiendra des manquants pour les individus en question.

(1)

Fusion verticale de deux fichiers (augmente le nombre d'observations (ou d'individus)) FICHIER 1 OBS 1 2 3 X 23 54 123 Y Jules Toto Prof

FICHIER 2 OBS 1 2 X 678 787 Y COUCOU truc

FICHIER CONCATENE 1+2 SET FICHIER1 FICHIER2 OBS 1 2 3 4 5 X 23 54 123 678 787 Y Jules Toto Prof COUCOU truc

Si WORK.HOM contient les hommes de STID et WORK.FEM les femmes, vous pouvez reconstituer un fichier TOUT, concatnation des deux prcdents, de la faon suivante: DATA WORK.TOUT; SET WORK.HOM WORK.FEM; 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 ports manquants pour cette variable dans le second fichier.

On peut galement faire figurer des options derrire les noms des fichiers de donnes :
data essai; set moi.stid193(where=(sexe=1)) moi.stid197 (where=(sexe=2)); run;

Que fait ce programme ?

Fusion avec lutilisation de loption IN=

IN=Variable est une option des instructions SET et MERGE permettant de savoir do vient lobservation lorsque lon fusionne plusieurs fichiers de donnes : data work.tous; set moi.stid193 moi.stid197(in=x); keep annee sexe taille poids; annee=1993; if x=1 then annee=1997; output; run; Ici X prend la valeur 1 lorsque lobservation vient de STID197 . Que fait ce programme ?

(2)

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 MEMES et DANS LE MEME ORDRE47 ! Nous ne prsentons ici qu'une version simple de cette instruction:

FICHIER 1 OBS 1 2 3 X 23 54 123 Y Jules Toto Prof

FICHIER 2 OBS 1 2 3 Z 678 787 89 T COUCOU truc Machin

FICHIER CONCATENE MERGE FICHIER1 FICHIER2 OBS 1 2 3 X 23 54 123 Y Jules Toto Prof Z 678 787 89 T COUCOU truc Machin

47 Sinon votre fichier rsultat ne sera plus cohrent. Loption BY permet deffectuer cette fusion en se basant sur une ou plusieurs variables identifiant les individus.

Exemple : Nous allons d'abord crer deux extraits complmentaires de STID193 (M1 et M2): DATA WORK.M1; SET MOI.STID193; KEEP SEXE GROUPE; RUN; DATA WORK.M2; SET MOI.STID193; DROP SEXE GROUPE; RUN;

Nous ne conservons que les variables sexe et groupe

Nous prenons toutes les variables sauf sexe et groupe

Puis, nous allons les fusionner pour retrouver le fichier original: DATA WORK.TOUT; MERGE WORK.M1 WORK.M2; RUN; Thoriquement TOUT=STID193!

(3)

Fusion horizontale sophistique (MERGE avec option BY) Prenons les deux fichiers CHOL_AVR et CHOL_OCT contenant les taux de cholesterol de quelques individus au mois davril puis au mois doctobre : Fichier CHOL_AVR :
Analyses du mois d'avril Obs 1 2 3 4 5 NUM_SECU 1660538898013 1770538351009 2761138010001 2781038351025 2890138351006 LDL_AVR 0.96 1.65 0.89 0.67 2.20

Fichier CHOL_OCT :
Analyses du mois d'octobre Obs 1 2 3 4 5 NUM_SECU 1660538898013 1770538351009 2650238982002 2781038351025 2890138351006 LDL_OCT 0.90 1.77 1.65 0.67 2.00

Remarquez que les patients ne sont pas toujours les mmes ! Nous souhaitons fusionner ces deux fichiers en un seul. Chaque ligne reprsentant un patient. Utilisez btement loption MERGE. Quel est le problme ici ?

Nous allons dire SAS de fusionner les deux fichiers par rapport aux individus : data ensemble; merge moi.chol_avr moi.chol_oct; by num_secu; run; Attention : Pour que BY fonctionne, les fichiers doivent avoir t tris par rapport la variable contenue dans le BY (ici num_secu). Si tel nest pas le cas, utilisez PROC SORT. (Voir page 135)
Fichiers octobre et avril avec Obs 1 2 3 4 5 6 NUM_SECU 1660538898013 1770538351009 2650238982002 2761138010001 2781038351025 2890138351006 LDL_AVR 0.96 1.65 . 0.89 0.67 2.20 BY LDL_OCT 0.90 1.77 1.65 . 0.67 2.00

Super non ?

Syntaxe simplifie 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 donnes concatner. Les fichiers doivent tre tris par rapport aux variables figurant dans le BY ou tre indexs par rapport ces variables. Il est possible de spcifier un ordre dcroissant Cf. Aide en Ligne.

(4)

Exercices Crez trois fichiers (temporaires) SAS (hommes seuls, femmes seules, hommes et femmes) contenant les variables note de maths, d'histoire-go et de franais ainsi que leur moyenne, max et min pour chaque individu. Crez un autre fichier SAS contenant les individus fminins ayant 3 notes et dont la moyenne gnrale est suprieure ou gale 12. Crez un fichier de donnes contenant le groupe, ordre, taille, poids, des hommes de tous les fichiers STID : stid193, 194 etc. Vous vous arrangerez pour avoir une variable anne dans le fichier qui permet de savoir de quelle anne tait lindividu de STID. Idem avec les femmes. Slectionnez les 4eme, 7eme, 10 eme, 13eme etc. individus des fichiers STID et mettez les dans un fichier en reprant le numro de lanne, le groupe, lordre et le sexe. Exercice rcapitulatif n1 du paragraphe PROC PRINT de la page 136. (A faire lorsque vous aurez compris PROC SORT)

g) (1)

Recodage de variables (if, then, else, select when ) if...then ...

syntaxe (dans le cas d'une instruction aprs le test) IF condition THEN instruction; IF condition THEN instruction; ELSE instruction; syntaxe s'il y en a plusieurs: IF condition THEN DO; instruction1; instruction2; END; Exemples: IF AGE<10 THEN DO; TYPE='ENFANT'; ECOLE=PRIMAIRE; END; Que fait le programme suivant ? DATA WORK.STID; SET MOI.STID193; IF SERIEBAC IN ('C' 'D') THEN TYPE='SCIENTIFIQUE'; ELSE TYPE='AMATEUR'; KEEP SERIEBAC TYPE; RUN; Remarquez la prsence du type liste dans SAS. (if seriebac in(C D) etc...) qui est trs pratique.

(2)

Exercices: Crez un programme SAS crant un fichier temporaire contenant le fichier STID auquel on ajoute une nouvelle variable SEXEA qui vaut "homme" si SEXE=1 et "femme" si SEXE=2. Ecrivez un programme SAS crant la variable mention dans le fichier STID. La mention est passable si la moyenne est entre 10 et 12, assez bien entre 12 et 14, bien entre 14 et 16 et trs bien entre 16 et 20. Crez un fichier de donnes extrait alatoirement de STID193, ne contenant quune moiti des individus environ. On pourra utiliser la fonction RANUNI(0) qui donne une ralisation dune variable alatoire suivant une U[0,1].

(3)

Select / When Vous avez dj vu cette fonction en informatique. Un petit exemple vaut mieux quun long discours: DATA WORK.STID; FORMAT TAILLEC $10. ; SET MOI.STID193; SELECT (SEXE); WHEN (1) IF TAILLE>190 THEN TAILLEC='GRAND'; ELSE IF TAILLE >170 THEN TAILLEC='MOYEN'; ELSE TAILLEC='PETIT'; WHEN (2) IF TAILLE>180 THEN TAILLEC='GRANDE'; ELSE IF TAILLE >160 THEN TAILLEC='MOYENNE'; ELSE TAILLEC='PETITE'; END; KEEP TAILLE TAILLEC SEXE; RUN; Que fait ce programme ? Comment est dfinie taillec ?

D.

Utilisation de donnes SAS dans les Procdures ou les tapes DATA)


Lorsque nous faisons agir une procdure SAS sur un fichier SAS, il est possible de limiter la porte de la procdure une partie du fichier de donnes en utilisant des mots cls situs derrire le nom du fichier :
Procdure SAS quelconque Fichier de donnes concern par la procdure Options associes au fichier

PROC xxxx DATA=MOI.STID193 (Keep=groupe sexe Where=(sexe=1 and groupe=A )) ; RUN ;


Ces options permettent de ne conserver quune partie du fichier de dpart sans pour autant modifier celui-ci. Dans lexemple ci-dessus, la procdure xxxx ne sappliquera quaux hommes du groupe A de STID193. Seules les variables Groupe et sexe sont conserves.

1.
a)

Slection sur les variables


Suppression de variables : DROP= DROP= variables Exemple :
proc print data=moi.stid193(drop=notefr_ notehis notemat); run;

Ici nous affichons STID193, dans la fentre OUTPUT, en enlevant les variables notes. Linstruction ci-dessous fait exactement le contraire.

b)

Conservation de variables : KEEP= Keep= variables Exemple : PROC PRINT DATA=MOI.STID193(KEEP=NOTEFR_ NOTEHIS NOTEMAT); RUN; Ici nous imprimons STID193 en ne conservant que les variables NOTEMAT, NOTEHIS ET NOTEFR_.

c)

Renommer des variables : RENAME= rename=(ancien_nom1=nouv_nom1 ancien-nom2=nouv_nom2...) Exemple : PROC MEANS DATA=MOI.STID193(KEEP=NOTEMAT NOTEHIS NOTEFR_ RENAME=(NOTEMAT=MATHS NOTEHIS=HISTOIRE NOTEFR_=FRANCAIS)); RUN; va donner

VARIABLE N MEAN STD DEV MINIMUM MAXIMUM --------------------------------------------------------------------FRANCAIS 105 8.8285714 2.3099165 4.0000000 14.0000000 HISTOIRE 98 10.6020408 2.8420255 5.0000000 17.0000000 MATHS 104 12.5144231 3.2226871 5.0000000 19.0000000 ---------------------------------------------------------------------

2.
a)

Slection dindividus
Slection dindividus par leur n : FIRSTOBS= OBS= FIRSTOBS= n OBS=p SAS ne conserve que les individus compris entre le nieme et le pieme. On peut utiliser ces deux options sparment. Exemple : PROC MEANS DATA=MOI.STID193(KEEP=NOTEFR_ NOTEHIS NOTEMAT FIRSTOBS=10 OBS=25); RUN; Ici nous calculons quelques statistiques sur STID193 en ne conservant que les variables notemat, notehis et notefr_ et 16 individus (entre le 10eme et le 25eme )

b)

Slection dindividus par une condition : WHERE= WHERE=Condition Seuls les individus remplissant la condition seront slectionns. Cette option est extrmement riche et donc importante connatre.

Remarque : Loption WHERE ne peut pas tre utilise avec OBS et FIRSTOBS.

c)

Oprateurs < > = ... PROC PRINT DATA=MOI.STID193 (WHERE=(NOTEMAT>10 AND NOTEFR_>=12)); RUN; On ne slectionne que les individus ayant plus de 10 en maths et plus de 12 (ou 12) en franais. Il nen reste plus beaucoup ! ! ! PROC PRINT DATA=MOI.STID193 (WHERE=(SERIEBAC='C' OR NOTEMAT>16)); RUN; Vous pouvez bien sr utiliser les AND, OR , NOT,< (ou LT),= (ou EQ) ^= (ou NE) (diffrent) que vous connaissez bien.

d)

Utilisation de Fonctions Il est possible dutiliser des fonctions dans les WHERE . Ici, nous utilisons la fonction MEAN qui calcule la moyenne arithmtique des variables entre parenthses.48 PROC PRINT DATA=MOI.STID193 (KEEP=GROUPE BAC SEXE NOTEFR_ NOTEHIS NOTEMAT WHERE=(MEAN(NOTEFR_,NOTEMAT,NOTEHIS)>12)); RUN; que fait le programme prcdent ? et celui-ci ? PROC PRINT DATA=MOI.STID193 (KEEP=GROUPE SEXE NOTEFR_ NOTEHIS NOTEMAT WHERE=(NMISS(NOTEFR_,NOTEMAT,NOTEHIS)>0)); RUN;

e)

Oprateur IS MISSING Il permet de slectionner les individus ayant une variable manquante (ou plusieurs). PROC PRINT DATA=MOI.STID193 (WHERE=(NOTEMAT IS MISSING)); RUN; SAS va afficher les individus nayant pas de notes de note de maths. Dans lexemple suivant, nous utilisons loprateur NOT pour prendre la ngation. PROC PRINT DATA=MOI.STID193 (WHERE=(NOTEMAT IS NOT MISSING AND NOTEFR_ >=12)); RUN;

48 Attention ne pas confondre la fonction MEAN avec la procdure MEANS. MEAN calcule une moyenne pour chaque individu et MEANS calcule la moyenne de la classe.

f)

Oprateur CONTAINS Cet oprateur (et le suivant) sont utiliser avec les variables alphanumriques ou textes. Contains permet de ne slectionner que les individus dont la variable (texte) contient la chane spcifie. Prenons le fichier CUSTOMER (Rpertoire public) il contient les donnes suivantes :
(Ce fichier est dtaill dans le paragraphe sur la procdure SQL que vous verrez plus tard) OBS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CUSTNAME Beach Land Coast Shop Coast Shop Coast Shop Coast Shop Del Mar Del Mar Del Mar New Waves New Waves Sea Sports Sea Sports Surf Mart Surf Mart Surf Mart Surf Mart CUSTNUM 16 3 5 12 14 3 8 11 3 6 8 20 101 118 127 133 CUSTCITY Ocean City Myrtle Beach Myrtle Beach Virginia Beach Charleston Folly Beach Charleston Charleston Ocean City Virginia Beach Charleston Virginia Beach Charleston Surfside Ocean Isle Charleston

Si nous voulons slectionner les individus dont la ville contient Beach , nous allons taper le programme suivant : LIBNAME PUB Z:\LOGICIEL ; PROC PRINT DATA=PUB.CUSTOMER (WHERE=(CUSTCITY CONTAINS 'Beach')); RUN; Nous obtenons :
OBS 2 3 4 6 10 12 CUSTNAME Coast Shop Coast Shop Coast Shop Del Mar New Waves Sea Sports CUSTNUM 3 5 12 3 6 20 CUSTCITY Myrtle Beach Myrtle Beach Virginia Beach Folly Beach Virginia Beach Virginia Beach

Gnial non !

g)

Oprateur Like Vous slectionnez les individus dont la variable (texte) est gale (ou peu prs !) la chane spcifie.

PROC PRINT DATA=PUB.CUSTOMER (WHERE=(CUSTCITY LIKE 'Ocean City')); RUN; Vous nallez slectionner que les individus dont la ville est Ocean City. (un
= aurait fait la mme chose) OBS 1 9 CUSTNAME Beach Land New Waves CUSTNUM 16 3 CUSTCITY Ocean City Ocean City

PROC PRINT DATA=PUB.CUSTOMER (WHERE=(CUSTCITY LIKE 'Ocean%')); RUN; Le caractre % remplace toute chaine de caractres. Nous allons donc slectionner toutes les villes commenant par Ocean .
OBS 1 9 15 CUSTNAME Beach Land New Waves Surf Mart CUSTNUM 16 3 127 CUSTCITY Ocean City Ocean City Ocean Isle

De mme, le caractre _ remplace un caractre quelconque. Remarque : Dans le cas de fichiers volumineux, il peut tre intressant de crer des index sur le fichier ce qui peut considrablement acclerer la recherche. (cf. La procdure SQL de ce document ou le Chap. 6 SAS indexes du SAS
Language Reference)

Exercices A) TOTO dit quil ny a aucune diffrence entre ces deux programmes, quen pensezvous ? PROC PRINT DATA=MOI.STID193 (WHERE=((SERIEBAC='C' OR SERIEBAC='D') AND SEXE=2) ); RUN; PROC PRINT DATA=MOI.STID193 (WHERE=( SERIEBAC='C' OR SERIEBAC='D' AND SEXE=2) ); RUN; B) 1) Affichez les individus ayant un bac D ou B, nayant aucune note manquante et dont la moyenne des trois notes est suprieure 13. Vous nafficherez que le Bac, le Groupe, le Sexe et les notes de ces individus. 2) Affichez les hommes de STID193 des groupes A,B et C ayant une note manquante en histoire go ou en franais ou dans les deux. 3) Affichez les femmes du groupe A de tous les fichiers STID dont la taille est suprieure 170cm. On spcifiera les annes et les numros dordre des femmes slectionnes. 4) Affichez les individus de STID193 ns aprs le 14/8/1973 nayant aucune note manquante et dont la plus grande est suprieure 14. 5) Affichez les individus de STID193 ayant connu lIUT grce un ou une amie. Examinez pour cela le contenu de la variable IUT ?

III.

LODS : Gestion des sorties SAS


Avant de lire ce chapitre, il faut avoir les notions des procdures SORT, PRINT, UNIVARIATE et TABULATE. Les procdures prcdentes PRINT, MEANS envoient leur rsultat dans la fentre OUTPUT. SAS permet denvoyer ces rsultats aussi dans un fichier HTML49 ou directement dans une table SAS. Le but de ce praragraphe est de vous montrer comment y parvenir.

49 Ceci prsente un double intrt. Les fichiers HTML peuvent contenir des informations sous un format trs sophistiqu tout en tant lus par un simple navigateur WEB. Dautre part, on peut copier coller des tableaux HTML directement sous EXCEL et rutiliser ces donnes facilement !

A.

Quelques notions basiques sur lHTML

LHTML 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 spcialis comme FRONTPAGE. WORD, EXCEL, SAS etc. permettent aussi de crer des documents HTML. a) Un exemple

Tapez le texte suivant dans NOTEPAD (bloc-notes de Windows). Enregistrez le document sous le nom MENU.HTML dans votre rpertoire.

Balises

Ouvrez ce document avec Internet Explorer par exemple. Nous avons utilis les balises suivantes :

Balise <H1> </H1>

<BR> <HR> <FONT FACE=> </FONT> <FONT COLOR=> </COLOR> <G> </G> <I> </I> <IMG SRC="nom fichier.gif" ALIGN=>

Signification Caractres Grande taille. On peut remplacer le 1 par un nombre de 1 6 On peut aussi mettre des attributs ALIGN=CENTER pour centrer le texte Retour la ligne Trac dune ligne horizontale Pour changer la police de caractre Pour changer la couleur de la police Mettre en Gras Mettre en Italique Insere une image GIF et la centre si ALIGN=CENTER etc.

Exemple : Le texte plac entre deux balises <H1> </H1> sera en grands caractres. Essayez lexemple suivant en remplaant le D:\SASV801 par le rpertoire SAS de votre ordinateur . Pratique de lcriture de code HTML : Vous laisserez NOTEPAD et INTERNET EXPLORER actifs. Vous basculerez de lun a lautre avec ALT+TAB. Faites Fichier/Enregistrer avec NOTEPAD et REFRESH avec internet explorer pour enregistrer et visualiser vos modifications. <HEAD> <TITLE> Ma page de Menu </TITLE> </HEAD> <BODY BGCOLOR=YELLOW> <H1 ALIGN=CENTER> <I> <FONT FACE='COMIC SANS MS'> <FONT COLOR=RED> Ma premire Page HTML </FONT> </COLOR> </I></H1> <IMG SRC="E:\sasv8\core\sasmisc\gfkids.gif" ALIGN=RIGHT> <H2> C'est super non !!! </H2> <HR> Il va y avoir plein de choses. !.. <BR> <B> Bientot </B> </BODY>

b)

Dautres exemples

Sur le Web vous trouverez des belles pages dont vous pourrez examiner la source (Clic droit, afficher la source)

Nous allons maintenant voir comment crer automatiquement des documents HTML avec SAS.

B.

Utilisation de lODS de SAS. Objets de sortie


Certaines procdures envoient un dautres plusieurs objets (ou section) dans la fentre OUTPUT. Exemples : La procdure PRINT ci-dessous ne va renvoyer quun seul objet : Proc print data=moi.stid193 (obs=10) obs=Numro ; Var date taille poids ; Run ; Va donner :
SDIOP 55 46 65 85 85 05 45 86 16 86 ELLIAT 861 681 061 871 761 261 761 871 861 081 ETAD ormuN 01 9 8 7 6 5 4 3 2 1

37/60/51 47/60/80 37/11/22 47/90/41 47/20/11 47/11/03 27/11/01 27/80/51 47/21/80 37/01/12

)snoitavresbo 01 sel : tejbo lues nU(

proc univariate data=moi.stid193; var taille; 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 extrmes.
The UNIVARIATE Procedure Variable: TAILLE (TAILLE) Moments N 106 Sum Weights 106 Mean 170.69 Sum Observations 18094 Std Deviation 7.839 Variance 61.4508535 Skewness 0.480 Kurtosis -0.057081 Uncorrected SS 3095064 Corrected SS 6452.33962 Coeff Variation 4.592 Std Error Mean 0.76139676 Basic Statistical Measures Location Mean 170.69 Median 170.00 Mode 160.00 Variability Std Deviation 7.83906 Variance 61.45085 Range 41.00000 Interquartile Range 10.00000

Test Student's t Sign Signed Rank Quantile 100% Max 99% 95% 90% 75% Q3 0% Min

Tests for Location: Mu0=0 -Statistic-----p Value-----t 224.1908 Pr > |t| <.0001 M 53 Pr >= |M| <.0001 S 2835.5 Pr >= |S| <.0001 Quantiles (Definition 5) Estimate Quantile Estimate 196 50% Median 170 187 25% Q1 165 184 10% 160 182 5% 160 175 1% 158 155

Extreme Observations ----Lowest-------Highest--Value 155 158 158 160 160 Obs 52 86 70 103 101 Value 185 185 186 187 196 Obs 25 90 9 48 16

C.

Trois sorties possibles

Chaque Objet de sortie se compose de donnes et de mise en forme appeleTemplate. La mise en forme pourra tre personnalise. Linstruction ODS permettra de diriger chaque Objet vers une sortie (ou plusieurs la fois !) de notre choix :

Objet de sortie (= Donnes+ Mise en forme)

3 directions possibles :

3 instructions ODS
ODS OUTPUT : Fichier de donnes SAS ODS LISTING : Fentre OUTPUT (par dfaut) ODS HTML : Document WEB

Ne confondez pas la fentre OUTPUT et lODS OUTPUT qui nont rien voir

1.

Sortie HTML basique

Lintruction ODS HTML Body= Nom de fichier HTML va rediriger la sortie en fichier HTML. Linstruction ODS LISTING CLOSE sert supprimer la sortie vers lOUTPUT. Linstruction ODS LISTING sert ractiver la sortie vers lOUTPUT.

ods html body='c:\temp\univariate.html'; ods listing close; proc univariate data=moi.stid193; var taille; run; proc means data=moi.stid193 ; class groupe; var notemat; 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.

Ce qui a quand mme un peu plus dallure

Dans la suite de la sortie, vous avez la procdure MEANS dont vous pouvez copier coller les rsultats sous Excel :

2.

Slection dobjets en sortie : ODS TRACE, ODS SELECT, ODS EXCLUDE


Comme nous lavons vu tout lheure, la procdure UNIVARIATE inscrit 5 objets dans la sortie. Pour slectionner ceux que nous voulons afficher, il faut reprer le nom des objets : cest le but de Linstruction ODS TRACE

ODS TRACE ON <options> ; Active le mode TRACE ODS TRACE OFF ; Supprime le mode TRACE (cest loption par dfaut)

Les options tant LABEL pour indiquer les chemin de lobjet LISTING pour mettre les noms des objets avant les objets dans les sorties.

Ces noms (en gras) sont TRES IMPORTANTS car ce sont eux dont on va se servir dans la suite pour slectionner les objets afficher ! ! !
------------sbOemertxE.ELLIAT.etairavinU :htaP sbOtxE.etairavinu.esab :etalpmeT snoitavresbO emertxE :lebaL sbOemertxE :emaN ------------:deddA tuptuO ------------selitnauQ.ELLIAT.etairavinU :htaP selitnauQ.etairavinu.esab :etalpmeT selitnauQ :lebaL selitnauQ :emaN ------------:deddA tuptuO ------------noitacoLroFstseT.ELLIAT.etairavinU :htaP noitacoL.etairavinu.esab :etalpmeT noitacoL roF stseT :lebaL noitacoLroFstseT :emaN ------------:deddA tuptuO ------------serusaeMcisaB.ELLIAT.etairavinU :htaP serusaeM.etairavinu.esab :etalpmeT ytilibairaV dna noitacoL fo serusaeM cisaB :lebaL serusaeMcisaB :emaN ------------:deddA tuptuO ------------stnemoM.ELLIAT.etairavinU :htaP stnemoM.etairavinu.esab :etalpmeT stnemoM :lebaL stnemoM :emaN ------------:deddA tuptuO

Exemple :

Va donner dans la LOG les noms de nos 5 objets : ods listing; Pour diriger les objets vers la fentre OUTPUT ods trace on; Pour activer le mode TRACE proc univariate data=moi.stid193; var taille; run; ods trace off;

Exercice

Compliquez la procdure UNIVARIATE en ajoutant une option PLOTS par exemple qui permet dobtenir un box plot et un graphique de normalit :

ods trace on; proc univariate data=moi.stid193 plots; var taille; run; ods trace off; Combien dobjets 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 ?

Passons ce qui nous intresse : Slection des objets : ODS <Destination> SELECT noms des objets | ALL |NONE ; Exclusion dobjets : ODS <Destination> EXCLUDE noms des objets | ALL |NONE ; Pour savoir ou on en est : ODS <destination> SHOW

Exemple : ods listing select quantiles basicmeasures; Slection dobjets ods listing show; Pour savoir o on en est proc univariate data=moi.stid193 plots; var taille; run; ODS LISTING SHOW va nous donner dans la LOG :
serusaemcisab .2 selitnauq .1 :si tsil tceles GNITSIL tnerruC ;wohs gnitsil sdo

cela nous confirme ce que nous souhaitions avoir. Dans la fentre OUTPUT vous navez que ces deux objets.

Exercice Le programme proc reg data=moi.stid193; model poids=taille; run; quit ; permet deffectuer une regression linaire POIDS=a+b*TAILLE. Combien dobjets va crer ce programme ? Quels sont leurs noms ? Ecrivez un programme permettant de ne mettre dans la fentre OUTPUT que lestimation des paramtres. a= ? b= ? Mme chose mais dans un document HTML. (vous indiquerez deux instructions ODS HTML une pour indiquer le fichier de sortie (BODY), une autre pour slectionner les objets (SELECT)).

3.
a)

Sorties HTML sophistiques


Structure dune Feuille HTML

Pour SAS, votre feuille HTML contient 3 lments : Le corps (BODY) ce sont toutes les sorties de SAS en HTML. La table des matires (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 numro.

CONTENTS

BODY

PAGE

FRAME

Ici, notre sortie comporte deux pages. LA premire page contient la sortie dUNIVARIATE. Cette sortie dUNIVARIATE comporte plusieurs objets. Nous sommes en train de visualiser les TESTS FOR LOCATIONS.

Pour chacun des lments prcdents, 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 lOUTPUT ods html path='c:\temp' On ouvre la sortie HTML en c:\temp body='corps.html' On stocke diffrentes parties dans 4 fichiers contents='contenu.html' page='page.html' frame='feuille.html' ; proc univariate data=moi.stid193 plots; var taille; run; proc print data=moi.stid193 (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:\temp\corps.html etc. Un seul des fichiers prcdents est essentiel : cest BODY qui contient tous les rsultats. Application Tapez le programme prcdent. Excutez le. Depuis Internet Explorer chargez la page Feuille.html. Amusez vous vous promener dans cette sortie. Chargez les autres fichiers HTML cres par SAS.

b)

Changement de Style dune feuille HTML

Pour personnaliser les sorties HTML prcdente, il suffit dajouter loption STYLE= dans les instructions prcdentes : ods listing close; ods html path='c:\temp' body='corps.html' contents='contenu.html' page='page.html' frame='feuille.html' style=brown; proc univariate data=moi.stid193 plots; var taille; run; proc print data=moi.stid193 (obs=10) ; run; ods html close; ods listing; Faites lessai !

Divers modles sont fournis par SAS : DEFAULT BEIGE BRICK BROWN D3D MINIMAL STATDOC Essayez les avec lexemple prcdent Pour crer vos propres styles, il faut avoir recours une nouvelle procdure PROC TEMPLATE.

c)

Personnalisation des titres et notes de bas de page

Dans linstruction Title, ou Footnote, nous pouvez indiquer des lments HTML permettant de modifier les polices des titres, notes de bas de page : Syntaxe :

Title <FONT nom de lattribut= valeur > texte du titre </FONT> ;


Quelques attributs et leur valeur : FONT FACE= nom de la police Pour changer la police de carcatres (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 carcatres (Italic, Roman) FONT WEIGHT= gras ou non Pour changer le style (Medium, Bold) FONT WIDTH=espacement de la police : Normal, Narrow ou Wide

De mme avec FOOTNOTE. Exemple :


ods html path='c:\temp' body='body1.html'; title '<font face="Arial" color="green" weight="bold" size=6 > Dix individus de STID anne 93 </font>'; proc print data=moi.stid193 (obs=10); var groupe sexe taille poids; run; title ; /*pour effacer le titre pour la suite */

Excutez cet exemple. Crez une note de bas de page Courier Rouge de taille 4 indiquant do viennent les donnes.

0.21 0.8 0.5 .RF ETON 0.61 0.11 0.5 SIH ETON 0.91 0.31 0.5 TAM ETON D 0.41 0.8 0.5 .RF ETON 0.71 0.01 0.6 SIH ETON 0.81 5.11 0.7 TAM ETON C 0.41 0.9 0.4 .RF ETON 0.61 0.11 0.6 SIH ETON 0.71 0.11 0.6 TAM ETON B 0.41 0.8 0.5 .RF ETON 0.71 5.11 0.5 SIH ETON 0.81 0.31 0.9 TAM ETON A EPUORG xaM naideM niM CAB ud setoN epuorG rap statlusr sed eshtnyS

d)

Nous allons utiliser une procdure TABULATE pour illustrer ces notions :

donne dans la fentre OUTPUT :

Redirigez cette sortie dans un fichier HTML. Utilisation de STYLES dans la procdure TABULATE
title 'Synthse des rsultats par Groupe'; proc tabulate data=moi.stid193 format=6.1; class groupe ; var notemat notehis notefr_; table groupe*(notemat notehis notefr_), min box={label='Notes du BAC'}; run; title ; median max /

Options placer derrires les commandes de la procdure TABULATE Pour changer les couleurs et la police des lments dune page HTML
STYLE= {Background=couleur} ; Pour changer la couleur de larrire plan. STYLE={Foreground=couleur} ; Pour changer la couleur du texte. STYLE={FONT_FACE= nom de la police} Pour changer la police de carcatres (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 carcatres (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 lexemple prcdent en changeant les couleurs de fond et de caractres pour diffrents lments de la sortie prcdente :
ods listing close; ods html body='c:\temp\tabulate.html'; proc tabulate data=moi.stid193 format=6.1 style={background=yellow foreground=red}; title 'Synthse des rsultats par Groupe'; class groupe / style={background=brown}; classlev groupe / style={Background=purple foreground=red font_size=30}; keyword min median max / style={background=red font_weight=bold}; var notemat / style={background=pink foreground=red font_face=times font_style=italic}; var notefr_ / style={background=pink foreground=green}; var notehis / style={background=pink foreground=cyan}; table groupe*(notemat notehis notefr_), min median max / box={label='Notes du BAC'}; run; ods html close; ods listing ;

Excutez cette sortie , quoi servent les lignes CLASSLEV, KEYWORD ?

STYLES des cellules Parents : Linconvnient de la sortie prcdente, cest que le style des cellules calcules (nombres) ne correspond pas au style des cellules contenant les noms des notes. Nous pouvons automatiquement les affecter en utilisant loption : *STYLE=<PARENT>
table groupe*(notemat notehis notefr_)*{style=<parent>}, min median max / box={label='Notes du BAC'};

Voyez la diffrence et reconnaissez le got certain de votre prof pour lharmonie des couleurs !

e)

Coloration conditionnelle des cellules : utilisation de FORMAT Cet exemple assez spectaculaire peut vous montrer lutilisation des STYLES diffrentes selon la valeur de la cellule. Pour cela, nous allons utiliser un Format cr spcialement. Si vous ntes pas laise avec les formats, allez voir le paragraphe correspondant dans les annexes et la PROC FORMAT. Nous allons voir ici comment colorier le fond de la cellule en ROUGE si le poids est suprieur 65 en JAUNE sil est entre 60 et 65 en VERT, sil est infrieur 60.

Cration dun nouveau Format Pour cela, nous allons dfinir un nouveau Format appel FOND.
proc format ; value fond low-60 = 'Green' 60<-65='Yellow' 65<-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 Poids des 10 premires personnes de STID avec ce format :
proc print data=moi.stid193 (obs=10); format poids fond.; var poids; run;

On a :
Obs 1 2 3 4 5 6 7 8 9 10 POIDS Red Yellow Red Green Green Green Green Green Yellow Green

Rigolo non ? Remarque : La valeur de la variable POIDS na pas chang ! On lui a juste appliqu un masque ! En interne, les valeurs sont inchanges

Utilisons ce format dans les Styles :

ods listing close; ods html body='c:\temp\corps.html' style=brown; proc tabulate data=moi.stid193; title 'Rpartition des Poids selon le sexe'; class groupe sexe; var poids; table groupe*(sexe*Poids)*{style={background=fond. foreground=black font_weight=bold}},mean median; run; ods html close; ods listing;

Visualisez le rsultat. Rigolo non ?

f)

Exercice rcapitulatif :

Copier les fichiers FRAME1.HTML ; BODY1.HTML, CONTENT1.HTML, PAGE1.HTML du rpertoire public en C:\TEMP Ouvrez le fichier FRAME1.HTML avec INTERNET EXPLORER. Retrouvez le programme SAS capable de produire ces fichiers HTML ! ! !

4.

Sorties HTML pour les graphiques


Les graphiques ne sont pas simples grer sous SAS. Le module GRAPH permet dobtenir des graphiques prsentables mais au prix dune programmation complexe. Certains outils (Graph n Go) ou modules (ASSIST, Enterprise Guide) permettent de crer des graphiques simples.

a)

Assistant graphique : Graph n Go Sinon, vous pouvez utiliser lutilitaire GRAPH-N-GO (Menu SOLUTIONS/REPORTING) qui est un assistant graphique.50 Il permet deffectuer des graphiques simples en cliquant sur des boutons puis de les exporter en HTML (fixe, JAVA, ou ACTIVE X). Vous pouvez aussi rcuprer le code SAS ayant permis de faire les graphiques en question. Les donnes doivent figurer dans des tables SAS dont vous pouvez extraire des parties.

50 Signalons aussi SAS ENTERPRISE GUIDE mais il necessite un module supplmentaire. Graph n Go ne ncessite que les modules BASE et GRAPH.

b)

Diagramme Bande HTML Interactif avec Graph n Go Nous allons crer un petit graphique illustrant la rpartition des Bacs en STID193. Nous allons rcuprer le code permettant de faire ce graphique. Puis nous allons lexporter en Fichier HTML interactif Active X. Activez cet outil (SOLUTIONS/REPORTING)

Fichiers de donnes, ou vues (view)

Graphiques

Nous allons dabord slectionner un fichier de donnes (STID193). Pour cela cliquez sur le premier bouton en haut gauche. (New SAS Data Set Model)

Slectionnez le fichier STID193. Vous voyez que vous pouvez slectionner certaines colonnes (Column Filter) si vous le souhaitez. Validez, vous avez maintenant dans la partie fichier de donnes :

Nous allons maintenant effectuer un diagramme bande. Cliquez sur loutil BAR CHART . Glissez le cadre o vous souhaitez. Double cliquez dessus.

Choisissez les options de manire obtenir (aprs avoir agrandi le graphique avec GROW du menu contextuel) :

Rcupration du Code SAS Dans le menu contextuel, choisissez EXPORT puis

Vous obtenez alors :

Cliquez sur WRITE pour sauver le fichier et PREVIEW pour le visualiser. Vous aurez les commandes SAS quil fallait donner pour obtenir ce graphique. En gras figurent les commandes graphiques fondamentales.

/* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** */

Graph-N-Go SAS/Graph Code Generation for SAS products required: Base, SAS/Graph (Version 8 or later) Code generated on: 21APR2000 15:29:55 Notes: There may be differences in appearance of the graph generated by the code below and the Graph-N-Go viewer. To make code modifications consult the documentation for these statements: GCHART, GPLOT, ODS, GOPTIONS, AXIS, LEGEND, SYMBOL, TITLE, FOOTNOTE. To route output to a graphics device other than your monitor, modify the source code below to change the device driver by 1) removing the asterisk preceding GOPTIONS DEVICE=JAVA; 2) changing JAVA to some other valid device. To create an interactive HTML file, modify the source code below to enable ODS output by 1) removing the asterisks from the two ODS statments and the asterisk preceding GOPTIONS DEVICE=JAVA; 2) changing DEVICE=JAVA to DEVICE=ACTIVEX if you want to create an ActiveX control rather than a Java applet 3) verifying or changing the ODS FILE= option so it names an output HTML file.

/* Begin ODS output */ * ods html file="C:\Mes Documents\My SAS Files\V8\bar.html" parameters=("DisableDrillDown"="True" "ShowBackDrop"="False" "BackColor"="#FFFFFF" "BackDropColor"="#FFFFFF" "FreqName"="BAC" "FreqDesc"="(Frequency)" "FreqFmt"="BEST." "MenuRemove"="File,Variables,Options:Drilldown,Graph:Image,Graph:Navigate,Graph:Type,Legend" ); /* Set the SAS/Graph options */ goptions reset=all hpos=40 ctext=CX000000 ftext="MS Sans Serif" colors=(CX0000FF CXFF0000 CX008080 CX00FF00 CXFF00FF CXFFFF00 CX00FFFF CX800000 CX008000 CX800080 CX000080 CX808000 CXFFFFFF CX808080 CXC0C0C0 CX000000); /* Set the Titles/Footnotes */ title1 justify=center color=CX000000 font="MS Sans Serif" height=8 pt "Rpartition des Bacs selon le sexe"; footnote1 justify=center color=CX000000 font="MS Sans Serif" height=8 pt "Source: Stid193"; /* Set the SAS/Graph device driver */ * goptions device=JAVA xpixels=531 ypixels=346; /* AXIS1 describes axis for Category variable BAC */ /* AXIS2 describes axis for Response statistic FREQ */ axis1 minor=none label=("BAC") ; axis2 minor=none label=("(Frequency)") order=(0 to 25 by 5) ; proc gchart data=MOI.STID193; vbar BAC / type=FREQ maxis=axis1 descending discrete frame cframe=CXFFFFFF woutline=1 coutline=CX000000 caxis=CX000000 raxis=axis2 group=SEXE G100 ; run; quit; /* Reset all graphics options */ goptions reset=all; /* End ODS output */ * ods html close;

Exportation du graphique vers un fichier HTML Choisissez EXPORT puis HTML File 3 options soffrent vous : Static Image : Fichier HTML fixe. On ne peut modifier le graphique. Interactive JAVA Applet : Fichier HTML interactif puisquen fait SAS va gnrer un programme JAVA permettant votre Browser Internet de rendre votre grqphique modifiable. Interactive Active X Control : Idem.

Remarque : Les deux dernires options requirent les bibliothques (JAVA, Active X) adquates pour Windows. Elles sont automatiquement installes si SAS a t install dans les rgles sur votre Micro.

Choisissons la troisime option. Editez alors le fichier HTML avec SAS ou votre Browser Internet habituel. Cliquez sur le bouton droit de la souris

Comme vous le voyez, nous pouvons modifier les couleurs, les polices, le type de graphique Amusant non ? Modifiez le graphique prcdent pour faire apparatre le graphique suivant (sans retoucher SAS !)

5.
a)

Sorties vers des fichiers de donnes


Fichiers simples La version 6 de SAS ne permettait de sauvegarder dans les fichiers de donnes quune partie des sorties des procdures. Avec la V8, TOUTES les sorties des procdures peuvent tre exporte dans des fichiers de donnes. Il est possible de ne mettre quune partie des sortie en spcifiant le nom des objets. Syntaxe simplifie :

ODS OUTPUT nom de lobjet (options) = nom du fichier de donnes SAS ;


Exemple : La procdure Univariate renvoie (en gnral) 5 objets :Moments, BasicMeasures, TestsForLocation, Quantiles, Extremeobs. Pour sauvegarder ces donnes dans des fichiers, il suffit de lindiquer derrire ODS OUTPUT comme le montre le programme ci-dessous : ods listing close;
On ferme la sortie dans la fentre OUTPUT classique

/*On redirige la sortie vers des fichiers de donnes*/

ods output Moments=work.moments BasicMeasures=Work.statdebase TestsForLocation=Work.test Quantiles=work.quantiles Extremeobs=work.extremes; Proc univariate data=moi.stid193; var notemat notehis notefr_; run; ods listing;
On ractive la sortie OUTPUT classique pour visualiser les fichiers crs.

/*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
selitnauq.kroW reihciF

00.4 00.5 00.6 00.6 00.7 00.9 00.01 00.21 00.31 00.41 00.41 00.5 00.5 00.6 00.6 00.9 00.11 00.21 00.51 00.61 00.71 00.71 00.5 00.6 00.7 00.9 00.01 52.21 00.51 00.71 00.81 00.81 00.91 etamitsE

niM %0 %1 %5 %01 1Q %52 naideM %05 3Q %57 %09 %59 %99 xaM %001 niM %0 %1 %5 %01 1Q %52 naideM %05 3Q %57 %09 %59 %99 xaM %001 niM %0 %1 %5 %01 1Q %52 naideM %05 3Q %57 %09 %59 %99 xaM %001 elitnauQ

_RFETON _RFETON _RFETON _RFETON _RFETON _RFETON _RFETON _RFETON _RFETON _RFETON _RFETON SIHETON SIHETON SIHETON SIHETON SIHETON SIHETON SIHETON SIHETON SIHETON SIHETON SIHETON TAMETON TAMETON TAMETON TAMETON TAMETON TAMETON TAMETON TAMETON TAMETON TAMETON TAMETON emaNraV

33 23 13 03 92 82 72 62 52 42 32 22 12 02 91 81 71 61 51 41 31 21 11 01 9 8 7 6 5 4 3 2 1 sbO

Vous pouvez aussi le visualiser avec lEXPLORER de SAS en allant dans la bibliothque WORK.

Visualisez les autres fichiers de donnes.

b)

Fichiers multiples (Option MATCH_ALL)

Lorsque vous utilisez une OPTION BY dans une procdure, vous allez crer un fichier de donnes contenant toutes les occurrences du nom de lobjet. En clair : /* On trie le fichier par rapport au groupe*/ proc sort data=moi.stid193 out=work.stidtri; by groupe; run; /* On se prepare a sauvegarder les Quantiles*/ ods listing close; ods output Quantiles=work.quantiles; proc univariate data=work.stidtri; var notemat notehis; by groupe; run; ods listing; proc print data=work.quantiles; title 'Quantiles des notes de Maths et d''Histoire par Groupe'; run; Va donner :

Quantiles des notes de Maths et d'Histoire par Groupe Obs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 . suivre GROUPE A A A A A A A A A A A A A A A A A A A A A A B B B B B B B B B B B B B B B B B B B B B B C C C VarName NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEHIS NOTEMAT NOTEMAT NOTEMAT Quantile 100% Max 99% 95% 90% 75% Q3 50% Median 25% Q1 10% 5% 1% 0% Min 100% Max 99% 95% 90% 75% Q3 50% Median 25% Q1 10% 5% 1% 0% Min 100% Max 99% 95% 90% 75% Q3 50% Median 25% Q1 10% 5% 1% 0% Min 100% Max 99% 95% 90% 75% Q3 50% Median 25% Q1 10% 5% 1% 0% Min 100% Max 99% 95% Estimate 18.0 18.0 17.0 16.5 15.0 13.0 10.0 10.0 9.0 9.0 9.0 17.0 17.0 15.0 14.0 12.0 11.5 9.0 8.0 6.0 5.0 5.0 17.0 17.0 17.0 17.0 13.5 11.0 9.5 7.0 6.0 6.0 6.0 16.0 16.0 16.0 15.0 13.0 11.0 9.0 8.0 6.0 6.0 6.0 18.0 18.0 17.0

(Tous les groupes sont dans un seul fichier)

En ajoutant (Match_all) derrire le nom de lobjet, SAS va crer un fichier de donnes diffrent chaque changement de groupe et de variable :
ods listing close;

ods output Quantiles(Match_all)=work.quantiles;


proc univariate data=work.stidtri; var notemat notehis; by groupe; run; ods listing; proc print data=work.quantiles; title 'Quantiles des notes de Maths du Groupe A'; run; proc print data=work.quantiles1; title 'Quantiles des notes d''Histoire du Groupe A'; run; proc print data=work.quantiles2; title 'Quantiles des notes de Maths du Groupe B'; run;

Le dernier PRINT va donner :


Quantiles des notes de Maths du Groupe B Obs 1 2 3 4 5 6 7 8 9 10 11 GROUPE B B B B B B B B B B B VarName NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT NOTEMAT Quantile 100% Max 99% 95% 90% 75% Q3 50% Median 25% Q1 10% 5% 1% 0% Min Estimate 17.0 17.0 17.0 17.0 13.5 11.0 9.5 7.0 6.0 6.0 6.0

Combien de fichiers de donnes seront crs ici ? Comment sont ils nomms ?

IV.

Analyse interactive de donnes : SAS/INSIGHT


Ce module inclus dans loutil de DATA MINING de SAS (Enterprise MINER) permet deffectuer de puissantes analyses interactives de donnes, essentiellement sur des donnes quantitatives.51 Le grand intrt de ce module rside dans le fait de pouvoir faire rapidement de nombreux graphiques interactifs, de reprer, dexclure ou dinclure de nouveaux individus. Tous les calculs sont alors modifis en consquence. On peut effectuer des rgressions, des analyses en composantes principales... bref un trs bon outil.

A.

Ouverture dune table


Pour le mettre en uvre allez dans SOLUTIONS/ANALYSISINTERACTIVE DATA ANALYSIS ; une fentre apparat dans laquelle vous allez spcifier le nom du fichier que vous souhaitez analyser52 :

Cliquez sur OPEN pour continuer. Remarque : Il est aussi possible douvrir INSIGHT avec PROC INSIGHT. proc insight data=moi.stid193; run;

Vous obtenez :

51 Histogrammes, Boxplots, Diagrammes bandes, fonctions de rpartition, ajustement de lois (test de normalit), Rgression simple et multiple, ACP etc. 52 Vous devez avoir dclar la bibliothque contenant le fichier que vous souhaitez analyser.

Type de la variable (Nominale (Nom) ou Numrique (Int) Accs 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 lobservation en question. SAS effectue automatiquement les corrections ncessaires. Le carr noir devient une croix.

1.

Aperu rapide de quelques menus


Ce menu permet dagir sur les fentres de graphiques que vous sortirez. Pour copier votre fentre dans une autre. Pour animer vos points (nuages) en fonction des modalits dune variable Par dfaut INSIGHT modifie les fentres en temps rel (cf. Excel) cette option permet de geler une fentre.
Gnial : outil permettant de marquer les observations sur un graphique en fonction dautres modalits.

Le menu Edit permet aussi dagir sur les variables (Transformation (Log, Exponentielle,...) sur les observations :
Recherche dindividus dition dindividus 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.

Le menu Analyse permet deffectuer des calculs et des graphiques de diffrents types :
Diagramme bandes, histogramme. Boxplot, diagramme bandes multivaris Nuage de points 2 ou 3 dimensions tude de la distribution de Y (Fonction de rpartition, superposition lois de proba (Normale), tests etc. Rgression simple, multiple. Analyse multivaries (Matrice des corrlations, Valeurs propres, vecteurs propres (ACP) ), Analyse discriminante

B.

Analyse dune Variable qualitative


Nous allons voir comment tracer un diagramme bandes et obtenir un tri plat . Choisissez la premire option du menu prcdent, nous allons analyser la variable BAC. Pour cela cliquez sur le nom de cette variable, puis sur Y et validez.

Remarque : Vous pouvez aussi slectionner, depuis la feuille de donnes, une ou plusieurs colonnes du fichier de donnes en cliquant sur leur nom et choisir ensuite le menu Histogram/Bar Chart. Vous aurez alors directement tous les graphiques concerns dans une fentre. Vous obtenez 53

53 Remarquez que SAS a mis dans une colonne OTHER toutes les modalits rares . Il suffit de cliquer sur le bouton METHOD de la bote prcdente pour paramtrer la raret . De plus, vous pouvez en cliquant sur les lment du graphique afficher les effectifs correspondants...

En cliquant sur le bouton droit de la souris, vous faites apparatre un menu contextuel avec lequel vous pouvez afficher les valeurs de la rpartition (Values...) Pour obtenir le tri plat de la rpartition allez dans Analyse/Distribution Y, pour compliquer, nous mettons SEXE comme variable de Groupement.

Nous obtenons un graphique du mme type que le prcdent.

Pour transfrer les calculs dans la fentre OUTPUT cliquez sur ce bouton, puis sur SAVE.

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

Exercice 1. Reproduisez le graphique suivant en utilisant la commande MOSAIC PLOT qui permet de faire des diagrammes bandes deux dimensions :

Etude graphique de la liaison entre deux variables : 2. Slectionnez les colonnes SEXE, TAILLE et POIDS de la feuille de donnes en cliquant sur leur nom avec la touche CTRL maintenue enfonce. (Assurez vous au pralable que SEXE est bien considre comme nominale). Activez ensuite le menu Histogram/Bar Chart. Cliquez ensuite sur la barre du graphique reprsentant les hommes. Interprtez le rsultat obtenu.

Ceci fonctionne sur toutes les fentres cres par INSIGHT sauf celles qui sont geles (Menu Freeze de Windows) 3. Donnez un graphique dmontrant labsence (ou la prsence) de liaison entre les variables SEXE et GROUPE.

C.
1.

Variable quantitative ; Analyse univarie


Boxplots, histogrammes, moments
Analysons la variable TAILLE. Pour cela allons dans Analyse/Distribution Y et choisissons la variable Taille : Rappel de la dfinition du Box Plot :
100% de la pop 50 % de la pop.

25%

25%

Q1-1.5E

Q1

Q2=M

Q3

Q3+1.5E Valeurs extrmes Plus grande valeur observe infrieure Q3+1.5E

Plus petite valeur observe suprieure Q1-1.5 E M=Mdiane Qi=ime quartile E=Q3-Q1
Sortie SAS :

Interprtez les lments ci dessus. (Range, Qi etc.) Vous rappellerez les dfinitions de ces moments. Identifiez lindividu hors norme (Box Plot) en cliquant dessus. Refaites les calculs sans lui. (Menu Edit/Observations/Exclude in Calculations, vous pouvez aussi le sortir du graphique Hide in Graph) Analyse par groupe Pour distinguer selon les sexes ltude prcdente, il suffit dindiquer la variable SEXE dans la case GROUP :

Complments : Dans la fentre prcdente, il vous est possible d intgrer diffrents lments : (ceux dj affichs sont indiqus par )

Intervalle de confiance... Tests de Student, de Wilcoxon... Tableau de frquence. Tests de normalit Moyenne tronque (Calcule en tant une partie des individus extrmes)

Application : Donnez les statistiques lmentaires sur la variable POIDS en distinguant hommes et femmes. Amusez vous retirer lindividu le plus pesant et regardez les changements dans les calculs.

2.

Fonction de rpartition
En allant dans le menu CURVES, vous pouvez intgrer des courbes supplmentaires la sortie prcdentes :

Densit des lois connues (Normales etc.) Fonction de rpartition (observe) Fonction de rpartition thorique. (dune loi connue) Tests de normalit etc... Courbe de Normalit (Droite de Henry ou autre)

En choisissant Empirical CDF, vous avez la fonction de rpartition suivante :

3.

Densit de probabilit
Vous pouvez obtenir la superposition de la densit de la loi Gaussienne sur lhistogramme prcdent :

Choix des distributions

Lestimation se fait partir de lchantillon ou partir de vos spcifications.

Choix des paramtres (si vous choisissez vos spcifications)

Cliquons simplement sur OK

Vous pouvez dplacer ce curseur pour modifier la moyenne...

Vous pouvez agir sur les curseurs pour modifier la moyenne et lcart type. La courbe rouge se modifiera en temps rel.

Complment Vous pourrez tester lajustement de la courbe prcdente en allant dans Curves/Test for distribution. Dans lexercice suivant, vous allez voir les possibilits de la commande Box plot/ Mosaic Plot Exercice En allant dans Analyse/ Box Plot, reproduisez le graphique suivant :

Identifiez les deux individus hors normes dhistoire gographie. Faites des Boxplots illustrant la rpartition des notes de maths selon les groupes. Le niveau en maths vous semble-t-il homogne selon les groupes ? Y a-t-il une liaison entre les notes et la variables SEXE ? Quel graphique peuton faire pour sen rendre compte ?

D.
1.

Etude de plusieurs variables quantitatives


Nuage de points (scatter plot)
Cette commande permet de tracer des nuages de points. Il suffit dentrer la variable X et la variable Y. Effectuez un nuage taille poids pour les STID193.

2.

Stratification par une variable qualitative, ou quantitative agrge (TOOL)


Nous souhaitons savoir o se placent les individus du groupe A sur ce graphique. Nous allons activer la bote EDIT/WINDOWS/TOOL

Pour zoomer sur le graphique.

Couleur de la stratification. Cliquez sur une couleur, puis remplissez la bote de dialogue qui saffichera.
Gnial : pour affecter un dgrad de couleur une variable numrique. Pour changer les couleurs du dgrad, faites glisser une couleur du dessus sur ce bouton. Marque de la stratification. Cliquez sur une marque par laquelle vous souhaitez marquer les observations...une bote de dialogue va safficher.

Cliquez sur la couleur rouge, une bote apparat :

Vous indiquez ici la condition remplir pour tre en rouge.

Mettez en rouge les individus du groupe A. Mettez leur galement un symbole en croix. Le graphique apparat.

Exercice : 1. Sur le graphique Taille Poids, faites figurer les hommes avec un point bleu et les femmes avec une croix rouge. Activez le Zoom et faites le fonctionner.54 2. Reprsenter graphiquement les trois notes des individus sur un mme graphique. On reprsentera deux notes sur un nuage de points et la troisime en forme dun dgrad de couleurs. Du rouge pour les individus ayant une mauvaise note (dans la troisime matire) au vert pour les bons . (Cf. Windows/Tool) Existe il une liaison entre les trois notes ? (les bons en franais sont ils automatiquement bons ou mauvais en maths ?...) 3. Le fichier PUB.BANQUE contient des informations sur 50 clients dune banque. La variable SOLD contient le solde moyen sur le compte courant, la variable DEPO contient les DEPO effectus lan pass sur les comptes dpargne. La variable NBPR contient le nombre de produits bancaires possds par le client. Faites un nuage de points SOLD DEPO en stratifiant par la variable NBPR. (Vous reprsenterez en dgrad de couleurs les individus suivant leur valeur de NBPR) Mditez...Existe-il une liaison entre ces trois variables ?

54 Le curseur de la souris se transforme en loupe. Grosse loupe : en cliquant vous aggrandissez, Petite loupe : en cliquant, vous rtrcissez.

3.

Rgression (Fit XY)


Cette commande permet de faire des rgressions linaires de tous ordres55, des ajustement polynomiaux, exponentiels... Nous allons tudier la liaison entre deux variables quantitatives : la taille et le poids des Stid193. Allez dans Analyse/Fit XY et compltez la bote comme suit :

Vous obtenez les rsultats suivants :

55

Nuage de points avec la droite des moindres carrs de Y en X.

Vous pouvez vous amuser dplacer le curseur ci-dessus vers la droite pour augmenter le degr du polynme ajustant Y en X.56 Tout est recalcul automatiquement, y compris le nuage des rsidus.

Coefficients de corrlations Il vous est possible de calculer directement le coefficient de corrlation entre les variables quantitatives en allant dans Analyse/Multivariate.

56 Si vous passez au degr 2, vous aurez une parabole au lieu dune droite dajustement etc.

4.

Reprsentation 3D interactive
Ce que nous allons voir ici est plus spectaculaire quutile... Nous allons reprsenter graphiquement les donnes du fichier ACP (tempratures moyennes annuelles de 15 villes de France). Chargez le fichier ACP. Allez dans Analyse/Rotating Plot ZXY. Choisissez les pour axes : JAN, FEV et JUI qui sont les variables Janvier, Fvrier et Juillet. Reproduisez le graphique suivant en donnant la signification des options du menu contextuel : Rays, Depth...

Faites tourner le graphique en positionnant le curseur de la souris lgrement en dehors du graphique, il se transforme alors en main. Laissez alors le bouton gauche enfonc et dplacez la souris.... Gnial non ? Quelle est la particularit gomtrique du nuage de points prcdent ? Est-il vraiment tri - dimensionn ?

5.

Lancement dINSIGHT avec le langage SAS


Il est possible de lancer SAS INSIGHT directement partir du langage SAS avec la procdure PROC INSIGHT. proc insight data=moi.stid193; rotate notemat*notehis*notefr_; run; Vous permet de faire un graphique 3D des notes

Exercice 1 Chargez le fichier STID198 Reprsentez le nuage Taille Poids (Scatter Plot) et faites un dgrad proportionnel la pointure (Edit/Window/Tools). Existe-il une liaison entre ces 3 variables. Nous allons essayer de prdire la Pointure en fonction de la taille et du poids. Nous allons ajuster un modle linaire. Dans le menu FIT XY Mettez Pointure comme variable expliquer (Y) et TAILLE et POIDS comme predicteurs (X) Que reprsente le graphique avec une grille ? Vous pourrez le faire tourner pour mieux vous rendre compte de la nature de la surface.

Exercice 2 Chargez le fichier ECHXYZ1. Reprsentez le nuage 2D XY et le nuage 3D XYZ. Identifiez ensuite visuellement sur les deux graphiques les individus dont le Z est suprieur 0.9.(windows tool) Quelle est la nature des lignes de niveau ? La liaison entre Z et X,Y est elle linaire ?

V.

Quelques procdures statistiques


Nous avons vu dans les pages prcdentes quelques lments du langage SAS pour grer les fichiers de donnes. Un fichier de donnes existe souvent dans le but dtre trait, analys. Cest lobjet des procdures SAS. Les procdures SAS sont trs nombreuses , trs puissantes et couvre un trs large champ dapplications. Cf. fin de ce document. Lappel dune procdure SAS se fait en gnral par les instructions suivantes : PROC nom de la procdure DATA=nom du fichier concern par le traitement options ; instructions lies la procdure (modle pour une rgression etc...) ; RUN ; Exemple :
Procdure invoque Dbut des options lies au fichier de donnes

PROC MEANS DATA=MOI.STID193 VAR NOTEFR_ NOTEHIS; RUN;

(KEEP=SEXE NOTEFR_ NOTEHIS NOTEMAT WHERE=(SEXE=2 AND NOTEMAT>10));


Fin des options.

Variables concernes par la procdure

Dans cet exemple, nous utilisons la procdure MEANS pour calculer quelques statistiques simples sur une partie du fichier MOI.STID193. On ne conserve que les variables sexe, NOTEFR_, NOTEHIS et NOTEMAT et les individus de sexe fminin (2) dont la note de maths est strictement suprieure 10. Nous calculons, pour ces individus, les moyennes, mini, maxi, cart types des notes de franais et dhistoire-go.

A.

SORT (Trier des fichiers)


Elle permet de trier les observations d'un fichier dans l'ordre croissant (par dfaut) selon un ou plusieurs critres. Elle est indispensable pour utiliser l'option BY57 dans les certaines procdures comme PRINT, UNIVARIATE.

Syntaxe:
Pour trier dans l'ordre croissant PROC SORT (options); BY variables; RUN; Pour trier dans l'ordre dcroissant PROC SORT(options); BY DESCENDING variables; RUN; Les options principales tant: DATA=nom du fichier (si ce n'est pas le fichier en cours); OUT=nom du fichier o sera mis le rsultat (si ce n'est pas le mme)

Exemple: PROC SORT DATA=MONLIB.STID193 OUT=WORK.STIDTRI; BY SEXE TAILLE; RUN; PROC PRINT DATA=WORK.STIDTRI; RUN; Ce programme va trier et afficher le fichier tri selon les critres Sexe et Taille. Exercice: Ecrivez un programme triant STID193 par le BAC et le nombre de frres et soeurs, puis par le nombre de frres et soeurs et le bac. (Vous mettrez le rsultat de ce tri dans un fichier temporaire STIDTRI). Visualisez le fichier obtenu dans le deux cas. Y a-t-il une diffrence ?

57 Cette option permet de rpter des calculs dans diffrentes sous populations. Par exemple PROC MEANS ; VAR MATH ; BY SEXE ; RUN ; effectuera des statistiques lmentaires sur les notes de maths en distinguant homme et femme. Nous aurons donc deux tableaux de sortie.

B.

PRINT (Afficher un fichier dans lOUTPUT)

Proc PRINT permet d'diter tout ou partie de votre fichier partir de certaines variables. Syntaxe: PROC PRINT (options) VAR variables; (Les variables qui seront affiches) BY variables; (Permet de distinguer selon les sous-populations, le tableau devra
avoir t tri avec SORT pralablement)

PAGEBY variables; SUM variables;

(Provoquera un changement de page chaque nouvelle modalit de la variable considre. Cette variable doit aussi figurer dans BY) (Variables dont on veut effectuer la sommation (salaires, dpenses...))

Les options tant: DATA= nom du fichier diter (sinon c'est le fichier courant) N=texte afficher nombre d'observations la fin de l'dition ou de chaque "BY" prcde par le texte afficher. OBS=nom de la colonne change lentte de la colonne OBS selon le nom spcifi. ROUND arrondit les valeurs LABEL variable='intitul' permet d'diter des intituls de variables SPLIT=sert dfinir un caractre de saut la ligne pour Label (cf exemple3) NOOBS pas d'dition du numro d'identification de chaque individu. Exemples:
ex1: PROC PRINT DATA=PUB.STID193; VAR GROUPE SEXE TAILLE POIDS; RUN;

Ajoutons quelques options :


PROC PRINT DATA=MOI.STID193 N='Nombre d individus:' OBS='Numro ' ; VAR GROUPE SEXE TAILLE POIDS; RUN;

Va donner : (extrait de la sortie)


SDIOP 05 75 84 35 85 06 ELLIAT 861 271 761 061 561 061 EXES 2 1 2 2 2 2 601:sudividni d erbmoN EPUORG D D D D D D ormuN 601 501 401 301 201 101

ex2:(Remarquez la prsence de PROC SORT... cause de l'utilisation de BY dans PRINT)

PROC SORT DATA=MOI.STID193 OUT=WORK.STIDTRI; BY GROUPE; RUN; PROC PRINT DATA=WORK.STIDTRI obs='Numro' N='Nombre d''individus dans ce groupe'; VAR SEXE TAILLE POIDS ; BY GROUPE; SUM POIDS ; RUN;

Que fait le programme prcdent ?


ex3: PROC SORT DATA=PUB.STID193 OUT=WORK.STIDTRI; BY BAC SEXE; RUN; PROC PRINT DATA=WORK.STIDTRI NOOBS; VAR TAILLE POIDS; BY BAC SEXE; LABEL TAILLE='Taille en cm' POIDS='Poids en kg'; RUN;

Exercices rcapitulatifs : I) Les fichiers NOTE1T, 2T et 3T contiennent les notes de deux groupes de STID en maths au premier,deuxime et troisime trimestres. Il y a des notes manquantes, cest pour cela que les fichiers nont pas le mme nombre dindividus. Chaque individu est identifi par son groupe et son ordre dans le groupe. (GROUPE et ORDRE). Fusionnez ces trois fichiers dans un seul nomm ENSEMBLE. Calculez les moyennes, mini, maxi de chaque individu. Sortez des statistiques lmentaires sur la promo (moyenne, mediane, quantile au premier, deuxieme et troisieme trimestre puis sur la moyenne annuelle).

II) Crez un fichier de donnes SAS ne contenant que les individus de STID193 qui fteront leur anniversaire dici 30 jours ( compter daujourdhui).. Vous ne conserverez que les variables Groupe, Sexe, Ordre (dans le groupe). Vous ordonnerez les individus par rapport la date danniversaire (du plus proche au plus loign).

Indications pour le II) : Vous pouvez crer, partir de la date de naissance (DATE) et de la date daujourdhui (TODAY()), la date de lanniversaire de chaque personne. (Voir en annexe les fonctions de date et heure : MDY, YEAR, DAY, MONTH entre autres...) Pour le reste, SAS peut calculer la diffrence entre deux dates. Vous pourrez jouer sur cette diffrence pour rcuprer les individus concerns.

C.

TABULATE
Elle permet deffectuer des statistiques lmentaires et de les afficher en tableaux. Nous pouvons obtenir des tri-croiss trs sophistiqus ! ! !58 Il est possible deffectuer des statistiques lmentaires et de les afficher sous forme tabule..

Syntaxe simplifie Proc TABULATE <options> ; Class variables ; variables de classe qui seront utilises dans Table (qualitatives ou quant.
Discrtes)

Var variables ; variables analyser (quantitatives) Ne rien mettre pour un tri crois banal Table description de la table effectuer ; By variables ; Format var1 format1 var2 format 2... ; cf. format (annexe) Label var1=tiquette1 etc. ; Weight variable ; variable de poids affecter chaque individu. Run ; Les principales options tant : Data=nom du fichier de donnes SAS Depth=niveau maxi de profondeur de la table ; Format=format de chaque cellule du tableau Missing Les manquants constituent modalit part entire. Si cette option nest pas utilise Noseps Order= Data
les manquants ne sont pas inclus dans les modalits des variables de classement. limine les sparateurs horizontaux

Freq Internal
(alphanumrique)

Les modalits des variables de classement sont classes par ordre dapparition dans le fichier original Les modalits sont classes par ordre dcroissant deffectifs (cest loption par dfaut)Les modalits sont classes par ordre croissant

VARDEF=

Vous indiquez ici le diviseur utilis pour le calcul de la variance:

DF N WDF WEIGHT

(n-1) (Choisi par dfaut) (n) (somme des poids moins 1) (somme des poids)

Vous allez comprendre la syntaxe de commande table laide des exemples ci-dessous.

58 La syntaxe nest pas toujours simple ! Loutil Enterprise Guide peut alors se rvler utile si lon est compltement rfractaire au langage SAS

Exemples de tri croiss simples : Le programme suivant permet de dresser un tri crois Sexe*Groupe. proc tabulate data=sasuser.stid193; class groupe sexe; car nous allons effectuer un tri crois avec les variables groupe
et sexe

table groupe, sexe; run;


-------------------------------------------| | SEXE | | |-------------------------| | | 1 | 2 | | |------------+------------| | | N | N | |----------------+------------+------------| |GROUPE | | | |----------------| | | |A | 10.00| 14.00| |----------------+------------+------------| |B | 13.00| 15.00| |----------------+------------+------------| |C | 12.00| 15.00| |----------------+------------+------------| |D | 11.00| 16.00| --------------------------------------------

Le N laffichage indique que SAS a calcul, pour chaque cellule, leffectif de non manquants. Comparez avec le programme suivant : proc tabulate data=moi.stid193; class groupe sexe; car nous allons effectuer un tri crois avec les variables groupe
et sexe

table groupe*sexe / condense; run;

le /condense demande SAS de condenser laffichage au maximum pour limiter le nombre de pages afficher.

On a laffichage :
-----------------------------------------------------------------| GROUPE | |----------------------------------------------------------------| | A | B | C | |-------------------------+-------------------------+------------| | SEXE | SEXE | SEXE | |-------------------------+-------------------------+------------| | 1 | 2 | 1 | 2 | 1 | |------------+------------+------------+------------+------------| | N | N | N | N | N | |------------+------------+------------+------------+------------| | 10.00| 14.00| 13.00| 15.00| 12.00| -----------------------------------------------------------------(CONTINUED) ---------------------------------------| GROUPE | |--------------------------------------| | C | D | |------------+-------------------------| | SEXE | SEXE | |------------+-------------------------| | 2 | 1 | 2 | |------------+------------+------------| | N | N | N | |------------+------------+------------| | 15.00| 11.00| 16.00| ----------------------------------------

Le N laffichage indique que SAS a calcul, pour chaque cellule, leffectif de non manquants.

Syntaxe simplifie de la commande table Elle est obligatoire dans la procdure Tabulate. Elle contient des expressions de une trois dimensions (var1*var2*var3) spares par des virgules et ventuellement termine par un / suivi des options. Les variables indiques dans table sont soient dclares dans var soit dans class mais pas dans les deux. Les expressions peuvent tre du type : element*element (crois) element element (concatnation=cellules adjacentes) (element element) (agrgation) Les lments sont des variables statistiques ou des statistiques MEAN, SUM, N, NMISS, VAR etc. (voir plus loin)t Exemple proc tabulate data=sasuser.stid193; class groupe; var mat; table groupe,mean*mat / condense; run; va donner :
------------------------------| | MEAN | | |------------| | | MAT | |----------------+------------| |GROUPE | | |----------------| | |A | 12.96| |----------------+------------| |B | 11.46| |----------------+------------| |C | 12.37| |----------------+------------| |D | 13.37| -------------------------------

Nous avons la moyenne des notes de maths selon les groupes.

Statistiques disponibles
Symbole SAS

signification
effectif la somme des poids (var WEIGHT) la somme. la moyenne la variance la dviation standard erreur standard sur la moyenne Ltendue (max-min) Pourcentage Pourcentage (somme) somme des carrs des xi somme des carrs des carts la moyenne (cf annexe I) coefficient de variation (cf annexe I) statistique de Student pour tester =0 c'est le P correspondant au test prcdent (bilatral)

N: SUMWGT: SUM: MEAN: VAR: STD: STDERR: Range: PCTN PCTSUM USS: CSS: CV: T: PRT:

Exercices Ecrire des programmes SAS donnant les affichages suivants : a)


-------------------------------------------| | MEAN | STD | | |------------+------------| | | MAT | MAT | |----------------+------------+------------| |GROUPE | | | |----------------| | | |A | 12.96| 2.54| |----------------+------------+------------| |B | 11.46| 3.24| |----------------+------------+------------| |C | 12.37| 3.04| |----------------+------------+------------| |D | 13.37| 3.71| --------------------------------------------

b)
---------------------------------------------------------------------| | MAX | MIN | | |-------------------------+-------------------------| | | MAT | FRA | MAT | FRA | |----------------+------------+------------+------------+------------| |GROUPE | | | | | |----------------| | | | | |A | 18.00| 14.00| 9.00| 5.00| |----------------+------------+------------+------------+------------| |B | 17.00| 14.00| 6.00| 4.00| |----------------+------------+------------+------------+------------| |C | 18.00| 14.00| 7.00| 5.00| |----------------+------------+------------+------------+------------| |D | 19.00| 12.00| 5.00| 5.00| ----------------------------------------------------------------------

c)
---------------------------------------------------------------------| | MAX | MIN | | |-------------------------+-------------------------| | | MAT | FRA | MAT | FRA | |----------------+------------+------------+------------+------------| |GROUPE | | | | | |----------------| | | | | |A | 18.00| 14.00| 9.00| 5.00| |----------------+------------+------------+------------+------------| |B | 17.00| 14.00| 6.00| 4.00| |----------------+------------+------------+------------+------------| |C | 18.00| 14.00| 7.00| 5.00| |----------------+------------+------------+------------+------------| |D | 19.00| 12.00| 5.00| 5.00| |----------------+------------+------------+------------+------------| |SEXE | | | | | |----------------| | | | | |1 | 18.00| 14.00| 6.00| 5.00| |----------------+------------+------------+------------+------------| |2 | 19.00| 14.00| 5.00| 4.00| ----------------------------------------------------------------------

d)
-------------------------------------------| | MEAN | | |-------------------------| | | MAT | FRA | |----------------+------------+------------| |GROUPE |SEXE | | | |-------+--------| | | |A |1 | 13.28| 9.89| | |--------+------------+------------| | |2 | 12.75| 8.29| |-------+--------+------------+------------| |B |1 | 11.62| 8.85| | |--------+------------+------------| | |2 | 11.33| 9.27| |-------+--------+------------+------------| |C |1 | 12.25| 9.67| | |--------+------------+------------| | |2 | 12.46| 8.20| |-------+--------+------------+------------| |D |1 | 14.09| 8.73| | |--------+------------+------------| | |2 | 12.88| 8.31| --------------------------------------------

Complment : 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 dfaut SAS naffiche pas les cellules vides, loption en question permet de les afficher quand mme.

D.

RANK (Calculs de rangs)


Comme son nom lindique, elle permet de calculer les rangs de variables quantitative.

Elle peut aussi dcouper en classes de mmes effectifs une srie de donnes. Syntaxe: PROC RANK (options); VAR variables; (Les variables dont nous voulons le calcul des rangs. (sinon toutes !) RANKS nouvelle liste de variables (variables ou seront stocks les rangs) BY variables; (Permet la cration de sous-groupes... le fichier devra avoir t tri avant) RUN ; Les options principales tant: DATA= OUT= DESCENDING GROUPS = n FRACTION
Nom du fichier de donnes (si ce n'est pas le fichier courant) Fichier de donnes contenant les rangs. Pour calculer les rangs dans lordre dcroissant (croissant par dfaut) Permet dobtenir un dcoupage en n classes de mme effectif autant que faire se peut. Pour n=4 on obtient les quartiles, n=100 les centiles etc. Les rangs sont diviss par leffectif. On obtient donc la fonction de rpartition des donnes en question. Pour spcifier la procdure suivre en cas dex aequo. MEAN (par dfaut sauf si FRACTION est utilis, cest alors HIGH) attribue la moyenne des rangs, HIGH le plus grand et LOW le plus petit.

TIES=MEAN/HIGH/LOW

NORMAL=BLOM

Pour btenir les scores normaux qui sont une fonction linaire des valeurs initiales si la distribution initiale est normale. Ce sont les valeurs que lon calcule construire une de Henry. On les obtient en calculant

ri 3 / 8 y i = 1 o n est leffectif, ri le rang et la n +1/ 4

fonction de rpartition dune N(0,1).

Exemple:
DATA COPY; KEEP GROUPE SEXE TAILLE; SET PUB.STID193; RUN; PROC RANK DATA=COPY; VAR TAILLE; RANKS RANGTAIL; RUN; PROC PRINT; RUN;
Nous faisons une copie du fichier original...

Nous calculons les rangs de la variable taille en stockant le rsultat dans rangtail.

ce qui donne :
OBS 1 2 3 4 GROUPE A A A A SEXE 1 1 1 1 TAILLE 180.00 168.00 178.00 186.00 RANGTAIL 90.5 43.5 85.0 104.0

E.

UNIVARIATE (Analyse univarie)


Pour l'tude (univarie) de variables quantitatives. Elle est beaucoup plus complte que la procdure MEANS cite prcdemment.59

1.

Syntaxe:
PROC UNIVARIATE (options); VAR variables; (Les variables dont nous voulons l'tude) BY variables; (Permet la cration de sous-groupes... le fichier devra avoir t tri avant) WEIGHT variable;(variable contenant les "poids" de chaque individu. Il vaut 1 par dfaut) OUTPUT OUT=FICH.SAS (fichier contenant autant d'individus que de modalits de BY et
comme variables, les statistiques donnes par UNIVARIATE) cf. ex

RUN; Les options principales tant: DATA= NOPRINT NORMAL ROUND= FREQ PLOT VARDEF=
Nom du fichier de donnes (si ce n'est pas le fichier courant) Effectue un test de normalit (Shapiro-Wilk si n<2000, Kolmogorov si n>2000) Spcifie la faon d'arrondir les variables. (Edition d'une table avec les valeurs des variables, les %, les % cumuls...) Produit des "graphiques" (Box plot, Stem and leaf...) Vous indiquez ici le diviseur utilis pour le calcul de la variance:

DF N WDF WEIGHT Exemple:

(n-1) (Choisi par dfaut) (n) (somme des poids moins 1) (somme des poids)

PROC UNIVARIATE DATA=MONLIB.STID193 NORMAL FREQ; VAR TAILLE; BY BAC; OUTPUT OUT=WORK.SORTIE MEAN=MOY ; RUN;
Ce programme va sortir des statistiques (incluant la normalit et un tableau de frquence) sur la variable taille en distinguant selon le bac. Un fichier SAS (WORK.SORTIE) sera constitu, il contiendra la variable bac et les moyennes des tailles dans les diffrents bacs. Il suppose le fichier tri compte tenu de la remarque suivante:

59 Pour des analyses simples de dbrousaillage des donnes, le module SAS/INSIGHT peut tre trs intressant utiliser. Cf. paragraphe SAS/INSIGHT.

Application: Tapez le programme SAS suivant. PROC UNIVARIATE DATA=MONLIB.STID193 NORMAL PLOT FREQ; VAR TAILLE; RUN; Examinez tout l'output et comprenez sa signification en vous aidant du tableau suivant: SORTIE SAS
(exemple) Symbole SAS utilis dans l'output

signification

N Sum Wgts Sum Mean Variance Std Dev Skewness Kurtosis USS CSS CV Std Mean T:Mean=0 Pr>|T| Num ^= 0 Num > 0 M(Sign) Pr>=|M| Sgn Rank Pr>=|S| W:Normal Pr<W

106 106 18094 170.6981 61.45085 7.839059 0.480848 -0.05708 3095064 6452.34 4.592353 0.761397 224.1908 0.0001 106 106 53 0.0001 2835.5 0.0001 0.967964 0.0865

N: effectif SUMWGT: la somme des poids (var WEIGHT) SUM: la somme. MEAN: la moyenne VAR: la variance STD: la dviation standard (en 1/n-1) Skewness:coefficient mesurant l'asymtrie (cf annexe) Kurtosis:coefficient mesurant laplatissement (cf annexe) USS: somme des carrs des xi CSS: somme des carrs des carts la moyenne (cf annexe I) CV: coefficient de variation (cf annexe I) STDMEAN: erreur standard sur la moyenne T: statistique de Student pour tester =0 PROBT: c'est le P correspondant au test prcdent (bilatral)
Nombre d'observations non nulles Nombre d'observations strictement positives MSIGN: Statistique. utilise pour tester la nullit de la mdiane 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. utilise pour tester la normalit (cf ci dessous) PROBN: et le P correspondant

2.
a)

Dtails
Test de Normalit NORMAL : statistique testant la normalit de la distribution. Nous voulons vrifier, partir des donnes de lchantillon, si la distribution observe est compatible avec lhypothse dune distribution Gaussienne (H0). La statistique employe est celle de Shapiro-Wilk si n<2000 et celle de Kolmogorov-Smirnov pour les valeurs de n suprieures. Vous avez galement le P correspondant (PROBN). Ici P>0.05, nous acceptons l'hypothse de normalit.

b)

Test de comparaison dune moyenne une valeur fixe (0) T: C'est la statistique du test de Student H0 : = 0 contre H 1: 0 (bilatral) avec pour SAS ici 0 = 0 (1 Sample t de Minitab) H0:moyenne=0 contre H1: moyenne 0. Elle suppose la population normale et l'chantillon alatoire.
Mthode de calcul: Pour le test, SAS calcule la statistiqueT=

x 0 s/ n

avec

s=

1 ( xi x ) 2 et 0 = 0 la valeur P correspondante. (Si P>0.05, on ne peut rejeter n 1 i

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 loption H0. Voir page 152 c) Test de Wilcoxon (comparaison dune mdiane une valeur fixe) SIGNRANK (Sign rank test, Wilcoxon) c'est la statistique de test calcule par ri + n( n + 1) / 4 o ri + est le rang de xi obtenu aprs avoir enlev les xi=0. Il permet de tester la nullit de la mdiane ou de la moyenne (H0: mediane=0) Nous avons le P correspondant (PROBS).(Ici, nous rejetons H0 car p<0.05). Ce test suppose la distribution symtrique. Si tel n'est pas le cas, il faut utiliser le test suivant: MSIGN (sign-test) c'est la statistique de test calcule 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 utilise pour tester la nullit de la mdiane (H0: mediane=0). Nous avons le P correspondant (PROBM). Dans le cas prsent P<0.05, nous rejetons l'hypothse nulle.

3.

Exercices
Testez la normalit des tailles des STID193 (pour l'ensemble puis en distinguant selon les sexes, il sera ncessaire d'utiliser BY et donc de trier le fichier avant !). Editez un Stem and Leaf des poids pour les femmes(option Plot). En supposant l'chantillon des Stid grenoblois comme un chantillon alatoire (extrait de la population des Stid de France). Testez l'hypothse H0: Moyenne taille femme Stid france=165 contre H1 (diffrent)(Il sera ncessaire de crer une
variable Taille - 165 via les instructions DATA et SET pour utiliser UNIVARIATE)

Comment trouver la P value du test unilatral obtenu avec H1 :Moy>165 ? Que fait le programme suivant ? PROC SORT DATA=MONLIB.STID193 OUT=WORK.TATES; BY BAC SEXE; RUN; PROC UNIVARIATE NORMAL FREQ DATA=WORK.TATES; VAR TAILLE; OUTPUT OUT=WORK.ESSAI N=EFF MEAN=MOY NORMAL=TESNORM PROBN=PNORM; BY BAC SEXE; RUN; PROC PRINT DATA=WORK.ESSAI NOOBS; SUM EFF; RUN;

F.

TTEST (Tests de Student un ou deux chantillons, apparis ou non)


Cette procdure effectue des tests de Student de comparaison dune moyenne une valeur fixe ou comparaison de deux moyennes - dans le cas appari ou non ainsi . Dans le cas de comparaison de deux moyennes, SAS effectue aussi un test de Fisherd'galit de variances. Les deux chantillons figurent dans une colonne (variable) et se distingue par une autre variable spcifie dans CLASS. 60

1.

Syntaxe simplifie
PROC TTEST (options); CLASS variable; (C'est la variable qui permet de distinguer les deux chantillons pour un TTEST deux chantillons) PAIRED variable1*variable2 (pour identifier les variables apparies Var1-Var2 va tre calcul) VAR variable(s); (variable tester, il peut y en avoir plusieurs) BY variable(s); (donne des tests spars selon les populations dfinies par ces variables) RUN; (options) DATA= nom du fichier de donnes SAS H0= nombre cest la valeur de la moyenne tester.

Exemples Comparaison dune moyenne une valeur fixe PROC TTEST DATA=MOI.STID193 H0=170 ; VAR TAILLE ; RUN ; Compare la moyenne de la taille des STID 170. Comparaison de deux moyennes (chantillons apparis) PROC TTEST DATA=MOI.CHOLES; PAIRED AVANT APRES; RUN; Compare les moyennes de AVANT et de APRES en testant la nullit de leur diffrence. Comparaison de deux moyennes (chantillons indpendants) PROC TTEST DATA=MONLIB.STID193; CLASS SEXE; VAR TAILLE; RUN;

60 (Si vos deux chantillons figurent dans deux colonnes distinctes, il faut vous dbrouiller pour les mettre dans une seule et crer une variable qui les distinguera)

(Effectue un test de comparaisons des moyennes des tailles des hommes et des femmes).

2.
a)

Rappels thoriques
Test de comparaison dune moyenne une valeur fixe (0) T: C'est la statistique du test de Student H0 : = 0 contre H 1: 0 (bilatral) (1 Sample t de Minitab) H0:moyenne=0 contre H1: moyenne 0. Elle suppose la population normale et l'chantillon alatoire.
Mthode de calcul: Pour le test, SAS calcule la statistiqueT=

x 0 s/ n

avec

s=

1 ( xi x ) 2 et 0 = 0 la valeur P correspondante. (Si P>0.05, on ne peut rejeter n 1 i

H0 au niveau de signification de 5%, on rejette sinon...)

b)

Test de comparaison de deux moyennes (chantillons apparis) On se ramene au cas prcdent en calculant la diffrence entre les deux variables et en testant la nullit de cette diffrence.

c)

Test de comparaison de deux moyennes (chantillons indpendants) Hypothses: Les populations sont supposes normales et les chantillons qui en sont issus sont supposs alatoires et indpendants. De plus, il faut s'assurer de l'galit ou de l'ingalit des variances pour bien interprter ce test. 2 s12 s2 Pour des variances ingales, l'cart type de x1 x2 est estim par s = + n1 n2 x x Le test est bas sur la statistique T = 1 2 avec un nombre de degrs de liberts s 2 (V 1 + V 2 ) donn par (arrondi l'entier le plus proche) avec 2 (V 1 / ( n1 1)) + (V 2 2 / ( n2 1)) s2 s2 V 1 = 1 et V 2 = 2 . n1 n2

Pour des variances gales, la variance commune est estime par 2 ( n 1) s12 + ( n2 1) s2 1 1 et l'cart type de x1 x2 est estim par s + Le s2 = 1 n1 n2 n1 + n2 2 x x test est bas sur la statistique T = 1 2 avec n1 + n2 2 degrs de liberts. s

Test de Fisher F': SAS effectue un test d'galit de variances pour vous aider ne 2 pas vous tromper dans l'interprtation du test de Student. H0: 1 = 2 contre 2 2 H1: 1 2 . Parmi les deux rapports de variances possibles, on calcule celui qui 2 est suprieur l'unit. Par exemple si Stdev 12 > Stdev 2 2 on calcule Stdev 12 Fobs = et on rejette l'hypothse nulle lorsque Fobs > F1 / 2 o F1 / 2 est de Stdev 2 2 fractile d'ordre 1-/2 d'une loi de Fischer k1 et k2 d.d.l. o k1 est le nombre de degrs de liberts associs au numrateur et k2 le nombre de ddl associs au dnominateur. SAS indique le P correspondant.

3.
a)

Exercices:
TTEST un chantillon Le fichier COLA (rpertoire Public) contient les rponses un sondage effectu sur 40 personnes prises au hasard la sortie d'un grand magasin de la banlieue parisienne. 4 questions furent poses: Q1 Marque prfre de Cola ? 0: Coca 1: Pepsi (dans Colonne n1) Q2 Avez-vous dj achet Coca-cola ? 0: Non 1: Oui (dans Colonne n2) Q3 Aimez-vous les boissons sucres ? 1: Oui 2: Indiffrent 3: Non (dans Colonne n3) Q4 Combien de litres de boissons au Cola votre famille a-t-elle consomms le mois dernier ? (dans la colonne n4) Les rsultats de cette enqute sont-ils compatibles avec une hypothse de consommation moyenne de 5 litres par mois au niveau de la population tudie (on pensera d'abord vrifier la normalit de la VA en question)

b)

Deux Echantillons indpendants Voici un relev de la teneur en K2O sur 20 chantillons de type 1 et 10 chantillons de type 2 . Peut-on dire (au seuil de 5%) que la moyenne des chantillons de type 1 est gale celle des chantillons de type 2 ? On dtaillera le raisonnement ainsi que les valeurs donnes par SAS.
Echantillons de type 1 1.28 1.40 1.48 1.48 1.48 (20 valeurs) 1.52 1.56 1.88 1.92 2.20 Echantillons 0.96 1.00 1.04 1.04 1.08 de type 2 (10 val) 1.08 1.08 1.16 1.20 1.28

0.80 0.84 0.88 0.88 0.92

0.92 1.00 1.04 1.20 1.24

c)

Cas dchantillons apparis

Dans une fort on choisit 12 arbres au hasard que l'on mesure debout. Ensuite, on les abats, puis on les mesure nouveau. Chaque arbre a donc t mesur 2 fois. On veut tester l'galit des moyennes de ces deux sries pour comparer les deux mthodes de mesure. Y a-t-il une diffrence significative au seuil de 5% ?
debout abattus 20.4 21.7 25.4 26.3 25.6 26.8 25.6 28.1 26.6 26.2 28.6 27.3 28.7 29.5 29 32 29.8 30.9 30.5 32.3 30.9 32.3 31.1 31.7

G.

FREQ (tris plat, tris croiss, test dindpendance du chi2)


Elle produit des tableaux croiss une ou plusieurs dimensions. Pour les tableaux deux dimensions, PROC FREQ calcule des coefficients de liaison et effectue des Tests (du Chi 2 entre autres). Nous n'allons tudier ici qu'une syntaxe simplifie. Pour plus de dtails, reportez vous au SAS Procdures Guide (Bibliographie)

1.

Syntaxe simplifie
PROC FREQ (data=...); TABLES 'voir syntaxe plus bas' / option (2); BY variables; (pour distinguer selon les sous-populations...) WEIGHT variable; (pour ajouter un poids chaque individu, =1 par dfaut) RUN;

2.

Exemples
PROC FREQ DATA=MONLIB.STID193; TABLES NBFS SEXE*GROUPE ; RUN; Cette commande effectue un tri plat de nbfs et un tri crois des variables sexe et groupe : On obtient la sortie suivante:
Variable Effectifs % Effectifs et pourcentages cumuls.

Cum Cum NBFS Frequency Percent Frequency Percent -------------------------------------------------0 11 10.4 11 10.4 1 35 33.0 46 43.4 2 36 34.0 82 77.4 3 13 12.3 95 89.6 4 6 5.7 101 95.3 5 2 1.9 103 97.2 6 2 1.9 105 99.1 7 1 0.9 106 100.0

Ainsi 36 tudiants ont deux frres et soeurs (34% de la population) . Et 82 tudiants ont au plus deux frres et soeurs (77.4% de la population).

TABLE OF SEXE BY GROUPE SEXE


Lgende des cellules du tableau.

GROUPE

Frequency| Percent | Row Pct | Col Pct |A |B |C |D | Total ---------+--------+--------+--------+--------+ 1 | 10 | 13 | 12 | 11 | 46 | 9.43 | 12.26 | 11.32 | 10.38 | 43.40 | 21.74 | 28.26 | 26.09 | 23.91 | | 41.67 | 46.43 | 44.44 | 40.74 | ---------+--------+--------+--------+--------+ Total 24 28 27 27 106 22.64 26.42 25.47 25.47 100.00 Frequency| Percent | Row Pct | Col Pct |A |B |C |D | Total ---------+--------+--------+--------+--------+ 2 | 14 | 15 | 15 | 16 | 60 | 13.21 | 14.15 | 14.15 | 15.09 | 56.60 | 23.33 | 25.00 | 25.00 | 26.67 | | 58.33 | 53.57 | 55.56 | 59.26 | ---------+--------+--------+--------+--------+ Total 24 28 27 27 106 22.64 26.42 25.47 25.47 100.00

Dans chaque cellule figure l'effectif, le pourcentage et les frquences conditionnelles (23.33% des femmes sont dans le groupe A, et 53.57% des lves du groupe B sont des femmes) Autre exemple PROC FREQ; tables sexe*(bac groupe); run; Cette commande effectue deux tri croiss: un sexe*bac et un sexe*groupe, elle est quivalente sexe*bac sexe*groupe.

3.

Quelques options de la commande TABLES

pour enlever certaines informations des cellules de la table: NOCOL: pour enlever l'affichage des % en colonne (Col Percent) des cellules NOROW: idem avec les lignes NOPERCENT: pour enlever le pourcentage (percent) de chaque cellule. NOFREQ: idem avec les effectifs. NOPRINT: n'affiche pas de table du tout (utile si vous n'avez besoin que du Chi2)

pour ajouter des informations dans les cases de la table: CUMCOL: affiche les % cumuls en colonne. EXPECTED: affiche la valeur espre de la cellule dans le cas d'indpendance entre les variables lignes et colonne.(cf. calcul du chi2). DEVIATION: affiche l'cart entre EXPECTED et l'effectif observ. CELLCHI2: affiche la contribution au chi2 de la cellule. pour effectuer des analyses statistiques CHISQ: effectue divers tests du chi2 dont celui de Pearson (celui que vous connaissez). l'hypothse H0 tant l'indpendance des deux critres de classification. Le chi2 (de Pearson) est celui qui affich en premier. Pour sauvegarder les rsultats dans un fichier OUT=nom de fichier SAS ; SAS va alors crer un fichier de donnes contenant les variables de la dernire instruction de TABLE ainsi que les variables COUNT et PERCENT. Exemple 1
PROC FREQ DATA=MONLIB.STID193; TABLES SEXE*GROUPE / NOROW NOCOL OUT=SORTIE; RUN;

Ce programme effectue un tri crois sexe groupe. Chaque cellule ne contient que l'effectif et le pourcentage des modalits associes. Les rsultats sont stocks dans le fichier WORK.SORTIE. 61 Il est ensuite possible dexporter ce fichier sous Excel pour effectuer des graphiques illustrant le tableau crois.62 Exemple 2
PROC FREQ DATA=MONLIB.DONNEE; TABLES MARPREF*AIMCOLA /EXPECTED DEVIATION CHISQ NOROW NOCOL NOPERCENT; RUN;

Ce programme effectue un tri crois entre marpref et aimcola avec dans chaque cellule leffectif observ, leffectif attendu (expected), lcart entre les deux
61 Quel que soit le contenu des cellules, ce fichier ne contiendra que leffectif et la frequence pour tous les couples de modalits considres. 62 Il faut alors lancer la commande tableau crois dynamique dExcel pour retrouver un tri crois partir du fichier export.

(deviation). Un test du chi2 est effectu (chisq) comme le montre lextrait de la sortie ci-dessous. Notons que le chi2 vaut 0.714. La signification P du test vaut 0.700>0.05, on accepte H0: indpendance entre les deux critres.
Statistic DF Value Prob -----------------------------------------------------Chi-Square 2 0.714 0.700 Likelihood Ratio Chi-Square 2 0.726 0.695 Mantel-Haenszel Chi-Square 1 0.024 0.877

Remarque : Si les effectifs thoriques sont insuffisants pour le test du chi deux, on procde souvent des regroupements. Il suffit, pour SAS, de changer le format daffichage des variables pour effectuer ces regroupements. Ceci vite de modifier les donnes originales.

4.

Exercice
Chargez le fichier cola (rpertoire Public) qui contient les rponses un sondage effectu sur 40 personnes prises au hasard la sortie d'un grand magasin de la banlieue parisienne. 4 questions furent poses: Q1 Marque prfre de Cola ? 0: Coca 1: Pepsi (dans C1) Q2 Avez-vous dj achet Coca-cola ? 0: Non 1: Oui (dans C2) Q3 Aimez-vous les boissons sucres ? 1: Oui 2: Indiffrent 3: Non (dans C3) Q4 Combien de litres de boissons au Cola votre famille a-t-elle consomms le mois dernier ? (dans C4) Existe-t-il une liaison entre Q1 et Q3 ? (Vous donnerez un tableau crois avec un contenu de cellule appropri et la valeur du chi 2) Idem entre Q1 et Q2 ? Acheter Coca est-ce l'adopter ?

5.

Cas Particulier important, TEST du chi2 sur un tri crois existant


Ceci est trs intressant lorsque vous n'avez pas les donnes brutes mais seulement un tri crois se rapportant ces donnes: Des bouquets floraux de Golden Delicious ont t soumis en nombre sensiblement gaux quatre traitements donns, et on a compt le nombre de fruits produits dans chaque cas afin de vrifier s'il existe ou non une relation entre les diffrents traitements et le nombre de fruits produits (la fructification).
Nombre de fruits produits Traitements 0 1 plus 203 150 6 A 266 112 1 B 258 126 2 C 196 168 17 D (exemple de lecture: 203 bouquets ayant subi le trait. A n'ont produit aucun fruit)

En utilisant un test du d'indpendance, nous voulons vrifier si une relation existe entre les deux critres de classification. Nous n'avons pas le fichier des donnes originales ici. Nous allons en construire 1 dont le tableau ci dessus serait le tri-crois associ. L'ide est simple, nous mettons un individu dans chaque couple possible de modalit et nous affectons comme poids (Weight) chacun de ces individus l'effectif correspondant. Ainsi, nous mettons un individu ayant subi le traitement A et ayant port 0 fruit et nous lui donnons un poids de 203 (il sera compt 203 fois !)
data golden; do trait=1 to 4; do nbfruit=0 to 2; input wt @@;
C'est le nom du fichier Nous notons les traitements 1 2 3 et 4. (au lieu de A,B,C et D) La double @ (ALTGR 0) permet de mettre chaque valeur dans le fichier avant de continuer la boucle Idem

output; end; end; cards; 203 150 6 266 112 1 (Vous crivez votre tableau ligne par ligne) 258 126 2 196 168 17 ; run; proc freq; weight wt; (Etape importante, nous disons SAS que chaque individu compte wt fois) tables trait*nbfruit /chisq noprint;(Nous ne voulons pas l'affichage de la table) run;

Ce programme vous permet d'obtenir un chi2 de 53.72. Tapez ce programme pour vrifier et concluez.

6.

Rappels thoriques sur le test d'indpendance du 2


Considrons deux variables qualitatives X et Y prenant respectivement p et q modalits (notes 1,2,3...,p et 1,2,3...,q) et observes sur une mme population. On dit que ces deux variables sont indpendantes en probabilit si: P(X=i et Y=j)=P(X=i)P(X=j) pour tout couple de modalit (i,j). Si l'on note nij le nombre d'individus dont le caractre X vaut i et Y vaut j, ni. le nombre d'individus dont le caractre X vaut i et n.j le nombre d'individu dont le caractre Y vaut j on doit avoir en cas d'indpendance: nij/n=ni./n * n.j/n o encore nij=(ni.*n.j)/n Nous allons tester cette hypothse d'indpendance (H0) entre X et Y partir d'un tableau crois construit sur un chantillon de taille n.

X\Y 1 ... i ... p Total

Tableau des effectifs observs 1 ... j ... q total n11 n1j n1q n1. ... ... nij ... ... npj ... n.j ... ... niq ... ... npq ... n.q

X\Y 1 ... i ... n Total

Tableau des effectifs thoriques (si H0 vraie) 1 ... j ... q total n1. n. j n1. n.q n1. n1. n.1

n
ni1 ni. ... ... ... ... ...

n ni. n. j n
... ... ... ... ...

n
ni.

np1 n.1

np. n

n.1

n.j

n.q

np. n

ni . n. j nij 2 nij n T= = n ni . n. j ni . n. j i, j i, j
2

La statistique utilise mesure "l'cart" entre la distribution observe et la distribution thorique attendue (en cas d'indpendance des deux critres: H0 vraie)

Si les effectifs thoriques de chacune des cases sont suprieurs ou gaux 5 alors T suit approximativement une loi du 2 (p-1)(q-1) degrs de libert. 2 On rejette H0 lorsque la statistique T est trop grande: T> (1 ) ( p 1)( q 1) o

21 ) ( p 1)( q 1) (

est le fractile d'ordre 1- d'une loi du 2 (p-1)(q-1) degrs de libert.

ATTENTION: Les effectifs thoriques des cases doivent tre 5 pour appliquer cette mthode. (Dans le cas contraire, il faut oprer des regroupements)

H.
1.

ANOVA et GLM, Analyse de la variance


Un exemple
Le fichier ARBRES donne la distribution des hauteurs d'arbres observes pour une mme catgorie d'arbres dans 3 types de forts (nots 1,2 et 3). Nous voulons savoir si la hauteur des arbres dpend du type de fort dans laquelle on les a trouvs. Autrement dit, on veut savoir si la hauteur moyenne dpend du type de fort.63 Lanalyse de la variance un critre est typiquement adapte ce genre de problme.

2.

ANOVA un critre
Elle a pour but de mesurer la liaison entre une variable qualitative (le type darbre) et une variable quantitative (la hauteur). Cela revient comparer les moyennes de k populations qui son supposes normales64 et de mme variance65, partir d'chantillons alatoires et indpendants les uns des autres.

a)

Principe de lANOVA
Soit Y une variable quantitative et une variable qualitative X prenant k modalits (1,2,...k). Nous supposons que Y suit une loi normale N ( i , ) sur chaque sous-population Pi dfinie par X=i. La variance totale se dcompose de la faon suivante:

1 k ni 1 k 1 k ni ( yij y ) = n ni ( yi y ) + n ( yij yi ) n i =1 j =1 i =1 i =1 j =1
Variance totale = Variance inter + Variance intra o ni dsigne le nombre d'individus de la sous population Pi, n le nombre total d'individus, moyenne de y dans Pi et y la moyenne gnrale de Y.

yi la

Plus la liaison entre X et Y est forte, plus la part de la variance inter est importante et plus la variance intra est faible. La variance intra comptabilise la partie de la variation de Y non explique par X. On dfinit le rapport de corrlation R par Variance inter / Variance totale. Ce nombre, compris entre 0 et 1 mesure l'intensit de la liaison entre X et Y. S'il vaut zro il n'y a aucune liaison entre X et Y. Inversement, s'il vaut 1, la liaison est parfaite.
63 On dit alors que la variable hauteur est discriminante par rapport au type darbre. 64 Bien que la normalit des sous-populations fasse partie des hypothses d'application du test prcdent, il faut reconnatre que l'analyse de la variance est peu sensible, dans l'ensemble, la non-normalit des des populations considres. Il suffit en pratique d'viter d'employer l'analyse lorsque les populations-parents sont trs diffrentes des distributions normales, et lorsque ces distributions sont de forme trs diffrentes d'une sous-population une autre (dissymtries de sens opposs par exemple), surtout pour de petits chantillons. (Dagnlie TMS 2) 65 De mme, l'hypothse d'galit des variances est d'importance relativement secondaire lorsque les effectifs des chantillons sont d'effectifs tous gaux (ni=nj) (cf le 2 Sample T TEST) Par contre dans le cas d'chantillons d'effectifs ingaux on doit s'assurer de la validit de cette hypothse (cf T.Test) surtout lorsque les chantillons d'effectifs les plus rduits correspondent aux populations de variance maximum. (Dagnlie TMS 2)

Test d'galit des moyennes H0:

1 = 2 =... = k

contre H1: au moins un

est diffrent des autres.

1 k ni ( yi y ) k 1 i =1 Statistique utilise: F = 1 k ni ( yij yi ) n k i =1 j =1


Lorsque H0 est vraie F suit une loi de Fisher (k-1, n-k) degrs de libert. On rejette H0 lorsque Fobs est suprieur au fractile d'ordre 1- de la loi de Fisher correspondante.

Tableau d'analyse de la variance La plupart des logiciels prsente leurs sorties de la faon suivante:
Source de variation Interclasses Degrs Somme des carrs de libert (sum of squares) (DF) k k-1 Carrs moyens (mean square) F

ni ( yi y )
i =1

1 k ni ( yi y ) k 1 i =1

1 k ni ( yi y ) k 1 i =1 F= 1 k ni ( yij yi ) n k i =1 j =1

Intraclasses Total

n-k

( yij yi )
k ni

n-1

(y
k ni i =1 j =1

i =1 j =1

1 nk

(y
k ni i =1 j =1

ij

yi )

ij

y )

Les logiciels reproduisent la table prcdente et donne galement la p-valeur correspondante.


Rgle de dcision :

Si F est suprieur la valeur critique (ou si p est infrieur la valeur de rfrence (0.05 en gnral)), on rejette H0. Les moyennes entre diffrentes classes sont significativement diffrentes, la variable X a donc une influence sur Y ou encore, le pouvoir discriminant de X est significatif.

b)

Test dgalit de variances (BARTLETT)

Ajoutons que SAS peut effectuer un TEST de comparaison de variances pour sassurer que lANOVA est applicable raisonnablement. Un test propos par SAS est le test de Bartlett.
Comme le F-test, le test de Bartlett est trs sensible la non-normalit des populations parents quels que soient les effectifs des chantillons. De plus il s'agit d'une mthode approximative qui n'est satisfaisante que lorsque les effectifs des p chantillons (alatoires, indpendants) n1,...,np sont suffisamment grands ( ni 4 ) et que p n'est pas trop lev par rapport aux ni. Notations : Nous disposons de p chantillons alatoires, simples et indpendants, d'effectifs n1, n2,... np: x11,x12,...,x1p pour le premier chantillon puis x21,x22,..., x2p pour le deuxime puis... xp1,xp2,...,xpp pour le dernier chantillon.
2 SCE i = xij ni j =1 p 1 ni SCE i SCE $ $ ( xij ) 2 et i2 = ; SCE = SCE i et 2 = (n: ni j =1 ni 1 n p i =1 2 1 = 2 =... = 2 contre H1: une des variances est diffrentes des 2 p 2 $ H 0: 1 = 2 =... = 2 est vraie 2 est une estimation non biaise de la 2 p

effectif total) Nous testons H 0: autres.

Si l'hypothse nulle variance commune.

La statistique de test est:

T=

$ $ (n p) Ln( 2 ) (ni 1) Ln( i2 )


p

1 1 1 1+ 3( p 1) i =1 ni 1 n p
i =1 p

qui suit

approximativement une loi du On rejette H0 lorsque

t obs

2 p-1 degrs de liberts. 2 1 avec p-1 degrs de libert.

3.

Mise en pratique sous SAS


SAS peut effectuer avec une mme procdure une Anova et un test dgalit de variances.66

PROC ANOVA ou PROC GLM ? Les procdures ANOVA et GLM traitent en particulier les analyses de variance un critre. ANOVA suppose que vos donnes sont quilibres, c'est dire que les sous-populations sont de mme effectif (ce qui fait gagner du temps et de la mmoire), GLM s'utilise dans tous les cas mais elle sera beaucoup moins rapide qu' ANOVA dans le cas de donnes quilibres.67

a)

Syntaxe simplifie.

Appelons Y la variable rponse (quantitative) et X la variable qualitative (Facteur) servant dfinir les sous populations.
PROC ANOVA ou GLM; (cela dpend si vos donnes sont quilibres ou non) CLASS X variables (qualitatives en gn.) qui dfinissent vos sous-populations MODEL Y= X ; (modle d'tude) MEANS X / options ;
Pour calculer des moyennes de la variable rponse selon les catgories de la variable qualitative spcifie. Cette dernire doit figurer dans le modle. Means permet galement de faire un test dgalit de variances.68

Options de Means : HOVTEST= BARTLETT ou BF ou LEVENE ou OBRIEN


Pour effectuer un test dgalit de variance de Bartlett ou de Brown-Forsythe (plus puissant) ou Levene ou Obrien (Levene modifi)

RUN; QUIT69;

66 Pour les heureux possesseurs de la V 6.12. Pour les autres, il faut utiliser un programme part pour tester lgalit des variances. A la fin de ce paragraphe, vous trouverez le code du programme effectuant un test de Bartlett. 67 ANOVA fonctionne pour des donnes non quilibres seulement s'il n'y a qu'un facteur (ce qui est le cas ici), mais autant prendre de bonnes habitudes ds maintenant... 68 Nous savons en effet que pour lhypothse dgalit des variances est ncessaire lANOVA. 69 Le Quit est ncessaire car la procdure ANOVA (ou GLM) est intractive. C'est dire que vous pouvez, mme aprs l'excution de l'instruction (RUN compris) ajouter des commandes supplmentaires (tests etc...) Cela l'avantage d'viter de refaire tous les calculs, qui peuvent tre trs long, juste pour une sous-commande que l'on aimerait ajouter.

b)

Pour notre exemple...

Le programme suivant effectue une ANOVA sur le fichier Moi.ARBRES. Nous allons tester lgalit des moyennes des hauteurs (Y=HAUT) en fonction du type de fort (X=TYPE) . Nous effectuerons galement un test de Bartlett dgalit de variances.

Ce qui donne :
erudecorP ecnairaV fo sisylanA

Interprtation Nous retrouvons la table d'analyse de la variance avec la variable HAUT qui correspond la variable quantitative Y prcdente. (Dependent variable) et quelques informations supplmentaires: Pr > F: R-Square: C.V.: Root MSE: Mean:

C'est la signification du test prcdent.(<0.05 on rejette H0) C'est le rapport de corrlation. (X,Y) =Somme des carrs inter classe/
Somme des carrs totale)

C'est le coefficient de variation (100*Root MSE/Mean) Ecart-type estim de Y Moyenne de la variable HAUT.

Dans l'exemple ci-dessus, nous rejetons donc l'hypothse d'galit des moyennes condition que les hypothses d'application de ce test soient remplies. Ci-dessous, nous pourrons vrifier une de ces hypothses : lgalit des variances
Remarque :

naeM TUAH

8387389.42

F > rP

6200.0

eulaV F

21.7

;tiuq ;nur ;tteltrab=tsetvoh /epyt snaem ;epyt=tuah ledom ;epyt ssalc ;serbra.iom=atad avona corp
.V.C 61538846.611 72072035.561 serauqS fo muS 11534188.84 828314.7 erauqS-R FD 2 43 63 203592.0 TUAH :elbairaV tnednepeD latoT detcerroC ecruoS ledoM rorrE

Choix du modle. Effectue un test dgalit de variances en prime.

P valeur du test ANOVA. Si P<5%, on rejette lgalit des moyennes au risque de 5%.

Le module SAS/INSIGHT peut vous permettre dobtenir un graphique illustrant cette diffrence. Allez Dans Global/Analyse/Interactive Data Analysis puis Boxplot 70

Test dgalit de variances :


ecnairaV TUAH fo ytilauqE rof tseT s'tteltraB

Cette sortie nous permet de voir que lgalit des variances semble vrifie au seuil de 5%. (P=0.1768 > 0.05).71 SAS termine en calculant les moyennes et les cart types des hauteurs des arbres dans les trois types de forts :
erudecorP ecnairaV fo sisylanA

Nous voyons clairement que les arbres des forts de type 3 semblent moins hauts que les autres.

70 Vous pouvez galement retrouver lanalyse de la variance, mais la variable type doit tre dclare Nominale avant de faire Analyse/Fit XY 71 Il faut rester prudent quand mme. Le test de Bartlett nest pas trs puissant. (cf. TESTS sous Minitab) Le test de Brown Forsythe est meilleur. (Cf. doc SAS)

qsihC>borP 99649044.2 73442377.1 27345853.1 8671.0

DS naeM ------------TUAH-------------

7564.3

eulaV qsihC

0000041.32 3417583.52 8032969.52

FD 2 N 01 41 31

EPYT fo leveL

ecruoS EPYT 3 2 1

4.

Exercices
I) La socit FRED&NUCCI frres spcialiste vinicole rput de la rgion bordelaise effectue une tude pour relier la qualit de leur vins en fonction des caractristiques mtorologiques.

Les donnes sont dans les fichiers Minitab et SAS BORDEAUX.MTW, BORDEAUX (rpertoire Public) C1 : Somme des t moyennes journalires (en C) C2 : Dure dinsolation (en h) C3 : Nombre de jour de grande chaleur C4 : Hauteur des pluies. C5 : Qualit du vin : 1 Bon, 2 Moyen 3 : Mdiocre. La qualit du vin est-elle lie aux variables C1, C2 et C3 ? Vous illustrerez votre raisonnement par des graphiques et des Analyses de variance. On supposera la normalit vrifie.
II) Une usine fabrique des billes d'acier selon 3 procds diffrents. Nous avons prlev alatoirement 3 chantillons de pices (1 par mthode) et nous avons mesur leur longueur. Les rsultats sont dans le fichier: EXANOVA2.TXT.

Peut-on considrer que les moyennes des pices fabriques selon ces trois mthodes sont les mmes ? Une ANOVA est-elle indique pour rsoudre ce problme ? On dtaillera le raisonnement.

APPENDICE : Test de Bartlett sous SAS (version antrieure 6.12) Mise en uvre sous SAS Voici ci-dessous un programme extrait de la documentation SAS qui vous permet deffectuer un test de Bartlett fort utile pour sassurer de lgalit des variances. Ce programme est en gnral fourni avec SAS en SAS/STAT sous le nom Bartlett.sas . Le voici ci-aprs pour le fichier moi.arbres :
PROC SUMMARY NWAY data=moi.arbres ; /* calcule et stocke la variance et le */ CLASS type; /* nombre d'observations pour chaque niveau*/ VAR haut; /* Les lignes ci-dessous ne doivent pas tre modifies */ OUTPUT OUT=WEARVAR VAR=VARIANCE N=NUM; RUN; DATA _NULL_; SET WEARVAR END=EOF; LOGVARI=LOG(VARIANCE); N=NUM-1; /* degrs de liberts pour chaque niveau */ SLOGVAR+LOGVARI*N; TOTN+N; NVAR=N*VARIANCE; SNVAR+NVAR; A+1; /* nombre de niveaux */ SFRACT+1/N; IF EOF THEN DO; M=TOTN*LOG(SNVAR/TOTN)-SLOGVAR; C=1+(1/(3*(A-1)))*(SFRACT-1/TOTN); CHISQ=M/C; PROBCHI=PROBCHI(CHISQ,(A-1)); ALPHA=1-PROBCHI; FILE PRINT; PUT 'TEST DE BARTLETT: CHI-SQUARE=' CHISQ ' ALPHA=' ALPHA '.'; END; RUN;

Il donne
TEST DE BARTLETT: CHI-SQUARE=3.4657438688 ALPHA=0.1767759912 .

Nous acceptons donc lgalit des variances au niveau 0.05. Vous pouvez aisment le modifier en changeant les lignes 2, 3 et 4 de ce programme. (Ligne 2 : nom du fichier, Ligne 3 : Variable qualitative dfinissant les sous
populations, Ligne 4 : Varaible quantitative )

5.

ANOVA deux critres de classification (modle fixe)


Nous avons vu que l'analyse de la variance un critre permet de diviser la variation totale en deux composantes: l'une factorielle, l'autre rsiduelle. Nous gnralisons ceci pour deux critres de classification. Notons A et B les deux facteurs en question.

a)

Tableau d'analyse de la variance

La plupart des logiciels prsentent leur sortie sous cette forme:


Source de variation Facteur A Facteur B Interaction A*B Variation rsiduelle Total Degrs de libert p-1 q-1 (p-1)(q-1) pq(n-1) pqn-1 Sommes des carrs (sum of squares) SSA SSB SSAB SSE SST Carrs moyens (mean square) MSA=SSA/(p-1) MSB MSAB MSE MST F Fa=MSA/MSE Fb Fab P

p:nombre de modalits de A q: nombre de modalits de B n: nombre d'observations par case (suppos le mme)

Nous vous renvoyons la fiche de cours pour plus de renseignements.


b) Hypothses gnrales

Les conditions d'application de l'analyse de la variance deux critres sont semblables celles exposes pour la variance un critre. Il faut tre tout aussi vigilant !

c)

Mise en oeuvre sous Minitab et sous SAS

Chargez le fichier OPER.MTW (sous Minitab) qui contient les donnes de l'exercice II de la fiche 4C de statistique. Nous allons analyser l'influence des facteurs machines et oprateurs sur le temps de ralisation d'un certain travail. Chaque cellule contenant le mme nombre de donnes (on dit alors que les donnes sont quilibres, balanced en anglais) nous pouvons utiliser la commande STAT/ ANOVA /BALANCED ANOVA de Minitab, ou la commande PROC ANOVA de SAS. Si les donnes ne sont pas quilibres, il faut utiliser STAT/ANOVA/GLM pour Minitab et PROC GLM pour SAS. Il n'y a aucune diffrence entre GLM et ANOVA dans le cas de donnes quilibres si ce n'est le temps de calcul ! Sous Minitab, allez dans STAT/ANOVA/BALANCED ANOVA. Choisissez la variable de rponse. Ensuite, Minitab vous demande le modle de l'tude.

Comment spcifier un modle ? (sous SAS ou sous Minitab)


Le modle est introduit de la mme faon sous Minitab et sous SAS. Exemples: 2 facteurs nots A et B
A B A*B : A|B A A*B A B

modle complet. modle complet (revient au mme que le prcedent) on nglige priori l'effet additif de B. on nglige l'interaction.

3 facteur A,B et C cela donne


A|B|C modle complet A|B|C - A*B*C modle A B C A*B A*C B*C (minitab)

d)

Syntaxe sous SAS. PROC ANOVA ou GLM; (cela dpend si vos donnes sont quilibres ou non) CLASSES variables; (variables dfinissant vos sous-populations) MODEL variable rponse= modle; (modle d'tude, ici ce serait Y=X) BY variables RUN; QUIT;
(pour distinguer des sous populations selon les variables indiques, le fichier est suppos tri par rapport aux variables indiques...) (pour lancer la procdure) (pour quitter dfinitivement la procdure)

PUBLIC contient le fichier OPER.TXT. Importez le sous SAS et crivez la procdure ANOVA correspondante. Quels sont les renseignements supplmentaires apports par SAS ? Vous devez obtenir la sortie suivante:
Analysis of Variance Procedure
Dependent Variable: TEMPS Source Model Error Corrected Total DF 11 24 35 R-Square 0.497758 Dependent Variable: TEMPS Source MACH OPER MACH*OPER DF 3 2 6 Anova SS 756.000000 96.000000 36.000000 Mean Square 252.000000 48.000000 6.000000 F Value 6.75 1.29 0.16 Pr > F 0.0018 0.2948 0.9848 Sum of Squares 888.000000 896.000000 1784.000000 C.V. 11.98059 Root MSE 6.11010 TEMPS Mean 51.0000 Mean Square 80.727273 37.333333 F Value 2.16 Pr > F 0.0554

Dans un premier temps SAS fait un test permettant de vrifier globalement la validit du modle (ce que ne fait pas Minitab) Dans la deuxime partie, SAS effectue trois tests pour vrifier l'influence des facteurs et de l'interaction sur le modle. Le modle vous parat-il adapt ici ? Quels sont les facteurs influents ?

I.

NPAR1WAY :Quelques mthodes non paramtriques

1.

Prliminaires
On qualifie de non paramtriques les mthodes statistiques qui sont applicables dans des conditions gnrales, quant aux distributions des populations parents Dagnlie TMS p377. En anglais on traduit non parametric ou distribution free ce qui est plus parlant. Elles sont utilises lorsque les populations parents ne suivent pas une loi normale par exemple. Par contre, dautres conditions peuvent tre exiges (indpendance des chantillons, distributions continues...) Ces tests sont aussi en gnral moins puissants que leurs confrres paramtriques.

2.
a)

Test de Kolmogorov-Smirnov
(comparaison de distributions)

But Ce test a pour but de comparer 2 distributions entre elles. Il est plus complet que le T test qui ne compare que la position de deux distributions (nous testons alors lgalit des moyennes). Principe Hypothses dapplication: Nous considrons une variable quantitative observe sur deux populations. Nous avons deux chantillons (de taille n1 et n2) constitus dobservations indpendantes respectivement dune loi G1 et dune loi G2 . Les distributions Gi sont supposes continues. H0 : G1=G2 H1 : G1 G2

b)

Nous comparons les fonctions de rpartitions(F1 et F2) des deux chantillons. Dune manire plus prcise, on calcule lcart maximum entre F1 et F2 : D= sup F1 ( x j ) F2 ( x j ) et lon compare cette valeur des valeurs critiques particulires. Si D>c on rejette H0 au risque
Remarque : Le test prsent ici est bilatral. Il existe aussi une version unilatrale (cf. vos fiches de Stat)

c)

Mise en pratique sur SAS (Proc NPAR1WAY).

Note importante :
SAS calcule en fait plusieurs statistiques dont celle de Kolmogorov prsente ci-dessus. Nous navons prsent que la comparaison de deux chantillons. SAS peut comparer n chantillons. Il calcule alors la fonction de rpartition moyenne F de tout lchantillon et calcule des diffrences entre les Fi et F.

Calculs pour Kolmogorov-Smirnov


On a :

F=

1 n F KS = max i n i i i

n (F (x
ni
i i

) F ( x j )) et KSa = KS n .

En fait, dans le cas de deux chantillons, on a : KS=

n1n2 D . Et KSa = KS n . SAS n2

calcule ensuite le P correspondant Ksa. (pour 2 chantillons)

Calculs pour Kuiper


Les hypothses sont analogues celles du test prcdent. Dans le cas de deux chantillons, SAS donne la statistique de Kuiper calcule par : K = max j ( F1 ( x j ) F2 ( x j )) min j ( F1 ( x j ) F2 ( x j )) et la valeur asymptotique Ka= K Ka.

n1n2 . Si Ka>c, on rejette H0 (lidentit des distributions). SAS calcul le P relatif n

Comparaison des tests de Kuiper et de Kolmogorov :


Des tudes par simulation ont montr que le test de Kuiper tait plus puissant que celui de Kolmogorov-Smirnov (Statistique non paramtrique et robustesse, Lecoutre-Tassi P328)

Syntaxe de la procdure PROC NPAR1WAY


PROC NPAR1WAY <options> ; CLASS variables ; On indique ici la variable de classification (qualitative en gnral) BY variables ; Pour effectuer si ncessaire plusieurs analyse dun coup selon les modalits
des variables indiques ici.

VAR variables ; RUN ;

On indique ici la variable de rponse utiliser dans les tests. Par dfaut SAS utilisera toutes les variables quantitatives.

Les principales options tant :

DATA= Le nom du fichier de donnes SAS utiliser EDF


Pour indiquer SAS deffectuer des tests utilisant les fonctions de rpartitions : Kolmogorov, Cramer Von Mises, Kuiper.

WILCOXON Pour obtenir des mthodes sur les rangs (Wilcoxon Mann et Whitney, Kruskal-Wallis) d) Exemple

Nous allons tester lgalit des distributions des tailles des hommes et des femmes de STID de France dont un chantillon (suppos alatoire) est contenu dans le fichier STID193.
Libname moi Z :\TOTO ; Libname moi Z :\TOTO ; proc npar1way data=moi.stid193 edf; class sexe; var taille; run;

On obtient alors :
Kolmogorov-Smirnov Test for Variable TAILLE Fonction de Classified by Variable SEXE rpartition. Deviation EDF from Mean SEXE N at maximum at maximum 1 46 0.239130435 -2.28117743 2 60 0.833333333 1.99738764 --------------------106 0.575471698 Maximum Deviation occurred at Observation 59 Value of TAILLE at maximum 171.000000 P valeur Kolmogorov-Smirnov 2-Sample Test (Asymptotic) Stat de test. KS = 0.294499 D = 0.594203 KSa = 3.03205 Prob > KSa = 0.0001

Comme nous le voyons sur le graphique ci-dessous, lcart maximum entre les deux fonctions de rpartition est obtenu pour T=171cm. On a alors Pour les homme F(171)=0.239 et pour les femmes F(171)=0.833.

Fonction de rpartition des tailles


100 90 80 70
0.83

% cumul

60 50 40 30 20 10 0 150 160 170


171 0.24 Valeur pour laquelle lcart maximum est atteint. Ecart maximum

180

190

200

Taille (cm)

On obtient D=0.5942. et KS=0.294499. Le calcul de la signification du test est effectu sur Ksa. La signification du test montre que lon rejette H0 (identit des distributions) au risque 0.0001.

Le test de Kuiper confirme-t-il ce rsultat ?


Kuiper Test for Variable TAILLE Classified by Variable SEXE Deviation N from Mean 46 0.000000000 60 0.594202899 Kuiper 2-Sample Test (Asymptotic) Ka = 3.03205 Prob > Ka = 0.0001

SEXE 1 2 K = 0.594203

e)

Exercice

On fabrique des pices mtalliques selon deux procds diffrents. On tire deux chantillons alatoirement, on mesure les pices obtenues. Les rsultats figurent dans le fichier NPAR (format SAS). Il contient les deux chantillons alatoires indpendants de longueurs (LONG) de pices mtalliques fabriques selon deux mthodes diffrentes (numrotes 1 et 3). Peut-on considrer que les deux mthodes donnent des rsultats identiques quant la distribution des pices ? (Vous effectuerez les tests de Kolmogorov et de Kuiper) Une tude complmentaire a montr que les deux distributions peuvent tre considres comme normales. Quel test pouvez-vous effectuer ? Que concluezvous ? Complment : Aurait-on pu effectuer un Test de Mann et Whitney ici ?

3.
a)

Test de Mann et Whitney (ou Wilcoxon ou White)


(Comparaison de 2 distributions quant leur position)

But

Ce test a essentiellement pour objet de comparer deux populations en ce qui concerne plus particulirement leur position et est donc comparable au T test de comparaison de moyennes vu dans un chapitre prcdent. Contrairement au T Test, il ne suppose pas la normalit des populations parents mais il suppose des distributions de mme forme . Il est un tout petit peu moins puissant que le Ttest dans les conditions dapplication de ce dernier.
b) Mise en oeuvre Hypothses dapplication (cf. fiche de cours): Nous considrons une variable numrique ordinale observe sur deux populations indpendantes. Nous avons deux chantillons (de taille n1 et n2 , on suppose n1 n2) constitus dobservations indpendantes respectivement dune loi G1 et dune loi G2 . Les distributions Gi sont supposes continues et leurs fonctions de rpartitions ne doivent pas se chevaucher (Minitab suppose quelles ont la mme forme donc des variances gales) H0 : G1=G2 H1 : G1 G2 Ralisation:
La ralisation de ce test est base sur le classement de lensemble des observations par ordre croissant, la dtermination du rang de chacune delles, et le calcul de la somme des rangs (Y1 et Y2) pour chaque chantillon. (en fait seul le calcul de Y1 est ncessaire) Le principe du test consiste rejeter lhypothse didentit des deux distributions lorsque la valeur observe par Y1 scarte trop de la valeur attendue correspondante. Pour des effectifs suffisamment levs (n1+n2>30) la distribution de Y1 est approximativement normale de moyenne n1(n1+n2+1)/2 et de variance n1n2(n1+n2+1)/12. La quantit une N(0,1).

uobs =

Y1 n1 (n1 + n2 + 1) / 2 n1n2 (n1 + n2 + 1) / 12

suit approximativement, en valeur absolue

Correction en cas exaequo : La prsence de valeurs identiques dans les deux chantillons diminue en fait la variabilit de la somme des rangs : la variance de ces sommes doit donc tre corrige en consquence. Limportance de cette correction est en gnral secondaire. Dagnlie TMS2 p 384.

c)

Exemple sous SAS

Voici un exemple de sortie sous SAS. (Il ne faut pas oublier de mettre loption WILCOXON dans la procdure NPAR1WAY)
N P A R 1 W A Y P R O C E D U R E Wilcoxon Scores (Rank Sums) for Variable HAUT Classified by Variable TYPE TYPE 1 2 N 13 14 Sum of Scores Expected Under H0 Std Dev Under H0 Mean Score

204.500000 182.0 20.5948573 15.7307692 173.500000 196.0 20.5948573 12.3928571 Average Scores were used for Ties Wilcoxon 2-Sample Test (Normal Approximation) (with Continuity Correction of .5) S= 204.500 Z= 1.06823 Prob > |Z| = 0.2854

SAS calcule bien sr la somme des rangs (sum of scores), les sommes attendues si H0 est vraie (expected under H0).
Average Scores were used for Ties signifie que des rangs affects aux exaequo correspondent la moyenne des rangs correspondants.
S Z P Correspond au Y1 prcdent (somme des rangs du plus petit chantillon) Statistique de Test. Le P correspondant.

Ici, on accepte lhypothse H0 didentit des distributions.


Remarque importante : SAS effectue aussi un test de Kruskal et Wallis. Ce test, que nous verrons plus loin, gnralise Mann et Whitney k chantillons. Cela dit, il sapplique lorsque k=2 et est alors quivalent au test de Mann et Whitney. Minitab donne quant lui:
Mann-Whitney Confidence Interval and Test type1 N = 13 Median = 26.300 type2 N = 14 Median = 25.650 Point estimate for ETA1-ETA2 is 0.600 95.1 Percent C.I. for ETA1-ETA2 is (-0.700,2.000) W = 204.5 Test of ETA1 = ETA2 vs. ETA1 ~= ETA2 is significant at 0.2857 The test is significant at 0.2854 (adjusted for ties) Cannot reject at alpha = 0.05 Note : Minitab interprte ce test comme un test dgalit de mdianes.

d)

Exercice

1) Nous avons calcul les dures de vie de composants lectroniques fabriqus selon deux mthodes diffrentes. Nous avons extrait deux chantillons indpendants. Ils sont consigns dans le fichier NONPARA (au format SAS). (NONPARA.MTW Minitab) On veut savoir si les deux mthodes donnent des rsultats analogues. Peut-on effectuer un test paramtrique ici ? Que donne Mann et Whitney ici ? (Vous vrifierez les hypothses dapplication sous Minitab) (Pourrait-on effectuer un test T ? Que donne-t-il ici ?) 2) Pourrait-on appliquer Mann prcdemment ? Que donne-t-il ? et Whitney NPAR.MTW vu

4.
a)

Le test de Kruskal et Wallis


(comparaison de k distributions quant leurs positions)

But

Il gnralise Mann et Whitney pour k chantillons. Il est, comme le test prcdent, bas sur le classement des observations, la dtermination de leur rang et les calcul des sommes Yi associes.
b) Mise en uvre Hypothses : Nous considrons une variable numrique ordinale observe sur k populations indpendantes. Nous avons k chantillons (de tailles ni) constitus dobservations indpendantes de loi Gi. Les distributions Gi sont supposes continues et de mme forme (cf. Mann et Whitney). H0 : G1=...=Gk H1 : H0 c
On calcule

2 obs

k Yi 2 12 = 3(n + 1) avec n = ni n(n + 1) i =1 ni

Cette quantit suit un chi2 (k-1) pour n suffisamment grand (15). On rejette H0 lorsque cette valeur est trop grande .

N P A R 1 W A Y P R O C E D U R E Wilcoxon Scores (Rank Sums) for Variable DUREE Classified by Variable TYPE TYPE 1 2 Sum of Expected Std Dev Mean Scores Under H0 Under H0 Score 1050.50000 915.0 67.6359272 35.0166667 779.50000 915.0 67.6359272 25.9833333 Average Scores were used for Ties Wilcoxon 2-Sample Test (Normal Approximation) (with Continuity Correction of .5) S= 1050.50 Z= 1.99598 Prob > |Z| = 0.0459 T-Test approx. Significance = 0.0506 N 30 30 Kruskal-Wallis Test (Chi-Square Approximation) CHISQ= 4.0135 DF= 1 Prob > CHISQ= 0.0451

Voici un exemple de sortie avec le fichier prcdent. Nous pouvons remarquer que les conclusions sont analogues celles du test de Mann et Whitney. Ceci qui est logique (ces tests sont quivalents pour k=2)

J. Objet

CORR , calcul des coefficients de corrlations

Proc CORR est utilise pour calculer les coefficients de corrlations entre des variables. Par dfaut le coefficient de corrlation linaire de Pearson72 donn cov( X , Y ) par rxy = est calcul pour chaque couple de variables73. var( X ) var(Y )

1.

Syntaxe simplifie
PROC CORR options1; VAR variables; BY variables; FREQ variables; WITH variables; RUN;
Liste des variables sur lesquelles se feront les calculs des coefficients Pour effectuer un calcul pour chaque sous-population dfinie par BY Chaque observation est compte n fois o n est la valeur de la variable pour l'observation correspondante Pour calculer les corrlations entre ces variables et celles de VAR. cf exemple

Exemples
PROC CORR DATA=moi.stid193 NOPROB; VAR taille poids; RUN;
(NOPROB: pour ne pas afficher le test)

Ce petit programme effectuera le calcul du coefficient de corrlation linaire cov( X , Y ) (de Pearson donn par rxy = ) entre les variables Taille et Poids var( X ) var(Y ) du fichier Stid193. Le rsultat est donn ci-dessous sous forme matricielle. Il est prcd par des statistiques lmentaires:
Simple Statistics Variable TAILLE POIDS N 46 46 Mean 176.3043 68.5217 Std Dev 6.9694 10.0504 Sum 8110 3152 Minimum 160.0000 53.0000 Maximum 196.0000 110.0000

Pearson Correlation Coefficients TAILLE POIDS TAILLE 1.00000 0.63779

/ N = 106 POIDS 0.63779 1.00000

2.

Test de nullit
PROC CORR DATA=moi.stid193 ; VAR taille poids;

72 Ce nombre, calcul pour des variables quantitatives en gnral, est compris entre -1 et 1, caractrise l'intensit de la liaison linaire entre deux variables. Plus il est proche de 1 (ou proche de -1) plus la liaison linaire est forte. 73 Le module SAS/INSIGHT vous permet de faire ce calcul. Cf. ce document paragraphe SAS/INSIGHT, option Multivariate (Ys).

RUN;

SAS effectue en plus un test sur le coefficient de corrlation. Soit les coefficient de corrlation entre deux variables X et Y sur une population P.
Test: H 0: = 0 (il n' y a pas de correlation) contre H1: 0 . Hypothses:
' D'une part, on peut considrer la premire variable dite dpendante, exprime en fonction d'une autre variable dite indpendante. Dans ce cas, on suppose que la variable dpendante est normale et de variance constante et que la rgression est linaire. D'autre part, on peut considrer deux variables interdpendantes, dont on suppose que la distribution commune est une distribution normale deux dimensions. C'est en gnral le deuxime cas qui est retenu.' Dagnlie TMS2

La statistique de test est T=

R n2 qui sous H0 suit une loi de Student n-2 degrs de liberts. 1 R

(n dsigne l'effectif de l'chantillon et R la variable alatoire associe au coefficient de corrlation)

En pratique

On calcule t obs =

rxy n 2 1 rxy

et on rejette H0 lorsque cette valeur est trop leve,

c'est dire suprieure t1 / 2 pour un niveau de signification avec n-2 degrs de liberts.
Dans la pratique SAS donne le P correspondant. On rejette H0 lorsque P est suprieur =0.05 (en gnral)
Correlation Analysis Pearson Correlation Coefficients / Prob > |R| under Ho: Rho=0 / N = 106 TAILLE POIDS TAILLE 1.00000 0.0 0.63779 0.0001 POIDS 0.63779 0.0001 1.00000 0.0

Ici P=0.0001, on accepte donc H1: 0 . On rejette l'hypothse de nullit du coefficient de corrlation entre la taille et le poids de la population des STID de France. 74
Exercice et exemple
74 En considrant les STID grenoblois comme un chantillon alatoire reprsentatif de la population des STID de france et en supposant les hypothses cites plus haut remplies.

PROC SORT DATA=moi.stid193 out=stidtri; BY sexe; RUN; PROC CORR data=stidtri; VAR taille poids; BY sexe; RUN;

(Pour utiliser le BY dans PROC CORR)

Que fait le programme prcdent. Quels sont les tests effectus ? Que concluent-ils ?
Utilisation de WITH PROC CORR; VAR a b; WITH x y z; RUN; Calculera les corrlations X A, Y A, Z A, X B, Y B, Z B.

Quelques options de PROC CORR


Fichier de donnes

DATA=nom du fichier de donnes SAS Fichier de donnes SAS sur lequel s'effectuera le calcul.
Sauvegarde des rsultats

OUTP=nom de fichier SAS Cre un fichier SAS contenant les coefficients de correlation de Pearson. OUTS=nom de fichier SAS Cre un fichier SAS contenant les coefficients de correlation de Spearman. OUTK=nom de fichier SAS Cre un fichier SAS contenant les coefficients de correlation de Kendall.
Affichage des rsultats

BEST=nombre n Affiche les n correlations les plus leves (en valeur absolue) pour chaque variable. RANK Affiche les coefficients de corrlation du plus grand au plus petit (en valeur absolue). Si cette option n'est pas choisie, ils s'affichent sous forme d'une matrice. NOPRINT Aucun affichage des rsultats. NOSIMPLE Pas d'affichage des statistiques descriptives effectues sur les variables. NOPROB Pas d'affichage de la signification P du test H0: = 0 contre H1: 0 .
Statistiques particulires

PEARSON Affiche le coefficient de corrlation linaire. (option valide par dfaut) SPEARMAN Affiche les coefficients de Spearman. ( Ri R )( Si S ) = ( Ri R ) ( Si S ) o Ri est le rang de la ime valeur observe de X et Si le rang de la ime valeur observe de Y. (cela revient substituer chaque valeur par son rang).
Notes: en cas d'ex aequo c'est la moyenne qui est prise

Dans la pratique, on utilise aussi la formule relative aux diffrents individus.

6 di2 n(n 1)

di est la diffrence de rangs

COV Affiche les covariances.


Diviseur utilis pour le calcul de la variance

VARDEF= DF Degrs de liberts (n-1) C'est l'option par dfaut. N Nombre d'observations (n) WEIGHT Somme des poids WDF Somme des poids -1.

K.
1.

PRINCOMP, Analyse en Composantes Principales


Syntaxe simplifie
PROC PRINCOMP options; VAR variables; variables (actives) sur lesquelles seffectue l'ACP BY variables; FREQ variables; RUN;
dcompose la population en sous populations identifies par les modalits de BY Chaque observation est compte n fois o n est la valeur de la variable pour l'observation correspondante

Certaines options de PRINCOMP Fichier de donnes

DATA=nom du fichier de donnes SAS Fichier de donnes SAS sur lequel s'effectuera le calcul.
Sauvegarde des rsultats

OUT=nom de fichier SAS Cre un fichier SAS contenant toutes les donnes originales ainsi que les coordonnes des projections des individus sur les diffrentes composantes principales. OUTSTAT=nom de fichier SAS Cre un fichier SAS contenant les moyennes, cart-types, valeurs propres, vecteurs propres.
Paramtrage de l'analyse

N=nombre entier Spcifie le nombre de composantes principales calculer. COVARIANCE ou COV Effectue le calcul des composantes principales partir de la matrice de variance covariance et non plus partir de la matrice des corrlations. "Cette
option ne doit pas tre utilise moins que les units dans lesquelles sont exprimes les variables soient comparables ou moins que les variables soient centres rduites ". SAS/STAT User Guide p.1244.

NOPRINT Pas d'affichage des rsultats NOINT La matrice des corrlations (ou de covariance) ne sera pas corrige par rapport la moyenne

Diviseur utilis pour le calcul de la variance

VARDEF= DF Degrs de liberts (n-1) C'est l'option par dfaut. (N si NOINT est spcifie) N Nombre d'observations (n) WEIGHT Somme des poids WDF Somme des poids -1.(Somme des poids si NOINT est spcifie)
Divers

PREFIX=nom spcifie un prefixe pour nommer les composantes principales. Par dfaut elles sont notes PRIN1, PRIN2 etc... Si PREFIX = Y est spcifi, les composantes principales seront notes Y1, Y2,... etc

2.

Exercice
Prenez le fichier SAS ACP qui se trouve dans les rpertoires habituels. Il donne les moyennes mensuelles des tempratures de 15 villes de France calcules sur 30 ans de 1930 1961. Sont indiques galement dans le fichier la latitude, la longitude, la moyenne annuelle et l'amplitude thermique de ces 15 villes. Tapez le programme suivant:

PROC PRINCOMP DATA=PUB.ACP ; (dclarez Pub correctement) VAR JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC; RUN;

Et vrifiez que vous obtenez bien entre autres:


Principal Component Analysis Eigenvalues of the Correlation Matrix Eigenvalue Difference Proportion 9.58178 7.30536 0.798482 2.27642 2.20640 0.189702 0.07001 0.03034 0.005835 0.03967 0.02563 0.003306 0.01405 0.00606 0.001170 0.00798 0.00193 0.000665 0.00605 0.00430 0.000504 0.00175 0.00025 0.000146 0.00149 0.00100 0.000124 0.00049 0.00021 0.000041 0.00029 0.00027 0.000024 0.00002 . 0.000002

PRIN1 PRIN2 PRIN3 PRIN4 PRIN5 PRIN6 PRIN7 PRIN8 PRIN9 PRIN10 PRIN11 PRIN12

Cumulative 0.79848 0.98818 0.99402 0.99732 0.99849 0.99916 0.99966 0.99981 0.99993 0.99997 1.00000 1.00000

Que contient ce tableau ? Quels sont les lments donns par SAS dans l'OUTPUT ? Quelle est linertie explique par le premier axe ? le deuxime ? Que pensez-vous de la qualit globale du premier plan principal ? Combien de composantes allez-vous retenir ?

a)

Calcul des coordonnes des individus sur les axes principaux

Modifiez le programme prcdent comme suit:


PROC PRINCOMP DATA=MOI.ACP OUT=WORK.ESSAI; VAR JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC; RUN;

Que fait de plus ce programme par rapport au prcdent ? Quels sont les donnes supplmentaires figurant dans le fichier SAS work.essai? Excutez ensuite:
PROC PRINT DATA=WORK.ESSAI; VAR NOM PRIN1 PRIN2 ; NOTE: la variable nom contient le nom de chaque ville RUN;

Vous devez obtenir:


OBS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 NOM bordeaux brest clermont grenoble lille lyon marseille montpellier nantes nice paris rennes strasbourg toulouse vichy PRIN1 3.01489 -2.19110 -1.66741 -1.47740 -4.07384 -0.80663 4.66885 4.00667 -0.27175 5.80335 -1.19983 -1.38987 -3.96639 1.67730 -2.12684 PRIN2 0.10559 3.95451 -0.57244 -1.63071 0.57502 -1.72759 -0.80070 -0.42059 1.07677 0.76254 -0.15104 1.61446 -2.09860 -0.13151 -0.55571

Donnez la signification des nombres en face de chaque ville .75

75 SAS a la fcheuse manie de donner le nom de PRIN1 au premier axe principal et la premire composante principale. Attention aux confusions.

b)

Reprsentation du premier plan principal

Vous pouvez obtenir une reprsentation graphique basse rsolution avec les instructions qui suivent :
PROC PLOT DATA=WORK.ESSAI; PLOT PRIN2*PRIN1='*' $ NOM; RUN;
1NIRP 6 4 2 0 246 gruobsarts * noyl * * elbonerg elliesram * reilleptnom * tnomrelc * * yhciv esuoluot * sirap * xuaedrob * ellil * * ecin setnan * senner * tserb * 2NIRP 3 231 0 14 2

Il est possible dobtenir une reprsentation en haute rsolution76 en utilisant GPLOT. Il va falloir crer un fichier Work.annoter qui nous permettra dafficher les noms des villes sur le graphique :

76 On peut se demander pourquoi prsenter la fois un graphique en haute et en basse rsolution. Les graphiques en basse rsolution, sils sont moins beaux, ont le mrite dtre disponible sur toutes les plateformes de SAS ce qui nest pas le cas pour les graphiques en haute rsolution. De plus, ces derniers occupent beaucoup despace mmoire. Signalons enfin que le copier-coller de SAS vers Word des graphiques en haute rsolution ne fonctionne pas (pour limpression). Il faut passer par un logiciel de dessin (Paint ou Paintbrush) et sous Word choisir Insert/Image.

DATA WORK.ANNOTER; SET WORK.ESSAI; On part du fichier ESSAI X=PRIN1; On appelle x et y Prin1 et Prin2. Y=PRIN2; TEXT=NOM; Le texte afficher est le nom de la ville SIZE=1; Taille du texte. XSYS='2'; Pour mettre les noms des villes (Text) en (x,y) YSYS='2'; LABEL Y='AXE 2' Etiquette des axes X='AXE 1'; KEEP X Y XSYS YSYS TEXT SIZE; On ne conserve que les variables utiles RUN; TITLE 'PREMIER PLAN PRINCIPAL'; TITRE DU GRAPHIQUE. PROC GPLOT DATA=WORK.ANNOTER; PLOT Y*X=1 / ANNOTATE=WORK.ANNOTER HREF=0 VREF=0; RUN; Pour tracer les axes QUIT;
passant par O

Si le graphique prcdent ne vous plait pas, vous pouvez galement transfrer les donnes sous Excel (File/Export ou liaison DDE) et effectuer le graphique sous Excel.

c)

Interprtation des composantes principales - Cercle des corrlations

Pour interprter les composantes principales, il peut tre intressant de calculer le coefficient de corrlation entre chaque composante et les variables du fichier. Nous distinguerons deux types de variables, les variables utilises dans les calculs et les autres appeles variables supplmentaires. Nous allons ensuite reprsenter graphiquement chaque variable par un point dont les coordonnes sont les coefficients de corrlation avec la premire puis la deuxime composante principale. 1
Composante 2

JAN

0.644=r(c2,Jan)

-1

-0.761=r(c1,Jan)

Composante 1

Ainsi Cor(Composante1,Jan)= -0.761 et Cor(Composante2,Jan)=0.644 donc la variable Janvier aura pour coordonnes (-0.761,0.644).
Remarque fondamentale :

On peut montrer aisment que, dans le cas de lACP norme, le cercle des corrlations prcdent nest pas quune simple reprsentation graphique mais galement la projection de lensemble des variables centres rduites dans le plan engendr par les deux composantes principales. Une variable sera bien reprsente par cette projection lorsque son point variable sera proche de la circonfrence.77 Nous allons calculer les corrlations (PROC CORR) entre les composantes principales (PRIN1 et PRIN2) et les variables statistiques dont nous disposons.

77 Soit Li la longueur de Vi le ieme vecteur variable projet. Alors Li=r2(C1,Vi)+ r2(C2,Vi) or C1 et C2 ne sont pas corrles donc Li=r2(Vi ; C1, C2) le coefficient de dtermination entre Vi et (C1, C2). Lorsque Vi est combinaison linaire de (C1, C2) alors Li=r2(Vi ; C1, C2)=1 donc le point variable est sur le cercle et rciproquement. Dans la pratique il faut de mfier de linterprtation de la proximit entre des points variables si ceux-ci ne sont pas proches de la circonfrence.

Vous pourrez utiliser le programme suivant, en le compltant, pour calculer de nouvelles variables utiles pour l'interprtation.
PROC PRINCOMP DATA=PUB.ACP OUT=ESSAI NOPRINT; VAR JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC; RUN; DATA FINAL; SET ESSAI; MOY=MEAN(JAN,FEV,MAR,...,DEC); AMPLI=MAX(JAN,FEV,MAR,...,DEC)-MIN(JAN,FEV,MAR,...,DEC); RUN; PROC CORR DATA=FINAL OUTP=ESSAI2 ; VAR PRIN1 PRIN2; WITH JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC MOY AMPLI; RUN; PROC PRINT DATA=ESSAI2 ; RUN ; /* la procdure prcdente affiche les coefficients de corr.*/ /* entre les composantes principales et les variables de tempratures ainsi que la p valeur du test de nullit */ /* Cration dun fichier de donnes en vue de dessiner un cercle*/ /* des corrlations*/ DATA MOI.CERCLE; SET ESSAI2 (WHERE=(_TYPE_='CORR')); DROP _TYPE_; RUN; PROC PLOT DATA=MOI.CERCLE; PLOT PRIN2*PRIN1= '*' $ _NAME_; RUN;

Le fichier ESSAI2 contient entre autres les coefficients de corrlation entre les composantes principales et les variables du fichier :

Nous pouvons reprsenter cela graphiquement ce qui donne :

86589.053120.0 03426.0 39314.0 64071.0 01802.049924.024135.053994.017474.076302.010651.0 80964.0 43446.0

2NIRP

1NIRP

60101.0 27999.0 33477.0 57309.0 61089.0 30479.0 16898.0 35148.0 75368.0 67278.0 43969.0 77869.0 64088.0 42167.0

ILPMA YOM CED VON TCO PES UOA IUJ NUJ IAM RVA RAM VEF NAJ
8.0

Variables supplmentaires

1NIRP

0.1-

8.0-

6.0-

4.0-

2.0-

0.0 2NIRP 2.0

4.0

0.1 8.0 6.0 4.0 2.0 0.0 ILPMA * IUJ * IAM ** NUJ UOA * RVA * PES * YOM ** RAM TCO VON * VEF * CED ** NAJ

6.0

et pour la haute rsolution78, nous devons modifier le fichier Moi.cercle. ...


PROC CORR DATA=FINAL OUTP=ESSAI2 NOPRINT; VAR PRIN1 PRIN2; WITH JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC MOY AMPLI; RUN; DATA MOI.CERCLE; SET ESSAI2 (WHERE=(_TYPE_='CORR')); X=PRIN1; Y=PRIN2; TEXT=_NAME_; XSYS='2'; YSYS='2'; LABEL X='AXE 1' Y='AXE 2'; KEEP X Y XSYS YSYS TEXT; RUN; TITLE "CERCLE DES CORRELATIONS"; PROC GPLOT DATA=MOI.CERCLE; PLOT Y*X=1 / ANNOTATE=MOI.CERCLE HREF=0 VREF=0 HAXIS=-1 TO 1 BY .5 VAXIS=-1 TO 1 BY .5; RUN; Nous spcifions des axes horizontaux et QUIT;
verticaux sur [-1 ;1]

Variables supplmentaires

Les variables supplmentaires choisies nous permettent dinterprter facilement les axes principaux.

78 Pour transfrer ce graphique en haute rsolution de SAS vers Word, il faut passer par Paint (Edition/Copier vers puis sous Word Insere/Image) sinon, limpression nous rserve quelques surprises...

d)

Calcul des contributions des individus

Il est ncessaire de sassurer que la direction des axes principaux na pas t fixe par un petit nombre dindividus atypiques. Pour cela, on calcule les contributions des individus pour chaque axe principal.
Calcul On a vu que linertie du nuage projet sur un axe est gal la valeur propre associe cet axe. Cette inertie est aussi gale la moyenne des carrs des coordonnes des individus sur cet axe. (voir la remarque ci-dessous pour certains
logiciels)

Ainsi chaque individu contribue linertie de laxe en question. Plus il est loign de lorigine plus il contribue, et plus il est proche de O moins il contribue. On a donc la contribution de lindividu j laxe i : o i est la valeur propre (n 1)i associe laxe i, xj,i la coordonne de lindividu j sur laxe i et n le nombre dindividus. La somme de ces contributions tant gale 1 pour chaque axe.
Contribution de l'individu j l' axe i =
(Rq :On peut multiplier ce nombre par 100 pour obtenir des %)

x 2,i j

x
Remarque : Pour certains logiciels (comme SAS et Minitab) on a
j

2 j ,i

n 1

= i , il se peut

donc que les coordonnes sur les axes fournies par dautres logiciels (Statlab) ne correspondent pas avec celles fournies par SAS et Minitab. Par contre les qualits, les contributions sont rigoureusement identiques !

Ce calcul permet de reprer les individus contribuant fortement des axes... remettant ainsi fortement an cause leur interprtation.
Mise en pratique

Effectuez le calcul sous SAS en ajoutant 2 lignes au programme prcdent (contri1=... contri2=...) et vrifiez que lon obtient bien pour les deux premires villes :
contribution laxe 1 (en %) contribution laxe 2 (en %)

Bordeaux Brest

6.7759 3.5789

0.0350 49.0692

La ville de Bordeaux contribue 6.8% de linertie du premier axe. Ceci montre aussi que la ville de Brest contribue 49% de linertie du deuxime axe principal ce qui est beaucoup.

Il serait intressant de placer cette ville en individu supplmentaire et de regarder si nous conservons linterprtation prcdente.
e) Individu supplmentaire

Comme nous lavons dit, nous allons mettre Brest en individu supplmentaire. Brest ne sera donc plus utilis dans les calculs, mais nous lafficherons dans le premier plan principal. Pour cela, il suffit de lui affecter un poids ngatif.
DATA WORK.ACPBREST; SET MOI.ACP; W=1; IF NOM='BREST' THEN W=-1; RUN; Nous affectons Brest dun poids ngatif

LACP seffectuera en tenant compte du poids de chaque individu.

PROC PRINCOMP DATA=WORK.ACPBREST OUT=WORK.ESSAI; WEIGHT W; VAR JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC; RUN; DATA WORK.ANNOTER; SET WORK.ESSAI; X=PRIN1; Y=PRIN2; TEXT=NOM; SIZE=1; XSYS='2'; Lindividu supplmentaire YSYS='2'; sera affich en rouge (les COLOR='BLUE'; autres en bleu) IF W=-1 THEN COLOR='RED'; LABEL Y='AXE 2' X='AXE 1'; KEEP X Y XSYS YSYS TEXT SIZE COLOR; RUN; TITLE 'PREMIER PLAN PRINCIPAL'; PROC GPLOT DATA=WORK.ANNOTER; PLOT Y*X=1 / ANNOTATE=WORK.ANNOTER HREF=0 VREF=0; RUN; QUIT;

Nous obtenons :
Eigenvalue PRIN1 PRIN2 PRIN3 PRIN4 10.6035 1.2444 0.0761 0.0454 Difference 9.35905 1.16837 0.03066 0.02987 Proportion 0.883625 0.103704 0.006340 0.003785 Cumulative 0.88362 0.98733 0.99367 0.99745

La reprsentation graphique est la suivante :

Les interprtations ne sont pas modifies. Nous allons maintenant calculer les qualits de reprsentation des individus.

f)

Qualit de reprsentation des individus sur le premier plan principal

Nous avons dj vu que la qualit globale tait excellente, nous allons maintenant regarder pour chaque individu ce qu'il en est. Un point sera bien reprsent lorsqu'il sera "proche" du plan en question. Cette qualit se mesure l'aide de r 2 OPi Y1 (i ) 2 + Y2 (i ) 2 r 2 = r 2 . o M*i est le ime individu (centr rduit) et Pi sa OM i* OM i* projection sur le premier plan principal. (Pi a pour coordonnes (Y1(i), Y2(i)) dans le
premier plan principal)

Que reprsente ce nombre ? (Vous pourrez vous aider du graphique qui suit) M*i
Premier plan principal

Pi O

Plus ce nombre est proche de 1, et plus M*i est proche de Pi, et meilleure est la qualit de reprsentation de l'individu en question.

Pour calculer ce nombre, il faut centrer et rduire les variables79, c'est ce que fait la procdure suivante: (PROC STANDARD)

79 En effet, comme nous avons pris la matrice des corrlations, cela revient dire que nous avons centrs rduits nos variables de dpart avant deffectuer les calculs. Le plan principal retenu est donc le plan donnant une image dformant le moins le nuage des individus (centrs rduits) initial. Pour obtenir plus dinformations sur le choix entre la matrice de corrlation et la matrice de covariance, nous vous renvoyons la bibliographie: (Escoffier et Pages notamment.)

L.

STANDARD , normalisation de variables

(pour obtenir entre autres, des variables centres rduites...) Syntaxe simplifie
PROC STANDARD options; VAR variables; BY variables; FREQ variable RUN;
DATA, OUT, STD et MEAN sont les options les plus fondamentales Variables transformer Sens habituel Idem

Quelques options de la procdure Standard Fichier de donnes

DATA=nom du fichier de donnes SAS Fichier de donnes SAS sur lequel s'effectuera le calcul.
Sauvegarde des rsultats

OUT=nom de fichier SAS Cre un fichier SAS contenant toutes les donnes originales ainsi que les variables centres rduites. Si cette option n'est pas spcifie, SAS va crer de lui-mme un fichier de donnes rsultat.
Paramtrisation

MEAN= moyenne des nouvelles variables. (par dfaut la moyenne de la variable initiale) STD= ecart-type des nouvelles variables; (par dfaut l'cart-type de la variable initiale) NOTE: Si MEAN et STD ne sont pas prcises, les nouvelles variables seront rigoureusement identiques aux prcdentes. REPLACE les valeur manquantes seront remplace par la valeur MEAN
Affichage des rsultats PRINT Affiche les moyennes, cart-types pour les variables transformes. Diviseur utilis pour le calcul de la variance

VARDEF= DF Degrs de liberts (n-1) C'est l'option par dfaut. N Nombre d'observations (n) WEIGHT Somme des poids WDF Somme des poids -1.

Exemple
PROC STANDARD data=moi.essai out=moi.essai mean=0 std=1; VAR JAN FEV; RUN;

Ce programme va centrer rduire les variables jan et fev du fichier moi.essai.


Note: En choisissant OUT=MOI.ESSAI, j'impose SAS de remplacer les variables initiales de ce fichier par les variables centres rduites. 80 Application, qualit de reprsentation des individus sur le premier plan principal

Nous allons centrer rduire les variables Janvier dcembre puis nous allons crer un nouveau fichier contenant la somme des carrs de chaque ligne. Nous aurons ainsi le dnominateur de la quantit calculer. Comprenez ce que fait le programme suivant:
PROC PRINCOMP DATA=PUB.ACP OUT=WORK.ESSAI; VAR JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC; RUN; PROC STANDARD DATA=WORK.ESSAI OUT=WORK.ESSAI MEAN=0 STD=1; VAR JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC; RUN; DATA WORK.ESSAI2; SET WORK.ESSAI; DENOM= USS(JAN,FEV,MAR,AVR,MAI,JUN,JUI,AOU,SEP,OCT,NOV,DEC); NUMER=USS(PRIN1,PRIN2); QUAL=NUMER/DENOM; KEEP NUMER DENOM QUAL NOM; RUN;

Compltez votre programme pour obtenir la qualit de reprsentation des individus dans le premier plan principal.

80 Si je ne souhaite pas perdre les donnes initiales, je change de nom du fichier, si je ne mets rien, SAS va crer un nouveau fichier pour y stocker les rsultats.

Vous vrifierez avec le tableau ci-dessous.


OBS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 NOM bordeaux brest clermont grenoble lille lyon marseille montpellier nantes nice paris rennes strasbourg toulouse vichy DENOM 9.6014 20.4850 3.1598 5.0886 17.0827 3.6525 22.6076 16.2854 1.3081 34.3644 1.6187 4.6010 20.2825 2.9534 4.9088 NUMER 9.1007 20.4391 3.1080 4.8419 16.9268 3.6352 22.4393 16.2303 1.2333 34.2603 1.4624 4.5382 20.1363 2.8306 4.8323 QUAL 0.94785 0.99776 0.98359 0.95152 0.99088 0.99526 0.99255 0.99662 0.94278 0.99697 0.90345 0.98636 0.99279 0.95841 0.98442

M.

CLUSTER : Classification dindividus


Cest une mthode complmentaire lACP cest pourquoi nous allons la prsenter ici. Dans le paragraphe prcdent (Proc Princomp), vous avez tabli une typologie des villes partir des donnes de tempratures. Nous allons essayer de retrouver cette typologie en utilisant lalgorithme de classification ascendante hirarchique.

1.

But
Le but de la mthode est de construire une partition de lensemble des individus de telle sorte que les individus dune mme classe soient proches et ceux issus classes distinctes soient loigns .

2.

Choix de la distance
Pour savoir si des individus sont proches ou loigns, il faut mesurer la distance qui les spare. Nous devons donc choisir une distance. Pour nos donnes quantitatives, nous choisirons la distance euclidienne qui est celle que vous connaissez bien.81

3.

Qualit de la typologie
Considrons notre population initiale Q dcompose en p classes Q1,Q2,...,Qp. Nous supposons que la sous-population Qi deffectif ni a pour barycentre le point Gi. Enfin, notons G le barycentre du nuage complet.
Q Q1 Q3

+ + + + + G1 + + + + +
Q2

++ + + G2 + + + + + + + + +

+ ++ ++ +

+ + + G3 + + + + +

Pour mesurer la qualit dun dcoupage en classe, nous allons utiliser une dcomposition de linertie totale dun nuage de point qui ressemble beaucoup la dcomposition de la variance :

81 Pour des donnes qualitatives ayant plus de deux modalits, la distance du chi deux semble plus indique. Cf. Saporta P257

I tot

1 p 1 p 2 = n d (Gi , G) + n 1 ni Inertie(Qi ) n 1 i =1 i i =1 Inertie inter-classes Inertie intra-classes

Lorsquil ny a quune seule classe, linertie inter-classes est nulle, linertie totale est gale linertie intra-classes. Inversement lorsque chaque classe ne contient quun individu, linertie intra-classes est nulle et linertie inter-classes est gale linertie totale. Linertie intra-classe mesure lhomognit des classes. Plus elle est faible, plus les individus sont proches les uns des autres dans les classes donc plus les classes sont homognes. On mesure la qualit dune partition par le rapport doit tre le plus lev possible .
Inertie inter - classes qui Inertie totale

4.

Algorithme
Nous allons partir du dcoupage maximum (un individu par classe), linertie intra-classes est donc nulle, les classes ont une homognit parfaite ! Nous allons chaque tape regrouper les classes les plus proches de faon augmenter le moins possible linertie intra-classes.82 A la dernire tape, nous naurons quune seule classe. Il est vident que le meilleur dcoupage en classe se trouve entre ces deux tapes extrmes. Dans la pratique, nous nous arrtons lorsque nous voyons une augmentation brutale du critre. Lorsque les classes Qi et Qj sont regroupes la diminution dinertie inter-classes ni n j d (Gi , G j ) 2 . A chaque tape de est gale d (Qi , Q j ) = (n 1)(ni + n j ) lalgorithme, nous allons chercher a regrouper les classes qui minimisent cette quantit cest ce quon appelle le critre de Ward.

82 Ou, ce qui revient au mme, diminuer le moins possible linertie inter-classes.

5.
a)

Mise en uvre (Proc CLUSTER)


Syntaxe simplifie PROC CLUSTER METHOD=nom de mthode options ; VAR variables ; BY variable ; RUN ;

Choix de la mthode

SAS connat 11 mthodes diffrentes pour effectuer la classification. AVERAGE, CENTROID, COMPLETE, DENSITY, EML, FLEXIBLE, MCQUITTY, MEDIAN, SINGLE, TWOSTAGE, WARD. Dans lexemple qui nous intresse, nous allons utiliser le critre de Ward.

Les principales options tant

DATA= Nom de fichier de donnes SAS Pour spcifier un nom de fichier de donnes traiter. OUTTREE=Nom de fichier de donnes SAS Pour indiquer un fichier de donnes o SAS mettra les rsultats des calculs de la procdure CLUSTER. Ces rsultats pourront tre rcuprs par la procdure PROC TREE qui permet deffectuer un dcoupage en classes des donnes, de tracer un pseudo dendrogramme83 etc. STANDARD Pour demander SAS de travailler sur les donnes centres rduites. NOTIE Pour demander SAS de ne pas vrifier lexistence d exaequos.84 RSQUARE Pour afficher le R qui est lindice mesurant la qualit de la classification dont nous parlions plus haut (Inertie inter classes/Inertie totale). Cette option est automatiquement active pour METHOD=WARD. SAS affiche galement un R partiel qui est en fait la perte de R chaque tape.85 NOPRINT Supprime laffichage.

83 Pseudo car il faut vraiment beaucoup dimagination pour le reconnatre ! 84 Par dfaut, SAS vrifie sil y a des exaequos dans les distances entre classes ce qui ralentit lexcution de lalgorithme. Cette option supprime cette vrification. 85 Ce R partiel est trs pratique pour dtecter les sauts importants de lindicateur et donc le nombre de classes conserver en final.

SIMPLE Affiche des statistiques de base sur les variables initiales.


b) Le programme Nous allons donc taper le programme suivant :
proc cluster data=pub.acp method=ward standard; var jan fev mar avr mai jun jui aou sep oct nov dec; run;

Les deux mots WARD et STANDARD sont fondamentaux ici bien entendu.

c)

Rsultats SAS donne alors la diagonalisation de la matrice des corrlations.86


Ward's Minimum Variance Cluster Analysis Eigenvalues of the Correlation Matrix 1 2 3 4 5 6 7 8 9 10 11 12 Eigenvalue 9.58178 2.27642 0.07001 0.03967 0.01405 0.00798 0.00605 0.00175 0.00149 0.00049 0.00029 0.00002 Difference 7.30536 2.20640 0.03034 0.02563 0.00606 0.00193 0.00430 0.00025 0.00100 0.00021 0.00027 . Proportion 0.798482 0.189702 0.005835 0.003306 0.001170 0.000665 0.000504 0.000146 0.000124 0.000041 0.000024 0.000002 Cumulative 0.79848 0.98818 0.99402 0.99732 0.99849 0.99916 0.99966 0.99981 0.99993 0.99997 1.00000 1.00000

The data have been standardized to mean 0 and variance 1

Etapes de lalgorithme
Nombre de classes Effectif de la nouvelle classe

Diminution de R chaque tape

Number of Clusters 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Classes runies

--Clusters Joined-OB3 OB7 OB4 CL14 OB9 OB1 CL11 CL13 OB5 OB2 CL9 CL8 CL5 CL4 OB15 OB8 OB6 OB11 OB12 OB14 CL12 OB10 OB13 CL10 CL7 CL6 CL3 CL2

Frequency of New Cluster 2 2 2 3 2 2 5 3 2 3 5 7 10 15

Inertie inter-cl/ Inertie totate.

Semipartial R-Squared 0.000812 0.002052 0.002141 0.003951 0.004746 0.007447 0.013823 0.016475 0.022101 0.035062 0.046949 0.057419 0.130226 0.656796

R-Squared 0.999188 0.997137 0.994996 0.991044 0.986298 0.978851 0.965028 0.948552 0.926452 0.891390 0.844440 0.787021 0.656796 0.000000

Nous partons avec un R 100%. Linertie inter classe est en effet gale linertie totale. Lisons ltape 1 de lalgorithme 87: Les individus les plus proches sont le 3 et le 15. Les classes 3 et 15 sont donc runies pour former une nouvelle classe : CL14 dans laquelle il y a deux individus. Il ny a donc plus que 14 classes. Cette runion diminue le R de 0.000812 pour le placer 0.999188. A ltape 2, ce sont les individus 7 et 8 qui sont runis pour former CL13 etc. Nous voyons clairement un saut brutal de R ltape 13. Le semi partial R passe de 0.05 0.13. Ceci nous confirme dans une partition 3 classes (tape 12) que nous avions cru discerner lors de lACP.

86 Nous avons dj interprt ce type de sortie en ACP. 87 Rappel : A ltape 0, il y a 15 classes, un seul individu par classe.

d)

Partition en classes utilisation de PROC TREE

Pour obtenir une variable contenant les affectations des individus dans les classes, il va falloir demander SAS de crer un fichier de rsultats dans PROC CLUSTER et le rcuprer pour tre traiter par la procdure TREE qui elle mme donnera un fichier avec la classe de chaque individu !88
/*Nous effectuons le decoupage en classes par la methode de Ward*/ PROC CLUSTER DATA=PUB.ACP METHOD=WARD STANDARD OUTTREE=RESULT2; VAR JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC ; RUN; /*On rcupre les resultats prcdents pour construire*/ /* le dcoupage en classes (nclusters=3 prcise que */ /* nous voulons trois classes ici)*/ /* Le COPY effectue la copie des variables jan fev etc.*/ /* dans le fichier de rsultats*/ PROC TREE DATA=RESULT2 OUT=RESULT3 NCLUSTERS=3 NOPRINT; COPY JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC; RUN; /*Nous recalculons les composantes principales pour pouvoir */ /*faire dessiner le premier plan principal en visualisant les 3*/ /*classes calculees ci-dessus*/ PROC PRINCOMP DATA=RESULT3 OUT=RESULT4; VAR JAN FEV MAR AVR MAI JUN JUI AOU SEP OCT NOV DEC; RUN;
/*Nous creons le fichier temporaire annoter qui va nous permettre*/ /* de personnaliser notre graphique */

DATA WORK.ANNOTER; SET RESULT4; X=PRIN1; Y=PRIN2; TEXT=_NAME_; /*CONTIENT LE N D'OBSERVATION*/ SIZE=1; XSYS='2'; YSYS='2'; IF CLUSTER=1 THEN COLOR='BLUE'; /*couleurs differentes selon le groupe*/ IF CLUSTER=2 THEN COLOR='RED'; IF CLUSTER=3 THEN COLOR='CYAN'; LABEL Y='AXE 2' X='AXE 1'; KEEP X Y XSYS YSYS TEXT SIZE CLUSTER COLOR ; RUN; TITLE 'PREMIER PLAN PRINCIPAL'; PROC GPLOT DATA=WORK.ANNOTER; PLOT Y*X=CLUSTER / ANNOTATE=WORK.ANNOTER HREF=0 VREF=0; RUN; QUIT;

Le fichier RESULT4 contient entre autres :


N dobservation (par rapport au fichier initial) _ N 88 La simplicit lgendaire de SAS...

N de classe
C L U

Composantes principales

O B S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

A M E _ OB3 OB15 OB7 OB8 OB4 OB6 OB11 OB9 OB12 OB1 OB14 OB10 OB5 OB13 OB2

J A N 2.6 2.4 5.5 5.6 1.5 2.1 3.4 5.0 4.8 5.6 4.7 7.5 2.4 0.4 6.1

F E V

M A R

A V R

M A I

J U N

J U I

A O U

S E P

O C T

N O V

D E C

S T E R

R I N 1

R I N 2 -0.57244 -0.55571 -0.80070 -0.42059 -1.63071 -1.72759 -0.15104 1.07677 1.61446 0.10559 -0.13151 0.76254 0.57502 -2.09860 3.95451

R I N 3 -0.01846 0.19877 0.34449 0.17704 -0.13283 -0.02220 -0.21079 -0.22045 -0.14715 -0.69639 0.04190 0.19787 0.34381 0.03340 0.11099

3.7 7.5 10.3 13.8 17.3 19.4 19.1 16.2 11.2 6.6 3.6 1 -1.66741 3.4 7.1 9.9 13.6 17.1 19.3 18.8 16.0 11.0 6.6 3.4 1 -2.12684 6.6 10.0 13.0 16.8 20.8 23.3 22.8 19.9 15.0 10.2 6.9 2 4.66885 6.7 9.9 12.8 16.2 20.1 22.7 22.3 19.3 14.6 10.0 6.5 2 4.00667 3.2 7.7 10.6 14.5 17.8 20.1 19.5 16.7 11.4 6.5 2.3 1 -1.47740 3.3 7.7 10.9 14.9 18.5 20.7 20.1 16.9 11.4 6.7 3.1 1 -0.80663 4.1 7.6 10.7 14.3 17.5 19.1 18.7 16.0 11.4 7.1 4.3 1 -1.19983 5.3 8.4 10.8 13.9 17.2 18.8 18.6 16.4 12.2 8.2 5.5 3 -0.27175 5.3 7.9 10.1 13.1 16.2 17.9 17.8 15.7 11.6 7.8 5.4 3 -1.38987 6.6 10.3 12.8 15.8 19.3 20.9 21.0 18.6 13.8 9.1 6.2 2 3.01489 5.6 9.2 11.6 14.9 18.7 20.9 20.9 18.3 13.3 8.6 5.5 2 1.67730 8.5 10.8 13.3 16.7 20.1 22.7 22.5 20.3 16.0 11.5 8.2 2 5.80335 2.9 6.0 8.9 12.4 15.3 17.1 17.1 14.7 10.4 6.1 3.5 1 -4.07384 1.5 5.6 9.8 14.0 17.2 19.0 18.3 15.1 9.5 4.9 1.3 1 -3.96639 5.8 7.8 9.2 11.6 14.4 15.6 16.0 14.7 12.0 9.0 7.0 3 -2.19110

ainsi que les autres composantes principales. Nous voyons ainsi que la premire classe contient les individus 3,15,11,4,6,5 et 13 etc. Nous pouvons maintenant visualiser le dcoupage en classes sur le premier plan principal.

Ce qui correspond bien ce que nous avions trouv en ACP.

6.

Exercice
Le fichier Banque (rpertoire PUBLIC) contient les informations suivantes concernant 50 clients de la banque SGCM. SOLD: Solde moyen du compte courant (en F) CHEQ: Montant moyen des chques tirs lors du dernier semestre (en F.) NDEC: Nombre de mois avec dcouvert sur le compte courant lors de l'anne prcdente. MDEC: Montant cumul des dcouverts sur le compte courant lors de l'anne prcdente(en KF) NBPR: Nombre de produits de la banque utiliss en plus du compte courant. NEMP: Nombre d'emprunts divers effectus lors des cinq dernires annes. MEMP: Montant total des emprunts effectus lors des cinq dernires annes (en KF) VADD Pourcentage de variation des dpts d'pargne (pour les douze derniers mois) DEPO: Montant total des dpts effectus l'anne prcdente sur les comptes d'pargne (en KF) RETR: Montant total des retraits effectus sur les comptes d'pargne l'anne prcdente (en KF) VARR: Pourcentage de variation des retraits sur les comptes d'pargne (pour les 12 derniers mois) TAIL: Taille du mnage du titulaire du compte courant AGEC: Age du client titulaire du compte courant.

Problme :

La banque souhaite dfinir des types homognes de clients afin de pouvoir laborer des politiques diffrencies pour chacun d'eux.
A vous...

1) Effectuez une ACP norme sur les variables bancaires (les 11 premires). Combien de composantes allez-vous retenir a priori ? 2) Calculer les corrlations entre les composantes principales retenues et les variables du fichier, en dduire une interprtation bancaire de ces composantes principales. 3) Calculez les contributions des individus aux axes. Pourquoi ne peut-on pas utiliser le 4eme axe pour une interprtation globale ? 4) Avec les lments que vous avez, identifiez les grands types de clients de cette banque. 5) Confirmez votre typologie par une classification ascendante hirarchique.

N.

CORRESP Analyse des correspondances simples

Cest une mthode permettant danalyser la liaison entre deux variables qualitatives A et B avec respectivement p et q modalits. Elle permet daffiner le test du chi2 dindpendance que vous connaissez bien. On note n le nb total dindividus.

Exemple : Tableau de la rpartition de 10000 (=n) tudiants en fonction de la CSP de leur pre en 1975-1976.
Droit Exploitant Salari ag. Patron Cadre sup. Ca. Moy. Employ Ouvrier Pers. serv. Autres Total 80 6 168 470 236 145 166 16 305 1592 Eco Lettres Sciences Mdecine Pharma Pluri IUT Total 36 134 99 65 28 11 58 511 2 15 6 4 1 1 4 39 74 312 137 208 53 21 62 1035 191 806 400 876 164 45 79 3031 99 493 264 281 56 36 87 1552 52 281 133 135 30 20 54 850 64 401 193 127 23 28 129 1131 6 27 11 8 2 2 8 80 115 624 247 301 47 42 90 1771 639 3093 1490 2005 404 206 571 10000

Nous tudions donc ici une population de 10000 personnes sur lesquelles agissent deux variables qualitatives : A : CSP Pre et B : Type dtude. La variable A comporte 9 modalits (p=9) et B 8 modalits (q=8).
Plan dtude

Du tableau prcdent, nous pouvons tirer trois tableaux de frquences : Celui des frquences totales, des frquences lignes et des frquences colonnes. Nous pourrons ensuite, laide dune ACP sur les tableaux de frquences lignes et dune autre sur les frquences colonnes, synthtiser la liaison entre nos variables. Du tableau de contingence prcdent, nous pouvons dduire le tableau de frquences en divisant les effectifs par 10000.
Droit Eco Lettres Sciences Mdecine Pharma Pluri IUT Total Exploitant 0,0080 0,0036 0,0134 0,0099 0,0065 0,0028 0,0011 0,0058 0,0511 Salari ag. 0,0006 0,0002 0,0015 0,0006 0,0004 0,0001 0,0001 0,0004 0,0039 Patron 0,0168 0,0074 0,0312 0,0137 0,0208 0,0053 0,0021 0,0062 0,1035 Cadre sup. 0,0470 0,0191 0,0806 0,0400 0,0876 0,0164 0,0045 0,0079 0,3031 Ca. Moy. 0,0236 0,0099 0,0493 0,0264 0,0281 0,0056 0,0036 0,0087 0,1552 Employ 0,0145 0,0052 0,0281 0,0133 0,0135 0,0030 0,0020 0,0054 0,0850 Ouvrier 0,0166 0,0064 0,0401 0,0193 0,0127 0,0023 0,0028 0,0129 0,1131 Pers. serv. 0,0016 0,0006 0,0027 0,0011 0,0008 0,0002 0,0002 0,0008 0,0080 Autres 0,0305 0,0115 0,0624 0,0247 0,0301 0,0047 0,0042 0,0090 0,1771 Total 0,1592 0,0639 0,3093 0,1490 0,2005 0,0404 0,0206 0,0571 1

On peut voir que 5,11% des tudiants de lchantillon ont un pre exploitant et que 20% font des tudes de mdecine. On peut galement lire que 1,64% des individus ont un pre cadre sup. et font des tudes de mdecine.

1.
a)

tude des profils lignes


Tableau des profils lignes

Nous pouvons diviser chaque ligne par le total correspondant pour obtenir des frquences lignes 89:
Exploitant Salari ag. Patron Cadre sup. Ca. Moy. Employ Ouvrier Pers. serv. Autres Droit Eco Lettres Sciences Mdecine Pharma Pluri IUT Total 0,1566 0,0705 0,2622 0,1937 0,1272 0,0548 0,0215 0,1135 0,1538 0,0513 0,3846 0,1538 0,1026 0,0256 0,0256 0,1026 0,1623 0,0715 0,3014 0,1324 0,2010 0,0512 0,0203 0,0599 0,1551 0,0630 0,2659 0,1320 0,2890 0,0541 0,0148 0,0261 0,1521 0,0638 0,3177 0,1701 0,1811 0,0361 0,0232 0,0561 0,1706 0,0612 0,3306 0,1565 0,1588 0,0353 0,0235 0,0635 0,1468 0,0566 0,3546 0,1706 0,1123 0,0203 0,0248 0,1141 0,2000 0,0750 0,3375 0,1375 0,1000 0,0250 0,0250 0,1000 0,1722 0,0649 0,3523 0,1395 0,1700 0,0265 0,0237 0,0508 1 1 1 1 1 1 1 1 1

Ces nombres correspondent en fait les probabilits conditionnelles sachant la CSP. Par exemple, pour notre chantillon, la probabilit pour un tudiant de faire des tudes de mdecine sachant que son pre est cadre sup. est de 28.9% , elle nest que de 10% avec un pre ouvrier. Nous voyons donc apparatre une liaison entre les deux variables.90 Nous pouvons donc analyser la liaison entre les deux variables qualitatives CSP et ETUDE en tudiants les diffrences entre les profils lignes. Il y a indpendance parfaite entre les deux si tous les profils lignes sont identiques.91 Sous SAS, nous pouvons obtenir les profils lignes en utilisant la procdure FREQ ou en utilisant la procdure CORRESP avec loption RP (=Row Profile).
PROC CORRESP DATA=MOI.ETUD RP SHORT; VAR DRO ECO LET SCI MED PHA PLU IUT; ID CSP; RUN;

qui nous donne entre autres :


erudecorP sisylanA ecnednopserroC ehT
89 Tous les calculs suivants (Profils lignes, colonnes), effectifs observs, thoriques (si indpendance parfaite), chi2 peuvent tre obtenus en dans la commande Stat/Table/Simple correspondance Analysis/ Indiquer les colonnes du tableau de contingence dans Column of contingency table puis cliquez sur RESULT vous pouvez alors choisir Row Profile (profil ligne), Column profile, expected (effectifs attendus...) 90 Nous pouvons quantifier cette liaison en calculant les contributions au chi2 (cf. Test du chi2 dindpendance) 91 Cest dire que toutes les lignes du tableau prcdent sont gales. Ainsi, pour notre chantillon, la probabilit de faire mdecine est la mme pour toutes les CSP. Ici, ce nest visiblement pas le cas.

b)

ACP sur le tableau des profils lignes

Chaque ligne du tableau prcdent reprsente une CSP. Chaque CSP peut donc tre considre comme un point de Rq. On peut montrer que linertie92 du nuage de points ainsi form est gale /n o est gale la statistique du test du chi2 dindpendance que vous connaissez bien. Dans le cas dune indpendance parfaite entre les deux variables, le est nul, tous les points reprsentant les profils lignes sont confondus. Linertie du nuage est nulle, le nuage tant rduit un point. Comme en ACP classique, nous allons chercher des axes principaux sur lesquels nous allons projeter notre nuage en conservant le mieux possible linertie initiale. Sous SAS, il suffit de taper le programme suivant :
PROC CORRESP DATA=MOI.ETUD RP; VAR DRO ECO LET SCI MED PHA PLU IUT; ID CSP; RUN;

92 Cest la somme des carrs des distances des points du nuage au barycentre du nuage. La distance employe ici est la distance du chi2.

D(X,Y)=(xj-yj)/f.j

918050.0 000001.0 850411.0 925360.0 750650.0 460620.0 309950.0 465201.0 305311.0 TUI

517320.0 000520.0 757420.0 925320.0 691320.0 748410.0 092020.0 146520.0 625120.0 ULP

935620.0 000520.0 633020.0 492530.0 280630.0 801450.0 802150.0 146520.0 597450.0 AHP

069961.0 000001.0 092211.0 428851.0 750181.0 410982.0 669002.0 465201.0 202721.0 DEM

964931.0 005731.0 546071.0 174651.0 301071.0 079131.0 763231.0 648351.0 837391.0 ICS seliforP

343253.0 005733.0 355453.0 885033.0 556713.0 919562.0 944103.0 516483.0 132262.0 TEL woR

539460.0 000570.0 785650.0 671160.0 987360.0 610360.0 894170.0 282150.0 054070.0 OCE

912271.0 sertuA 000002.0 ecivres .sreP 377641.0 reirvuO 885071.0 yolpmE 260251.0 neyoM erdaC 460551.0 .pus erdaC 913261.0 nortaP 648351.0 .ga iralaS 655651.0 tnatiolpxE ORD

(1)

Nombre daxes retenir

SAS donne :
erudecorP sisylanA ecnednopserroC ehT

Linertie totale est gale 0.0475=474668/10000 (=474668) Nous voyons que 95% de linertie du nuage initial des Profil lignes est expliqu par les deux premiers axes dont 83.7% pour le premier axe. Il est clair que le premier axe est essentiel. Nous conserverons aussi le 2eme axe mais ne nous faisons pas trop dillusions sur lui. SAS donne ensuite les contributions des CSP la construction des axes et dautres statistiques fort intressantes :

%00.0 %11.0 %82.0 * %20.2 * %83.2 *** %94.11 ************************* %27.38 ---+----+----+----+----+---58 86 15 43 71 stnecreP

)65 = modeerF fo seergeD( 866.474 ------110.0 635.0 233.1 406.9 792.11 715.45 273.793

noitisopmoceD erauqS-ihC dna aitrenI serauqS saitrenI seulaV -ihC lapicnirP ralugniS 74740.0 ------00000.0 50000.0 31000.0 69000.0 31100.0 54500.0 47930.0 30100.0 23700.0 45110.0 99030.0 16330.0 48370.0 43991.0

93 Remarquons quelles sont de signe oppos aux coordonnes de Minitab. Ceci vient du choix des vecteurs propres dans la diagonalisation

625527.0 075452.0 sertuA 852400.0 505508.0 ecivres .sreP 985700.0 881059.0 reirvuO 802380.0 499908.0 yolpmE 630120.0 082493.0 neyoM erdaC 290800.0 550789.0 .pus erdaC 489641.0 361460.0 nortaP 837900.0 436139.0 .ga iralaS 542074.0 591794.0 tnatiolpxE 2miD 1miD stnioP woR eht rof senisoC derauqS 351034.0 856000.0 775810.0 051710.0 037300.0 156130.0 798610.0 977000.0 604084.0 2miD stnioP woR eht rof 490860.0 047710.0 361182.0 276320.0 363020.0 242944.0 302310.0 881900.0 533711.0 aitrenI 707020.0 sertuA 070710.0 ecivres .sreP 521913.0 reirvuO 409220.0 yolpmE 095900.0 neyoM erdaC 186925.0 .pus erdaC 210100.0 nortaP 522010.0 .ga iralaS 686960.0 tnatiolpxE 1miD aitrenI ot snoitubirtnoC laitraP 690089.0 sertuA 367908.0 ecivres .sreP 777759.0 reirvuO 202398.0 yolpmE 613514.0 neyoM erdaC 741599.0 .pus erdaC 841112.0 nortaP 273149.0 .ga iralaS 044769.0 tnatiolpxE ytilauQ scitsitatS yrammuS

001771.0 000800.0 001311.0 000580.0 002551.0 001303.0 005301.0 009300.0 001150.0 ssaM stnioP woR eht rof

170511.171120.429920.0 661330.644110.068320.0 338920.0 999230.193622.0 2miD

261860.0 381192.0 848433.0 774301.0 355940.0 915362.117910.877223.0 887232.0 1miD

sertuA ecivres .sreP reirvuO yolpmE neyoM erdaC .pus erdaC nortaP .ga iralaS tnatiolpxE 39setanidrooC woR

et cela ne change rien au rsultat final.

Lgende : Minitab SAS Qual Quality Mass Mass Inert Inertia

Interprtation Qualit globale de reprsentation (somme des cos carrs) % dindividus ayant choisi la modalit ( f i,. )

Coord Corr

Coordinates Squared cosine Partial contribution to inertia

Contr

Part dinertie totale explique par la modalit. coord (mod i sur axe j) 2 j ( f i ,. ) 2 / n Coordonne de la modalit sur laxe. Qualit de reprsentation de lindividu sur laxe. (Cosinus carr de langle entre lindividu et laxe). Plus ce nombre est proche de 1 meilleure est cette qualit. Part dinertie de laxe explique par la modalit. Cest une quantit essentielle pour linterprtation des axes. f i ,. (= coord(modalit i sur axe j) ) vpj=valeur propre axe j. vp j

(2)

Etude de laxe 1 (Component 1)

Comme nous lavons dit, il conserve 83,7% de linertie initiale. Il est donc essentiel. Pour interprter laxe 1, on va chercher les individus ayant une forte contribution laxe 1 et regarder le signe de leur coordonne sur laxe.
Individus forte contribution sur Individus forte contribution sur laxe 1 avec une coordonne ngative. laxe 1 avec une coordonne positive. Ouvrier (31%) Cadre sup.(53%)

Laxe 1 oppose donc la CSP Ouvrier la CSP Cadre Sup. Vous pouvez linterprter facilement.94

94 (Au besoin aidez vous du graphique de la page suivante en utilisant uniquement les points ayant une bonne qualit de reprsentation (Corr, ou squared cosines)).

;TIUQ ;NUR ;0=FERV 0=FERH EMARF RROC=ETATONNA /1=X*Y TOLP ;ENON=V 1LOBMYS ;RROC=ATAD TOLPG CORP /*ser etuah euqihparg nu riova ruop TOLPG etiusne snocnal suoN*/ ;NUR ;EZIS SYSY SYSX TXET Y X PEEK ;'1 MID'=X '2 MID'=Y LEBAL ;1=EZIS /*seirogetac sed smon sel tneitnoc PSC*/ ;PSC=TXET ;'2'=SYSY ;'2'=SYSX ;1MID=X /*latnoziroh 1 exA ,lacitrev 2 exA*/ ;2MID=Y /*PSC sel euq snonerp en suoN*/ ;'SBO'=_EPYT_ FI ;RROC TES ;RROC ATAD /*euqihparg erton retonna ruop rroc.krow ed noitacifidoM*/ ;NUR ;PSC DI ;TUI ULP AHP DEM ICS TEL OCE ORD RAV ;RROC=CTUO DUTE.IOM=ATAD PSERROC CORP /*rroc.kroW snad statlusr sel tnakcots ne CFAl ecnaler nO*/

95 La difficult vient du fait que linertie conserve par cet axe est faible.

(3)

(4)

Quel pourcentage dinertie conserve-t-il ? Faites ltude prcdente pour laxe 2.

Pour SAS, il faut taper : Peut-on trouver une interprtation ici ?95 Vous pourrez vous aider du graphique suivant.
Individus forte contribution sur Individus forte contribution sur laxe 2 avec une coordonne ngative. laxe 2 avec une coordonne positive. Etude de laxe 2 (Component 2) Projection du nuage dans le plan des deux premiers axes.

Nous pouvons utiliser le graphique prcdent uniquement avec les points bien reprsents. (QUAL(ou Squared cosine) important, QUAL=CORR axe1 + CORR axe 2).96 Deux points (bien reprsents) et proches sur ce graphique signifie que les modalits correspondantes ont des profils qui se ressemblent ou encore que les barycentre des individus ayant choisis ces modalits sont proches. Il est maintenant ais dinterprter les deux axes relativement aux CSP. Nous allons maintenant analyser la liaison en privilgiant la variable Type dtude.

96 Ici seuls Patron et Cadre Moyen sont mal reprsents. Il ne faut donc pas les inclure dans une interprtation.

2.
a)

Etude des profils colonnes


Tableau des profils colonnes Nous pouvons diviser chaque ligne par le total correspondant pour obtenir des frquences lignes :

Dans le tableau prcdent nous avons privilgi les CSP. Nous allons maintenant nous intresser la variable ETUDE : De la mme faon, nous pouvons construire le tableau des frquences colonnes en divisant chaque lment par la somme de sa colonne.
Droit Eco. Lettres Sciences Mdecine Pharma Pluri IUT 0,0503 0,0563 0,0433 0,0664 0,0324 0,0693 0,0534 0,1016 0,0038 0,0031 0,0048 0,0040 0,0020 0,0025 0,0049 0,0070 0,1055 0,1158 0,1009 0,0919 0,1037 0,1312 0,1019 0,1086 0,2952 0,2989 0,2606 0,2685 0,4369 0,4059 0,2184 0,1384 0,1482 0,1549 0,1594 0,1772 0,1401 0,1386 0,1748 0,1524 0,0911 0,0814 0,0909 0,0893 0,0673 0,0743 0,0971 0,0946 0,1043 0,1002 0,1296 0,1295 0,0633 0,0569 0,1359 0,2259 0,0101 0,0094 0,0087 0,0074 0,0040 0,0050 0,0097 0,0140 0,1916 0,1800 0,2017 0,1658 0,1501 0,1163 0,2039 0,1576 1,0000 1,0000 1,0000 1,0000 1,0000 1,0000 1,0000 1,0000

Exploitant Salari ag. Patron Cadre sup. Ca. Moy. Employ Ouvrier Pers. serv. Autres Total

Sous SAS, il suffit de taper le programme suivant pour obtenir ce tableau. (CP=column profile)
PROC CORRESP DATA=MOI.ETUD CP; VAR DRO ECO LET SCI MED PHA PLU IUT; ID CSP; RUN;

Ainsi, les chiffres prcdents correspondent aux probabilits conditionnelles sachant le type dtude. Par exemple, 9% des tudiants en Droit ont un pre Employ. Comme prcdemment, sil y a indpendance parfaite entre les deux variables, les profils colonnes doivent tous tre gaux.97 Dans ce tableau ce sont les types dtudes qui sont mis en avant.

97 Dans ce cas, on montre que les profils lignes sont eux aussi gaux.

736311.0 464768.0 TUI 620601.0 879548.0 ULP 414023.0 288506.0 AHP 380400.0 373289.0 DEM 637451.0 466855.0 ICS 953793.0 263785.0 TEL 904230.0 678130.0 OCE 998213.0 496300.0 ORD 2miD 1miD stnioP nmuloC eht rof senisoC derauqS 873213.0 051723.0 TUI 709410.0 813610.0 ULP 110342.0 340360.0 AHP 110510.0 145594.0 DEM 031960.0 242430.0 ICS 648213.0 444360.0 TEL 075100.0 212000.0 OCE 741130.0 050000.0 ORD 2miD 1miD stnioP nmuloC eht rof aitrenI ot snoitubirtnoC laitraP 027513.0 001750.0 101189.0 TUI 841610.0 006020.0 400259.0 ULP 701780.0 004040.0 692629.0 AHP 092224.0 005002.0 554689.0 DEM 213150.0 000941.0 004317.0 ICS 524090.0 003903.0 127489.0 TEL 665500.0 009360.0 682460.0 OCE 334110.0 002951.0 395613.0 ORD aitrenI ssaM ytilauQ stnioP nmuloC eht rof scitsitatS yrammuS 896271.0 941774.0 908260.714771.0 780181.0 510942.302020.0 783313.392050.0 265590.0 852470.282090.0 575110.0 084110.956230.845300.0 2miD 1miD setanidrooC nmuloC TUI ULP AHP DEM ICS TEL OCE ORD

b)

(1)

Comme prcdemment, nous allons effectuer une ACP sur le tableau des profils colonnes. Nous pouvons montrer le rsultat suivant : Les valeurs propres obtenues sont les mmes, de plus, les axes principaux des deux ACP sont en relation directe. Nous pourrons donc ensuite superposer les deux analyses.
ACP sur les tableaux de profils colonnes

Etude de laxe 1 (Component 1)

Pour interprter laxe 1, on va chercher les individus ayant une forte contribution98 laxe 1 et regarder le signe de leur coordonne sur laxe. Compltez le tableau suivant :
Individus forte contribution sur Individus forte contribution sur laxe 1 avec une coordonne ngative. laxe 1 avec une coordonne positive.

Interprtez laxe 1 99:

(2)

Etude de laxe 2 (Component 2)

De mme essayez dinterprter laxe 2 sans perdre de vue son faible pourcentage dinertie explique. Compltez le tableau suivant :
Individus forte contribution sur Individus forte contribution sur laxe 2 avec une coordonne ngative. laxe 2 avec une coordonne positive.

Interprtez laxe 2:

98 Lorsque certains individus ont une trop forte contribution, on recommence ltude en plaant ces individus en supplmentaires. Ils ne sont plus utiliss dans les calculs mais peuvent tre visualiss sur le graphique et peuvent tre utilis pour linterprtation. 99 En vous servant aussi de la reprsentation graphique des pages suivantes pour les individus bien reprsents par cet axe (CORR important)

(3)

Projection du nuage dans le plan des deux premiers axes.

Sous SAS, il suffit de modifier la ligne IF _TYPE_=OBS par IF _TYPE_=VAR.


PROC CORRESP DATA=MOI.ETUD OUTC=CORR; VAR DRO ECO LET SCI MED PHA PLU IUT; ID CSP; RUN; DATA CORR; SET CORR; IF _TYPE_='VAR'; Y=DIM2; X=DIM1; XSYS='2'; YSYS='2'; TEXT=CSP; SIZE=1; LABEL Y='DIM 2' X='DIM 1'; KEEP X Y TEXT XSYS YSYS SIZE; RUN; PROC GPLOT DATA=CORR; SYMBOL1 V=NONE; PLOT Y*X=1/ ANNOTATE=CORR FRAME HREF=0 VREF=0; RUN; QUIT;

3.

Lien entre les deux analyses

Les valeurs propres des deux ACP prcdentes sont les mmes comme nous lavons dj dit. On peut montrer que les axes principaux de lune sont les composantes principales de lautre un facteur multiplicatif prs. Ceci nous autorise superposer les deux reprsentations graphiques prcdentes mais en restant trs prudent dans linterprtation dun tel graphique. Pour SAS, il suffit de supprimer la ligne IF _TYPE_= du programme prcdent.

ATTENTION

Dans le graphique prcdent, nous avons superpos des individus qui nappartiennent pas au mme espace. En consquence, il est dangereux dinterprter la proximit entre deux points (mme bien reprsents100) associs deux variables distinctes101. Par contre, il est possible dinterprter la proximit entre deux points (bien reprsents102) associs une mme variable
Exemple : Les profils Salari agricole et personnel de service sont proches ce qui veut dire que les barycentres des tudiants dont le pre est salari agricole est proche du barycentre des tudiants dont le pre est Personnel de service . Par contre la proximit de Cadre et de Mdecine ne peut tre utilise ; tout au moins directement103.
100 Avec un QUAL lev. 101 Tenenhauss utilise les reprsentations barycentriques pour interprter ces proximits. Ceci dpasse le cadre de ce cours. 102 Idem 103 En fait, on peut relier ces deux choses en passant par lintermdiaire de laxe principal (qui est directement li entre les deux ACP).

Par contre nous pouvons maintenant donner une interprtation complte de laxe 1 et de laxe 2.

Brve synthse des analyses des profils lignes et colonnes

Le premier axe oppose les tudes de mdecine, caractristiques des fils de professions librales et cadres sup, aux tudes en IUT, caractristiques des fils douvrier. Le deuxime axe oppose les fils dexploitant agricole ceux de la CSP Autres et les tudes de pharmacie et dIUT aux tudes de lettres. (Saporta p208)

4.

Syntaxe de PROC CORRESP sous SAS

PROC CORRESP options ; TABLES variables lignes variables colonnes (Donnes brutes) ou VAR Variables ; (Donnes en tableau de contingence) ID variable ; (variable identificatrice104 avec VAR seulement) SUPPLEMENTARY variables ; (Variables supplmentaires.) WEIGHT variable ; Sert spcifier les poids des individus. Les poids ngatifs
dsignent des individus supplmentaires.

BY Variables ; RUN ; Les principales options tant : Fichiers dentre sortie

idem...

DATA= nom de fichier Nom du fichier de donnes contenant les donnes sous forme brute ou tabulaire. OUTC= nom de fichier Nom du fichier o seront stocks les rsultats de lanalyse en plus du fichier original. (Coordonnes des modalits etc.) OUTF= nom de fichier Nom du fichier o seront stocks les frquences etc.
Options de calcul

DIMENS=nombre Nombre de dimensions ou axes calculer. 2 par dfaut. MCA Pour effectuer un analyse des correspondances multiples.
Options daffichage

ALL quivalent OBSERVED, RP,CP, CELLCHI2, EXPECTED, DEVIATION CELLCHI2 Contribution au chi2 de chaque cellule.
104 Permet de mettre des tiquettes aux lignes du tableau de donnes.

CP Profils colonnes DEVIATION Diffrence entre les valeurs prdites et observes. EXPECTED Valeurs prdites (en cas dindpendance totale entre les deux variables) NOCOLUMN Pas daffichage des coordonnes des colonnes. NOPRINT Pas daffichage NOROW Pas daffichage des lignes. OBSERVED Valeurs observes. RP Profils colonnes SHORT Supprime laffichage des statistiques sur les points et coordonnes.

O.

CORRESP Analyse des Correspondance Multiples


Dans le chapitre prcdent, nous avons vu comment analyser la liaison entre deux variables qualitatives en utilisant lanalyse des correspondances simples. Lanalyse des correspondances multiples tend ltude prcdente ltude de p variables qualitatives. 105 Une ACM est une analyse factorielle des correspondance du tableau disjonctif complet.

1.

Tableau disjonctif complet


Ce tableau est un codage particulier qui permet de navoir dans chaque colonne quune modalit et une seule des variables tudier. Il y a donc autant de colonnes que de modalit. Chaque colonne nest compose que de 0 ou de 1. Prenons les donnes suivantes :
Sexe 1 2 1 1 2 Groupe A B A C C Profil Bon Bon Mauvais Moyen Moyen

individu 1 individu 2 individu 3 individu 4 individu 5

Nous avons 5 individus sur lesquels agissent 3 variables Sexe (2 modalits) ; Groupe(3 modalits) et Profil (3 modalits). Nous allons recoder le tableau prcdent de la faon suivante :
Individu Sexe=1 Sexe=2 Groupe A Groupe B Groupe C Bon profil Profil moyen Mauvais profil

1 2 3 4 5

1 0 1 1 0

0 1 0 0 1

1 0 1 0 0

0 1 0 0 0

0 0 0 1 1

1 1 0 0 0

0 0 0 1 1

0 0 1 0 0

Chaque variable a t dcompose en utilisant la fonction indicatrice de ses modalits. Cest le tableau disjonctif complet (TDC en abrg) Chaque colonne de notre tableau reprsente donc une modalit (ou catgorie) et chaque ligne un individu. Effectuer une ACM consiste effectuer une ACS sur le tableau disjonctif complet.

105 Mathmatiquement parlant, lACM rsume p variables qualitatives par des variables numriques de variance maximale et les plus corrles possibles (au sens du rapport de corrlation) avec les variables initiales.

2.

Exemple
Nous allons tudier une population de 27 chiens sur lesquels agissent 7 variables : Taille (-,+ ou ++) Poids (-,+ ou ++) (1, 2 ou 3) Vlocit (-,+ ou ++) (1, 2 ou 3) Intelligence (-,+ ou ++) (1, 2 ou 3) Affection (Oui (1)ou Non(0)) Agressivit (Oui(1) ou Non(0)) Fonction (Compagnie, Chasse, Utilit)

Nom BEAUCERON BASSET BERGER_ALLEMAND BOXER BULL-DOG BULL-MASTIFF CANICHE CHIHUAHUA COKER COLLEY DALMATIEN DOBERMANN DOGUE_ALLEMAND EPAGNEUL_BRETON EPAGNEUL_FRANCAIS FOX-HOUND FOX-TERRIER GRAND_BLEU_DE_GA SCOG LABRADOR LEVRIER MASTIFF PEKINOIS POINTER SAINT-BERNARD SETTER TECKEL TERRE-NEUVE

Taille Taille3 Taille1 Taille3 Taille2 Taille1 Taille3 Taille1 Taille1 Taille2 Taille3 Taille2 Taille3 Taille3 Taille2 Taille3 Taille3 Taille1 Taille3 Taille2 Taille3 Taille3 Taille1 Taille3 Taille3 Taille3 Taille1 Taille3

Poids Poids2 Poids1 Poids2 Poids2 Poids1 Poids3 Poids1 Poids1 Poids1 Poids2 Poids2 Poids2 Poids3 Poids2 Poids2 Poids2 Poids1 Poids2 Poids2 Poids2 Poids3 Poids1 Poids2 Poids3 Poids2 Poids1 Poids3

Vlocit vel3 vel1 vel3 vel2 vel1 vel1 vel2 vel1 vel1 vel3 vel2 vel3 vel3 vel2 vel2 vel3 vel2 vel2 vel2 vel3 vel1 vel1 vel3 vel1 vel3 vel1 vel1

Intelligence int2 int1 int3 int2 int2 int3 int3 int1 int2 int2 int2 int3 int1 int3 int2 int1 int2 int1 int2 int1 int1 int1 int3 int2 int2 int2 int2

Affection oui non oui oui oui non oui oui oui oui oui non non oui non non oui non oui non non oui non non non oui non

Agressivit oui oui oui oui non oui non non oui non non oui oui non non oui oui oui non non oui non non oui non non non

Utilit Utile Chasse Utile Compagnie Compagnie Utile Compagnie Compagnie Compagnie Compagnie Compagnie Utile Utile Chasse Chasse Chasse Compagnie Chasse Chasse Chasse Utile Compagnie Chasse Utile Chasse Compagnie Utile

Nous allons effectuer une ACM sur 6 variables actives (les 6 premires). Ceci revient effectuer une ACP sur le tableau disjonctif complet.106

106 La septime variable (illustrative) peut tre mise en variable supplmentaire . Cela permet de lutiliser dans linterprtation sans quelle ne joue de rle dans la dtermination des axes.

%64.0 * %14.1 ** %47.2 **** %98.4 ****** %04.7 ******** %10.9 ******** %54.9 *********** %66.21 ******************* %80.32 ************************ %09.82 ---+----+----+----+----+---03 42 81 21 6 stnecreP

)522 = modeerF fo seergeD( 174.284 ------332.2 518.6 122.31 285.32 296.53 164.34 906.54 860.16 573.111 714.931

76666.1 ------17700.0 45320.0 76540.0 64180.0 03321.0 31051.0 55751.0 59012.0 47483.0 16184.0

28780.0 34351.0 07312.0 24582.0 31153.0 74783.0 39693.0 03954.0 72026.0 89396.0

serauqS saitrenI seulaV -ihC lapicnirP ralugniS

noitisopmoceD erauqS-ihC dna aitrenI erudecorP sisylanA ecnednopserroC ehT

Nous obtenons les rsultats suivants :


proc corresp data=pub.chiens mca obs all; tables taille -- agressiv; run;

Pour SAS, on peut lancer la programme suivant :

a)

Nombre de composantes retenir Diffrence essentielle entre lAFC simple et lACM :

Contrairement au cas prcdent (AFC), linertie totale du nuage nest plus lie la structure de la liaison entre les variables. On peut montrer quelle est gale a/b-1 o a est le nombre de modalit des variables actives et p le nombre de variables actives. Ici, nous avons 6 variables actives dfinissant 3+3+3+3+2+2=16 modalits. Do I=16/6-11.667 Il en rsulte que les valeurs propres et les pourcentages dinertie expliqus par les axes nont quun intrt relatif en ACM. Pour dterminer le nombre de composantes retenir, nous pouvons utiliser la rgle suivante : La moyenne des valeurs propres vaut 1/p o p est le nombre de variables actives. Comme en ACP, une mthode possible pour choisir le nombre de composantes est de ne conserver que les valeurs propres suprieures 1/p. Ici, nous nen retiendrions que trois au maximum (1/60.167). Toutefois, nous remarquons une chute brutale de linertie aprs la deuxime, nous nous contenterons donc de deux composantes.

107 On remarque quelles sont de signes opposs celles de Minitab ce qui na aucune importance sur linterprtation finale. Ceci est du au

500610.0 519701.0 +fa 319380.0 294210.0 -tni 423020.0 436800.0 ++tni 100710.0 247220.0 +tni 471571.0 021310.0 -lev 469910.0 408190.0 ++lev 171101.0 963730.0 +lev 222780.0 401041.0 -sdioP 980670.0 040660.0 ++sdioP 126051.0 737610.0 +sdioP 668590.0 879521.0 -at 201000.0 585431.0 ++at 707121.0 124640.0 +at 2miD 1miD stnioP nmuloC eht rof aitrenI ot snoitubirtnoC laitraP 841840.0 024680.0 165312.0 -ga 258150.0 742080.0 165312.0 +ga 258150.0 742080.0 293427.0 -fa 841840.0 024680.0 293427.0 +fa 073070.0 383940.0 665623.0 -tni 877770.0 730730.0 893290.0 ++tni 258150.0 742080.0 824202.0 +tni 369260.0 827160.0 854207.0 -lev 766660.0 655550.0 150764.0 ++lev 073070.0 383940.0 723584.0 +lev 073070.0 383940.0 734168.0 -sdioP 184180.0 468030.0 867944.0 ++sdioP 841840.0 024680.0 685228.0 +sdioP 470470.0 012340.0 791097.0 -at 444440.0 395290.0 165578.0 ++at 184180.0 468030.0 824905.0 +at aitrenI ssaM ytilauQ stnioP nmuloC eht rof scitsitatS yrammuS

52491.017004.0 -ga 02902.0 45134.0+ga 74782.0 51538.0-fa 49662.005577.0 +fa 55808.0 50943.0-tni 84954.070533.0++tni 05582.044963.0 +tni 09440.1 49913.0 -lev 38173.001298.0++lev 18788.096306.0 +lev 43428.0 29861.1 -sdioP 09379.0 31510.1++sdioP 88818.014503.0+sdioP 09329.0 69481.1 -at 85020.086638.0++at 27132.190158.0 +at 2miD 1miD 701setanidrooC nmuloC

choix des vecteurs propres.

b)

Interprtation des axes

Lgende : Minitab SAS Qual Quality Mass Inert Mass Inertia

Interprtation Qualit globale de reprsentation (somme des cos carrs) % dindividus ayant choisi la modalit ( f i,. )108

Part dinertie totale explique par la modalit. coord (mod i sur axe j) 2 ) inertie totale Voir note109 Coordonne de la modalit sur laxe. Qualit de reprsentation de lindividu sur laxe. (Cosinus carr de langle entre lindividu et laxe). Plus ce nombre est proche de 1 meilleure est cette qualit. Part dinertie de laxe explique par la modalit. Cest une quantit essentielle pour linterprtation des axes. f i ,. (= coord(modalit i sur axe j) ) vpj=valeur propre vp j axe j. ( f i ,.
j

Coord Corr

Coordinates Squared cosine

Contr

Partial contribution to inertia

108 Permet de dtecter, entre autres, les modalits rares. Ces dernires peuvent jouer un rle excessif dans la construction des axes. Voir note suivante. 109 Linertie engendre par une modalit est dautant plus grande que cette modalit est rare (Mass petit). Il faut donc tre trs mfiant envers les modalits rares qui risquent de jouer un rle excessif dans la construction des axes. Une solution consiste a donner le statut de variable supplmentaires aux variables possdant des modalits trop rares ; il est aussi possible deffectuer des recodages.

674800.0 821900.0 632710.0 736040.0 736040.0 637670.0 637670.0 862572.0 123060.0 096570.0 542246.0 031960.0 978133.0 421682.0 465512.0 931227.0 557892.0 925000.0 308443.0 2miD

429271.0 -ga 429271.0 +ga 656746.0 -fa 656746.0 +fa 892150.0 -tni 770230.0 ++tni 937621.0 +tni 312060.0 -lev 129793.0 ++lev 744351.0 +lev 313575.0 -sdioP 402432.0 ++sdioP 744001.0 +sdioP 244194.0 -at 230578.0 ++at 526461.0 +at 1miD stnioP nmuloC eht rof senisoC derauqS

318820.0 030130.0 612611.0

-ga +ga -fa

Nous allons reprer les modalits ayant une forte contribution laxe 1 en distinguant le signe des coordonnes sur laxe. Il faut aussi tre attentif aux modalits trop rares (cf. note). Compltez le tableau suivant :
Modalits forte contribution sur Modalits forte contribution sur laxe 1 avec une coordonne ngative. laxe 1 avec une coordonne positive.

Ta - (12.6%) P -(14%) Af + (10.8%)

... Interprtez laxe1.

Faites de mme pour laxe 2.


Modalits forte contribution sur Modalits forte contribution sur laxe 2 avec une coordonne ngative. laxe 2 avec une coordonne positive.

...

c)

Reprsentation graphique.

Sous SAS :
proc corresp data=pub.chiens mca obs all outc=corr; tables taille -- agressiv; run; data corr; set corr; if _type_='VAR'; y=dim2; x=dim1; XSYS='2'; Ysys='2'; text=_NAME_; size=1; LABEL Y='DIM 2' X='DIM 1'; keep x y text xsys ysys size; run; proc gplot data=corr; symbol1 V=NONE; PLOT Y*X=1 / ANNOTATE=corr frame href=0 vref=0; run; quit;

D M2 I 2

P + o+ I n-

V eT aP o-

A non f 0 T + a+ V + e+

A goui

A gnon I n+ I n+ + P o+

A oui f

V e+ T a+

-1

-2 -2 -1 0 D M1 I 1 2

Comme en AFC simple, les points reprsentants les modalits sont les barycentres des individus qui possdent cette modalit. Leur proximit doit donc tre interprte avec prudence.

Intervention de variables supplmentaires pour linterprtation

Sous SAS, vous pouvez demander faire figurer la variable Utilit sur le graphique pour facilit linterprtation des axes (sans que la variable nintervienne dans les calculs).

proc corresp data=Pub.chiens mca obs all outc=corr; tables taille--agressiv utilite; supplementary utilite; run; data corr; set corr; if _type_='VAR' or _type_='SUPVAR'; if _type_='VAR' then color='BLUE' ; if _type_='SUPVAR' then color='RED'; y=dim2; x=dim1; xsys='2'; ysys='2'; text=_name_; size=1; label y='Dim 2' x='Dim 1'; keep x y text xsys ysys size color; run; proc gplot data=corr; symbol1 v=none; plot y*x=1/ annotate=corr frame href=0 vref=0; run; quit;

D m2 i 2

P + o+ I n-

V eT aP o-

Ui l e t A non f 0 T + a+ V + e+

A goui C pagni e om A gnon I n+ C n+ hasse I + P o+ A oui f

V e+ T a+

-1

-2 -2 -1 0 D m1 i 1 2

Vous pouvez maintenant donner une interprtation complte des deux axes.

Visualisation des individus.

Il faudrait maintenant complter cette tude par ltude des individus mais SAS na pas prvu cela. Nous allons donc ruser en effectuant une analyse des correspondances simples sur le tableau disjonctif complet. Le fichier CHIENSI contient les variables indicatrices des variables prcdentes :
Nom

cat ta1 ta2 ta3 po1 po2 po3 ve1 ve2 ve3 In1 In2 In3 Af0 Af1 Ag0 Ag1 Ta0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 BASSET ta+ 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 BERGER_ALLE ta++ 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0
BEAUCERON MAND BOXER

pp+ BULL-MASTIFF p++ CANICHE vBULL-DOG ......

0 1 0 1

1 0 0 0

0 0 1 0

0 1 0 1

1 0 0 0

0 0 1 0

0 1 1 0

1 0 0 1

0 0 0 0

0 0 0 0

1 1 0 0

0 0 1 1

0 0 1 0

1 1 0 1

0 1 0 1

1 0 1 0

Nous allons donc effectuer une analyse des correspondances simples sur ces donnes ce qui revient faire une analyse des correspondances multiples.
proc corresp data=moi.chiensi outc=corr; var ta1 ta2 ta3 po1 po2 po3 ve1 ve2 ve3 in1 in2 in3 af0 af1 ag0 ag1 ut1 ut2 ut3; id nom; supplementary ut1 ut2 ut3 ; run;

Nous obtenons :
setanidrooC woR REIRVEL RODARBAL AG_ED_UELB_DNARG REIRRET-XOF DNUOH-XOF IACNARF_LUENGAPE NOTERB_LUENGAPE DNAMELLA_EUGOD NNAMREBOD NEITAMLAD YELLOC REKOC AUHAUHIHC EHCINAC FFITSAM-LLUB GOD-LLUB REXOB DNAMELLA_REGREB TESSAB NORECUAEB

71380.081099.004311.079831.0 42520.0 87515.039630.169605.0 84513.081099.011625.070970.0 58348.0 91610.019645.0 88945.0 87188.054464.032101.1 07714.02miD

96676.042746.0 43715.026188.0 75678.019441.040874.0 20740.112378.042746.0 33711.003337.0 08048.0 03219.0 75257.053310.1 63744.0 04684.011452.0 02713.01miD

866220.0 801920.0 296310.0 729330.0 792710.0 055860.0 748570.0 666000.0 583490.0 832100.0 958100.0 160000.0 016520.0 805301.0 147420.0 185900.0 583490.0 546620.0 206000.0 055860.0 520000.0 497820.0 801920.0 058470.0 667020.0 247611.0 697610.0 2miD

113110.0 179870.0 545910.0 371620.0 668430.0 663450.0 549340.0 512530.0 612230.0 285020.0 477950.0 090950.0 516100.0 475710.0 503480.0 836850.0 612230.0 950100.0 353140.0 663450.0 600460.0 655340.0 179870.0 193510.0 491810.0 669400.0 837700.0 1miD

stnioP woR eht rof aitrenI ot snoitubirtnoC laitraP 52584.0 88945.0 41773.066395.0 98324.058348.0 36788.0 05383.053310.1 41405.083385.043376.008048.0 39557.0EVUEN-ERRET LEKCET RETTES DRANREB-TNIAS RETNIOP SIONIKEP FFITSAM

Nous pouvons faire une reprsentation graphique :


EVUEN-ERRET LEKCET RETTES DRANREB-TNIAS RETNIOP SIONIKEP FFITSAM REIRVEL RODARBAL AG_ED_UELB_DNARG REIRRET-XOF DNUOH-XOF IACNARF_LUENGAPE NOTERB_LUENGAPE DNAMELLA_EUGOD NNAMREBOD NEITAMLAD YELLOC REKOC AUHAUHIHC EHCINAC FFITSAM-LLUB GOD-LLUB REXOB DNAMELLA_REGREB TESSAB NORECUAEB

PROC CORRESP DATA=MOI.CHIENSI OUTC=CORR; VAR TA1 TA2 TA3 PO1 PO2 PO3 VE1 VE2 VE3 IN1 IN2 IN3 AF0 AF1 AG0 AG1 UT1 UT2 UT3; ID NOM; SUPPLEMENTARY UT1 UT2 UT3 ; RUN; DATA CORR; SET CORR; IF _TYPE_='OBS'; Y=DIM2; X=DIM1; XSYS='2'; YSYS='2'; TEXT=NOM; COLOR='BLUE'; SIZE=1; LABEL Y='DIM 2' X='DIM 1'; KEEP X Y TEXT XSYS YSYS SIZE COLOR; RUN;

PROC GPLOT DATA=CORR; SYMBOL1 V=NONE; PLOT Y*X=1/ ANNOTATE=CORR FRAME HREF=0 VREF=0; RUN; QUIT;

Pour obtenir individus et variables sur le graphique, il suffit de complter le programme comme suit :
PROC CORRESP DATA=MOI.CHIENSI OUTC=CORR; VAR TA1 TA2 TA3 PO1 PO2 PO3 VE1 VE2 VE3 IN1 IN2 IN3 AF0 AF1 AG0 AG1 UT1 UT2 UT3; ID NOM; SUPPLEMENTARY UT1 UT2 UT3 ; RUN; DATA CORR; SET CORR; Y=DIM2; X=DIM1; XSYS='2'; YSYS='2'; TEXT=NOM; COLOR='BLUE'; IF _TYPE_='VAR' THEN COLOR='RED'; IF _TYPE_='SUPVAR' THEN COLOR='PINK'; SIZE=1; LABEL Y='DIM 2' X='DIM 1'; KEEP X Y TEXT XSYS YSYS SIZE COLOR; RUN; PROC GPLOT DATA=CORR; SYMBOL1 V=NONE; PLOT Y*X=1/ ANNOTATE=CORR FRAME HREF=0 VREF=0; RUN; QUIT;

Ici comme en AFC, il faut rester prudent quant aux distances entre chiens et catgories . Nanmoins, ce graphique permet de complter linterprtation prcdente.

Complment : Individus supplmentaires

Lorsque nous voulons sortir des individus atypiques des calculs mais les faires figurer sur les graphiques (on parle alors dindividus supplmentaires), il suffit de leur appliquer un poids ngatif. Exemple : Nous allons refaire les calculs en plaant le BASSET en individu supplmentaire. Cela donne :
DATA CHIENSI2; SET MOI.CHIENSI; W=1; IF NOM='BASSET' THEN W=-1; RUN;

Nous crons un nouveau fichier contenant les donnes prcdentes et une variable W valant 1 pour tous sauf pour le Basset Cette instruction demande SAS daffecter le poids W chaque observation.

PROC CORRESP DATA=CHIENSI2 OUTC=CORR; WEIGHT W; VAR TA1 TA2 TA3 PO1 PO2 PO3 VE1 VE2 VE3 IN1 IN2 IN3 AF0 AF1 AG0 AG1 UT1 UT2 UT3; ID NOM; SUPPLEMENTARY UT1 UT2 UT3 ; RUN; DATA CORR; SET CORR; Y=DIM2; X=DIM1; XSYS='2'; YSYS='2'; TEXT=NOM; COLOR='BLUE'; IF _TYPE_='VAR' THEN COLOR='RED'; IF _TYPE_='SUPVAR' THEN COLOR='PINK'; IF _TYPE_='SUPOBS' THEN COLOR='GREEN'; SIZE=1; LABEL Y='DIM 2' X='DIM 1'; KEEP X Y TEXT XSYS YSYS SIZE COLOR; RUN;

Choix des couleurs : SUPOBS pour lobservation supplmentaire.

PROC GPLOT DATA=CORR; SYMBOL1 V=NONE; PLOT Y*X=1/ ANNOTATE=CORR FRAME HREF=0 VREF=0; RUN; QUIT;

437930.0 789330.0 210520.0 aitrenI

264830.0 264830.0 264830.0 ssaM

751345.0 393962.0 192312.0 ytilauQ

...... REXOB DNAMELLA_REGREB NORECUAEB

stnioP woR eht rof scitsitatS yrammuS

23760.1 2miD

79372.0 1miD

TESSAB

setanidrooC woR yratnemelppuS

LOUTPUT nous montre que SAS a bien enregistr cela :

P.

DISCRIM : LAnalyse discriminante

Nous allons prsenter ici une technique statistique trs accessible dont les applications sont innombrables. On peut la voir comme une analyse en composante principale particulire. (voir plus loin) On considre une population P de n individus divise en k classes Pj laide dune variable qualitative Y. Sur chaque individu agissent p variables numriques X1, X2,... Xp. Notez bien que lon connat le dcoupage en classe de la population.110 On distingue 2 aspects en analyse discriminante : Un aspect descriptif (gomtrique): On va rechercher les combinaisons linaires des variables Xi qui permettent de sparer le mieux possible les k classes. On peut montrer que cela revient effectuer une ACP des k centres de gravit avec une mtrique particulire. Les variables discriminantes ainsi construites sont donc non corrles entre elles. On lappelle analyse factorielle discriminante en franais, et analyse discriminante canonique en anglais. (PROC CANDISC de SAS)111 Un aspect aide la dcision (probabiliste): un nouvel individu se prsente pour lequel on connat les valeurs des Xi. Dans quelle classe a-t-il le plus de chance dappartenir ? Cest lanalyse discriminante bayesienne qui permet de rpondre cette question. (Analyse discriminante pour les logiciels Amricains, PROC DISCRIM (SAS) et Stat/Multivariate/Discriminant Analysis pour Minitab)

110 A ne pas confondre avec les mthodes de classification hirarchique qui servent tablir un dcoupage en classe dune population donne. 111 Minitab neffectue pas cette analyse. Il se contente de lanalyse discriminante bayesienne.

1.
a)

Lanalyse factorielle discriminante


Prsentation sommaire Elle consiste rechercher une premire variable V1, combinaison linaire des Xi centrs rduits, ayant un pouvoir discriminant maximum puis, une deuxime variable V2 non corrle avec V1 au pouvoir discriminant maximum et ainsi de suite. Gomtriquement, effectuer une analyse discriminante canonique revient trouver les axes sur lesquels la projection du nuage spare au mieux les k groupes. Comme nous le disions prcdemment, elle revient effectuer une ACP des k centres de gravit des classes avec une mtrique particulire.

(1)

Mesure du pouvoir discriminant Dans la paragraphe sur lAnalyse de la variance un facteur (ANOVA), nous avons vu comment mesurer linfluence dun facteur sur une variable. Il est naturel de lutiliser pour mesurer le pouvoir discriminant. La variance totale se dcompose de la faon suivante:
1 k ni 1 k 1 k ni ( xij x ) = n ni ( xi x ) + n ( xij xi ) n i =1 j =1 i =1 i =1 j =1

Variance totale = Variance inter


(o

+ Variance intra

ni dsigne le nombre d'individus de la sous population Pi, n le nombre total d'individus, xi la moyenne de X dans Pi et x la moyenne gnrale de X)
Plus la liaison entre Y et X est forte, plus la part de la variance inter est importante et plus la variance intra est faible. La variance intra comptabilise la partie de la variation de X non explique par Y.
1 k n ( x x ) k 1 i =1 i i On dfinit galement F = 1 k ni ( x xi ) n k i =1 j =1 ij

Lorsque H0 est vraie (moyennes gales ou pouvoir discriminant nant de X sur Y) F suit une loi de Fisher (k-1, n-k) degrs de libert. On rejette H0 lorsque Fobs est suprieur au fractile d'ordre 1- de la loi de Fisher correspondante. La variable X a alors un pouvoir discriminant significatif.

On mesure le pouvoir discriminant dune variable V1 sur Y en utilisant le rapport de corrlation : (V1,Y) =Somme des carrs inter classe/ Somme des carrs totale

Plus ce nombre est grand (proche de 1) plus la variable X est discriminante, plus il est faible (proche de 0) moins la variable X nest lie Y. On utilisera ce critre pour trouver V1 et V2.

(2)

Mise en pratique (sous SAS)112 La socit FRED&NUCCI frres spcialiste vinicole rput de la rgion bordelaise effectue une tude pour relier la qualit de leur vins en fonction des caractristiques mtorologiques. Les donnes sont dans les fichiers Minitab et SAS BORDEAUX.MTW, BORDEAUX (rpertoire Public) X1 : Somme des t moyennes journalires (en C) X2 : Dure dinsolation (en h) X3 : Nombre de jour de grande chaleur X4 : Hauteur des pluies. Y : Qualit du vin : 1 Bon, 2 Moyen 3 : Mdiocre.
Annee X1 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 3064 3000 3155 3085 3245 3267 3080 2974 3038 3318 3317 3182 2998 3221 3019 3022 3094 3009 3227 3308 3212 3361 3061 3478 3126 3458 3252 3052 3270 3198 2904 3247 3083 3043 X2 1201 1053 1133 970 1258 1386 966 1189 1103 1310 1362 1171 1102 1424 1230 1285 1329 1210 1331 1366 1289 1444 1175 1317 1248 1508 1361 1186 1399 1259 1164 1277 1195 1208 X3 10 11 19 4 36 35 13 12 14 29 25 28 9 21 16 9 11 15 21 24 17 25 12 42 11 43 26 14 24 20 6 19 5 14 X4 361 338 393 467 294 225 417 488 677 427 326 326 349 382 275 303 339 536 414 282 302 253 261 259 315 286 346 443 306 367 311 375 441 371 Qual 2 3 2 3 1 1 3 3 3 2 1 3 3 1 2 2 2 3 2 1 2 1 2 1 2 1 2 3 1 1 3 1 3 3

Nous supposerons la normalit vrifie. Calculons le rapport de corrlation des variables du fichier BORDEAUX.MTW en tapant le programme suivant :
proc candisc data=moi.bordeaux anova; var x1 x2 x3 x4; class qual; run;

112 Minitab ne sait pas effectuer directement lanalyse discriminante canonique.

SAS calcule ces rapports de corrlation et teste leur signification (sous hypothse de normalit)
Canonical Discriminant Analysis Univariate Test Statistics F Statistics, Variable X1 X2 X3 X4 Total STD 141.1843 126.6230 10.0166 91.4016 Pooled STD 87.5697 80.7610 7.3273 75.8817 Num DF= 2 R-Squared 0.638605 0.617857 0.497312 0.352537 Den DF= 31 RSQ/ (1-RSQ) 1.7671 1.6168 0.9893 0.5445 F 27.3893 25.0607 15.3342 8.4396 Pr > F 0.0001 0.0001 0.0001 0.0012

Between STD 136.1337 120.0935 8.5231 65.4816

Average R-Squared:

Unweighted = 0.5265777

Weighted by Variance = 0.5769962

SAS donne les rapports de corrlation (R-Squared), le F correspondant et le P du test prcdent. Si H0 est vraie, le pouvoir discriminant nest pas significatif. Nous voyons que toutes les variables ont un pouvoir discriminant significatif sur la qualit du vin Y. X1 a le plus fort.

(3)

Nombre de variables discriminantes prendre en compte Nous allons maintenant chercher de nouvelles variables, combinaison linaires des prcdentes, non corrles entre elles ayant un pouvoir discriminant maximum. Comme nous avons 3 classes, il ny aura que deux variables :
Total-Sample Standardized Canonical Coefficients CAN1 X1 X2 X3 X4 1.209391427 0.857727422 -0.270993045 -0.536131215 CAN2 -0.006529859 -0.674810955 1.278475787 0.564364371 X1 X2 X3 X4

On a donc CAN1=1.209*X1*+0.858*X2*-0.271*X3*-0.536*X4* (Xi* dsigne Xi centr rduit.) Sous hypothse de normalit et dgalit des matrices de variances covariance entre les diffrents groupes, on peut effectuer un test pour nous aider. Notons i=Racine((Vi,Y)) On teste H0 :la nullit des q derniers rapport de corrlation en utilisant la statistique q =
i = p q p 1

(1

2 i

) . Lorsque ce nombre est trop petit, on rejette H0.

p-1 sappelle le lambda de Wilks. Il mesure le pouvoir discriminant global des p variables Xi

Multivariate Statistics and F Approximations S=2 Statistic Wilks' Lambda Pillai's Trace Hotelling-Lawley Trace Roy's Greatest Root Value 0.20526297 0.88800132 3.41743451 3.27886049 M=0.5 F 8.4505 5.7896 11.5338 23.7717 N=13 Num DF 8 8 8 4 Den DF 56 58 54 29 Pr > F 0.0001 0.0001 0.0001 0.0001

NOTE: F Statistic for Roy's Greatest Root is an upper bound. NOTE: F Statistic for Wilks' Lambda is exact.

Nous voyons que globalement les variables ont un pouvoir discriminant significatif. (sous rserve que la multinormalit et lgalit des matrices de variances covariances soient vrifies cf. POOL=TEST de PROC DISCRIM)
Canonical Discriminant Analysis Adjusted Canonical Correlation 0.861944 0.280587 Approx Standard Error 0.040683 0.152891 Squared Canonical Correlation 0.766293 0.121708

Canonical Correlation 1 2 0.875382 0.348867

Test of H0: The canonical correlations in the current row and all that follow are zero Likelihood Ratio 1 2 0.20526297 0.87829160 Approx F 8.4505 1.3395 Num DF 8 3 Den DF 56 29 Pr > F 0.0001 0.2808

SAS donne 1=0.766. On voit que le pouvoir discriminant de V1 est meilleur que celui de X1 (et que les autres Xi) Les deux tests suivants montrent que nous ne devons pas aller au del de V1 dans les composantes canoniques. Nous ne retiendrons donc quune variable discriminante.

(4)

Interprtation de la variable discriminante obtenue Nous pouvons calculer cette nouvelle variable :
proc candisc data=moi.bordeaux all out=essai; var x1 x2 x3 x4; class qual; run;

Le fichier ESSAI contient les nouvelles variables CAN1 et CAN2. SAS calcule aussi les corrlations intra et inter avec cette nouvelle variable.
Total Canonical Structure (Corrlations CAN1,Xj) CAN1 CAN2 0.900589 0.374779 X1 0.896744 -0.116190 X2 0.770513 0.590030 X3 -0.662815 0.361294 X4 Between Canonical Structure Corrlations interclasses CAN1 CAN2 0.986524 0.163614 X1 0.998669 -0.051569 X2 0.956452 0.291891 X3 -0.977208 0.212284 X4

X1 X2 X3 X4

X1 X2 X3 X4

Pooled Within Canonical Structure Corrlations intra classes. CAN1 CAN2 X1 0.724221 0.584256 X1 X2 0.701280 -0.176148 X2 X3 0.525372 0.779910 X3 X4 -0.398218 0.420797 X4

Nous allons trier le fichier essai par rapport CAN1 puis, nous laffichons :
OBS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ANNEE 1932 1930 1927 1931 1941 1925 1954 1936 1951 1957 1956 1926 1924 1938 1946 1935 1939 1948 1940 1953 1928 1942 1955 1933 1944 1950 1937 1952 1934 1929 1943 1947 1945 1949 QUAL 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 3 2 2 2 1 1 2 1 2 2 2 1 1 1 1 1 1 1 1 CAN1 -3.73088 -2.74699 -2.72686 -2.53383 -2.45448 -2.32546 -2.10225 -2.02108 -1.67615 -1.18190 -1.09442 -0.99486 -0.88255 -0.72946 -0.55191 -0.35666 -0.30606 0.20968 0.34347 0.35244 0.74360 0.78584 0.87424 1.13041 1.13802 1.46680 1.55211 2.16713 2.17473 2.23089 2.40988 3.18211 3.53529 4.11917

Nous voyons que CAN1 peut tre vue comme une note mesurant la mauvaise qualit du vin. (Plus CAN1 est petite, meilleur est le vin !) Les vins dont la note est infrieure -1 sont mauvais, ceux dont la note est suprieure 1.5 sont bons. Cette rgle ne donne pas de trop mauvais rsultats sur cet exemple.

1NAC

4-

2-

1NAC 2

6 4 2 0 24 3 3 3 3 33 3 3 222 2 3 22 21 2 1 11 1 1 1

.LAUQ fo eulav si lobmyS .1NAC*1NAC fo tolP

PROC PLOT DATA=ESSAI; PLOT CAN1*CAN1=QUAL; RUN; Le programme suivant, nous permet de visualiser la variable CAN1

Utilisation : Exercice Que prvoyez-vous pour les vins suivants ? Temprature Insolation Chaleur 1958 3000 1050 10 1959 3200 1300 35 1960 3224 1211 18 Vous calculerez la valeur de CAN1 dans les 3 cas. Pluie 300 225 301 Can1

Attention la formule donnant CAN1 utilise les variables centres rduites. PROC MEANS peut vous donner les moyennes et cart types des Xi) :
Variable Label N Mean Std Dev -------------------------------------------------X1 X2 X3 X4 X1 X2 X3 X4 34 34 34 34 3157.88 1247.32 18.8235294 360.4411765 141.1843336 126.6229719 10.0165638 91.4016084

Remarque : Pour affecter de nouveaux individus dans des classes, il est prfrable dutiliser lanalyse bayesienne (cf. paragraphe suivant) beaucoup plus prcise.

2.
a)

Lanalyse discriminante Bayesienne


Principe Nous allons calculer les probabilits dappartenance aux diffrentes classes de chaque individu : pj(x)=Prob(Y=j/X1=x1,...,Xp=xp). Nous pourrons ensuite affecter lobservation x=(x1,x2,...,xp) la classe la plus probable. Hypothses 113: On suppose que le vecteur X=(X1,X2,...,Xp) suit une loi multinormale N p ( j , j ) pour chaque classe Pj. Nous nous limiterons au cas linaire, cest dire que nous supposerons de plus que les matrices de variances j sont gales114 . Sous ces hypothses, on a pj(x)=

e
p i =1

f j ( x)

fi ( x )

1 avec f i ( x ) = i 1 ti + i 1 t x 2

Les fonctions fi(x) sappellent les fonctions discriminantes. En pratique, pour estimer les f$i ( x ) , on estime par la matrice S de variances covariances intraclasse et i par le vecteur des moyennes des observations dans la classe i. On trouvera les formules de calcul pour les estimations dans Saporta.
$ On peut alors calculer la probabilit estime : p j ( x ) = e
f j ( x)
$

i =1

b)

Mise en pratique Reprenons lexemple de la socit FRED&NUCCI frres spcialiste vinicole rput.

113 Nous allons nous limiter ici au cas gaussien. Il est possible deffectuer une analyse discriminante non paramtrique. Cf. Saporta p419 et PROC DISCRIM de SAS. 114 Si ce nest pas le cas, il faut envisager la rgle quadratique en principe. Nous allons prsenter plus loin un test qui peut aider effectuer le choix.

e
p

fi ( x )

(1)

Sous SAS (PROC DISCRIM) La procdure Discrim est trs complte et peut mener bien lanalyse discriminante Bayesienne.

(a)

Analyse lmentaire

Tapons le programme suivant :


proc discrim data=moi.bordeaux ; var x1 x2 x3 x4; Variables concernes par ltude class qual; Variable distinguant les groupes. run;

Nous supposerons lgalit des matrices de variance-covariance vrifie. Nous donnerons des lments de rponse pour cette vrification dans le paragraphe suivant. SAS donne dans la fentre OUTPUT quelques statistiques de base puis les fonctions discriminantes estimes :
Discriminant Analysis Linear Discriminant Function Coefficient Vector = COV QUAL 1 CONSTANT X1 X2 X3 X4 -1350 0.81768 0.15409 -7.00975 -0.04629 2 -1284 0.80079 0.14489 -7.05649 -0.03955 3 -1212 0.78169 0.12590 -6.90255 -0.02196 Label X1 X2 X3 X4 -1 _ X j _ -1 _ Constant = -.5 X' COV X j j

On a donc entre autres :


f$1 ( x ) = -1350+0.81768*X1+0.15409*X2-7.00975*X3-0.04629*X4.

Exprimez les autres fonctions discriminantes. Nous pouvons nous servir de cela pour calculer la probabilit que le bordeaux 1958 (x1=3000 x2=1050 x3=10 x4=300) soit bon.

$ p1 ( x) =

exp( f$1 ( x)) = 0.0001 (x=(3000,1050,10,300)) exp( f$1 ( x)) + exp( f$2 ( x)) + exp( f$3 ( x))

Il y a donc 1 chances sur 10000 pour que le bordeaux 58 soit bon !

Vrifiez ce calcul et calculez la probabilit que le Bordeaux 58 soit moyen, puis mdiocre. Dans quelle catgorie va-t-on le mettre ? Nous pouvons demander SAS deffectuer les calculs prcdents (quand mme !). Il faut crer un fichier de donnes SAS contenant lobservation classer et spcifier grce loption TESTDATA= le nom du fichier. Loption TESTLIST demande SAS dafficher dans lOUTPUT les rsultats de classement pour ces nouvelles observations. DATA WORK.ACLASSER; INPUT ANNEE X1 X2 X3 X4; CARDS; 1958 3000 1100 20 300 ; RUN; PROC DISCRIM DATA=MOI.BORDEAUX TESTDATA=WORK.ACLASSER TESTLIST; CLASS QUAL; VAR X1 X2 X3 X4; RUN; Vrifiez vos calculs avec ceux de SAS. Que dire des vins suivants ? Temprature 3200 3224 Insolation 1300 1211 Chaleur 35 18 Pluie 225 301

1959 1960

Vous venez de voir une utilisation essentielle de lanalyse discriminante : la prvision pour de nouvelles observations.

(b)

Mesures defficacit du classement : mthodes de resubstitution et de validation croise

Nous venons de voir que nous pouvions classer une observation externe grce au calcul des fonctions discriminantes. Nous allons nous servir des rgles tablies pour reclasser les observations du fichier original et vrifier quelles sont bien classes la o elles le devraient. Ceci est un critre nous permettant de mesurer la qualit de lanalyse. Plus le nombre de mal classs sera faible meilleure sera cette qualit. Mthode de resubstitution SAS fournit dans la fentre OUTPUT le rsultat de ce reclassement :
Resubstitution Summary using Linear Discriminant Function
Number of Observations and Percent Classified into QUAL: From QUAL 1 2 3 Total Percent Priors 1 9 81.82 2 18.18 0 0.00 11 32.35 0.3333 2 2 18.18 8 72.73 2 16.67 12 35.29 0.3333 3 0 0.00 1 9.09 10 83.33 11 32.35 0.3333 Total 11 100.00 11 100.00 12 100.00 34 100.00

Error Count Estimates for QUAL: Rate Priors 1 0.1818 0.3333 2 0.2727 0.3333 3 0.1667 0.3333 Total 0.2071

SAS nous apprend ici que 2 vins de qualit 2 ont t classs en qualit 1, ce qui est une erreur. Par contre 10 vins de qualit 3 ont bien t classs en qualit 3. Globalement, le taux derreur apparent est de 20.7%. Pour obtenir le classement des observations, il suffit dajouter loption LIST et LISTERR pour obtenir uniquement les mal classes (misclassified observation) par la mthode de resubstitution : PROC DISCRIM DATA=MOI.BORDEAUX LIST ; VAR X1 X2 X3 X4; CLASS QUAL; RUN; On obtient alors :
Discriminant Analysis Classification Results for Calibration Data: MOI.BORDEAUX Resubstitution Results using Linear Discriminant Function Posterior Probability of Membership in QUAL: Obs From Classified

QUAL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 2 3 2 3 1 1 3 3 3 2 1 3 3 1 2 2 2 3 2 1 2 1 2 1 2 1 2 3 1 1 3 1 3 3

into QUAL 2 3 3 3 1 1 3 3 3 1 1 2 3 1 2 2 2 3 2 1 2 1 2 1 2 1 1 3 1 2 3 2 2 3

1 0.0069 0.0000 0.0098 0.0000 0.6434 0.9334 0.0000 0.0000 0.0000 0.7564 0.8924 0.0866 0.0002 0.6222 0.0108 0.0143 0.0622 0.0000 0.3791 0.9048 0.3669 0.9838 0.0137 0.9966 0.0590 0.9990 0.7143 0.0007 0.8521 0.1957 0.0001 0.3833 0.0036 0.0036

2 0.6679 0.0447 0.3108 0.0147 0.3279 0.0665 0.0075 0.0226 0.0004 0.2368 0.1074 0.5131 0.1134 0.3768 0.7231 0.9228 0.9202 0.0179 0.6056 0.0952 0.6295 0.0162 0.8233 0.0034 0.9120 0.0010 0.2841 0.1355 0.1478 0.7553 0.1760 0.6059 0.5799 0.4143

3 0.3252 0.9553 0.6794 0.9853 0.0287 0.0001 0.9925 0.9774 0.9996 0.0068 0.0001 0.4003 0.8864 0.0010 0.2661 0.0629 0.0176 0.9821 0.0153 0.0000 0.0036 0.0000 0.1630 0.0000 0.0289 0.0000 0.0016 0.8638 0.0001 0.0490 0.8239 0.0108 0.4165 0.5821

* *

* * * *

* Misclassified observation

Nous voyons que les vins 10 et 27 ont t reclasss en qualit 1 alors quils taient de qualit 2. SAS donne galement le calcul des probabilits pour chaque vin. Au total, 20.7% des observations ont t mal classes par la mthode de resubstitution. Cela dit, cette mthode de calcul de lerreur possde le grave dfaut suivant : elle se sert de mmes valeurs pour construire le modle et vrifier sa validit. Lerreur est donc sous value.

Validation croise Pour viter ce pige dans la mesure de lerreur, nous utilisons la mthode dite de validation croise. En activant loption (CROSSVALIDATE), SAS va classer chaque observation en effectuant au pralable une analyse discriminante sur le fichier des n-1 observations restantes. Ainsi, lobservation que lon classe nest jamais dans les donnes servant construire les fonctions discriminantes. Le temps de calcul est videmment plus long mais on vite le problme cit plus haut. Nous pouvons ajouter loption CROSSLIST ou CROSSLISTERR pour lister les observations mal classes.
PROC DISCRIM DATA=MOI.BORDEAUX CROSSVALIDATE CROSSLISTERR; VAR X1 X2 X3 X4; CLASS QUAL; RUN; Cross-validation Summary using Linear Discriminant Function
Number of Observations and Percent Classified into QUAL: From QUAL 1 2 3 Total Percent Priors 1 7 63.64 2 18.18 0 0.00 9 26.47 0.3333 2 4 36.36 8 72.73 2 16.67 14 41.18 0.3333 3 0 0.00 1 9.09 10 83.33 11 32.35 0.3333 Total 11 100.00 11 100.00 12 100.00 34 100.00

Error Count Estimates for QUAL: 1 Rate Priors 0.3636 0.3333 2 0.2727 0.3333 3 0.1667 0.3333 Total 0.2677

Nous voyons que le taux derreur apparent a augment ce qui est logique. Ce taux est certainement plus proche de la ralit.

Cross-validation Results using Linear Discriminant Function


Posterior Probability of Membership in QUAL: Obs 3 5 10 12 14 27 30 32 33 From QUAL 2 1 2 3 1 2 1 1 3 Classified into QUAL 3 2 1 2 2 1 2 2 2 * * * * * * * * * 1 0.0081 0.2537 0.9086 0.1589 0.4726 0.7873 0.1255 0.2728 0.0061 2 0.1822 0.6212 0.0869 0.7044 0.5256 0.2114 0.8323 0.7140 0.7874 3 0.8096 0.1251 0.0045 0.1367 0.0018 0.0014 0.0422 0.0132 0.2065

* Misclassified observation

Voici la liste des observations mal classes selon la mthode de validation croise.

Les rsultats prcdents supposent lhypothse dgalit des matrices de variances covariances (fonctions discriminantes linaires). Nous pouvons tester cette hypothse grce une option de SAS.
(c) Test dgalit des matrices j

SAS propose un test115 pour valider lhypothse dgalit des matrices j. Il est activ grce loption POOL=TEST. Entrons simplement les instructions suivantes :
PROC DISCRIM DATA=MOI.BORDEAUX POOL=TEST; VAR X1 X2 X3 X4; CLASS QUAL; RUN;
Cette option demande SAS de tester lgalit des matrice de variances covariances entre les diffrents groupes. Variables concernes par ltude Variable distinguant les groupes.

SAS prcise dans la sortie, la statistique utilise et le rsultat du test.


Test Notation: K P N N(i) of Homogeneity of Within Covariance Matrices = Number of Groups = Number of Variables = Total Number of Observations - Number of Groups = Number of Observations in the i'th Group - 1 __ N(i)/2 || |Within SS Matrix(i)| = ----------------------------------N/2 |Pooled SS Matrix|

_ _ 2 | 1 1 | 2P + 3P - 1 RHO = 1.0 - | SUM ----- - --- | ------------|_ N(i) N _| 6(P+1)(K-1) DF = .5(K-1)P(P+1) _ _ | PN/2 | | N V | Under null hypothesis: -2 RHO ln | ------------------ | | __ PN(i)/2 | |_ || N(i) _| is distributed approximately as chi-square(DF) Test Chi-Square Value = 24.909800 with 20 DF Prob > Chi-Sq = 0.2049 Since the chi-square value is not significant at the 0.1 level, a pooled covariance matrix will be used in the discriminant function.
Reference: Morrison, D.F. (1976) Multivariate Statistical Methods p252.

115 Si on rejette lhypothse dgalit doit-on pour autant utiliser les rgles quadratiques ?. Cela nest pas sr dans tous les cas. Le test prcdent nest pas parfaitement fiable, ensuite lusage de rgles quadratiques implique lestimation de bien plus de paramtres que la rgle linaire... Lorsque les chantillons sont de petite taille, les fonctions obtenues sont trs peu robustes et il vaut mieux utiliser une rgle linaire malgr tout. Saporta P423

On remarque ici que lon accepte lgalit. SAS nous prvient quil utilisera la matrice adquate.116

(d)

Syntaxe simplifie de PROC DISCRIM

PROC DISCRIM options ; CLASS variable ; VAR variable ; PRIORS probabilits ; WEIGHT variable ; RUN ; Les principales options tant :

Variable servant dfinir les classes (Qualit du vin dans lexemple prcdent) Variables numriques sur lesquelles on effectuera lanalyse discriminante. Pour spcifier les probabilits dappartenance aux diffrentes classes. EQUAL, PROPORTIONAL, modalit1=proba modalit2=proba etc.) Variable contenant le poids de chaque individu.

Corrlations BCORR Affiche les corrlations inter classes pour les variables. Un test de signification est galement effectu. PCORR Affiche les corrlations intra-classe pour chaque variable. Un test de signification est galement effectu.

WCORR Affiche les corrlations intra-classe pour chaque variable et pour chaque classe. Un test de signification est galement effectu.

Analyse factorielle discriminante CANONICAL Effectue une analyse factorielle discriminante (canonical discriminant analysis en anglais). Nous en reparlerons plus loin. NCAN=nombre Nombre de variables canoniques (cf. analyse factorielle discriminante calculer.

Mthode de resubstitution ou de validation croise.


116 Si lon rejette H0, la rgle quadratique est utilise, sinon cest la rgle linaire.

CROSSLIST Affiche la classification des observations du fichier en utilisant la mthode de validation croise. CROSSLISTERR Idem mais en affichant uniquement les individus mal classs. CROSSVALIDATE Active la validation croise. OUTCROSS=fichier de donnes Permet de crer un fichier de donnes SAS contenant le fichier original, les probabilits calcules par lanalyse discriminante et le reclassement de chaque observation par la mthode de validation croise. Si loption CANONICAL est active, SAS inclut galement les variables canoniques dans ce fichier. LIST Affiche la classification des observations du fichier en utilisant la mthode de resubstitution. LISTERR Idem mais en affichant uniquement les individus mal classs. NOCLASSIFY Pas de classification.

Homognit des matrices de variance-covariance POOL=NO ou TEST ou YES Permet dindiquer SAS lgalit des matrices de covariances (YES par dfaut), lingalit (NO) ou encore deffectuer un test pour pouvoir statuer. Rappelons que si ces matrices sont gales, les fonctions discriminantes linaires sont values, sinon, ce sont les fonctions discriminantes quadratiques. SLPOOL=p Spcifie le niveau de signification pour le test prcdent (POOL=TEST). Par dfaut p=0.1

Classement de nouvelles observations TESTDATA=fichier de donnes SAS Lorsque lon veut prvoir le classement de nouvelles observations, il est possible de les mettre dans un fichier de donnes SAS et dindiquer son nom aprs un TESTDATA=

TESTLIST Affiche le classement des nouvelles observations avec le probabilit associes. TESTOUT=fichier de donnes SAS Permet de crer un fichier de donnes SAS contenant le fichier TESTDATA= ainsi que le classement et les probabilits dappartenance aux diffrentes classes. Si loption CANONICAL est active, SAS affiche les valeurs pour chaque variable canonique calcule. Divers DATA= fichier de donnes SAS servant effectuer lanalyse discriminante. OUT= fichier de donnes SAS Permet de crer un fichier de donnes SAS contenant le fichier original, les probabilits calcules par lanalyse discriminante et le reclassement de chaque observation par la mthode de resubstitution. Si loption CANONICAL est active, SAS inclut galement les variables canoniques dans ce fichier. ALL Active toutes les options daffichage. NOPRINT Pas daffichage. ANOVA Effectue une analyse de variance testant la signification des rapports de corrlations (entre les Xi et Y). Ceci permet de mesurer le pouvoir discriminant des variables du fichier. De faon quivalente, ceci permet aussi de voir si les moyennes des Xi diffrent significativement selon les classes. MANOVA Affiche des statistiques testant lgalit des moyennes i. Ceci permet de mesurer le pouvoir discriminant global des variables du fichier (lambda de Wilk). METHOD =NORMAL ou NPAR Spcifie la mthode utilise : paramtrique (NORMAL) si lhypothse de normalit est vrifie (on aura alors la rgle quadratique ou linaire selon lingalit ou lgalit des matrices de variances covariances). Non paramtrique (NPAR) si cette normalit nest pas vrifie.

(2)

Exercice Voici un excellent exemple tir de Saporta. 101 victimes dinfarctus du myocarde (51 dcderont (Prono=0), 50 survivront (prono=1)) sur lesquels ont t mesures leur admission 7 variables (frquence cardiaque, index cardiaque, index systolique, pression diastolique, pression artrielle pulmonaire, pression ventriculaire, rsistance pulmonaire) Les donnes sont dans le fichier PUB.INFARCTU On supposera la multinormalit et lgalit des matrices de variances covariances vrifies. Mesurez le pouvoir discriminant de chacune des variables. Effectuez une analyse discriminante canonique sur les donnes prcdentes. Effectuez une analyse discriminante bayesienne. Que donne la mthode de validation croise ? (% de bien classs, observations mal classes) Que dire des malades suivants : X1 110 125 X2 1.5 3.37 Complments Nous navons fait queffleurer lanalyse discriminante dans ce qui prcde. Nous navons pas parl de lanalyse discriminante pas pas, des mthodes non paramtriques. Pour plus dinformations, nous vous renvoyons la bibliographie, spcialement les ouvrages de M. Tenenhauss et de G. Saporta. X3 15 26.7 X4 24 17 X5 30 29 X6 5.5 6 X7 1490 800

(3)

Q.

La commande FORECAST (Etude de sries chronologiques)


Les heureux possesseurs du module SAS/ETS peuvent tudier les sries chronologiques de faon trs approfondies sous SAS. Nous allons, dans ce paragraphe, regarder quelques unes des possibilits de la commande FORECAST qui permet de manipuler les sries chronologiques sans connatre le langage SAS. Prenons le fichier CHAMPA2 qui contient les ventes mensuelles de champagne (nombre de bouteilles) entre Jan 1962 et Sept 1969.

Lancez SAS, Allez dans SOLUTIONS/ANALYSIS/TIMES SERIES FORECASTING SYSTEM (ou tapez Forecast dans la ligne de commande) : Vous voyez apparatre :

Nous allons complter les champs les plus importants : Le nom de la table SAS (ici Champa2), de la variable chronologique (MOIS). Pour cela, nous cliquons sur BROWSE en face du nom du fichier de donnes :

Nous entrons le nom du fichier ainsi que le nom de la variable chronologique et nous validons.

Ensuite, nous cliquons sur le bouton SAS nous demande la nom de la variable modliser : (ici Y)

Validez en cliquant sur OK.

1.

Visualisation de la srie
Cliquez ensuite sur le bouton pour que nous puissions visualiser la srie.

Vous obtenez

Nous voyons clairement un modle saisonnier de type multiplicatif. Vous pouvez zoomer sur les zones qui vous interessent en cliquant sur les loupes Cliquez sur le bouton goback (flche noire) pour revenir lcran prcdent.

Dans loptique deffectuer des prvisions court terme, nous allons effectuer un lissage de la srie prcdente.

2.

Choix dun modle de lissage


Maintenant, nous allons choisir le modle du lissage que nous souhaitons prendre en cliquant sur le bouton droit de la souris sans la zone des MODELS (en dessous du No Models ) choisissez Fit Models from List

Choisissons le modle Winters (multiplicatif) et validons.117

117 Notez que SAS possde les lissages exponentiel simple et double (Holt).

3.

Estimation des paramtres


SAS effectue alors les calculs. Lorsquil a termin, cliquez sur le bouton View selected Model graphically ( cot du bouton View Serie de tout lheure), puis sur le bouton pour obtenir les estimations des paramtres :

SAS indique ensuite les valeurs des paramtres Niveau, Pente et les coefficients saisonniers. Nous avons donc ici : =0.33368 =0.00100 =0.48175. 1 $ La variance rsiduelle est 2 = (Yt Y$t 1 (1)) 2 381906 n 1 Quels sont les mois o les coefficients saisonniers sont les plus levs ? Ceci tait il prvisible ?

4.

Prcision de lajustement
En cliquant sur nous obtenons les statistiques dajustement ci-dessous :

$ 100 n y t y t RMSE= MSE MAPE= y n t =1 t

1 avec MSE= nk

(y
n t =1

$ y t ) 2 o k est le nombre de paramtres du modle.

1 n $ MAE= y t y t n t =1

et R-Square= 1

(y
n

(y
t =1

t =1 n

y) 2

. ( Ce nombre peut tre ngatif si le modle est


t

$ yt )

particulirement mauvais)

5.

Calcul des prvisions


Pour obtenir des prvisions, cliquez sur le dernier bouton de la liste (symbolisant un tableau de valeurs). Vous pouvez lire entre autres :
MOIS ACTUAL 5010 4874 4633 1649 5951 . . PREDICT 4538 5251 4432 2079 5362 6981 10390 UPPER 5750 6462 5644 3291 6573 8192 11742 LOWER 3327 4040 3221 868.1798 4151 5770 9039 ERROR 471.6425 -376.8926 200.6538 -430.4084 589.1950 . .

05/01/69 06/01/69 07/01/69 08/01/69 09/01/69 10/01/69 11/01/69

Vous voyez par exemple que pour octobre 69, SAS prvoit une vente de 6981 bouteilles (PREDICT).

Nous donnons ci-dessous les chiffres exacts de vente de bouteilles doctobre aot 1970. Comparez avec les prvisions de SAS. Quen pensez-vous ?
8924 2135 8164 8874 7754 4653 8434 07621 1589 1896 07/10/70 07/10/60 07/10/50 07/10/40 07/10/30 07/10/20 07/10/10 96/10/21 96/10/11 96/10/01 301 201 101 001 99 89 79 69 59 49

Exercice Le fichier VENTE2 contient les chiffres des ventes mensuelles dun produit (en milliers dunits) de 1985 1988. Nous souhaitons effectuer des prvisions pour lanne 1989. La srie comporte elle une tendance, une saisonnalit ? Quelle mthode de lissage est adquate ici ? Si on laisse SAS choisir entre diffrentes mthodes de lissage (Choisissez Fit Automatic Model au lieu de Select from list) laquelle retient il ? Vous ferez les calculs sous SAS. Donnez les prvisions pour lanne 1989.

VI.

Quelques procdures de gestion de fichiers A.


1.

FORMAT (Crer de nouveaux formats)


Objet
Dans lannexe sur les formats, vous pourrez voir un grand nombre de formats existants pour les dates, lheure, les nombres. Il vous est aussi possible, sous SAS, de dfinir vos propres formats et de les utiliser en faisant simplement rfrence leur nom comme nimporte quel autre format prdfini. La procdure Format effectue ce travail. Les formats personnaliss ainsi crs sont stocks dans un catalogue SAS temporaire: WORK.FORMATS. 118 Une confusion ne pas commettre : Lorsquune variable est reformate, sa valeur interne ne change pas, seule son apparence change. Pour un recodage, la valeur de la variable change (En gnral).119

2.

Syntaxe simplifie

PROC FORMAT <options> ; VALUE nom champ de valeurs=valeur formate ; Dfinit les formats daffichage INVALUE nom champ de valeurs=valeur formate; Dfinit ceux dentres (input) PICTURE nom champ de valeurs=masque daffichage; Pour prsenter les donnes SELECT entres ; EXCLUDE entres ; RUN ;
numriques en ajoutant des symboles ($25,152 ; 12-25-52...) Ne slectionne dans le catalogue FORMATS que les noms de formats ou dinformats indiqus ici. (entres = nom de formats ici) Nexclut du catalogue FORMATS que les noms de format ou dinformats indiqus ici

118 Si vous voulez les conserver, utilisez loption LIBRARY= ci dessous (pour les rcuprer, utilisez LIBNAME LIBRARY votre bibliothque ; ). 119 Remarque : La procdure FREQ utilise la valeur de la variable formate pour dfinir les classes du tri crois. Il suffit de changer de format pour effectuer des regroupements en classes ou le contraire. Lavantage de ceci est de ne jamais toucher au fichier original.

Les champs de valeurs Ils peuvent tre de quatre types Syntaxe Exemple 12 valeur valeur,valeur,...,valeur 14,18,25,36 valeur-valeur
12-48

Signification
Seule 12 sera concerne Seules 12,18,25 et 36 seront concernes Tous les nombres entre 12 et 48 (inclus) seront concerns. [12 ;48] correspond ]12 ;48] correspond [12 ; 48[ Tous ces champs seront concerns.

Champ,champ,...

12<-48 12-<48 14, 12-48, 57 ,57-<62

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 cls Low, High et Other peuvent aussi tre utilis dans les champs de valeurs :
invalue anota low-<10=Faible 10-12=Moyen 12<-high=Bon ;

Les options principales tant LIBRARY= nom de bibliothque On donne ici le nom de la bibliothque contenant un catalogue (SAS catalog) nomm FORMATS qui, comme son nom lindique, contient tous les formats crs avec la procdure FORMAT. Par dfauts, les formats sont stocks dans un catalogue nomm FORMATS dans la bibliothque WORK (temporaire). Ils seront donc perdus lorsque SAS sera dsactiv. Pour conserver vos formats, indiquez votre libname derrire library=. Pour les rcuprer dclarer votre bibliothque sous le nom LIBRARY :
LIBNAME LIBRARY G :\STID9799\LOGICIEL\etc... ;

CNTLOUT=nom de fichier SAS Permet de stocker dans un fichier de donnes SAS des informations sur les formats contenus dans FORMATS. (valeurs, domaine de validit etc...)

Vous pouvez rcuprer tout ou partie de ces informations pour redfinir de nouveaux formats grce une autre option CNTLIN=nom de fichier SAS.

3.

Exemples
Nous allons crer un nouveau format nomm fsexe. qui transforme 1 en Masculin 2 en Fminin et tous les autres nombres en Non spcifi . Nous afficherons ensuite le fichier STID193 en utilisant le format Fsexe. .
Proc format ; value fsexe 1='masculin' 2='Fminin' other='Non spcifi'; /*Nous crons un
nouveau format*/

run;
/* Nous allons utiliser le Format Fsexe. dans le PRINT ci-dessous */

proc print data=moi.stid193; var groupe sexe; format sexe fsexe.; /* Ne pas oublier le . a la fin du nom de format */ run;

Nous obtenons :
OBS 1 2 3 4 5 6 7 8 9 GROUPE A A A A A A A A A SEXE masculin masculin masculin Fminin Fminin Fminin Fminin Fminin masculin

Remarque : Dans lexemple ci-dessus, le format a t utilis ponctuellement dans la procdure PRINT. Si vous voulez lattacher la variable SEXE, il vous suffit de lutiliser dans une tape DATA (cf. plus bas)

Nous pouvons appliquer le Format prcdemment dfini pour tout autre variable.

Ainsi
;nur ;.exesf sfbn tamrof ;sfbn epuorg rav ;391dits.iom=atad tnirp corp

va donner :

OBS 1 2 3 4 5 6 7 8

GROUPE A A A A A A A A

NBFS Non spcifi Non spcifi Fminin Non spcifi masculin masculin Fminin masculin

Ce qui est compltement idiot je vous laccorde !

4.

Visualisation des formats utilisateurs


Nous pouvons vrifier les formats en cours en allant dans LEXPLORER et en cliquant sur Work. Enfin, dans cette bibliothque, il suffit de double cliquer sur le catalogue nomm FORMATS qui contient tous les formats (temporaires) crs par Proc format. Vous slectionnez FSEXE et choisissez PROPERTIES dans le menu contextuel :

5.
I)

Exercices
proc format; value niveau 0-<8='Faible' 8-12='Moyen' 12<-20='Bon'; run; proc print data=pub.stid193; format mat hg fra niveau.; run;

Que fait ce programme ? II)Crez un format remplaant donnant le nom du dpartement de chaque individu et ce, pour lIsre et les dpartements voisins de lIsre. Les individus issus dun autre dpartement seront qualifis Extrieurs . Vous pourrez utiliser la variable CP qui contient le code postal de chaque individu de STID193.

6.

Format permanent Library= ; puis Libname library nom de bibliothque ;


Tous les formats prcdents ont t cres dans la bibliothque WORK. Ils seront donc perdus ds que SAS sera stopp. Pour crer un format permanent, il faut utiliser loption LIBRARY= De plus, il vous est possible de spcifier un format lors dune tape DATA. Dans ce cas, le format restera TOUJOURS attach la variable. Ceci est utile lorsque vous donnez un caractre dfinitif un format, mais cela impose votre format dtre toujours accessible.120

Exemple
libname moi 'i :\SAS'; Proc format LIBRARY=MOI ; value fsexe 1='masculin' 2='Fminin' other='Non spcifi'; /*Nous crons un nouveau format*/ run;

Le format fsexe. sera ajout au catalogue FORMATS de la bibliothque MOI. Je pourrais donc y accder. 121 Je vais maintenant utiliser ce format pour crer un fichier de donnes nomm MOI.ESSAI dont la variable SEXE sera formate en utilisant fsexe. .
libname library 'i :\SAS'; /*pour que SAS aille y lire le format fsexe.*/ data moi.essai; set pub.stid193; keep groupe ordre sexe; format sexe fsexe.; run;

Les instructions prcdentes 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=moi.essai; /*Cet affichage impose au format fsexe dtre disponible*/ run;

120 Il devra donc tre dans WORK ou dans LIBRARY 121 En dclarant comme bibliothque LIBRARY le rpertoire contenant le format voulu cf. ci dessous

Remarques importantes: A chaque fois que vous voudrez afficher le fichier MOI.ESSAI, le format fsexe. DEVRA ETRE DISPONIBLE. (cest dire, dans WORK.FORMATS, ou LIBRARY.FORMATS avec le libname adquat.) Autrement dit, si vous quittez SAS et que vous voulez afficher MOI. ESSAI, vous devrez taper :
libname library 'i :\STID9799\LOGICIEL\...'; proc print data=moi.essai; run;

Lorsque SAS rencontre MOI.ESSAI, il recherche le format fsexe. (car ce est attach la variable sexe). Il commence la recherche dans WORK.FORMATS puis dans LIBRARY.FORMATS. Sil ne le trouve pas, un message derreur marque linterruption de la procdure.
format

7.
a)

Masques daffichage (picture)


Exemple n1 : Numros de tlphone Lexemple le plus classique dutilisation concerne les n de tlphone. Il semble que 04/76-82-56-41 soit plus lisible que 0476825641. Pour ce faire, nous utilisons un masque daffichage :
proc format; picture telfax other='99/99-99-99-99';Other implique que tous les numros sont
concerns par cette instruction

run; data carnet; input nom $ tel; format tel telfax.; cards; Marie 0525002165 Eric 0125486565 Anne 0145479589 Etienne 565412 ; run; proc print; run;

Le masque daffichage est attach au fichier de donnes. Chaque fois que lon voudra afficher le fichier de donnes, le masque devra tre prsent dans FORMATS

Va donner :
The SAS System OBS 1 2 3 4 NOM Marie Eric Anne Etienne 14:26 Sunday, May 18, 1997 TEL 05/25-00-21-65 01/25-48-65-65 01/45-47-95-89 00/00-56-54-12

Les 9 dans PICTURE indiquent que les emplacements des chiffres quitte remplacer par 0 ce qui manque. Si lon place des 0 , PICTURE laissera des blancs sil manque des chiffres. Ainsi : picture telfax other='00/00-00-00-00'; donnera :

OBS 1 2 3 4 b)

NOM Marie Eric Anne Etienne

TEL 5/25-00-21-65 1/25-48-65-65 1/45-47-95-89 56-54-12

Exemple n2 : Nombres au format europen (options PREFIX, MULT de


Picture)

Nous allons mettre des nombres 2 dcimales sous forme europenne. Ainsi 14526.26 devient 14.526,26 ce qui est plus lisible. Pour cela , il faut convertir le nombre en nombre entier avant de lui affecter un masque. On multiplie donc le nombre initial par 100 122 et on lui applique un masque 000.000,00 ou 000.000.000,00 si lon sattend de gros chiffres. Il faut ensuite tenir compte du signe car picture lenlve. Cest pour cela que nous avons 2 picture un pour les ngatif (avec un PREFIX=-) et un pour les positifs (avec un PREFIX= + Par dfaut PREFIX=). Nous avons donc
proc format; picture nombfran low-<0='000.000.009,00 FF' (prefix='-' mult=100) 0-high='000.000.009,00 FF' (mult=100 prefix='+'); run; data essai; input nom $ nombre; format nombre nombfran.; cards; Marie 2502165.23 Eric 0125.25 Anne -014595.89 Etienne 26565412 ; run; proc print; run;

122 Nous utilisons loption MULT= de picture qui permet de prciser un coefficient multiplicatif au nombre avant de lafficher

Gnial non ? Modifiez le format prcdent pour quen plus SAS fasse la conversion en Kilo francs puis en Euro. Attention, loption DIV nexiste pas, il faut vous contenter de MULT... (19.5 FF doit devenir 3,00 Euro...) Lnorme intrt de ce systme Picture est que le fichier de donnes nest pas modifi. Seule laffichage change. Si par exemple le cours de lEuro change, il suffit de changer le multiplicateur pour que tout soit jour. Remarque : Picture possde une option FILL= qui permet de spcifier le caractre de remplissage des masques lorsquil ny a pas de chiffres. Par dfaut cest un blanc.

FF FF FF FF

ERBMON 00,214.565.62+ 98,595.4152,521+ 32,561.205.2+

enneitE ennA cirE eiraM

MON

SBO 4 3 2 1

c)

Exemple n3 : Dates : Option DATATYPE de PICTURE Les options DATE, TIME et DATETIME de (DATATYPE) servent indiquer SAS que le masque indiqu correspond une Date, heure ou les deux. %y indique lanne sur deux caractres %Y indique lanne sur 4 caractres %m indique le mois %d indique le jour du mois. Exemple :
proc format; picture nouvdate (default=15) other='%d-%m %Y' (datatype=date); run; data ech; set moi.stid193 (obs=10); keep groupe ordre sexe date; format date nouvdate.; run; proc print data=ech noobs; run;
Spcifie la taille (en caractres) Notre nouveau format

Va donner :
ETAD 3791 4791 3791 4791 4791 4791 2791 2791 4791 3791 6-51 6-8 11-22 9-41 2-11 11-03 11-01 8-51 21-8 01-12 1 1 2 2 2 2 2 1 1 1 01 9 8 7 6 5 4 3 2 1 EXES ERDRO A A A A A A A A A A EPUORG

8.

Informat (INVALUE)
Dernier point, vous pouvez dfinir vos propres formats dentre. Un exemple simple va vous permettre de comprendre la porte de ce concept. Jai un fichier dlves avec leurs 3 notes sous forme inhabituelle. Chaque lve a t not par une lettre N,MM, M, AB,B,TB. La correspondance avec notre systme de notes est la suivante : N(6/20) ; MM(8/20), M(10/20), AB(12/20) , B(14/20) TB(16/20) Nous voulons importer ce fichier et convertir les notes numriquement pour pouvoir calculer les moyennes correspondantes. Jai le fichier suivant, je veux calculer la moyenne par lve...
Jean-pierre AB B M Herve N MM MM Anestis TB TB TB Bernard TB N TB

proc format; invalue fnote 'N'=6 'MM'=8 'M'=10 'AB'=12 'B'=14 'TB'=16 'ABS'=. ; run; data stid; input nom $ @; do i=1 to 3; input note : fnote. @; output; end; keep nom note; cards; Jean-pierre AB B M Herve N MM MM Anestis TB TB TB Bernard TB N TB run; proc print data=stid; run;

Nous dfinissons lInformat Fnote. ici Note manquante remplace par un point.

Le caractre @ permet dattendre la fin de la ligne avant de sauter la ligne suivante. Nous avons encore trois notes lire avant de changer de ligne. Nous les lisons lune aprs lautre.

Pour ter la variable i du fichier de donnes

On obtient :
OM NOTE 12 14 10 6 8 8 16 16 16 16 6 16
N SBO

1 2 3 4 5 6 7 8 9 10 11 12

Jean-pie Jean-pie Jean-pie Herve Herve Herve Anestis Anestis Anestis Bernard Bernard Bernard

proc sort data=stid; by nom; run; proc means data=stid; by nom; run;

Nous trions le fichier pour utiliser le BY dans la procdure MEANS

Ce qui donne :
Analysis Variable : NOTE ----------------------------------------- NOM=Anestis ---------------------------------------N Mean Std Dev Minimum Maximum ---------------------------------------------------------3 16.0000000 0 16.0000000 16.0000000 -------------------------------------------------------------------------------------------------- NOM=Bernard ---------------------------------------N Mean Std Dev Minimum Maximum ---------------------------------------------------------3 12.6666667 5.7735027 6.0000000 16.0000000 --------------------------------------------------------------------------------------------------- NOM=Herve ----------------------------------------N Mean Std Dev Minimum Maximum ---------------------------------------------------------3 7.3333333 1.1547005 6.0000000 8.0000000 -------------------------------------------------------------------------------------------------- NOM=Jean-pie --------------------------------------N Mean Std Dev Minimum Maximum ---------------------------------------------------------3 12.0000000 2.0000000 10.0000000 14.0000000 ----------------------------------------------------------

9.

Complments
Je vous encourage consulter le SAS Procedures guide pour des complments sur cette procdure FORMAT.

B.

TRANSPOSE (Transposer un fichier)


Son nom est trs explicite, elle permet en effet de transposer un fichier de donnes. Les colonnes deviennent les lignes et inversement. Elle permet aussi de rarranger de faon 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 1 2 A 1 4 B 2 5 C 3 6

Le fichier transpos OBS 1 2 3 _NAME_ A B C COL1 1 2 3 COL2 4 5 6

SAS a cr trois variables _NAME_,COL1 et COL2 qui contiennent les lignes du fichier prcdent. La variable _NAME_ contient tous les noms de variables. Syntaxe simplifie PROC TRANSPOSE (options); VAR variables; Les variables transposer BY variables; Permet la cration de sous-groupes... le fichier devra avoir t tri avant
Les variables BY ne sont pas transposes.

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 spcifier les fichiers de donnes dentre et de sortie. Exemples utilisation de id. On modifie lgrement le programme prcdent :
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 1 2 A 1 4 B 2 5 C 3 6 D X Y

Le fichier transpos OBS 1 2 3 _NAME_ A B C X 1 2 3 Y 4 5 6

Utilisation de COPY En ajoutant COPY C ; au dessous du ID D ; on obtient :


Le fichier original... OBS 1 2 A 1 4 B 2 5 C 3 6 D X Y

Le fichier transpos OBS 1 2 C 3 6 _NAME_ A B X 1 2 Y 4 5

C.

CONTENTS (Inventaire dune bibliothque)


Cette procdure est trs utile pour connatre les fichiers figurant dans votre bibliothque ou pour avoir des informations prcises sur un fichier en particulier.

Syntaxe simplifie PROC CONTENTS options; RUN; Les options tant: DATA= nom de fichier ou bilbiothque._all_ Exemples proc contents data= moi.stid; run; pour obtenir des informations sur le fichier STID de la bibliothque MOI. libname MONREP 'G:\STID9597\TOTO'; proc contents data=monrep._all_; run; pour obtenir des informations sur TOUS les fichiers SAS situs sur mon rpertoire. OUT= fichier SAS Pour sauvegarder les informations affiches dans la fentre OUTPUT.

DIRECTORY Affiche un catalogue rsum des fichiers de la bibliothque. MEMTYPE= Spcifie le(s) type(s) des fichiers SAS cataloguer. DATA (pour les fichiers de donnes, c'est notre cas !) CATALOG pour les fichiers de type "catalog" PROGRAM pour les programmes compils. ... ALL tous les types. POSITION Pour afficher les variables du fichier de donnes dans leur ordre d'apparition sur ce mme fichier (et non plus dans l'ordre alphabtique). SHORT Affiche seulement une liste des variables du fichier de donnes.

NOPRINT Aucun affichage. Cette option n'est utile que si elle est combine avec OUT=

Exemple
proc contents data=pub.stid193 directory; run; va donner: Un rsum des fichiers se trouvant dans la bibliothque SASUSER:
CONTENTS PROCEDURE -----Directory----Libref: SASUSER Engine: V608 Physical Name: C:\SAS\SASUSER # Name Memtype Indexes -----------------------------1 ACP DATA 2 AGENTS CATALOG 3 AGENTS DATA 4 ARB2TYPE DATA 5 ARB3TYPE DATA 6 BUILD CATALOG 7 BUILD DATA 8 CLASS CATALOG 9 CLASS DATA .................... 36 STID193N DATA 37 VENEER DATA

Des informations compltes sur le fichier STID193


CONTENTS PROCEDURE Data Set Name: Member Type: Engine: Created: Last Modified: Protection: Data Set Type: Label: SASUSER.STID193 DATA V608 9:25 Wednesday, March 29, 1995 9:25 Wednesday, March 29, 1995 Observations: Variables: Indexes: Observation Length: Deleted Observations: Compressed: Sorted: 106 9 0 60 0 NO YES

-----Engine/Host Dependent Information----Data Set Page Size: Number of Data Set Pages: File Format: First Data Page: Max Obs per Page: Obs in First Data Page: 4096 2 607 1 67 44

Une liste des variables du fichier STID193: Type indique le type des variables: Char pour les variables caractres (alphanumriques) Num pour les variables numriques Len indique la longueur de chaque variable Pos sa position dans le fichier.
CONTENTS PROCEDURE -----Alphabetic List of Variables and Attributes----# Variable Type Len Pos ----------------------------------3 BAC Char 3 9 4 FRA Num 8 12 1 GROUPE Char 1 0 5 HG Num 8 20 6 MAT Num 8 28 9 NBFS Num 8 52 8 POIDS Num 8 44 2 SEXE Num 8 1 7 TAILLE Num 8 36

Des informations sur un ventuel tri du fichier:


CONTENTS PROCEDURE -----Sort Information----Sortedby: SEXE Validated: YES Character Set: ANSI

Ici, nous voyons que le fichier STID193 a t tri par rapport la variable SEXE. Nous avons donc perdu l'ordre original de ce fichier.

D.

DATASETS (gestion de bibliothques, de fichiers de donnes)


Cette procdure vous permet de grer vos fichiers de donnes. Vous pouvez copier tout ou partie dun fichier de donnes, en supprimer, visualiser leur contenu, diter le contenu dune bibliothque. Vous pouvez galement modifier les noms des variables dun fichier, leur format etc.

Syntaxe simplifie PROC DATASETS library=nom de bibliothque <options>; Certaines options tant: KILL (Entrane la destruction de tous les fichiers de la bibliothque spcifie) NOLIST (Supprime laffichage du nom des fichiers contenu dans la bibliothque spcifie)

Attention, dans ce qui suit, les fichiers spcifis sont contenus dans la bibliothque spcifie derrire linstruction library . Leur nom nest donc pas compos avec celui de la bibliothque laquelle ils appartiennent. (exemple
MOI.TOTO est remplacer par TOTO)

SOUS COMMANDES de la procdure DATASETS

1.

Concatnation de fichiers
APPEND BASE=fich1 DATA=fich2 <Force>;
Pour ajouter fich2 la suite de fich1. Le rsultat est dans fich1. Loption force oblige Sas a concatner les deux fichiers mme sils nont pas les mmes variables. Exemple: Voici le contenu du fichier work.hommes: OBS 1 2 NAME Mary Sharon AGE 15 15 HEIGHT 66.5 62.5 WEIGHT 112.0 112.5

Voici le contenu du fichier work.femmes: OBS 1 2 3 NAME Guido William Philip AGE 15 15 16 HEIGHT 67.0 66.5 72.0 WEIGHT 133 112 150

Tapons le programme suivant: proc datasets library=work; append base=femmes data=hommes; run; quit; Le fichier work.femmes contiendra maintenant: OBS 1 2 3 4 5 NAME Mary Sharon Guido William Philip AGE 15 15 15 15 16 HEIGHT 66.5 62.5 67.0 66.5 72.0 WEIGHT 112.0 112.5 133.0 112.0 150.0

Concatnation dune partie dun fichier Il suffit dajouter la commande Where comme le montre lexemple suivant o nous souhaitons ajouter au fichier femmes uniquement les individus du fichier hommes dont lge est gal 15.
proc datasets library=work; append base=femmes data=hommes(where=(age=15)); run; quit; Le fichier work.femmes contiendra maintenant OBS NAME AGE HEIGHT 1 2 Mary Sharon 15 15 66.5 62.5

WEIGHT 112.0 112.5

3 4

Guido William

15 15

67.0 66.5

133.0 112.0

2.

Changement de nom dun fichier


CHANGE nom actuel du fichier=nouveau-nom...;
Pour renommer un (ou plusieurs) fichier(s) de donnes. Exemple: Pour renommer le fichier work.femmes en work.ensemble, nous entrons le programme suivant: proc datasets library=work; change femmes=ensemble; run; quit;

EXCHANGE nom=autre-nom1 etc...;


Pour changer les noms de 2 ou plusieurs fichiers. Ici le fichier nom1 sera renomm autre-nom1 et le fichier autrenom1 sera renomm nom1 .

3.

Inventaire dune bibliothque, informations sur un fichier


CONTENTS ;
Rfrez vous au paragraphe PROC CONTENTS de ce document.

4.

Suppression de fichiers
DELETE fichiers;
Pour supprimer les fichiers spcifis. Exemple: proc datasets library=work; delete femmes; run; quit; Programme dtruisant le fichier work.femmes.

5.

Copie de fichiers
COPY OUT=biblio1 <IN=biblio2> <Move>;
Copie tout ou partie des fichiers de biblio2 dans la biblio1. Si IN nest pas spcifie, cest la bibliothque de la procdure DATASETS qui est retenue. Pour slectionner les fichiers qui doivent tre copis voir SELECT et EXCLUDE. Si loption MOVE est spcifie, les fichiers copis seront dtruit de biblio2.

EXCLUDE fichiers;
Cette instruction ne peut tre utilise quaprs un COPY. Vous spcifis ici les fichiers qui ne doivent pas tre concerns par la commande COPY. Exemple: Proc datasets library=sasuser; copy out=moi; exclude toto stid92; Run; Ce programme va copier tous les fichiers de la bibliothque SASUSER dans la bibliothque MOI lexception des fichiers SASUSER.MOI, SASUSER.TOTO. Si un Move est spcifi dans linstruction Copy, tous les fichiers copis seront dtruits dans la bibliothque SASUSER.

SELECT fichiers;
Cette instruction ne peut tre utilise quaprs un COPY. Vous spcifis ici les fichiers qui doivent tre concerns par la commande COPY. Exemplen1: Proc datasets library=sasuser; copy out=moi; select toto stid92; Run; Ce programme va copier seulement les fichiers SASUSER.STID92, SASUSER.TOTO dans la bibliothque MOI. Si un Move est spcifi dans linstruction Copy, ces deux fichiers seront dtruits dans la bibliothque SASUSER.

Exemple n2: Ce programme permet de copier sur la disquette (A:) les fichiers CLASS, STID193 et ACP de la bibliothque SASUSER. libname moi 'A:'; proc datasets library=sasuser; copy out=moi in=sasuser; select class stid193 acp; run; quit;

6.

Modifications sur les variables dun fichier (format, nom...)

MODIFY fichier;
Pour modifier, entre autres, les noms des variables dun fichier de donnes, modifier les formats, les tiquettes etc... Le fichier doit tre situ dans la bibliothque indique dans la procdure DATASETS.

Les instructions suivantes ne peuvent tres utilises quaprs une instruction MODIFY LABEL=tiquette du fichier de donnes;
Exemple: Proc datasets library=sasuser; modify stid193 (label='Questionnaire STID93'); run; quit; va modifier ltiquette du fichier STID193 de la bibliothque SASUSER (Notez la prsence des parenthses) Pour voir le rsultat, tapez le programme suivant et consultez lOutput. Proc datasets library=sasuser; contents data=stid193; run; quit;

RENAME variable1=nouveau nom variable2=nouveau nom ...;


Pour renommer certaines variables du fichier de donnes spcifi dans la commande Modify. Exemple: Proc datasets library=sasuser; modify stid193; rename bac=seriebac; run; quit; Va renommer la variable BAC en SERIEBAC. Pour voir le rsultat, tapez le programme suivant et consultez lOutput. Proc datasets library=sasuser; contents data=stid193; run; quit;

FORMAT liste de variables format1 liste de variables format2 ...


Exemple: Proc datasets library=sasuser; modify stid193; format fra hg mat 4.1 taille 6.2; run; quit; Dans cet exemple, les notes de Franais, Math et Histoire-go auront un format 4.1 et la taille un format 6.2. (Le premier chiffre indique la taille

maximale du nombre et le deuxime, le nombre de dcimale(s)). Pour avoir plus dinformation sur les formats disponibles, allez voir en annexe. Pour visualiser le rsultat faites un PROC PRINT et vous obtenez: OBS 103 104 105 106 FRA 8.0 11.0 10.0 6.0 HG 12.0 6.0 12.0 6.0 MAT 17.0 12.0 18.0 15.0 TAILLE 165.00 160.00 167.00 168.00

Ici, on voit que la variable taille est code sur 6 caractres dont 2 dcimales.

7.

Rparer des fichiers endommags par une panne systme....


REPAIR nom de fichier;
Cette instruction a pour but de rparer les fichiers endommags par une panne du systme.

VII.

Une autre faon d'utiliser SAS: SAS / ASSIST A. Prsentation


SAS/ASSIST constitue une autre faon d'utiliser SAS. Ce module vous permet, laide de quelques clics de souris, dobtenir rapidement des analyses statistiques simples ainsi que les programmes correspondants.123 Notez quun nouveau module SAS : SAS Enterprise Guide trs amusant utiliser fait un peu la mme chose que SAS ASSIST. Lutilitaire Graph n Go est un SAS ASSIST spcialis dans les graphiques. Si cette faon dutiliser SAS savre trop limite, elle contitue nanmoins une alternative quil ne faut pas ngliger pour une utilisation occasionelle de SAS par exemple.

123 Ceci peut tre trs intressant pour retrouver la syntaxe dune procdure.

B.

Comment lancer SAS/ASSIST ?


Pour lancer SAS ASSIST vous pouvez aller dans le menu SOLUTIONS/ASSIST. Choisissez ensuite WORK PLACE.124 Vous voyez alors l'cran suivant:

C.

Exemple d'utilisation de SAS/ASSIST:

Diagramme bandes des moyennes des notes de maths selon les groupes. Dans le menu prcdent, cliquez sur GRAPHICS. Puis sur BAR CHART :

Remplissez la boite de dialogue comme suit :

124 Lautre option permet de retrouver un SAS ASSIST conforme la V 6.12.

Table: SAS demande ici le fichier de donnes SAS considrer. Cliquez sur ce bouton et choisissez le fichier SAS MOI.STID193. Bar value: Par dfaut SAS va reprsenter les effectifs. Si vous souhaitez avoir les pourcentages cliquez sur ce bouton et choisissez ce que vous voulez. Subset data: Correspond l'option BY des procdures SAS. Si vous souhaitez diviser votre population en distinguant selon le sexe, vous pouvez indiquer ici la variable sexe. ATTENTION, le fichier devra avoir t tri selon la variable (sexe ici) si nous voulons que cela fonctionne. Pour notre exemple, nous ne divisons pas en sous-populations. Chart column: Quelle est la variable reprsenter ? Ici c'est le bac. Cliquez sur le bouton et choisissez la variable BAC. Additional options: Si vous souhaitez modifier les couleurs par dfaut du graphique, vous pouvez aller dans ce menu et les changer votre guise.

Cliquez ensuite sur le bouton SUBMIT pour lancer la procdure SAS. Devant vos yeux bahis, un "magnifique graphique" apparat. 125

125 Il est possible de le transfrer sous Word (Avec la souris, dlimitez la zone qui vous intresse et fait un Edit/ Copy to paste buffer, basculez sous Word et collez) mais la copie se fait en mode Bit-map. Cette image sera trs encombrante, trs longue imprimer...

D.

Comment obtenir les instructions SAS qui ont donn le rsultat prcdent
Fermez le graphique. Vous pouvez rcuprer le programme qui vous a permis dobtenir ce rsultat. Allez dans lediteur de programmes, la touche F4 permet de rappeler le programme :
/*------------------------------------------------------------------* | Summary: | | Creating a grouped and stacked bar chart using the table | | MOI.STID193 and charting the columns | | GROUPE along the vertical axis. | | Generated: 02MAY2000 13:50:33 | *------------------------------------------------------------------*/ /*------------------------------------------------------------------* | The GOPTIONS statement allows you to have more control over the | | final appearance of your output such as fonts, colors, text | | height and so on. The output device and destination is also | | specified in the goptions statement. | *------------------------------------------------------------------*/ goptions reset=(axis, legend, pattern, symbol, title, footnote) norotate hpos=0 vpos=0 htext= ftext= ctext= target= gaccess= gsfmode= ; goptions device=WIN ctext=blue graphrc interpol=join; /*------------------------------------------------------------------* | PATTERN statements allow you to define colors and patterns in | | the chart, map or plot that you are creating. SAS/GRAPH uses | | any pattern statements that you specify. If more are needed, | | default PATTERN statements are used. | *------------------------------------------------------------------*/ pattern1 value=SOLID; /*------------------------------------------------------------------* | AXIS statements allow you to supply information on how your | | vertical and horizontal axes will appear on the graph. | *------------------------------------------------------------------*/ axis1 color=blue width=2.0 ;

axis2 color=blue width=2.0 ; axis3 color=blue width=2.0 ; /*------------------------------------------------------------------* | This section produces the actual bar chart and contains the | | options that directly relate to the data and the axis area. | *------------------------------------------------------------------*/ proc gchart data=MOI.STID193; VBAR3D GROUPE /

maxis=axis1 raxis=axis2 frame type=MEAN sumvar=NOTEMAT patternid=midpoint ; run; quit;

Exercices : I) Effectuez des statistiques lmentaires sur les individus de STID193 pour les variables : Taille, Poids. (Mean, Max, Min etc.) Rcuprez le programme correspondant.

II) Faites un TTest tester la diffrence de moyenne entre les tailles des hommes et celles des femmes des STID de france (en supposant que les STID193 sont un chantillon alatoire reprsentatif de la population des STID de france) Dans SAS/ASSIST choisissez DATA ANALYSIS, ANOVA puis TTEST. Choisissez ensuite la bonne option. (paired=apparie cf arbres debout et abattus de la fiche de tests Minitab) Active data set: Donnez le fichier STID193. "Dependent variable": est la variable sur laquelle nous faisons le test: Taille. Quant la variable de "classification" c'est le sexe. Le rsultat s'affiche. Interprter le rsultat.126 Choisissez File/End pour revenir SAS ASSIST. Si vous le souhaitez, vous pouvez rcuprer le programme SAS par la touche RESULTS.

126 Vous pouvez consultez le paragraphe TTEST de ce document pour interprter cette sortie.

VIII. PETIT DICTIONNAIRE ANGLAIS-FRANCAIS pour l'utilisation de SAS


_______

Anglais-US Analysis To average Axis To cancel Chi square To clear Column Cumulative function Cut Data Decreasing Density Discard graph Drop Eigen value Eigen vector factorial design experiment exponential smoothing File Fill Fonts Frequency Hide Increasing Keep Label Management (data) Marked Mean Median Merge Model

Franais Analyse Faire la moyenne Axes Annuler Effacer Colonne Fonction de rpartition Couper Donne Dcroissant Densit Effacer le graphe Enlever Valeur propre Vecteur propre Plan d'experience (factoriel) Lissage exponentiel Fichier Remplissage Polices de caractres Effectif Cacher Croissant Garder Etiquette (lgende) Gestion(de donnes) Slectionn (e) Moyenne (arith. en gn.) Mdiane Fusionner Modle

Anglais-US Near Nearest None To paste Percent Popup menu Random Remaining Recall Rename Row Run Setup Slice

Small Smallest Smoothing Solid Sort Sum of Squares (USS ou CSS) Etendue Range Rang Rank Srie chronologique Time serie To remove Enlever, ter To round Arrondir Ties Exaequo Toolbar Barre d'outils Toolbox Bote d'outils Unmark Ne plus slectionner Values Valeurs Window Fentre Worksheet Feuille de donnes

Franais Prs (de) Le plus prs Aucun Coller Pourcent % Menu contextuel Alatoire Restant (es) Rappeler Renommer Ligne (worksheet) lg sas: excuter Configuration Portion (de graphique camenbert) Petit Le(la,les) plus petit(es) Lissage Plein (remplissage) Trier Somme des carrs

IX. BIBLIOGRAPHIE COMMENTEE

Cette bibliographie nest pas exhaustive. Elle contient les livres qui vous sont accessibles pour approfondir le cours de Statistiques et pour lutilisation de SAS.

Ouvrages statistiques

Thorie et mthodes statistiques tomes 1 et 2, Pierre Dagnlie, Presses agronomiques


de Gembloux 1992. Ces ouvrages couvrent le cours du DUT STID, ils comportent beaucoup dexemples. Trs utile pour approfondir le cours vu en STID. Ils sont aussi assez cher (250FF par tome environ)

Analyse statistique plusieurs variables, Pierre Dagnlie, Presses agronomiques de


Gembloux 1975. Idem

Mthodes Statistiques en Gestion, Michel Tenenhaus, Dunod Entreprise 1994. Ce


livre est essentiellement pratique. Cet ouvrage ne comporte pratiquement pas de dmonstrations mathmatiques. Il couvre un large ventail de notions (Tests, ANOVA, Rgression linaire, , Sries temporelles, ACP, AFC, Classification hirarchique) et est illustr par de nombreux exemples numriques entirement traits sur SAS, Statgraphics...

Analyses factorielles simples et multiples, Brigitte Escofier, Jrme Pages, Dunod


1990 Cest un ouvrage trs complet sur les analyses factorielles. A utiliser pour approfondir les notions vues en STID.

Rgression non linaire et application, Anestis Antoniadis, Jacques


Berruyer, Ren Carmona, Economica 1992. Ouvrage qui permet de

prolonger votre cours sur la rgression non linaire. Il apporte galement des complments intressants sur la rgression linaire.

Probabilits, Analyse des donnes et Statistique, Saporta, Technip 1990.


Ouvrage thorique de rfrence en probabilit et statistique.

Documentation SAS
Les trois ouvrages suivants sont indispensables pour lutilisation du module SAS de base.

SAS

Companion for the Microsoft Windows environment Version 6 premire dition. Ouvrage indispensable pour utiliser SAS dans lenvironnement Windows PC.

SAS Language version 6, premire dition. Comme son nom lindique vous trouverez
tout ce qui concerne le langage SAS. Il doit tre accompagn de louvrage suivant pour utiliser les procdures SAS.

SAS Procedures Guide version 6, 3me dition. Attention, vous ne trouverez dans cet
ouvrage que les procdures du module SAS de base. Pour les procdures purement statistiques, il faut vous rfrer aux ouvrages suivants. Pour la procdure SQL, il existe un ouvrage spcifique cf. ci-dessous.

SAS guide to the SQL procedure Version 6 First Edition. Cet ouvrage trs clair
dcrit les possibilit (nombreuses) de la procdure SQL. Elle constitue, elle seule, une autre faon dutiliser SAS grce au langage SQL.

SAS guide to Macro Processing Version 6 Second Edition. Cet ouvrage, trs clair,
permet dutiliser les Macros du langage SAS. Cest un ouvrage indispensable pour qui utilise le langage SAS couramment.

SAS

technical reports P222 et P242 Release 6.07 et 6.08. Ils dcrivent les changements et les amliorations pour la version 6.07et 6.08 du module SAS de base (PROC Contents, Datasets, SQL...)

Module STAT

SAS/STAT User's Guide Volumes 1 et 2 version 6, 4me dition Ces 2 volumineux


ouvrages dcrivent les procdures du module STAT (REG, ANOVA, GLM, PRINCOMP, TTEST et cie)

SAS technical report P229 Release 6.07 Dcrit les changements pour le module STAT
version 6.07.

Module SAS/ACCESS

SAS/ACCESS Interface to PC File Formats Usage and reference, Version 6 first


edition.Comme son nom lindique, elle dcrit lutilisation des procdures du module SAS/ACESS permettant de lire et de transfrer les fichiers au format Dbase.

Module SAS/FSP

SAS/FSP

Software Usage and Rfrence, Version 6 First edition Il dcrit les procdures FSVIEW, FSBROWSE... Cest un ouvrage trs clair et accessible.

Module SAS/AF, langage SCL


SAS Screen Control Language : Rfrence Version 6, Second Edition pour accder la syntaxe dune commande SCL. Tout y est. SAS Screen Control Language : Usage Version 6, First Edition pour des exemples de programmation SCL. Manipulation des fichiers de donnes en SCL etc. SAS/AF Software : Frame Entry : Usage and Rfrence, Version 6, First Edition. Pour avoir des dtails sur les objets accessibles dans les entres de type FRAME, les mthodes...

Module SAS/ASSIST

Introduction au Systme SAS avec le logiciel SAS/ASSIST Version 6, deuxime


dition.

Doing more with SAS/ASSIST software Version 6, First edition.


Ces deux ouvrages expliquent lutilisation de SAS grce au module SAS/ASSIST. Ils sont trs conviviaux. Le premier est en franais et le deuxime en anglais.

X.

ANNEXES

A.

Raccourcis clavier
La touche F9 lance laffichage des commandes associes aux touches de fonction : Vous pouvez les modifier en tapant simplement en face de la combinaison de touches associe la commande souhaite.
Touche F1 F2 F3 F4 F5 F6 F7 F8 F9 F11 F12 F1 F2 F3 F6 F7 F8 F9 F10 F11 F12 A B D E F Commande help reshow end recall Signification Aide

Fermeture de la fentre en cours (OUTPUT) Rappel du dernier programme tap (program EDITOR) pgm Fentre program editor active log Fentre log active output Fentre output active zoom off ; submit Compilation du programme keys Cet cran command bar Barre de commande subtop Compilation de la premire ligne du program editor

SHF SHF SHF SHF SHF SHF SHF SHF SHF SHF CTL CTL CTL CTL CTL

left right wpopup

A gauche A droite Menu contextuel, clic droit de la souris

libname dir clear footnote

Affichage des bibliothques en cours Affichage du contenu de la bibliothque en cours Nettoyage de la fentre active Affichage de la fentre de footnote qui permet de dfinir les notes de bas de page afficher chaque nouvelle page. Aide Liste des options du systme SAS Couper Fentre LOG active. Marquer Liste des fileref Liste des titres afficher sur chaque page Annuler la marque Fentre ACCESS

CTL CTL CTL CTL CTL CTL CTL CTL CTL CTL CTL CTL

G H I J K L M Q R T U W

help options cut log mark filename rfind title unmark access

B.

OPERATEURS ET FONCTIONS

1.
a) Syntaxe
* / + ** >< <>

Les oprateurs
arithmtiques Nom
Multiplication Division Addition Soustraction Puissance Maximum Minimum

Exemple
AIRE=LON*LAR TACM=TAM/100 TOT=PRIX1+PRIX2 MONTANT=PRIX-REMISE CUBE=ABSCISSE**3 MAX=MATH1><MATH2 MIN=MATH1<>MATH2

b) Syntaxe
= ou EQ ^= ou NE > ou GT < ou LT >= ou GE <= ou LE

de comparaisons Signification
gal (EQual) diffrent de (Not Equal) suprieur strictement (Greater Than) infrieur strictement (Less Than) suprieur ou gal (Greater or Equal) infrieur ou gal (Less or Equal)

Exemples IF NOM='MARTIN' THEN... (slectionne tous les individus dont la variable NOM est gale MARTIN) IF NOTMAT >=10 THEN... (slectionne tous les individus qui ont la moyenne en maths) c) Syntaxe
AND OR NOT

logiques Signification
et ou non

d)

divers

IN permet de simplifier des tests: IF num IN (1,3,5) THEN ...remplace la suite d'instructions: IF num=1 THEN... IF num=3 THEN... etc... : (deux points) Comparaison de chaines de caractres. Si : suit l'oprateur, la comparaison entre deux chaines de caractres va s'effectuer sur les deux chaines dont on ne gardera que le mme nombre de caractre. (Ce nombre tant le minimum entre les deux longueurs). Par exemple:
IF NOM='M' THEN slectionne tous les individus dont le nom est gal M IF NOM=:'M' THEN slectionne tous les individus dont le NOM commence par M IF NOM=:'MA' THEN... slectionne tous les individus dont le NOM commence par

MA.

2.
a)

Les fonctions
Statistiques usuelles Nom Signification Somme des carrs corrige ( xi x ) 2 Coefficient de variation ( STD/MEAN) Kurtosis (Ce coefficient mesure laplatissement dune
distribution. Un nombre ngatif indique gnralement une distribution plus pointue quune distribution normale; inversement, un nombre positif indique une distribution plus aplatie quune distribution gaussienne) Formule:

CSS CV KURTOSIS

MAX MIN MEAN N NMISS RANGE SKEWNESS

n(n + 1) (n 1) zi4 3 (n 2)(n 3) (n 1)(n 2)(n 3) x x avec zi = i (variable centre rduite) s La plus grande valeur La plus petite valeur La moyenne arithmtique Nombre de non-manquants Nombre de manquants L'tendue (MAX-MIN) Skewness (Ce coefficient mesure lasymtrie dune
distribution. Une valeur plus grande ou plus petite que zro indique une distribution disymtrique)

STD STDERR SUM USS VAR Exemple d'utilisation

n zi3 (n 1)(n 2) x x zi = i (variable centre rduite) s Dviation standard VAR Erreur standard STD / n Somme Somme des carrs xi2
Formule:

avec

Variance 1 / ( n 1) ( xi x ) 2 = CSS / ( n 1)

data moy; set sasuser.stid193; keep hg math fra moy ; moy=mean(hg,mat,fra); run; proc print; var moy; run;

Un nouveau tableau de donnes WORK.MOY est cr...


partir du fichier STID193 de SASUSER... en ne conservant que les variables hg, math, fra et moy cette dernire tant la moyenne des trois notes

Affiche le dernier fichier de donnes cr... Uniquement avec la variable Moy

b)

Probabilistes Signification
P ( X m) o X suit une loi de Poisson de paramtre P ( X x ) o X suit une loi Beta(a,b) P( X m) o X suit une loi binomiale B(n,p). P( X x) o X suit une loi du ddl degrs de libert P( X x ) o X suit une loi de Ficher-Snedeccor nuddl
degrs de libert pour le numrateur et deddl pour le dnominateur. P( X x) o X suit une loi Gamma de paramtres (a,1)

Fonctions de rpartition
POISSON(,m) PROBBETA(x,a,b) PROBBNML(p,n,m) PROBCHI(x,ddl) PROBF(x,nuddl,deddl)

Fonction Inverse

BETAINV(p,a,b) CINV(p,ddl) FINV(p,nuddl,deddl)

PROBGAM(x,a) PROBNORM(x) PROBT(x,ddl)

GAMINV(p,a) PROBIT(p) TINV(p,ddl)

P( X x) o X suit une loi normale N(0,1) P( X x ) o X suit une loi de Student ddl degrs de
libert.

Exemple n1: Je veux calculer le fractile d'ordre 0.95 d'une loi du 20 degrs de libert. (ou encore x? tel que P ( X x ) = 0. 95 o X est une VA suivant un 20 ddl) data _null_; _null_ pour que les donnes ne soient pas conserves en mmoire. x=CINV(0.95,20); calcule la valeur voulue. put x; et l'affiche dans la fentre LOG. run; lance l'excution. Exemple n2: Je veux calculer P(X=3) o X suit une loi binomiale B(10,0.57). En remarquant que P ( X 2 ) + P ( X = 3) = P ( X 3) (loi discrte),cette valeur est en fait P ( X 3) P ( X 2 ) . D'o: data _null_; x=PROBBNML(0.57,10,3)-PROBBNML(0.57,10,2); put x; run;

Gnration de nombres alatoires


RANBIN(seed,n,p) RANCAU(seed) RANEXP(seed) RANGAM(seed,a) RANNOR(seed) (ou NORMAL) RANPOI(seed,m) RANUNI(seed) (ou UNIFORM)

Gnre une ralisation d'une VA suivant une ...


loi binomiale B(n,p) loi de cauchy de paramtres 0,1. loi exponentielle de paramtre 1 loi Gamma de paramtres a,1. loi normale N(0,1) loi de Poisson de paramtre m loi uniforme U[0,1]

Note: seed (graine en anglais) vous permet d'obtenir les mmes squences de nombres alatoires (avec la mme graine initiale). Si vous n'uilisez pas cette possibilit, choisissez pour seed la valeur 0 (la graine est dtermine partir de l'heure et de la date) Voir lexemple suivant.

Exemple: Gnrez 1000 ralisation d'une N(2,3).


DATA alean23; Un fichier temporaire WORK.ALEAN23 est cr. DO I=1 TO 100; Nous allons rpter 100 fois un groupe d'instruction (FOR du Pascal) x=RANNOR(12)*3+2; x est une ralisation d'une N(2,3) OUTPUT; Nous plaons cette valeur dans le fichier END; La boucle est termine. KEEP x; Nous ne conservons que la variable x dans le fichier(i est inutile) RUN; PROC PRINT; RUN; Remarque: Si vous excutez 2 fois cette squence, vous obtiendrez la mme srie de nombre (car la graine est impose 12. Par contre, si vous mettez 0, les deux squences obtenues seront diffrentes. Essayez !

c) Syntaxe ABS(x) ARCOS(x) ARSIN(x) ATAN(x) CEIL(x)

Mathmatiques Signification

Valeur absolue de x Arccosinus(x) Arcsinus(x) Arctangente(x) Retourne le plus petit entier suprieur ou gal l'argument (Ceil(3.2)vaut 4) COS(x) Cosinus COSH(x) Cosinus hyperbolique DIGAMMA(x) La drive du logarithme de la fonction Gamma EXP(x) Exponentielle de x FLOOR(x) Retourne le plus grand entier infrieur ou gal l'argument (Floor(3.2) vaut 3) GAMMA(x) Fonction Gamma INT(x) Partie entire de x MAX(x1,x2,...,xn) Retourne la plus grande valeur MIN(x1,x2,...,xn) Retourne la plus petite valeur MOD(x,y) Reste dans la division de x par y LGAMMA(x) Lorarithme nprien de la fonction Gamma LOG(x) Logarithme nprien de x LOG10(x) Logarithme dcimal de x ROUND(x,y) arrondi x y prs ex: Round(223.456,0.01) donne 223.46 SIGN(x) Signe de x (-1 si ngatif, 1 si positif, 0 si nul) SIN(x) Sinus(x) SINH(x) Sinus hyperbolique SQRT(x) Racine carre TAN(x) Tangente(x) TANH(x) Tangente hyperbolique TRIGAMMA(x) La drive de DIGAMMA.

d)

Date et heure

Syntaxe DAY(date) MONTH(date) YEAR(date) WEEKDAY(date) MDY(month,day, year) MINUTE(time) HOUR(time) SECOND(time) HMS(hour,minute ,second) TODAY( ) TIME( )

Signification Retourne le jour dune date donne Retourne le mois dune date donne Retourne lanne dune date donne Retourne le jour de la semaine dune date Retourne une date SAS correspondant au jour/mois/anne cits en argument. Retourne les minutes dune heure donne Retourne les heures dune heure donne Retourne les secondes dune heure donne Retourne une heure SAS correspodant aux heures minutes et secondes cites en argument. Retourne la date courante. Ne rien mettre entre les parenthses. Retourne lheure courante

Voir lannexe sur les Formats-Informats pour la manipulation des dates.

C.
1.

Format et Informat
Formats

SAS dispose denviron 70 formats daffichage pour les variables. (nombre, date, heure, chane de caractre...Si vous ne trouvez pas votre bonheur, vous pouvez toujours dfinir vos propres formats, informats, masques daffichage en utilisant PROC FORMAT (cf. ce document) Pour modifier le format dune variable, il y a plusieurs possibilits. Si votre fichier de donnes existe dj, vous pouvez utiliser la procdure DATASETS ou PRINT (sous commande Format). Si vous tes en train de crer votre fichier de donnes, vous pouvez spcifier directement le format dans la commande DATA servant crer ce fichier. Le format sera alors toujours attach la variable. Pour connatre les formats en cours des variables de vos fichiers, il suffit dexcuter une procdure Contents (Datasets). Exemple simple:
data work.essai; input x; format x 7.1; cards; 1528 1255.325 15255.3 1228.62 1148.5 run; Proc print; run;

donnera la sortie:
OBS 1 2 3 4 5 X 1528.0 1255.3 15255.3 1228.6 1148.5

Le format (7.1) spcifi signifie que les nombre doivent tre reprsents sur 7 caractre dont une dcimale. Un format 10.4 donnerait: OBS X 1 1528.0000 2 1255.3250 3 15255.3000 4 1228.6200 5 1148.5000

Liste de quelques formats


Signification des symboles utiliss w est un nombre entier donnant la largeur maximale de la reprsentation du nombre. Si le nombre est omis, juste la place ncessaire sera alloue. d est un nombre entier gal au nombre de dcimales (pour une variable numrique) Le format de lexemple prcdent a pour abrviation: w.d

Formats de nombres:
Format (syntaxe)
w.d BESTw. BINARYw. COMMAw.d COMMAXw.d DOLLARw.d DOLLARXw.d Ew. FRACTw. HEXw. OCTALw. PERCENTw.d

Valeur non formatte


125.236

Format (pour notre exemple)


6.2 best3. binary. comma10.2 commax10.2 dollar10.2 dollarx10.2 e10. fract4. fract. hex8. octal6. percent10. percent10. percent10. roman10. wordf15.

Valeur formatte
125.24

Remarque
Cest le format standard. Sas cherche le meilleur format. Passage en binaire. Sparateur des milliers (version US) Sparateur des milliers (version franaise !)

123 23451.23 23451.23 1254.71 1254.71 1257 0.666666666667 0.2784 88 3592 0.1 1.2 -0.05 1992 2

01111011 23,451.23 23.451,23 $1,254.71 $1.254,71 1.257E+03 2/3 174/625 00000058 007010 10% 120% ( 5%) MCMXCII two

ROMANw. WORDFw.

Notation scientifique Convertion sous forme fractionnaire Conversion en base 16 (hexadcimal) Conversion en base 8 (octal) Convertit en %, le nombres ngatifs sont entre parenthses. Convertit en chiffres romains ! Convertit les nombres en lettres

Exemple: Si vous voulez convertir 1995 en chiffres romains, il suffit de taper le programme suivant et de regarder la LOG data essai; x=1995; put x roman10.; run; Vous pouvez alors voir que 1995=MCMXCV !!! Et en lettres: data essai; x=1995; put x wordf60.; run; on obtient alors: 1995= one thousand nine hundred ninety-five and 00/100 !!!

Formats de dates, heures...


Prliminaires sur les dates, heures et dateheure SAS. Dates Les dates sous SAS sont codes sous forme numriques. Le 0 correspond au 1/1/1960 le 1 au 2/1/1960 etc... Les nombres ngatifs correspondent aux dates antrieures 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 !) Il est naturellement possible dafficher les dates convenablement grce qux formats qui suivent. Les dates sur deux chiffres sont codes partir de 1900. 56 signifie 1956. Pour modifier cela, en rapport avec lan 2000, voir loption YEARCUTOF de linstruction OPTIONS. CF. cette annexe. Heures Les heures sous SAS sont codes de la mme faon en secondes partir de minuit. Ainsi 9H30 et cod 34200. (Il y a 34200 secondes entre minuit et 9H30 !)

Date et heure Enfin SAS possde un systme spcial de codage dune date et dune heure dans un mme nombre. Cest le nombre de secondes entre le 1/1/1960 minuit et votre date et heure. Ainsi, le 5/6/1989 9H30 est cod 928661400.

Format (syntaxe)
DATEw.

Valeur non formatte


10847

Format (pour notre exemple)


date5. date7. date9. datetime7. datetime12. datetime18. day2. ddmmyy5. ddmmyy6. ddmmyy8. ddmmyyp8. ddmmyyd8.

Valeur formatte
12SEP 12SEP89 12SEP1989 12SEP89 12SEP89:03 12SEP89:03:19:43 23 25/12 251290 25/12/90 25.12.90 25-12-90

Remarque

DATETIMEw.d

10847

DAYw. DDMMYYw.

DDMMYYxw.

10919 11316 11316 11316 11316 11316

Les chiffres apparaissant aprs la date sont les heures minutes secondes. Cest le jour du mois Format europen classique.

DOWNAMEw. HHMMw.d HOURw.d

MMDDYYw.

10621 10621 46796 41400 41400 41400 10847 10847 10847

downame. hhmm. hour4.1

Sunday 13:00 11.5

x peut prendre les valeurs : B pour un blanc. C pour une virgule D pour un tiret N pour rien P pour un pont. S pour une barre de fraction. Retourne le jour de la semaine Ecrit lheure et la fraction dcimale de lheure. (11.5=11H30) Attention, le mois est avant le jour ! (format courant amricain) Le x peut prendre les valeurs : B pour un blanc. C pour une virgule D pour un tiret N pour rien P pour un pont. S pour une barre de fraction. Convertit une variable horaire en minute et seconde aprs minuit. Formate une date en mois et anne spares par un caractre.

mmddyy5. mmddyy6. Mmddyy8.

09/12 091289 09/12/89

Et

MMDDYYxw.

MMSSw.d

4530

mmss.

75:30

MMYYxw.

29may1989

MONNAMEw. MONTHw. MONYYw. QTRw.

10919 10919 10750 10741

mmyy5. mmyyc7. mmyyd7. mmyyp6. mmyys7. monname9. month. monyy7. qtr.

05M89 05:1989 05-1989 05.89 05/1989 November 11 JUN1989 2

QTRRw.

10897

qtr.

IV

Affiche le mois en lettre dune date. Affiche le mois en chiffre dune date. Affiche le mois et lanne dune date. Affiche le n du trimestre correspondant la date en question. Idem mais en chiffres

romains ! TIMEw.d WEEKDATEw. 59083 10848 10848 10848 10848 10869 10621 time. weekdate3. weekdate9. weekdate15. weekdate17. weekdatx. weekday. 16:24:43 Wed Wednesday Wed, Sep 13, 89 Wed, Sep 13, 1989
Wednesday, 4 October 1989

WEEKDATXw. WEEKDAYw.

Jour de la semaine dune date (1=dimanche, 2=lundi etc...)

WORDDATEw.

11212

YEARw. YYMMxw. YYMMDDw. Et YYMMDDxw.

11212 11212 11212

worddate3. worddate9. worddate12. worddate18. year4. yymmc7. yymmdd8.

Sep September Sep 12, 1990


September 12, 1990

1990 1990:09 90-09-12 x peut prendre les valeurs : B pour un blanc. C pour une virgule D pour un tiret N pour rien P pour un pont. S pour une barre de fraction.

YYMONw. YYQxw. YYQRxw.

10621 11212 11212

yymon7. yyqc6. yyqrc8.

1989JAN 1990:3 1990:III

Anne suivie du numro de trimestre Idem mais le numro de trimestre est en chiffres romains.

Exemples dutilisation: Avec la date... Une runion est prvue le 27 janvier 1995 et je souhaite envoyer un courrier 45 jours avant. A quelle date cela correspond-il ? data _null_; date='27JAN1995'D; envoi=date-45; put envoi DDMMYY8.; run; Donnera dans la Log: 13/12/94.

Le D indique SAS que la chaine de caractres est une date.

avec lheure... Ici on va retire 10 minutes 10:03 et afficher le rsultat. data _null_; heure='10:03'T; envoi=heure-600; put envoi TIME10.; run; On obtient alors: 09:53:00.

On initialise lheure. Le T signale SAS quil va lire une heure. On retire 10 minutes (=600 secondes).

avec la date et lheure en mme temps Supposons que lon veuille connatre le nombre de minutes entre le 1/5/1966 4H et le 27/04/1995 09:26. (Problme compltement stupide je vous laccorde !) data _null_; date1='01may1966:04:00'DT; date2='27apr1995:09:27'DT; diff=(date2-date1)/60; put diff; run; (On trouve 15247047 minutes !)

DT indique SAS que lon va lire une Date+Heure Avril=April in English ! La diffrence est en secondes...

Exercices I) Calculez votre age en annes puis en heures (si vous connaissez votre heure de naissance. II) Quel jour (de la semaine) tes-vous ns ?

Complment Il est possible de crer ses propres formats et de les appliquer ensuite des variables adquates. Pour en savoir plus, allez consulter le paragraphe PROC FORMAT de ce document.

2.

Les Informats

Ils sont utiliss pour lire des donnes qui ont un format spcial dans un fichier texte externe. Vous pouvez en dfinir de nouveaux avec la procdure FORMAT.

Exemple Le fichier STID93 contient une variable date de naissance que SAS considre (pour linstant) comme chane de caractres. Aucun calcul nest donc possible dessus. Grce un Informat, nous pouvons prciser SAS ce quil va lire (une date) et dans quel ordre seront les lments qui la constitue. Voici un exemple en supposant les donnes incluses dans le programme. data work.age; input datnaiss ddmmyy10. ; aujour=today(); agejour=aujour-datnaiss; agean=int(agejour/365.25);
Nous indiquons SAS quil va lire une date dans les 10 premiers caractres avec dans lordre le jour, le mois, lanne. Donne le jour daujourdhui. Nous calculons lage en jours. Nous calculons lage en annes. Nous prenons la partie entire Nous donnons des formats daffichages... Les dates apparaitront en clair.

format datnaiss date.; format aujour date.; cards; 01/05/1966 23/10/1975 23/05/1944 ; run; proc print; run; Nous obtenons laffichage: OBS 1 2 3 DATNAISS 01MAY66 23OCT75 23MAY44 AUJOUR 27APR95 27APR95 27APR95

AGEJOUR 10588 7126 18601

AGEAN 29 20 51

Avec une lecture en colonnes Nous supposons que le fichier STID193 (format texte) contient la date de naissance des individus sur les colonnes 8 17 sous la forme jj/mm/aaaa. (exemple 20/06/1975.) Le programme suivant ralise limportation des dates. data work.naiss; infile 'z:\public\stid193.txt' missover firstobs=2; input @8 datnaiss ddmmyy10.;
an. Cest la ligne cl ! Le @8 demande SAS de lire partir de la colonne 8. Le ddmmyy10. signale que la date est sur 10 caractres dans lordre jour mois

format datnaiss date.; run; proc print; run; L affichage donne: OBS 1 2 3 4 DATNAISS 21OCT73 08DEC74 15AUG72 10NOV72

Pour permettre laffichage en clair de la date dans le Proc Print ci-dessous.

Quelques Informats
Syntaxe $w.
$HEXw.

Valeur lire
Marie-Christine 6C6C

Informat utilis pour la lire


$10. $hex4.

Rsultat de la lecture
Marie-Chri 11

Remarques
Lit une chane de longueur w. (8 par dfaut) Convertit une chane hexadcimale en chane de caractres. Enlve les , () $ des nombres. Idem en changeant les rles des , et les .

$COMMAw.d COMMAXw.d. DATEw.

$1,000,000 (500) $1.000.000 1jan1990 01 jan 90 1 jan 90 1-jan-1990 23dec89:10:03:17 231090 23/10/90 23 10 90 1.257E3 88F 010190 1/1/90 01 1 90 jun89 1% (20%) 14:22:25 900101 90-01-01

comma10. comma10. commax10. date10.

1000000 -500 1000000 10958 10958 10958 10958 946029797 11253 11253 11253 1257 2191 10958 10958 10958 10744 0.01 -0.2 51745 10958 10958

DATETIMEw. DDMMYYw.

datetime20. ddmmyy8.

Lecture de dates exemple ci-dessus)

(cf

Ew.d HEXw. MMDDYYw.

e7. hex3. mmddyy8.

Lecture de nombres en notation scientifique.

MONYYw. PERCENTw.d TIMEw. YYMMDDw.

monyy5. percent3. percent5. time8. yymmdd8.

Conversion de % Lecture dheures minutes secondes.

D.

Commande ou fentre OPTIONS en langage SAS

Cette instruction ou fentre permet de grer laffichage dans la fentre OUTPUT, dafficher le contenu des variables macros ou des programmes et bien dautres choses encore.

1.

La fentre doptions

Elle est active en faisant un CTRL I ou en allant dans GLOBAL/OPTIONS/GLOBAL OPTIONS. Vous obtenez ce qui suit :

Vous pouvez modifier les paramtres comme vous le souhaitez.

2.

Linstruction

Exemples : Dans le program Editor lancez un Options linesize=70 pagesize=50 ; Ceci vous permet de changer 70 le nombre de caractres par lignes dans la fentre OUTPUT et 50 le nombre de lignes par page. Options nodate nonumber ; Va vous permettre de supprimer laffichage de la date et des numros de page dans la fentre OUTPUT. Un Options date number ; remettra tout comme avant ! Voici quelques options parmi les principales. Nom AUTOEXEC= Signification Spcifie le nom du fichier excuter au lancement de SAS CENTER/ NOCENTER Centre ou non les sorties dans lOUTPUT CONFIG= Spcifie le nom du fichier de configuration prendre en compte sous SAS DATE/ NODATE Affiche ou non la date dans lOUTPUT ECHOAUTO/NOECHOA Affiche ou non lautoexec dans la LOG lorsquil est UTO excut. ERRORS=n N est le nombre derreurs afficher compltement dans la LOG. FIRSTOBS=n Obligera SAS ne lire qu partir de la nieme observation dans les fichiers de donnes Elle est initialise 1 par dfaut. FMTERR/NOFMTERR Spcifie si SAS doit sarreter ou non lorsquil rencontre un format de variable inconnu. Dans le cas ou NOFMTERR est active, le format dfaillant est remplac par w. ou $w. FORMDLIM= Spcifie un caractre utiliser lors des sauts de pages de SAS dans lOUTPUT. FULLSTIMER/ Affiche ou non des statistiques internes de SAS sur la NOFULLSTIMER performance du systme (occupation mmoire etc) lors de lexcution du code GWINDOW/ Affiche ou non les graphiques haute rsolution dans le NOGWINDOW display manager. IMPLMAC/ NOIMPLMAC Autorise le compilateur SAS vrifier sil rencontre des macros, ce qui ralentit le temps dexcution. INITCMD Supprime laffichage des fentres LOG, OUTPUT et PROGRAM EDITOR lors du lancement dune

application AF INVALIDDATA=caractr Spcifie la modalit prise par dfaut lorsque INPUT lit e une mauvaise valeur. Par dfaut cest un point . LABEL / NOLABEL Spcifie si oui ou non les procdures SAS peuvent utiliser ou non les labels _LAST_=nom de fichier Spcifie le nom du dernier fichier cr. SAS LINESIZE= Nombre de caractres par ligne. LOG=destination / NOLOG Choisit une destination pour le contenu de la fentre LOG ou supprime la fentre LOG MACRO / NOMACRO Spcifie si oui ou non le langage MACRO est disponible ou non. MAPS= bibliothque Bibliothque SAS contenant les cartes du module GRAPH MAUTOSOURCE / Spcifie si oui ou non lautocall est disponible pour les NOMAUTOSOURCE macros. MERROR / NOMERROR Spcifie si le systme renvoie une erreur sil rencontre un nom de macro inconnu. MISSING=caractre Spcifie le caractre pour les valeurs manquantes. Cest un point . par dfaut. MLOGIC / NOMLOGIC Spcifie si oui ou non, le processeur de macro trace lxcution de celle ci quant aux conditions %IF etc. MPRINT / NOMPRINT Affiche ou non les instructions lors de lexcution dune macro. MSGCASE / Spcifie si les messages affichs dans les notes, warnings NOMSGCASE sont en majuscules ou non. MSGLEVEL= N ou I Affiche moins ou plus dinformations dans la fentre LOG. N par dfaut. MSTORED / Autorise ou non SAS utiliser des macros compiles. NOMSTORED NEWS=fichier Contient un fichier mettre dans la fentre LOG. NOTES / NONOTES Spcifie si les notes sont affiches dans la LOG ou non. NUMBER / NONUMBER Spcifie si SAS affiche les numro de page dans la fentre OUTPUT ou non. Voir aussi PAGENO= et DATE OBS= numro Spcifie quelle observation SAS utilisera en dernier. A combiner avec FIRSTOBS= OVP / NOOVP Spcifie si SAS souligne les erreurs dans la LOG ou non. PAGENO= Spcifie le prochain numro de page indiquer dans lOUPUT. voir aussi NUMBER PAGESIZE=n Spcifie le nombre de lignes dans une page. RSASUSER / Spcifie si SASUSER est en lecture seule ou non. NORSASUSER SASAUTOS= Spcifie les bibliothques autocall. SASMSTORE= Spcifie le libref dune bibliothque SAS contenant le SASMACR catalogue. YEARCUTOFF=nombre Spcifie comment SAS doit comprendre les annes deux chiffres. Par exemple avec YEARCUTOFF=1950, 33 sera 2033 mais 55 sera 1955

E.

Echange dynamique de donnes SAS-EXCEL :Liaisons DDE


Les liaisons DDE de Windows permettent de transfrer des donnes entre 2 applications Windows. Lapplication qui reoit les donnes est lapplication client, celle qui les envoie est lapplication serveur. Les liaisons DDE peuvent tre permanentes (hotlinks) ou temporaires (coldlinks). Les deux exemples suivants sont des coldlinks , les donnes ne sont transfres quune seule fois et la liaison est coupe.

1.

Voyons un exemple de transfert SAS vers Excel


On souhaite transfrer les variables Groupe, Sexe, Taille, Poids du fichier de donnes SAS STID193 vers les 4 premires colonnes de la feuille 1 dExcel. Lanons Excel et SAS. Tapons le programme suivant dans le Program Editor :
pour accder au rpertoire PUBLIC

Altgr 6

Point dexclamation.

Pour orienter les PUT vers le fichier extrait Fichier de donnes dont sont issues les dones criture des variables dans le fichier extrait donc sous Excel car se fichier est li Excel par la liaison DDE prcdente.

Voici comment se prsentent les premire lignes de la feuille 1 dExcel :


A A A A A A A 1 1 1 11.5 2 2 2 2 12 13 15 10 18 15 68 61 68 54 50 58 58

Gnial non ? Remarques : Pour terminer le travail, il faut remplacer les . par des , dans les donnes pour quExcel les reconnaissent comme des donnes numriques (cf. le 11.5 de la note de maths). Il faut galement faire attention

601l: 1c1l 1liuef :lecxe

;'4c601l:1c1l!1liuef|lecxe' edd tiartxe emanelif ; leicigol\cilbup\7959dits\: g iom emanbiL E C ;sdiop elliat exes epuorg tup ;391dits.iom tes ;tiartxe elif ;_llun_ atad ;nur

Mise en place de la liaison DDE : cest lapplication concerne (Application) : cest le n de la feuille (Topic) :c4 : cest la zone concerne par le recueil des donnes (Item). Il y a 106 individus dans le fichier STID193, on rserve donc 106 lignes. ration dun fichier de donnes SAS fictif

aux manquants que SAS remplace par des points . alors quExcel les reconnat par une cellule vide. Attention : Si vous avez donn un nom votre fichier Excel, vous devez remettre ce nom dans la dfinition de la liaison DDE la rubrique TOPIC.
127

Ainsi, si votre fichier est nomm ESSDDE.XLS, linstruction filename sera du type :
;'4c601l:1c1l!slx.eddsse|lecxe' edd tiartxe emanelif

2.

Transfert Excel vers SAS


Lancez Excel et mettez les donnes suivantes dans les 3 premires colonnes de la feuille1 :
Paul Gronimo Charles-Edouard Henri 12 27.5 32 -52152.2215 -8.2 7.582 123.2513 258.32

Remarque : Nous avons mis un point . comme sparateur dcimal (SHIFT ;) sinon SAS ne reconnatra pas ces variables numriques. Nous allons transfrer ces donnes sous SAS en tapant le programme suivant :
;'3c4l:1c1l!1liuef|lecxe' edd iasse emanelif
Altgr 6 Mise en place de la liaison DDE : cest lapplication concerne (Application) : cest le n de la feuille (Topic) Point :c3 : cest la zone concerne par le dexclamation. recueil des donnes (Item) ration dun fichier de donnes SAS A partir du fichier (logique) essai qui est en fait compos des 3 premires colonnes et des 4 premires lignes dexcel. On importe la premire colonne sous la variable alpha ($) nom , puis les deux autres (numriques) sous les noms var1 et var2 .

Un Proc Print pour afficher le fichier ainsi import.

Attention : Si vous avez donn un nom votre fichier Excel, vous devez remettre ce nom dans la dfinition de la liaison DDE la rubrique TOPIC.128 Ainsi, si votre fichier Excel est nomm ESSDDE.XLS, linstruction filename sera du type :
;'3c4l:1c1l!slx.eddsse|lecxe' edd iasse emanelif

Nous obtenons :
127 Sinon SAS ne le retrouvera pas (physical file doesnt exist... 128 SAS est intelligent ! En effet, quand vous lancez Excel, celui ci charge le classeur1 (class1) par dfaut et si vous chargez un autre fichier nomm, vous vous retrouvez avec deux classeurs. SAS veut donc que vous nommiez votre classeur pour savoir ou faire le transfert !

4l: 1c1l 1liuef :lecxe

;nur ;eennod.iom=atad tnirp corp

;2rav 1rav $ mon tupni ;nur

;iasse elifni ;eennod.iom atad

/*lecxE suos LAUQ 2NIRP 1NIRP MON sennod sed trefsnart */ ;nur ;2iasse.krow=atad tnirp corp ;nur ;moned/remun=lauq ;)2nirp,1nirp(SSU=remun ;)ced,von,tco,pes,uoa,iuj,nuj,iam,rva,ram,vef,naj(SSU =moned ;iasse.krow tes ;2iasse.krow atad ;nur ;ced von tco pes uoa iuj nuj iam rva ram vef naj rav ;1=dts 0=naem iasse.krow=tuo iasse.krow=atad dradnats corp /*sudividni sed noitatnesrper ed tilauq al ed luclaC */ ;nur ;ced von tco pes uoa iuj nuj iam rva ram vef naj rav ;iasse.krow=tuo pca.iom=atad pmocnirp corp

023.852 152.321 285.7 002.82RAV

22.2512500.23 05.72 00.21 1RAV

irneH -selrahC ominorG luaP MON

4 3 2 1 SBO metsyS SAS ehT

7991 ,8 yaM ,yadsruhT 64:90

3.

a)

Nous allons charger le fichier ACP que vous connaissez bien, effectuer lACP sur les 12 variables de tempratures, calculer les qualits des diffrentsindividus (cf. chapitre ACP de ce document) et importer sous Excel les projections des villes sur le premier plan principal.

Nous pouvons ensuite tracer le nuage de points trs simplement.


;nur ;lauq 2nirp 1nirp mon tup ;2iasse.krow tes ;tiartxe elif ;_llun_ atad ;'4c61l:1c2l!1liuef|lecxe' edd tiartxe emanelif

Applications

Trac du premier plan principal sous Excel dans une ACP faite sous SAS

Premier Plan Principal


4 3 2eme composante 2 1 0 -5 -4 -3 -2 -1 -1 -2 -3 1ere com posante 0 1 2 3 4 5 6

Remarque : Il serait intressant dtiquetter les points ici, mais Excel ne met que la premire srie de donnes comme tiquette. Il faut ensuite les modifier une une avec les noms des villes !

b)

Rcupration des rsidus et des mesures dinfluence sous Excel dans le cas dune Regression linaire multiple Dans la pratique, il est souvent commode dutiliser SAS pour effectuer les calculs et dExcel pour les reprsentations graphiques.129 Prenez le fichier REGDDE.XLS, changez toutes les , en . pour importer ce fichier sous SAS. Ecrivez ensuite le programme dimportation en utilisant la liaison DDE (attention ne transfrez pas les noms des colonnes) Effectuez ensuite une regression linaire de Y en (X1,X2) et rcuprez dans un fichier de donnes SAS le DFITS, la distance de COOK, les rsidus, les Y chapeaux. Tranfrez ces nouvelles variables sous Excel dans des colonnes libres du fichier REGDDE.XLS. Changez les points en virgules. Voici les premires lignes de ce que vous devez obtenir :
X1 0,4227 X2 8,6895 Y 37,09 311,66 204,51 327,7 Ychapeau -1474,69379 -974,307121 -1117,94958 -656,520754 Residu 1511,78379 Stdres 2,8356555 Cook 0,2201091 0,11871351 0,08337637 0,05888386 Dfits 0,84345645 0,61154592 0,51308017 0,42522574

1,2497 99,1988 1,5177 63,0564 4,852 94,8181

1285,96712 2,35805921 1322,45958 2,40291472 984,220754 1,77362171

129 SAS possde bien des graphiques Haute rsolution (GPLOT, GCHART etc...) mais leur utilisation est trs lourde et les graphiques obtenus sont mdiocres. De plus, ils sont en mode Bitmap ce qui alourdit les copier-coller, les impressions. Il est alors prfrable de passer par PAINT pour sauvegarder ces fichiers en BMP puis les intgrer dans un document (Insrer Image) .

Faites les graphiques des valeurs rsiduelles. Que pensez-vous de ce modle ?

Pour des informations complmentaires, consultez lindispensable SAS Companion for the Microsoft Windows Environment

F. Nom
ACCESS ANOVA APPEND CATALOG CANDISC CHART CLUSTER COMPARE CONTENTS COPY CORR CORRESP DISCRIM DATASETS DBLOAD FORMAT FORECAST FREQ FSEDIT FSVIEW GLM LOGISTIC MEANS NPAR1WAY OPTIONS PLOT PRINCOMP PRINT RANK REG SORT

Quelques procdures usuelles Module Aperu des possibilits


Conversions de fichiers externes au format SAS. La commande FILE/IMPORT permet un accs automatique cette procdure.

Les procdures en gras sont dtailles dans ce document.

SAS/PC File format Analyse de variance un ou plusieurs critres avec des donnes SAS / Stat SAS / Base SAS / Base SAS/Stat SAS / Base SAS/Stat SAS / Base SAS / Base SAS / Base SAS / Base SAS/Stat SAS/Stat SAS / Base
quilibres. Ajout dobservations contenues dans un fichier SAS la suite dun autre fichier SAS Grer les catalogues SAS Analyse discriminante canonique. Effectuer des diagrammes bandes, histogrammes etc... en mode texte. Classification ascendante hirarchique. Comparer de fichiers SAS Lister le contenu dune bibliothque, les attributs dun fichier ... Copier tout ou partie de fichiers de donnes SAS Calculer des coefficients de corrlation (Pearson, Spearman...) Analyse factorielle des correspondances (simples et multiples) Analyse discriminante baysienne. Lister, copier, supprimer, renommer des fichiers de donnes SAS. (les possibilits des procdures Append, Contents et Copy y sont incluses) Conversion dun fichier SAS au format DBASE... FILE/EXPORT per met de faire ce travail en tant assist. et alphanumriques Prvision pour les sries temporelles. La commande FORECAST est prsente dans ce document. Tris plat, tri croiss pour des variables qualitatives. Tests du Chi 2... Cration de masque de saisie pour crer de nouveaux fichiers de donnes. Visualisation / correction de fichiers de faon interactive. Analyse de variance un ou plusieurs critres avec des donnes quilibres ou non. (Il est prfrable dutiliser Anova avec des donnes quilibres) Rgression logistique. Produire des statistiques lmentaires sur une variable numrique. (Univariate est plus puissante) Effectuer des tests non paramtriques (Mann-Whitney ...) Lister les options en cours de SAS. Crer des nuages de points en mode caractre. (GPLOT pour la haute
rsolution)

SAS/PC File format SAS / Base Dfinir des formats et des informats pour les variables numriques SAS/ETS SAS / Base SAS/FSP SAS/FSP SAS / Stat SAS/Stat SAS / Base SAS / Stat SAS / Base SAS / Base SAS / Stat SAS / Base SAS / Base SAS / Stat SAS / Base

Effectuer des analyses en composantes principales. (ACP) Affichage de tout ou partie dun fichier. Calculer les rangs des observations dune ou plusieurs variables numriques. Effectuer des rgressions. De nombreuses options sont disponibles. (PROC LOGISTIC pour la rgression logistique) Trier un fichier selon un ou plusieurs critres. (Cest un prliminaire
indispensable pour lutilisation de BY avec dautres procdures)

STANDARD SUMMARY TIMEPLOT TRANSPOSE TTEST

SAS / Base SAS / Base SAS / Base SAS / Base SAS / Stat

UNIVARIATE SAS / Stat

Centrer rduire (entre autres) des variables quantitatives. Similaire Means qq dtails prs...utilise pour rcuprer le nombre dindividus, les moyennes varainces etc. pour refaire dautres calculs derrire. Reprsenter graphiquement des sries chronologiques en mode caractre. Pour transposer la matrice des donnes. Les variables deviennent les observations et vice versa. Tester lgalit de deux moyennes (Student), tester lgalit de deux variances (Fisher). (Pour comparer une moyenne un standard, utilisez Univariate) Rsum statistique pour une variable quantitative. Test de normalit (Shapiro Wilk) et test de nullit de moyenne (Student) inclus.

Remarque: Pour connatre la syntaxe complte dune procdure, consultez laide en ligne.

G.

Execution dun FICHIER DE COMMANDES SAS depuis le DOS

Il vous est possible de lancer SAS directement depuis le DOS en utilisant linstruction suivante: win c:\sas\sas.exe -config c:\sas\config.sas Si vous souhaitez en plus que SAS execute un de vos programmes SAS construit antrieurement monprog.sas par exemple, il faut introduire linstruction -sysin:
win c:\sas\sas.exe -config c:\sas\config.sas -sysin c:\sas\monprog.exe

Vous verez alors Windows se lancer et une petite fentre souvrir signalant que SAS execute votre programme et que le contenu de la fentre LOG sera dans le fichier monprog.log et celui de la fentre OUTPUT dans le fichier monprog.lst.

Il vous est possible de modifier la largeur de la page de la fentre OUTPUT grce -linesize ou -ls. Exemple -ls 70 la suite des instructions prcdentes imposera SAS 70 caractres dans la fentre OUTPUT. De mme -pagesize, ou -ps modifie le nombre de ligne par page. Pour avoir la liste des options, vous pouvez consulter le SAS Companion for the Microsoft Windows Environment pp159ss

H.

Importation de fichiers ayant un format connu PROC IMPORT


Cest lapproche langage SAS de limportation de fichier EXCEL, DBASE, CSV etc. effectue avec FILE/IMPORT. Pour importer les fichier de type EXCEL, DBASE etc., vous devez disposer du module ACCESS To Pc File Formats.

Syntaxe simplifie PROC IMPORT DATAFILE=chemin et nom du fichier de donnes OUT=nom de fichier SAS DBMS=type de fichier <REPLACE> ; <options selon type du fichier> ; RUN ;

DBMS peut prendre les valeurs : XLS, CSV, TXT, DLM REPLACE : remplace un fichier existant. Si REPLACE nest pas spcifi, IMPORT ncrasera pas un fichier existant. Les options selon type du fichier tant : GETNAMES=Yes ou No Si la premire ligne de votre fichier de donnes comporte les noms des variables ou non. RANGE= Dlimite la zone importer. Tout sera import RANGE est omis. SHEET= Identifie la feuille importer. Exemple
proc import datafile='D:\data\bsclient.csv' out=work.bsclient dbms=CSV replace; getnames=yes; run;

Va importer le fichier BSCLIENT au format CSV sous SAS.

I.

Exportation de fichiers PROC EXPORT


Cest la rplique exacte de PROC IMPORT mais pour lexportation de fichiers. Ce que nous allons voir fait la mme chose que PROC EXPORT mais en utilisant le langage SAS. Limport export de fichiers peut donc tre gr avec les MACROS ou les programmes en SCL.

Syntaxe simplifie PROC EXPORT DATAFILE= nom de fichier SAS OUTFILE= chemin et nom du fichier de donnes DBMS=type de fichier <REPLACE> ; <options selon type du fichier> ; RUN ;

DBMS peut prendre les valeurs : XLS, CSV, TXT, DLM REPLACE : remplace un fichier existant. Si REPLACE nest pas spcifi, EXPORT ncrasera pas un fichier existant. Les options selon type du fichier tant : DELIMITER=caractre Identifie le dlimiteur qui va sparer les colonnes de donnes. Par dfaut cest un espace.

Exemple
proc export data=moi.bordeaux outfile='D:\data\bordeaux.csv' DBMS=CSV replace; run;

Va exporter la table SAS BORDEAUX en un fichier Bordeaux.Csv dont voici les 3 premires lignes :
ANNEE,X1,X2,X3,X4,QUAL 1924,3064,1201,10,361,2 1925,3000,1053,11,338,3

J.

Complment : Donnes importes dun fichier texte ASCII externe


Pour importer des fichiers ASCII particuliers, vous disposez de lEFI ou de linstruction INFILE.

1.

LEFI
Nous allons importer le fichier texte : STID193CO Faites un file/Import. Cocher la case EFI. Validez.

Pour lancer lEFI, il suffit de cocher cette case.

Slectionnez le fichier STID193CO.TXT dans PUBLIC. Validez. Indiquez un fichier de sortie SAS votre convenance. Validez

La fentre suivante saffiche :

Fichier Original

Fichier converti

Nous voyons que le ; sert de dlimiteur entre les variables. Nous allons lindiquer SAS en cliquant sur le bouton OPTIONS. Choisissez ; comme delimiteur de fichier :

Validez.

Ensuite, cliquez sur une colonne du fichier TEXTE, donnez lui un Nom (nom de variable) dans Field Name et cliquez sur ADD. Faites ceci pour le GROUPE et lORDRE. Pour la DATE, mettez la en numrique, donnez lui comme INFORMAT DDMMYY8. Et comme FORMAT ce que vous voulez. Cf. paragraphe sur les formats. Faites un File/Save pour entrinner vos changements. La LOG doit contenir :

NOTE: WORK.STID193CO was successfully created.

2.

Instruction INFILE : Syntaxe simplifie


Si vous avez un fichier rcalcitrant, mettez le en type texte et utilisez les instructions suivantes. Le seul changement par rapport ce qui prcde est linstruction INFILE qui donne ladresse du fichier texte importer suivi doptions. Bien entendu CARDS a disparu ! DATA nom fichier SAS ; INFILE nom du fichier texte options ; INPUT var1 type1 var2 type2 .... var n type n ; instructions complmentaires RUN ;

Exemple Supposons que vos donnes soient dans un fichier texte (ASCII) externe. Par exemple, voici le contenu du fichier ENTREE.TXT: ERIC M 190 78 MARC M 178.5 75 CLAIRE F . 59 AURELIE F 168 62 JEAN M 168 59
(Note: Les conventions sont les mmes que prcdemment: un espace au moins entre chaque donne, un point pour les donnes manquantes)

Editez le fichier Entree.txt(G:\STID9799\PUBLIC\LOGICIEL) sous Word et vrifiez que les donnes sont correctes. Fermez le document. (SAS ne lit pas des fichiers
ouverts par une autre application)

Remarque: Sous Word, soyez en Police Courier New et faites afficher en clair les espaces et les tabulations
(OUTILS/OPTION/AFFICHER/Tabulations Espaces) ATTENTION: Les tabulations faites sous Word ne sont pas considres par SAS comme des espaces. Ainsi une tabulation est considre comme un seul caractre par SAS alors qu'elle occupe la place de plusieurs sous Word.

DATA WORK.ENTREE; INFILE 'Z:\PUBLIC\LOGICIEL\ENTREE.TXT' ; INPUT NOM $ SEXE $ ETC...; RUN ; PROC PRINT DATA=WORK.ENTREE;
RUN;
Pour visualiser le fichier import Pour faire quelques statistiques... en distinguant selon le sexe.

PROC MEANS DATA=WORK.ENTREE; CLASS SEXE; RUN;

Tapez le programme SAS et vrifiez que limportation sest bien droule.

3.

Donnes ou fichiers inhabituels


Dans le fichier prcdent, les observations taient sur une ligne. (Il y avait un individu par ligne). SAS permet galement dimporter des fichiers textes lorsquil y a une observations sur plusieurs lignes ou plusieurs observations sur une ligne. Il est aussi possible de changer de dlimiteur (lespace par dfaut).

a)

Cas o il y a plusieurs observations par ligne Le fichier TAILLE.TXT contient les donnes suivantes:
Julien 185 Paul 192 Pierre 187 Andre 167 Fiona 154 Eric 185 Juliette 166 Robert 167 Vivien 170 Maxime 196

Pour limporter correctement, il suffit dinclure un @@ dans le input qui permet de garder la ligne en mmoire tant que tout na pas t lu. Voici le programme SAS correspondant: DATA TAILLE; INFILE 'Z:\PUBLIC\LOGICIEL\TAILLE.TXT'; INPUT NOM $ TAILLE @@; RUN;

b)

Cas o il y a une observation sur plusieurs lignes Voici le contenu du LOGICIEL.TXT:


EXCEL 48 WORD 35 MINITAB 10 SAS 10 SPSS 9

Pour limporter correctement, il faut donner un / dans linstruction INPUT pour prciser la fin de chaque ligne: DATA WORK.LOGICIEL; INFILE 'Z:\PUBLIC\LOGICIEL\LOGICIEL.TXT'; INPUT NOM $ / NOMBRE ; RUN; c) Changement de dlimiteur

Jusquici, les variables taient spares par des espaces dans le fichier importer. Si ce nest pas le cas, il faut utiliser loption dlm=derrire INFILE. Voici le contenu du fichier TAILLEV.TXT: JULIEN;185;PAUL;192;PIERRE;187;ANDRE;167 FIONA;154;ERIC;185;JULIETTE;166 ROBERT;167;VIVIEN;170;MAXIME;196 Pour limporter correctement, il faut donner un dlm=; dans linstruction Infile pour prciser SAS le dlimiteur utilis. DATA WORK.TAILLEV; INFILE 'Z:\PUBLIC\LOGICIEL\TAILLEV.TXT' DLM=';'; INPUT NOM $ TAILLE @@; RUN;

d)

Plusieurs lignes de titre...(FIRSTOBS) Si votre fichier texte commence par une ligne de titre, vous pouvez demander SAS de lire partir de la deuxime grace l'option FIRSTOBS de INFILE: Exemple : INFILE 'I:\STID\ERIC\ESS.TXT' MISSOVER FIRSTOBS=2;

e)

Lignes trs longues (plus de 132 caractres) Infile/ lrecl. SAS fixe par dfaut la largeur maximale de lecture 132 caractres. Si votre fichier fait 500 colonnes de large, il faut ajouter sur Infile loption LRECL=500.
INFILE 'G:\STID\ERIC\ESS.TXT' MISSOVER FIRSTOBS=2 LRECL=500;

f)

Saut la ligne Option Flowover et Missover de Infile. Par dfaut, SAS va la ligne suivante sil na pas saisi toutes les donnes sur la ligne courante que sont INPUT demandait. (option FLOWOVER) Il est beaucoup plus habituel de considr comme manquantes les donnes ne figurant pas sur la ligne en question (plutt que daller en chercher sur la ligne suivante ! ! !). (option Missover)
INFILE 'G:\STID\ERIC\ESS.TXT' MISSOVER FIRSTOBS=2;

Exercice rcapitulatif. Nous avions demand aux STID193 de nous donner leur date de naissance. Voici le fichier STID93CO.TXT
A;1;21/10/73;DOC A;2;08/12/74;cio A;3;15/08/72;ami A;4;10/11/72;cio A;5;30/11/74;cio A;6;11/02/74;cio A;7;14/09/74;cio ... B;26;18/12/73;cio B;27;15/03/73;cio B;28;08/08/69;livre tudiant C;1;25/07/73; C;2;28/10/72; C;3;30/04/74;

Il contient, pour les STID193 : leur groupe, leur numro dordre dans le groupe, leur date de naissance et la faon dont il ont connu lIUT.

Ecrivez le programme SAS ralisant son importation en considrant dans un premier temps la variable date comme du texte ($)et lancez le. Il y a une difficult ici. Remarquez les individus du groupe C, ils nont pas renseign la dernire variable. SAS, par dfaut veut mettre quelque chose dans la dernire variable !(option Flowover de Infile), il va donc lire ce qui lui manque sur le lindividu du groupe C la ligne suivante ce qui fausse tout ! Il faut donc demander SAS de considrer comme manquant la dernire variable lorsquil ny a rien sur la ligne. Pour cela, vous ajouterez loption MISSOVER dans linstruction INFILE. Faites un PROC PRINT pour vous assurer que le fichier comporte bien 106 personnes. Complter le programme prcdent pour importer la date correctement et calculez lge des STID193 la date daujourdhui.

4.

Lecture des donnes par colonnes dans un fichier ASCII externe.


Cette mthode dimportation nest utiliser que lorsque File/Import ne fonctionne pas et lorsque vous souhaitez importer une partie du fichier ASCII original. Pour importer tout le fichier, utilisez linstruction Input classique.

a)

Instruction INPUT (lecture en colonne) Supposons que vous ayez un fichier 'G:\STID9597\MONREP\ESS.TXT' sous la forme suivante: (l'encadr indique les n de colonne: 1, 5, 10, 15, 20 et 25) 1 1 2 2 1...5....0....5....0....5 A 180 68 69700 B 168 61.5 26000 A 178 68.5 A 175.5 78.5 74100

premire ligne du fichier

Vous avez ici 3 individus sur lesquels agissent quatre variables. Colonne 1: variable Bac Colonnes 4 8: variable taille Colonnes 12 15: variable poids (il faut prendre le plus large possible !) etc.

Pour mettre ce fichier au format SAS sous le nom WORK.ESSAI en ne conservant que les variables bac, poids, et taille, il faudra taper:
DATA WORK.ESSAI; infile 'G:\STID9597\MONREP\ESS.TXT' Missover; input BAC $ 1 TAILLE 4-8 POIDS 12-15; run;

Application: Que faut-il ajouter au programme prcdent pour charger en plus la variable code postal ? Remarque: L'option MISSOVER de INFILE indique SAS de complter par des valeurs manquantes toute ligne incomplte. (Sinon SAS va lire la ligne suivante ce qui lui manque (Flowover)) Mise en pratique Editez le fichier ESS.TXT (au format texte DOS)avec un diteur de texte (Word en police courier new pour avoir des colonnes bien alignes avec affichage des espaces et des tabulations (OUTILS/Options/Afficher /Tabulations, espaces. Vrifiez les donnes (et leurs positions (colonnes)) et fermez le fichier.

Importez ce fichier grce INPUT (en colonnes) dans un fichier SAS: Work.Essai. Vrifiez l'importation grce Proc Print. Si l'importation prcdente a russi, ajoutez les lignes suivantes votre fichier ESS.TXT et importez-le nouveau: B A A 185.5 175.5 175.5 79.5 78 78.5 7100 74100

Il se peut que les 4 et 5 lignes ne soient pas lues correctement sous SAS. Comprenez pourquoi et rectifiez le problme (sous Word) Rpter l'opration prcdente jusqu' ce que vous ayez obtenu un succs complet.

b) Donnes gnres dans un programme SAS (simulations) DO/END (1) Instruction DO/END (=FOR du Pascal) Syntaxe: DO variable=dbut TO fin [BY incrment]; instruction1; instruction2; ...; END; Exemple: DATA _NULL_; DO I=1 TO 10; X=RANUNI(0); PUT X; END; RUN;
On ne fera pas de sauvegarde des variables qui suivent... On commence la boucle. Nous calculons une ralisation d'une VA suivant une U[0,1] Nous l'affichons l'cran (fentre LOG) La boucle est termine.

Ce programme gnre 10 nombres (ralisations d'une loi uniforme [0,1]) et les affiche dans la fentre LOG. (Pour plus de dtails sur RANUNI allez dans lannexe sur les fonctions de SAS) Si vous voulez mettre cet chantillon dans un fichier de donnes SAS work.ech, nous avons le programme suivant : DATA WORK.ECH; DO I=1 TO 10; X=RANUNI(0); OUTPUT ; END; RUN;

Envoie les variables prsentes dans le fichier work.ech.

PROC PRINT DATA=WORK.ECH; RUN; Faites un PROC PRINT ; RUN ; quel est linconvnient du programme prcdent ? Pour y remdier, nous utilisons une option, que vous verrez plus tard, qui permet de supprimer certaines variables. Nous changeons la premire ligne en : data work.ech (drop=i);

(nous supprimons i du fichier final)

Effectuez cette modification et visualisez le rsultat.

(2)

Instruction DO WHILE / END Les instructions sont rptes tant que la condition est vraie. Cette fois, nous allons gnrer des nombres suivant une N(0,1) tant qu'ils sont infrieurs ou gaux 2 et stopper ds que cette condition n'est plus remplie. DATA WORK.EXEMPLE; X=0; DO WHILE (x<=2); X=RANNOR(0); OUTPUT; END; RUN;

Initialise x 0 Commence la boucle...(on en sort ds que x>2) x est une ralisation d'une N(0,1) Nous l'inscrivons dans le fichier exemple La boucle est termine La squence DATA aussi.

Remarque : Vous dcouvrez ici une possibilit de l'instruction OUTPUT. Elle permet d'inscrire chaque valeur valide de x la suite du fichier de donne ouvert. Supprimez-l et le fichier exemple ne contiendra qu'une seule observation ! (La dernire !)

(3)

Instruction DO UNTIL/ END Les instructions sont rptes jusqu' ce que la condition soit vraie. DATA WORK.EXEMPLE; X=0; DO UNTIL (x>2); X=RANNOR(0); OUTPUT; END; RUN;

Initialise x 0 Commence la boucle...(on en sort ds que x>2) x est une ralisation d'une N(0,1) Nous l'inscrivons dans le fichier exemple La boucle est termine La squence DATA aussi.

Ce programme fait la mme chose que le prcdent.

(4)

Instruction GO TO Un petit exemple vaut mieux qu'un long discours... DATA _NULL_; DO I=1 TO 100 BY 2; PUT I=; IF I=11 THEN GO TO FIN; END; FIN: PUT 'TERMINE'; RUN;
On ne conservera pas ces donnes ! i va de 1 100 de 2 en 2 on affiche i dans la LOG on sort ds que i est gal 11 fin de la boucle on affiche le message dans la LOG

K.

Utilisateurs du systme SAS en France au 1.1.1996

Liste partielle des utilisateurs du systme SAS en France au 1.1.1996


130 SAS refuse de communiquer toute mise jour de cette liste. Dommage 130

L.

INDEX
Alatoires Gnration de lois,350 Analyse de sries chronologiques,300 Discriminante,277 Discriminante Baysienne,287 Factorielle discriminante,278 Analyse de la variance deux critres,169 Analyse des correpondances multiples,262 Analyse des correspondances simples,246 Analyse en composantes principales.,220 ANNOTATE GPLOT,257 ANOVA modle spcification sous SAS,170 Procdure,161, 164 Syntaxe,164 Apparies Donnes,153 Apparis chantillons,153 ARCOS,351 ARRAY tape DATA,46 ARSIN,351 ASCII Lecture de fichiers,381 ATAN,351 AUTOEXEC,368 AVERAGE CLUSTER,239 Gestion,327 BINARYw. format,355 binomiale,349 Box Plot Dfinition,118 SAS INSIGHT,118 Boxplot Exemple,166 BRICK STYLE=,87 BROWN STYLE=,87

$
$COMMAw.d,366 $HEXw. informat,366

%
% Substitution de caractres,73

:
: (deux points) Comparaison de chanes de caractres,346

C
C.V. ANOVA,165 CARDS Dfinition,32 Instruction,11 CEIL,351 CELLCHI2: FREQ,156 CENTER Options,368 CENTROID CLUSTER,239 Chi deux Test Rappels thoriques,160 Test d'indpendance du,159 Test sur un tri crois existant,159 CHI DEUX Test du,154 chi2 Test d'indpendance du,156 Chi2 Test du,156 CHISQ: FREQ,156 Classification CLUSTER,237 Clavier Raccourcis,344 CLUSTER Procdure,237 Coefficient de corrlation linaire,182 Test de nullit,183 Coefficients de liaison calcul de,154 COMMAw.d format,355 COMMAXw.d format,355 COMMAXw.d. informat,366 Comparaison de k populations,180

@
@@,383

_
_ Substitution de caractres,73 _ERROR_ tape DATA variable automatique,53 _LAST_= Options,369 _N_ tape DATA,50

2
2000 (anne),370 2LOGL Critre,210

B
BARTLETT Test de,164 exemple,165 Rappels thoriques,163 Barycentriques Reprsentations (AFC),258 BEIGE STYLE=,87 BESTw. format,355 Beta loi,349 bibliothque WORK,18 Bibliothque Comment en crer une ?,22 contenu d'une,324 SASUSER,18 Visualisation du contenu,23 bibliothque SAS gnralits,17 Bibliothques

A
Aberrante Observation,197 ABS,351 ACM,263 Comparaison avec l'AFC,264 ACP Procdure PRINCOMP,220 ActiveX Sorties graphiques,101 AFC Comparaison avec l'ACM,264 AIC LOGISTIC,209 Akaike Critre,209

Composantes principales Reprsentation,226 Concatnation Fichiers de donnes,56 CONDENSE TABULATE,142 CONFIG= Options,368 CONTAINS Exemple,72 CONTENTS Procdure,324 CONTR AFC,267 Contributions des individus ACP,230 Cook Distance de Dfinition,196 COOKD REG,187 CORR AFC,267 Procdure,182 Corrlation Coefficient de SAS INSIGHT,127 rapport de,162, 278 Correlations Cercle des,226 CORRESP Procdure,246, 262 Syntaxe,260 Correspondances Analyse des,246 multiples,262 COS,351 COSH,351 Cosinus carr AFC,267 COVARIANCE Option PROC PRINCOMP,220 Covariances CORR,186 Critre Akaike,209 Schwartz,209 Ward,238 CSS,347 UNIVARIATE,146 CSS: TABULATE,140 CTABLE Rgression Logistique,212 CUMCOL FREQ,156 CV,347 UNIVARIATE,146 CV: TABULATE,140

D
D3D STYLE=,87

Dagnlie,161, 172, 177, 183, 340 DATA tape dfinition,32 DATA MINING Module SAS/INSIGHT,109 DATA= Options,66 DATASETS Procdure,327 date format exemple,34 DATE Options,368 DATETIMEw. informat,366 DATETIMEw.d format,359 DATEw. format,359 informat,366 DAY,353 DAYw. format,359 DDE Liaison,371 DDMMYYw. format,359 informat,366 DEFAULT STYLE=,87 DELETE tape data exemple,41 REG,187 Densit de probabilit SAS INSIGHT,121 DENSITY CLUSTER,239 DEVIATION: FREQ,156 DFFITS REG,187 Dfits Dfinition,196 Diagramme bandes,335 DIGAMMA,351 DISCRIM Procdure,277, 282 Discriminant mesure du pouvoir,278 distributions Comparaison de,172 Distributions comparaison de,177 Comparaison de,180 DLM=,384 DO UNTIL Instruction tape DATA,63 DO/END,389 DO/UNTIL,390 DO/WHILE,390 DOLLARw.d format,355

DOLLARXw.d format,355 Donnes gnres dans un programme,389 Lecture d'un tri crois existant,156 DOWNAMEw. format,359 DROP tape data exemple,40 DROP= Syntaxe,67

E
ECHOAUTO Options,368 Effectifs Thoriques,160 EML CLUSTER,239 END= Instruction SET syntaxe,52 Enterprise MINER Module SAS/INSIGHT,109 quilibres Donnes,170 ERRORS= Options,368 Etape DATA Compteur,50 Ew. format,355 Ew.d informat,366 EXCEL Importation de fichier,379 Importation d'un fichier,25 Liaison DDE SAS EXCEL,372 EXP,351 EXPECTED: FREQ,156 EXPORT Procdure,380 Exportation de fichiers SAS,380

F
Ficher-Snedeccor loi,349 Fichier de donnes SAS Transposer,321 Fichiers de donnes SAS Affichage,133 Concatnation,55 Copier,39 Dtection de la fin d'un END=,52 Fusion,55 Gnralits,17 gestion,327

Tri,132 FIRSTOBS Instruction,385 option de INFILE,385 FIRSTOBS= option,41 Syntaxe,69 FIRSTOBS=n Options,368 Fisher Loi de,162 Test de,151 Test de (galit de variances),150 FLEXIBLE CLUSTER,239 FLOOR,351 FLOWOVER,385 Instruction,387 FMTERR Options,368 Fonction de rpartition SAS INSIGHT,120 Fonctions date et heure,353 mathmatiques,351 probabilistes,349 Statistiques usuelles,347 Fonctions de rpartition Comparaison,175 Footnote Gestion,14 FORECAST Commande,300 Format,27 date et heure,358 dfinition,354 liste,355 Premier exemple,34 FORMAT Procdure,307 Formats Cration,307 de nombres,355 exemples,362 FORMDLIM= Options,368 FRACTw. format,355 FREQ Procdure,154 Frquences colonnes,155 Frquences conditionnelles,155 Frquences lignes,155 Frquences marginales,155 FULLSTIMER Options,368 Fusionner Fichiers de donnes SAS,58

GLM Comparaison avec ANOVA,170 Procdure,164 GOTO,390 Instruction,390 Graine gnrateur alatoire,350 Graph N Go Assitant Graphique,95 Graphique Cration d'un,96 Export en HTML,101 GWINDOW Options,369

H
HEXw. format,355 informat,366 HHMMw.d format,359 HMS,353 HOUR,353 HOURw.d format,359 HTML Dynamique,101 Sorties graphiques,101

du nuage des profils lignes,249 du nuage en AFC et ACM,264 inter classes,238, 241 intra classes,238 INFILE,384 Lecture de fichiers,381 Influence d'une observation Mesure de,196 informat exemple,33 Informat,27 dfinition,354 liste,366 Premier Exemple,34 Informats Cration,318 dfinition,364 INITCMD Options,369 INT,351 INVALIDDATA Options,369 IS MISSING Exemple,71

J
JAVA Sorties graphiques,101 JMP Logiciel,2

I
IF THEN tape DATA exemple,40 IF THEN ELSE Instruction tape DATA,63 IMPLMAC Options,369 IMPORT Procdure,379 Importation de fichiers textes "colonns",387 d'un fichier texte externe,381 fichiers textes inhabituels,383 Fichiers textes inhabituels,383 Importation de Fichiers Texte,381 Importation de fichiers externes,379 IN,346 Option de SET ou MERGE,57 IN ( ) Exemple,63 Individu supplmentaire ACP,231 Individus Slection dans une procdure,69 supplmentaires (ACM),275 Inertie ACP,222

K
KEEP Etape data exemple,40 KEEP= Exemple,66 Syntaxe,67 Kolmogorov test de,173 Kolmogorov-Smirnov Test de,147, 172 Kruskal et Wallis Test,174 Test de,180 Kuiper test de,173 KURTOSIS,347 UNIVARIATE,146

L
Label,27 LABEL tape DATA,47 Options,369 Lambda Wilks,281 Length,27 LEVEL Variable,217

G
Gamma loi,349 GAMMA,351

LEVENE Test de,164 LGAMMA,351 Liaison entre deux variables qualitatives,158, 247 entre une variable qualitative et une quantitative,161 LIKE Exemple,73 LINESIZE= Options,369 Lissage choix d'un modle,302 LOG Dfinition,9 LOG,351 LOG= Options,369 LOG10,351 LOGISTIC Procdure,205 Logistique Rgression,204 Logit Application,211 LOGIT Fonction d'ajustement,207

M
MACRO Options,369 Mann et Whitney Test,174 Test de,177 Mantel-Haenszel Chisquare Test de,157 MAPS= Options,369 Masques d'affichages FORMAT,314 MASS AFC,267 MAUTOSOURCE Options,369 MAX,347, 351 MCQUITTY CLUSTER,239 MDY,353 MEAN,347 UNIVARIATE,146 MEAN() Fonction exemple,41 MEAN: TABULATE,140 MEANS Procdure Exemple,12 MEDIAN CLUSTER,239 MERROR Options,369 MIN,347, 351

MINIMAL STYLE=,87 MINUTE,353 MISSING= Options,369 MISSOVER,385 Instruction,387 MISSTEXT= TABULATE,142 MLOGIC Options,369 MMDDYYw. format,359 informat,366 MMSSw.d format,359 MMYYxw. format,359 MOD,351 MODEL LOGISTIC,206 REG,187 Modle Choix du "meilleur",195 MONNAMEw format,360 MONTH,353 MONTHw. format,360 MONYYw format,360 MONYYw. informat,366 Moyenne Comparaison une valeur fixe (TTest),147 moyennes Test d'galit de 2 moyennes,150 Moyennes Comparaison de n moyennes,161 MPRINT Options,369 MSGCASE Options,369 MSGLEVEL= Options,370 MSIGN UNIVARIATE,146 MSTORED Options,370

Instruction SET(tape DATA),54 NOCOL FREQ,156 NOFREQ: FREQ,156 nombre format de,355 non paramtriques tests,172 NOPERCENT: FREQ,156 NOPRINT: FREQ,156 NORMAL UNIVARIATE,146 Normale Loi Ajustement,121 Normaliser Variables,235 Normalit Test de,147 SAS INSIGHT,121 NOROW: FREQ,156 Notes de bas de page Gestion,14 NPAR1WAY Procdure,172 Nuage de points 3D SAS INSIGHT,128 Nuages de Points SAS INSIGHT,123 NUMBER Options,370

O
OBRIEN Test de,164 OBS= option,41 Options,370 Syntaxe,69 Observation exclure,198 OCTALw. format,355 Odd ratio LOGISTIC,211 OF Fonctions,44 Oprateurs arithmtiques,345 de comparaison,345 logiques,345 Options du systme SAS,367 OPTIONS Instruction,367 OUT= Option procdure SORT,132 OUTPUT Fentre

N
N,347 UNIVARIATE,146 N: TABULATE,140 NMISS,347 NMISS() Exemple,71 Fonction exemple,41 NOBS=

Options,14 Instruction (tape DATA),42 Visualisation d'un fichier dans...,31 OUTPUT Dfinition,9

P
PAGENO= Options,370 PAGESIZE=n Options,370 Partition TREE,243 PCTN TABULATE,140 PCTSUM TABULATE,140 Pearson Coefficient de corrlation de,182 PEARSON Coefficient de,185 PERCENTw.d format,356 informat,366 PICTURE FORMAT,314 Plan principal ACP,225 Plan Principal ACP,232 POINT= Instruction SET(tape DATA) syntaxe,53 POISSON(,m),349 Pouvoir discriminant Global,281 PPROB Option de CTABLE , rgression logistique,212 Pr>F ANOVA,165 PREDICTED REG,187 PRESS REG,187 PRINCOMP Procdure,220 PRINT Procdure,133 PRINTMISS TABULATE,142 PROBBETA,349 PROBBNML(,349 PROBCHI,349 PROBF,349 PROBGAM,349 PROBM UNIVARIATE,146 PROBN UNIVARIATE,146 PROBNORM,349 PROBS

UNIVARIATE,146 PROBT,349 UNIVARIATE,146 Procdures SAS Options du DATA=,66 Procdures Statistiques,131 Profils colonnes,254 lignes,247 PROGRAM EDITOR Dfinition,9 Enregistrer,13 Excuter,13 Excution Partielle,13 PRT: TABULATE,140

Q
QTRRw. format,360 QTRw. format,360 QUAL AFC,267 Qualit de reprsentation d'un point (AFC),253 Qualit de reprsentation ACP,233 Quartiles SAS INSIGHT,119

REG,187 rsidus Analyse graphique,199 Rsidus Analyse graphique,199, 200 Etude,195 Resubstitution Mthode,290 REWEIGHT REG,187, 198 ROC Courbe,214 ROMANw. format,356 ROOT MSE ANOVA,165 ROUND,351 RSASUSER Options,370 RSTUDENT Dfinition,196 REG,187

S
Saporta,196, 237, 259, 287, 294, 299, 341 SAS INSIGHT,109 SAS/ASSIST,334 SC LOGISTIC,209 Schwartz Critre,209 Scores Normaux PROC RANK,143 SECOND,353 SELECT Instruction tape DATA,65 Sries Chronologiques Etude interactive,300 SET Instruction,38 Syntaxe,38 Options de l'instruction,52 Shapiro-Wilk Test de,147 SIGN,351 SIGNRANK UNIVARIATE,146 SIN,351 SINGLE CLUSTER,239 SINH,352 SKEWNESS,347 UNIVARIATE,146 SORT Procdure syntaxe,132 SPEARMAN Coefficient de,185 SQL,2, 32, 72, 73, 341 SQRT,352 STANDARD Procdure,234

R
Raccourcis clavier,344 RANBIN,350 RANCAU,350 RANEXP,350 RANGAM,350 RANGE,347 RANGE: TABULATE,140 Rangs Calcul des,143 RANK Procdure,143 RANNOR,350 RANPOI,350 RANUNI,350 Rapport de corrlation,278 REG Procdure,187 Rgression Linaire,187 SAS INSIGHT,126 Rgression Logistique,204 RENAME tape DATA,48 RENAME= Syntaxe,68 Rsidu Normalis,196 par validation croise,196 RESIDUAL

STATDOC STYLE=,87 STD,347 UNIVARIATE,146 STD: TABULATE,140 STDERR,347 STDERR: TABULATE,140 STDMEAN UNIVARIATE,146 STID193 Fichier exemple,25 Stratification SAS INSIGHT,123 Student loi,349 Test de,147 Test de ( 2 chantillons),150 STUDENT REG,187 Test de SAS INSIGHT,119 STYLE= ODS HTML,87 Personnaliser les sorties HTML,87 SUM,347 UNIVARIATE,146 SUM: TABULATE,140 SUMWGT UNIVARIATE,146 SUMWGT: TABULATE,140

TIME,353 TIMEw. informat,366 TIMEw.d format,360 Titres dans l'OUTPUT Gestion,14 TODAY,353 TODAY( ) exemple,37 TRANSPOSE Procdure,321 Transposer un fichier de donnes,321 TREE Procdure,243 Tri plat FREQ,154 tri plat, tri crois,154 Trier procdure SORT,132 TRIGAMMA,352 Tris croiss FREQ,154 Procdure Tabulate,137 TWOSTAGE CLUSTER,239 Typologie Qualit de,237

Variables centres rduites calcul de,234 Variables quantitatives Analyse univarie,145 Variables supplmentaires ACP,229 Variance Analyse de,162 Dcomposition de,162 inter,278 intra,278 variances Test d'galit de 2,150 Variances Comparaison de,164

W
WARD Critre de,238 WEEKDATEw. format,360 WEEKDATXw. format,360 WEEKDAY,353 WEEKDAY() exemple,37 WEEKDAYw. format,360 WEIGHT REG,187 WHEN Instruction tape DATA,65 Where fonction,328 WHERE= option,41 WHERE= tape data exemple,40 Exemple,66, 71 WHILE Instruction tape DATA,63 Wilcoxon Test de,147, 178 WILCOXON NPAR1WAY,174 WILKS Lambda,281 Winters Modle de,303 WITH Instruction (dans Proc CORR),184 WORDDATEw. format,360 WORDFw. format,356

U
UNIVARIATE Procdure,145 USS,347 UNIVARIATE,146 USS: TABULATE,140 Utiliser SAS simplement SAS/ASSIST,334

T
T UNIVARIATE,146 T: TABULATE,140 TABLE Procdure Tabulate,139 Tableau Disjonctif complet,262 Tableau d'analyse de la variance deux critres,169 Tableaux de variables,44 TABULATE Procdure syntaxe,136 TAN,352 TANH,352 TDC,262 Tenenhauss,258, 299 Test comparaison de n moyennes,161 d'galit des matrices de variances cov,294 nullit du coefficient de corrlation linaire,183 Test de comparaison de moyennes,150 Test d'galit de variances,151

V
Valeurs Influentes Etude,195 Valeurs Propres ACP,222 Validation croise Mthode,290 VAR,347 UNIVARIATE,146 VAR: TABULATE,140 Variables Changement de Format,49 Changement de nom,48 Changement d'tiquette,47 Cration (dans une tape DATA),44 discriminantes,161 Instantanes,51 Modification,45 Recodage,63 Tableau de,46 Tableaux de,44

Y
YEAR,353

YEARCUTOFF=nombre Options,370 YEARw. format,360 YYMMDDw. informat,366

YYMMDDw. format,360 YYMMxw. format,360 YYMONw. format,360

YYQRxw. format,361 YYQxw. format,360