Manuel SAS Francais

download Manuel SAS Francais

of 365

Transcript of Manuel SAS Francais

COURS, TPModules utiliss : Base, Stat, Insight, Ets, Graph, Assist

IntroductionLe 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)

SOMMAIREI. Premier contact avec SAS _________________________________________________ 8A. Cinq fentres essentielles ______________________________________________________8 B. Mon premier programme SAS ________________________________________________111. 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 _________________________________________________ 17A. Prliminaires sur les fichiers de donnes SAS____________________________________171. 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 _______________________________________________________801. 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 ___________________________ 112Aperu rapide de quelques menus ____________________________________________________114

A. Ouverture dune table ______________________________________________________112 B. Analyse dune Variable qualitative ___________________________________________116 C. Variable quantitative ; Analyse univarie ______________________________________1201. 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 _________________________________________ 134A. 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) ___________________________________________1481. 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 ___________________________173Prliminaires ____________________________________________________________________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____________________________________184Syntaxe 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_______________________________________206But____________________________________________________________________________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 _______________________________2141. 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 _______________________________ 275Objet __________________________________________________________________________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) ______________________2951. 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 ____________________________ 302A. 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 ___________________________________________________________ 311A. Raccourcis clavier _________________________________________________________312

B. OPERATEURS ET FONCTIONS ____________________________________________3131. 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 ________________345LEFI __________________________________________________________________________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 demettre 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 fautpas hsiter y revenir hors sance.

N'hsitez pas me faire part de vos commentaires sur ce document afin del'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 ExplorerPermet de grer les bibliothques et les fichiers de donnes. On peut crer, visualiser, modifier une fichier de donnes.

La fentre Enhanced EDITOR 7Elle 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 RESULTSPermet 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 SASSaisie du programmeActivez 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, TYPEproc 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 programme9Toujours 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 OUTPUTDans 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 donnesElle 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 SASMthode 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 SASNom logique dun fichier de donnes SASSAS 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 1815 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.BIDULECorrespond 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 SASUSERIl 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 (=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)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 AGE190 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 variablesSuppression 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 dindividusSlection 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 SASLanguage 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 SASAvant 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


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 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. Ma page de Menu Ma premire Page HTML C'est super non !!! Il va y avoir plein de choses. !..
Bientot

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 sortieCertaines 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| = |M| = |S| 0 M(Sign) Pr>=|M| Sgn Rank Pr>=|S| W:Normal Pr0.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 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 simplifiePROC 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.

ExemplesPROC 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 SEXELgende 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 1PROC 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 2PROC 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 deux61 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.

ExerciceChargez 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 existantCeci 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 2Considrons 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

nni1 ni. ... ... ... ... ...

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

nni.

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, j2

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

n

n

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 varianceUn exempleLe 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 critreElle 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 lANOVASoit 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 =1Variance 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

i

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 =1Lorsque 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

(yk ni i =1 j =1

i =1 j =1

1 nk

(yk 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 SASSAS 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 OBRIENPour 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.( 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 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-

0

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

4

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