Vous êtes sur la page 1sur 83

Introduction à SAS

Elodie Brunel

Université de Montpellier

V. 11/2016

Elodie Brunel (Université de Montpellier) Introduction à SAS 1 / 83


Plan

1 Chapitre 1 : Introduction
1.1. Les fenêtres SAS
1.2. Exécution d’un programme
1.3. Modules
1.4. Divers éléments de vocabulaire
1.5. Articulation générale d’un programme

2 Chapitre 2 : Gestion des Données

3 Chapitre 3 : Procédures Statistiques

4 Chapitre 4 : Les macros

Elodie Brunel (Université de Montpellier) Introduction à SAS 2 / 83


Chapitre 1 : Introduction

Le système SAS est un ensemble de modules logiciels pour la gestion et le


traitement statistique des données. Il permet l’écriture de programmes SAS
qui exécutent :
les saisies, importations, interrogations, manipulations, transformations
de données,
les éditions d’états, de rapports financiers, de graphiques,
les analyses statistiques, modélisation, prévision,
des applications spécifiques définies sous forme de macro-commandes.

Elodie Brunel (Université de Montpellier) Introduction à SAS 3 / 83


Vous trouverez le formulaire Licence Gratuite à Domicile Etudiant et
Professeur qui doit être complété par chaque demandeur sur le site de SAS
à cette adresse :

http://www.sas.com/fr_fr/academic/form-licence-gratuite-domicile
/register.html

Elodie Brunel (Université de Montpellier) Introduction à SAS 4 / 83


1.1. Les fenêtres SAS
Cinq fenêtres s’ouvrent au démarrage de SAS : Editeur (Program Editor),
Sorties (Output), Journal (Log), Résultats (Results), Explorateur
(Explorer) :

Elodie Brunel (Université de Montpellier) Introduction à SAS 5 / 83


Editeur
• La fenêtre de programmation (éditeur) : entrer, éditer, compiler les
programmes de SAS.

Elodie Brunel (Université de Montpellier) Introduction à SAS 6 / 83


Journal
• la fenêtre Journal (ou fenêtre Log) : analyse de la syntaxe du programme
exécuté (messages SAS après compilation). Les principaux messages du
Journal sont :
les notes (en bleu dans SAS Windows)
les avertissements (Warnings) : il est possible que des erreurs non
fatales aient eu lieu pendant le traitement,
les erreurs (Error, en rouge) : des erreurs graves de traitement qui
arrêtent la compilation.
De plus, SAS recopie (en noir) le code qui lui a été soumis, précédé de
numéros de lignes incrémentés à chaque nouveau programme exécuté dans
la session.

Elodie Brunel (Université de Montpellier) Introduction à SAS 7 / 83


Sortie, Graph, Résultats
• la fenêtre Sortie (Output) : sorties, listings, résultats après compilation
des programmes. Elle est complétée par deux autres fenêtres pour
l’affichage des sorties : la fenêtre Graph pour les graphiques et la fenêtre
Résultats (Results) qui fournit une arborescence des différentes étapes
générées par le programme.

Elodie Brunel (Université de Montpellier) Introduction à SAS 8 / 83


Explorateur

• la fenêtre Explorer donne les emplacements physiques des répertoires.


Elle permet de naviguer parmi les données SAS et en particulier de
visualiser les tables SAS qui ont été créées.

Elodie Brunel (Université de Montpellier) Introduction à SAS 9 / 83


1.2. Exécution d’un programme

Les menus disponibles sont variables en fonction de la fenêtre active. Le


menu "RUN" n’est disponible que lorsque la fenêtre Editeur est active. La
barre d’outils regroupe les icônes standards (nouveau, ouvrir, enregistrer,
couper, copier, coller, annuler, imprimer, aperçu avant impression). Quand
la fenêtre Editeur est active, l’icône "Soumettre/Submit" s’ajoute à la
barre d’outils :

Il permet l’exécution du programme qui est écrit dans la fenêtre active ; si


seule une partie du programme est sélectionnée, alors seul ce code sera
soumis et exécuté par SAS.

Elodie Brunel (Université de Montpellier) Introduction à SAS 10 / 83


1.3. Modules
SAS est un logiciel organisé en modules qui sont des groupes de
fonctionnalités. Ainsi certaines procédures ne sont disponibles que si le
module auquel elles sont rattachées a été installé. Le logiciel SAS est loué à
l’année : la licence autorise l’emploi, pour une durée limitée, de certains
modules.
Les principaux modules de SAS :
SAS Base : ce module contient les instructions pour la manipulation
de données, les statistiques descriptives élémentaires. Il permet de
programmer dans le langage SAS de base, ainsi que dans les langages
SQL et macro.
SAS Stat : il regroupe les procédures de modélisation (régressions
diverses), de classification et de statistiques descriptives.
SAS Graph : ce module permet l’édition de graphiques divers : nuages
de points, courbes, diagrammes circulaires et en bâtons, cartes
géographiques.

Elodie Brunel (Université de Montpellier) Introduction à SAS 11 / 83


1.3. Modules (suite)

SAS Access : cette série de modules permet l’importation et


l’exportation de données venant d’autres applications.
SAS ETS : ce module statistique regroupe entre autres les
fonctionnalités pour l’étude des données temporelles (ETS :
Econometrics and Time Series) non disponible dans SAS Stat.
SAS Assist : ce module est une interface clique-bouton pour la
création de programmes SAS. Toutes les manipulations sont
paramétrées par menus et fenêtres de dialogue.
SAS IML : ce module permet d’utiliser un langage matriciel (IML :
Interactive Matrix Language).
SAS Insight : analyse statistique interactive.

Elodie Brunel (Université de Montpellier) Introduction à SAS 12 / 83


1.4. Divers éléments de vocabulaire

• Session SAS Quand on démarre le logiciel SAS, on ouvre une session


SAS. Cette session se termine par la fermeture du logiciel.
• Sorties SAS
On parle de sorties en général pour désigner l’ensemble des résultats
produits par SAS : des tables SAS de sorties, un listing de sorties affiché,
des graphiques.
• vocabulaire sur le quel nous allons revenir ... bibliothèque (ou librairie),
table, visualisation d’une table, observation, variable, label, format et
informat, étape DATA, étape PROC.

Elodie Brunel (Université de Montpellier) Introduction à SAS 13 / 83


Contraintes du langage SAS

• Ne jamais couper une instruction par un retour de ligne,


• Les majuscules et minuscules ne sont pas différenciés par SAS,
• Les commentaires, encadrés par les signes /* et */ , peuvent être
intégrés dans le programme
• Toujours terminer une instruction par un point-virgule.

Elodie Brunel (Université de Montpellier) Introduction à SAS 14 / 83


1.5. Articulation générale d’un programme

Un programme SAS est une succession d’instructions de deux types :


Etape DATA : création, lecture, manipulation de tables SAS
Etape PROC : traitement, analyse, édition de résultats.

Elodie Brunel (Université de Montpellier) Introduction à SAS 15 / 83


Etape DATA

Etape DATA : Afin de pouvoir traiter des données avec SAS, il faut les
mettre sous un certain format, interne à SAS. SAS possède en effet son
propre système de gestion de bases de données (étape DATA). L’objet créé
dans une Etape DATA s’appelle une TABLE SAS .
Toute étape DATA débute par l’instruction DATA nom-de-table où
nom-de-table est le nom de la table SAS créée. L’étape DATA se termine
par l’instruction RUN .
Syntaxe :

DATA nom-de-table;
instructions;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 16 / 83


Etape PROC
Etape PROC : Un programme SAS est une enchaînement de procédures
qui réalise un traitement sur les TABLES disponibles. Voici quelques
exemples basiques :
PRINT : affiche le contenu d’une tables dans l’Output.
SORT : tri d’une TABLE selon une variable
MEANS, UNIVARIATE : résumés numériques pour variables
quantitatives
FREQ : résumés numériques pour variables quanlitatives
CORR : calcul des corrélations entre variables quantitatives
PLOT, GPLOT : graphiques pour variables quantitatives
CHART, GCHART : graphiques pour variables quanlitatives
BOXPLOT : boîtes à moustaches.
Syntaxe :
PROC nom-de-procedure <options>;
instructions;
RUN;
Elodie Brunel (Université de Montpellier) Introduction à SAS 17 / 83
Plan

1 Chapitre 1 : Introduction

2 Chapitre 2 : Gestion des Données


2.1 Lecture de Données dans le code
2.2 Lecture de données dans un fichier externe
2.3 Manipulation de Tables
2.4 Les bibliothèques ou library

3 Chapitre 3 : Procédures Statistiques

4 Chapitre 4 : Les macros

Elodie Brunel (Université de Montpellier) Introduction à SAS 18 / 83


Chapitre 2 : Gestion des Données
On peut créer des tables SAS permanentes ou temporaires. Les tables
temporaires sont effacées lorsqu’on quitte la session. Par défaut, les tables
sont créées dans la bibliothèque de travail WORK : elles sont temporaires.
Une TABLE est structurée en lignes (observations) et colonnes (variables) :
• Les observations sont les lignes d’une TABLE SAS. Chaque observation
correspond à une unité statistique ou un individu. Chaque observation
porte un numéro.
• Les variables sont les colonnes d’une TABLE SAS. Chaque variable
correspond à une information connue sur les observations.
Toutes les variables ont trois attributs : nom, type (numérique ou
caractères), longueur.
Remarque :
la longueur maximale du nom est de 32 caractères ;
le premier caractère est une lettre.
SAS ne distingue pas les minuscules et les majuscules.

Elodie Brunel (Université de Montpellier) Introduction à SAS 19 / 83


Variables numériques

SAS reconnaît les nombres sous les formes suivantes :


entiers : 5683 ;
entiers relatifs : -5 ;
réels : 2.85 ;
notation scientifique : 5.4E-1 ;
dates : ’24aug90’d. Une date est ainsi définie le plus souvent comme
numérique. Mais SAS stocke les dates comme un nombre de jours à
partir du 1/1/1960.

Elodie Brunel (Université de Montpellier) Introduction à SAS 20 / 83


Lecture de Données

Il existe 3 façons de créer une TABLE SAS à partir de données :


Ecriture à l’intérieur du programme avec des données délimitées,
Importation depuis un fichier externe avec l’instruction INFILE
Utilisation d’une table préexistante dans un fichier lisible par SAS.
Dans les deux premiers cas, une déclaration des variables est obligatoire à
l’aide de l’instruction INPUT :
Syntaxe :

DATA nom-de-table;
...
INPUT VAR1 VAR2 ...;
...
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 21 / 83


2.1 Lecture de Données dans le code
Les données peuvent être écrites dans le programme après l’instruction
DATALINESou CARDS :
Exemple :

DATA table1;
INPUT nom$ age sexe$ ;
Chris 36 M
Jane 21 F
Tom 30 M
Joe 49 M
Jerry 28 M
;
RUN;

Dans l’instruction INPUT , les variables alphanumériques nom et sexe


doivent être suivies de $. Les données sont séparées par un espace " ", elles
ne sont pas alignées : ce sont des données de type délimitées (ici délimitées
par un " ").
Elodie Brunel (Université de Montpellier) Introduction à SAS 22 / 83
Données délimitées
On soumet ensuite de code de l’étape DATA : la TABLE table1 est créée
dans la librairie WORK (temporaire). On peut la visualiser à partir de
l’Explorateur SAS ou bien dans la fenêtre OUTPUT en utilisant la
procédure PRINT
PROC PRINT DATA=table1;
RUN;
Dans la fenêtre OUTPUT :

Elodie Brunel (Université de Montpellier) Introduction à SAS 23 / 83


Données délimitées
On peut utiliser d’autres séparateurs que " ". Pour cela, il faut rajouter
l’instruction INFILE avec des options :
FIRSTOBS=num : numéro num de la première ligne lue.
OBS=num : numéro num de la dernière ligne lue.
DLM="." : indique le caractère séparateur : "." ou " ;" ou "&"
Par défaut, le séparateur utilisé avec l’instruction INFILE est ",".
Exemple :
DATA table1;
INFILE datalines DLM="&";
INPUT nom$ age sexe$ ;
DATALINES;
Chris&36&M
Jane&21&F
Tom&30&M
Joe&49&M
Jerry&28&M
;
RUN;
Elodie Brunel (Université de Montpellier) Introduction à SAS 24 / 83
Données délimitées

Gestion des données manquantes sur une ligne. Le code suivant produit la
TABLE table2 :

DATA table2;
INFILE datalines DLM="&";
INPUT nom$ age sexe$;
DATALINES;
Bob&m
Marie&25&f
Yves&45&m
;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 25 / 83


Données délimitées

L’option DSD de l’instruction INFILE donne priorité au séparateur : deux


séparateurs successifs seront interprétés comme une donnée manquante :

DATA table2;
INFILE datalines DLM="&" DSD;
INPUT nom$ age sexe$;
DATALINES;
Bob&&m
Marie&25&f
Yves&45&m
;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 26 / 83


Les informats ou formats de lecture

Les informats sont des formats de lecture des données (Attention ! ! à ne


pas confondre avec les formats d’écriture cf. plus loin) Les informats sont
spécifiées dans l’instruction INPUT et indiquent à SAS comment les
données doivent être lues dans le programme ou dans le fichier externe :
variable numérique : Var :x. pour variables entières et Var :x.q
pour variables décimales où x indique le nombre de caractères à lire
(point compris) et q le nombre de décimales.
variable alpha-numérique : Var :$x. où x indique le nombre de
caractères (8 par défaut).
variable de date : YYMMDD.
Remarque : Le " :" donne la priorité au délimiteur sur l’informat le long
d’une ligne : cela signifie que lorsque SAS lit une ligne il peut passer d’une
variable à l’autre sans forcément avoir atteint le nombre total de caractères
déclarés.

Elodie Brunel (Université de Montpellier) Introduction à SAS 27 / 83


Les informats (suite)

DATA table3;
INFILE datalines DLM="&";
INPUT nom$ age sexe$;
DATALINES;
Chris Evans&25&m
JaneTrulli&21&f
JoeStar&49&m
;
RUN;

Par défaut, seuls les 8 premiers caractères de nom ont été lus. Il faut donc
utiliser un informat pour remédier à ce problème...

Elodie Brunel (Université de Montpellier) Introduction à SAS 28 / 83


Les informats (suite)

DATA table3;
INFILE datalines DLM="&";
INPUT nom : $11. age sexe$;
DATALINES;
Chris Evans&25&m
JaneTrulli&21&f
JoeStar&49&m
;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 29 / 83


Données tabulées
On dit que les données sont tabulées lorsqu’elles occupent toujours la
même position sur chaque ligne du fichier : SAS peut contrôler la colonne à
partir de laquelle va se faire la lecture dans l’instruction INPUT à l’aide
d’un pointeur . Puis, grâce à l’informat , SAS va interpréter la longueur
occupée sur le support par la variable :
INPUT [pointeur] VAR : informat de lecture ...;
INPUT @1 prenom $5. @7 nom $6. @15 age $2. @18 sexe$1.
@21 naissance DDMMYY10.;
5 6 2 1

prenom nom age sexe naissance

1 7 15 18 21

Elodie Brunel (Université de Montpellier) Introduction à SAS 30 / 83


Données tabulées (suite)

DATA table4;
INPUT @1 prenom $5. @7 nom $6. @15 age $2.
@18 sexe$1. @21 naissance DDMMYY10.;
DATALINES;
Chris Evans 25 m 11/01/1991
Jane Trulli 21 f 17/03/1995
Joe Star 49 m 11/05/1967
;
RUN;

Les données sont correctement lues mais le format d’écriture de la date de


naissance est le format utilisé par SAS pour le stockage des dates (nombre
de jour depuis le 1/1/1960 !). Pour le modifier, nous allons utiliser un
format d’écriture .

Elodie Brunel (Université de Montpellier) Introduction à SAS 31 / 83


Les formats d’écriture

Le format d’écriture est donné dans l’instruction FORMAT qui sera placé
après l’instruction INPUT :

FORMAT prenom $5. nom $7. age $2. sexe $1. naissance DDMMYY10.;

La date est affichée avec 10 caractères "/" compris. On aurait pu n’afficher


la date qu’avec 8 caractère sous la forme 11/01/91 avec le FORMAT
DDMMYY8.
Remarque : Il est donc possible d’appliquer des formats de lecture et
d’écriture différents à une variable.

Elodie Brunel (Université de Montpellier) Introduction à SAS 32 / 83


On peut aussi utiliser d’autres syntaxes pour les pointeurs .
@n le pointeur est placé à la colonne n de la ligne courante,
+n le pointeur avance de n colonnes sur la ligne courante
#n le pointeur va à la ligne n ainsi dans l’exemple précédent, on aurait
pu aussi écrire :
INPUT @1 prenom $5. +1 nom $6. +2 age $2.
+1 sexe$1. +2 naissance DDMMYY10.;

Elodie Brunel (Université de Montpellier) Introduction à SAS 33 / 83


2.2 Lecture de données dans un fichier externe

Les données se trouvent dans un fichier externe nommé individus.txt. Ici les
données sont délimitées par une tabulation (fichier provenant de Excel par
exemple) :

Elodie Brunel (Université de Montpellier) Introduction à SAS 34 / 83


2.2 Lecture de données dans un fichier externe

Pour lire ces données, on utilise l’instruction INFILE .


DATA tableind;
INFILE ’individus.txt’ DSD DLM=’09’x TRUNCOVER;
INPUT prenom $ nom $ sexe $ age ville $10.;
RUN;

L’option DSD prévient d’éventuelles données manquantes, et l’option


TRUNCOVER pour lire des lignes non complètes sans passer directement à la
ligne suivante : ici sans l’option TRUNCOVER SAS ira à la ligne suivante sans
lire Londres qui n’occupe pas 10 caractères. DLM=’09’x est utilisé pour
indiquer que le séparateur est ici une tabulation.

Elodie Brunel (Université de Montpellier) Introduction à SAS 35 / 83


Attributs
Toutes les variables présentent un certain nombre de caractéristiques (nom,
label, type, format, longueur). L’instruction ATTRIB a pour but de
centraliser ces caractéristiques. Ainsi, l’instruction ATTRIB remplace
l’instruction FORMAT et permet en plus d’attribuer des LABEL aux
variables Syntaxe :

ATTRIB prenom
LABEL="prénom de l’individu"
;
ATTRIB age
LABEL="Age de l’individu"
FORMAT=2.
;
ATTRIB ville
LABEL="Lieu de résidence"
FORMAT=$10.
;
Elodie Brunel (Université de Montpellier) Introduction à SAS 36 / 83
Pour vérifier et visualiser le contenu d’une TABLE SAS, on peut utiliser la
PROC CONTENTS :

PROC CONTENTS DATA=tableind;


RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 37 / 83


2.3 Manipulation de Tables

La fusion verticale de tables consiste à empiler les données de plusieurs


TABLES SAS. Elle est réalisée au sein d’une étape DATA avec l’instruction
SET . SAS va lire l’une après l’autre les lignes de la première TABLE puis
celle de la seconde TABLE, etc. Dans ce type de fusion, on a au moins une
variable commune. Syntaxe :

DATA nom-table;
SET table1 table2 table3 ...;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 38 / 83


Fusion verticale
DATA tab1; DATA tab2;
INPUT prenom $ age; INPUT prenom $ age;
DATALINES; DATALINES;
Chris 36 Jerry 28
Dan 38 Jim 18
Emma 51 Joe 49
Jane 21 Jane 21
Joe 20 Sid 36
; ;
RUN; RUN;

DATA tab3;
SET tab1 tab2;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 39 / 83


Fusion verticale
Les données des deux tables sont empilées, mais les doublons ne sont pas
éliminées (L’individu Jane apparaît deux fois). Pour éliminer les doublons
éventuels : on utilise la PROC SORT avec l’option NODUPRECS :

PROC SORT DATA=tab3 NODUPRECS;


BY prenom age;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 40 / 83


Fusion horizontale
La fusion horizontale de tables n’est possible que pour des TABLES
possédant au moins une variable commune. Les données de chacune des
TABLES doivent êtres triées selon la variable de recollement à l’aide de la
procédure SORT .
La fusion est ensuite réalisée dans une étape DATA à l’aide de l’instruction
MERGE .
DATA tab1; DATA tab2;
INPUT prenom $ age; INPUT prenom $ sexe $;
DATALINES; DATALINES;
Chris 36 Chris M
Dan 38 Dan M
Emma 51 Emma F
Jane 21 Jane F
Joe 20 Sid M
; ;
RUN; RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 41 / 83


Fusion horizontale

PROC SORT DATA=tab1; PROC SORT DATA=tab2;


BY prenom; BY prenom;
RUN; RUN;

DATA tab3;
MERGE tab1 tab2;
BY prenom;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 42 / 83


Création/suppression de variables

On peut créer de nouvelles variables dans une étape DATA.


Syntaxe :
DATA tablenew;
SET tableold;
NouvelleVAR = Var1+Var2;
RUN;

où Var1 et Var2 sont des variables de tableold et la table créée tablenew


contiendra toutes les variables de tableold et la variable NouvelleVAR.
On peut aussi supprimer/garder certaines variables grâce à l’instruction
DROPet KEEP.

DATA tablenew; DATA tablenew;


SET tableold (KEEP=Var2); SET tableold (DROP=Var1);
RUN; RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 43 / 83


Sélection d’observations

On peut supprimer des observations dans une étape DATA grâce à


l’instruction WHERE. Par exemple, on souhaite extraire de la TABLE
tableind les individus Homme :
DATA tablehom;
SET tableind (WHERE =(sexe=’M’));
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 44 / 83


2.4 Les bibliothèques, les tables permanentes et temporaires

On peut stocker les tables de façon permanente ou temporaire. La table


temporaire est détruite à la fin de la session SAS en cours.
Une table temporaire sera représentée par un simple nom_de_table.
Une table permanente se présentera de la manière suivante :
nom_de_library.nom_de_table où nom_de_library représentera la
library ou bibliothèque (=le répertoire) où la table est stockée. La
librairie est définie lors d’une instruction LIBNAME assurant la
correspondance entre le nom_de_library et le nom physique (=réel)
de la bibliothèque.

Elodie Brunel (Université de Montpellier) Introduction à SAS 45 / 83


2.4 Les bibliothèques, ...

Une fois définie, la librairie n’est allouée que pour la durée de la session.
Exemple : On tape l’instruction suivante en tête de programme, de manière
à la retrouver facilement.

LIBNAME pays ’C:\Cours SAS’;

Cette instruction crée la bibliothèque pays dans le répertoire


C:\Cours SAS.
Ensuite, pour créer la TABLE SAS russet dans la bibliothèque pays :

DATA pays.russet;
INFILE ’C:\Cours SAS\russet.txt’ DLM=’,’;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 46 / 83


On peut visualiser le contenu d’une bibliothèque à l’aide de l’Explorateur.

Il existe des biliothèques prédéfinies dans SAS :


WORK est une bibliothèque temporaire. Son contenu est effacé à la
fin de la session SAS.
SASHELP héberge des données fournies par SAS comme exemples.
SASUSER est une bibliothèque personnelle (chaque utilisateur a sa
propre SASUSER) permanente (au contraire de WORK). Son contenu
n’est donc pas effacé à la fermeture de SAS.

Elodie Brunel (Université de Montpellier) Introduction à SAS 47 / 83


Plan

1 Chapitre 1 : Introduction

2 Chapitre 2 : Gestion des Données

3 Chapitre 3 : Procédures Statistiques


3.1 PROC TABULATE
3.2 PROC MEANS
3.3 PROC FREQ
3.4 PROC CORR
3.5 PROC UNIVARIATE
3.6 PROC FORMAT
3.7 PROC TTEST

4 Chapitre 4 : Les macros

Elodie Brunel (Université de Montpellier) Introduction à SAS 48 / 83


Chapitre 3 : Procédures Statistiques

On détaille maintenant quelques procédures usuelles :


PROC TABULATE tableaux croisés,
PROC MEANS calcul de statistiques descriptives,
PROC FREQ tableaux de fréquence ou de contingence et tests du
Chi-2,
PROC CORR calculs de corrélations,
PROC UNIVARIATE description et tests de la distribution d’une
variable

Elodie Brunel (Université de Montpellier) Introduction à SAS 49 / 83


Toutes les procédures d’analyse statistique ont la même structure de la
syntaxe :
PROC NomPROC DATA=nom-de-table (WHERE=(expression));
VAR variable(s) numérique(s);
BY <DESCENDING> variable(s) ;
CLASS variable(s) ;
RUN;

Pour effectuer une sélection des observations de la table SAS spécifiée en


entrée d’une procédure SAS, on peut utiliser l’option WHERE= .
Pour sélectionner les variables analysées dans les procédures de statistique,
on utilise l’instruction VAR . Elle est valable dans un grand nombre de
procédures statistiques : MEANS, UNIVARIATE, CORR, etc . Les variables
numériques sont les seules autorisées dans une instruction VAR. Pour
mener une analyse sur plusieurs sous-groupes d’observations, on dispose
des instructions CLASS et BY .

Elodie Brunel (Université de Montpellier) Introduction à SAS 50 / 83


Comparaison Instructions BY/CLASS :
BY : Valable dans toutes les procédures d’analyse statistique. CLASS : Valable
uniquement dans les procédures MEANS, UNIVARIATE et TTEST.
BY : Les valeurs manquantes de chaque variable du BY constituent un
sousgroupe pris en compte dans l’analyse. CLASS : Par défaut, les valeurs
manquantes des variables de classe ne sont pas prises en compte dans l’analyse.
BY : Nécessite un tri préalable de la table en entrée : tri par la même liste de
variables que celle de l’instruction BY et dans le même ordre. CLASS : Ne
nécessite pas de tri préalable de la table en entrée.

Elodie Brunel (Université de Montpellier) Introduction à SAS 51 / 83


3.1 PROC TABULATE

La procédure TABULATE permet de créer des tableaux de synthèse à une


dimension ou des tableaux croisés à plusieurs dimensions.
Syntaxe :

PROC TABULATE DATA=tableSAS <options> ;


CLASS variable(s) ;
VAR variable(s);
TABLE (structure des lignes du tableau),
(structure des colonnes du tableau)*
(calculs apparaissant dans les cases du tableau);
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 52 / 83


La TABLE russet contient 24 observations du P.N.B par habitant pour 24
pays et d’une variable qualitative demo :

Elodie Brunel (Université de Montpellier) Introduction à SAS 53 / 83


Exemple :
proc tabulate data=russet;
class demo;
table (demo ALL="Tous")
*(N="Effectif" PCTN="%");
run;

proc tabulate data=russet;


class demo;
var gnpr;
table (demo ALL="Tous"),
gnpr*MEAN="Moyenne";
run;

Dans le premier tableau, les statistiques affichées dans les cellules sont les effectifs (N)
et les pourcentages (PCTN). Le mot-clé ALL crée une colonne récapitulative : il s’agit ici
du total des effectifs. Dans le second tableau, la dernière partie de l’instruction TABLE
concerne les calculs à effectuer : la syntaxe est de la forme
nomVariabledeCalcul*statistique, où la variable de calcul est celle de l’instruction
VAR et la statistique est : SUM, MEAN, STD, MAX, MIN, RANGE, MEDIAN, Q1, Q3,
P1, P5, P10, P90, P95, P99, ...
Elodie Brunel (Université de Montpellier) Introduction à SAS 54 / 83
3.2 PROC MEANS

La PROC MEANS permet d’analyser la distribution d’une variable


numérique :
calculer la somme de la variable ;
calculer la moyenne et la médiane ;
calculer l’écart-type, l’étendue et l’intervalle inter-quartile ;
étudier la répartition de la variable (médiane, quartiles d’ordre 1 et 3,
centiles d’ordre 1, 5, 10, 25, 50, 75, 90, 95, 99) ;
étudier la forme de la distribution (coefficients d’aplatissement et
d’asymétrie) ;
identifier les valeurs extrêmes de la variable.

Elodie Brunel (Université de Montpellier) Introduction à SAS 55 / 83


Syntaxe :
PROC MEANS DATA=nom_de_table STAT1 ... STATm <options>;
CLASS liste_de_variables ;
VAR liste_de_variables_numériques ;
BY liste_de_variables ;
FREQ variable ;
WEIGHT variable ;
ID variable;
OUTPUT OUT=nom_de_table;
Seule l’instruction VAR est obligatoire. Si on ne précise aucune option ni instruction
spécifique, la procédure MEANS va calculer par défaut, pour chaque variable numérique :
le nombre d’observations (N) ;
la moyenne (Mean) ;
l’écart-type (Std Dev) ;
le minimum ;
le maximum.
Sinon, on précise sur la première ligne STAT1 ... STATm les statistiques descriptives à
calculer.
Elodie Brunel (Université de Montpellier) Introduction à SAS 56 / 83
Exemple :

PROC MEANS DATA=russet;


VAR gnpr;
CLASS demo;
RUN;

PROC SORT DATA=russet;


BY demo;
RUN;
PROC MEANS DATA=russet mean;
VAR gnpr;
BY demo;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 57 / 83


Exemple :
PROC MEANS DATA=russet mean kurtosis uclm lclm t prt alpha=0.05;
VAR gnpr;
CLASS demo;
RUN;

KURTOSIS : coefficient d’aplatissement (compare la forme de la courbe de distribution


des observations à celle de la loi normale : un coefficient positif indique une plus forte
concentration des observations ; un coefficient négatif indique une courbe plus aplatie).
SKEWNESS : coefficient d’ asymétrie (indique si les observations sont réparties
équitablement autour de la moyenne (le coefficient est alors nul) ou si elles sont plutôt
concentrées vers les valeurs les plus faibles (coefficient positif) ou vers les valeurs les
plus élevées (coefficient négatif).
T : valeur de la statistique Student.
PRT : p-value du test de Student de nullité de la moyenne.
Elodie Brunel (Université de Montpellier) Introduction à SAS 58 / 83
3.3 PROC FREQ

Cette procédure est à la fois :


une procédure descriptive qui produit des tableaux de fréquences, de
contingence ou des tris croisés multidimensionnels. Elle permet de
calculer les effectifs et les fréquences de chaque valeur prise par une
variable ;
une procédure statistique permettant de faire certains tests comme le
test du chi2.
cf. TP2.

Elodie Brunel (Université de Montpellier) Introduction à SAS 59 / 83


Syntaxe :
PROC FREQ DATA=tableSAS ORDER=ordreValeurs <options> ;
BY liste_de_variables ;
TABLES Var1 Var2 <options> ; /* TABLES Var1*Var2 <options> ; */
WEIGHT variable ;
RUN ;

L’instruction TABLES permet de définir la liste des distributions


souhaitées. Plusieurs distributions peuvent être demandées simultanément,
chacune pouvant être unidimensionnelle ou multidimensionnelle. Dans le
cas de demande de plusieurs distributions simultanées, il suffit de séparer
chaque distribution par un espace. Si on veut croiser plusieurs variables
entre elles, il suffit de les séparer par des astérisques.

Elodie Brunel (Université de Montpellier) Introduction à SAS 60 / 83


Exemple :

PROC FREQ DATA=russet;


TABLES contin demo;
RUN;

PROC FREQ DATA=russet;


TABLES contin*demo;
RUN;

fournit les deux


distributions marginales de contin et demo.

Elodie Brunel (Université de Montpellier) Introduction à SAS 61 / 83


Exemple (suite) :

PROC FREQ DATA=russet;


TABLES contin*demo;
RUN;

fournit la distribution conjointe de contin


et demo (table de contingence).

Elodie Brunel (Université de Montpellier) Introduction à SAS 62 / 83


Options principales de l’instruction TABLES :
NOCOL : supprime l’impression des pourcentages en colonne
NOROW : supprime l’impression des pourcentages en ligne
NOFREQ : supprime l’impression des fréquences croisées
NOPERCENT : supprime l’impression des pourcentages croisés
NOCUM : supprime l’impression des fréquences et des pourcentages cumulés
CUMCOL : imprime les pourcentages colonne cumulés.
NOPRINT : supprime l’impression des tables mais permet l’impression de
statistiques
OUT= : stocke les résultats de la demande dans la table SAS
MISSING : traite les valeurs manquantes comme des modalités renseignées dans
les calculs et tous les tableaux.
EXPECTED : imprime les fréquences attendues sous l’hypothèse d’indépendance
DEVIATION : édite les écarts entre les effectifs observés et théoriques
LIST : imprime des tables de dimension 2 sous forme de liste plutôt que de
tableaux
CELLCHI2 : imprime la contribution de chaque case à la statistique du chi2 totale
CHISQ : calcule le test du chi2 d’homogénéité ou d’indépendance de chaque strate
et calcule les mesures associées au chi2.
Elodie Brunel (Université de Montpellier) Introduction à SAS 63 / 83
Exemple : test du χ2 d’indépendance
PROC FREQ DATA=russet ;
TABLES contin*demo/ nofreq nopercent norow nocol nocum
expected deviation cellchi2 chisq;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 64 / 83


Exemple : test du χ2 d’indépendance (suite)

On a effectué l’analyse sur un échantillon très petit, aussi le test du χ2 n’est pas très
fiable. Cependant, le test du χ2 montre une probabilité de rejeter à tort l’hypothèse
d’indépendance entre les deux variables de 33% (0,333), ce qui est assez important : on
ne peut pas rejeter cette hypothèse. Cette conclusion est corroborée par les valeurs des
trois derniers coefficients, phi, contingence et V de Cramer : pour ce dernier, par
exemple, la liaison observée correspond à 43,57% de liaison entre les deux variables (ce
qui est assez peu).

Elodie Brunel (Université de Montpellier) Introduction à SAS 65 / 83


3.4 PROC CORR
La PROC CORR permet le calcul des coefficients de corrélation entre les
variables (PEARSON, SPEARMAN, KENDALL) et peut produire des
matrices de produits croisés ainsi que des matrices de variance-covariance.
Syntaxe :

PROC CORR DATA=nom_de_table <options> ;


BY liste_de_variables ;
FREQ variable ;
PARTIAL liste_de_variables ;
VAR liste_de_variables ;
WEIGHT variable ;

BY : la procédure est exécutée pour chaque sous groupe. PARTIAL : permet de mesurer
les corrélations partielles entre les combinaisons 2 à 2 d’une liste de variables numériques
(instruction VAR) en éliminant l’influence des variables de l’instruction PARTIAL. VAR :
variables pour lesquelles les coefficients sont calculés. WEIGHT : variable de
pondération. A utiliser uniquement pour le calcul du coefficient de Pearson. FREQ :
spécifie la variable numérique dont la valeur représente la fréquence de l’observation.
Elodie Brunel (Université de Montpellier) Introduction à SAS 66 / 83
Quelques options :
KENDALL : sélection du type de corrélation KENDALL (pour les
variables ordinales).
PEARSON : sélection du type de corrélation PEARSON (par défaut)
(pour les variables numériques).
SPEARMAN : sélection du type de corrélation SPEARMAN (pour les
variables ordinales).

Elodie Brunel (Université de Montpellier) Introduction à SAS 67 / 83


3.5 PROC UNIVARIATE
La procédure UNIVARIATE calcule des statistiques simples sur des variables
numériques. Plus complète que la procédure MEANS , elle fournit :
des détails sur les valeurs extrêmes d’une variable
le calcul de n’importe quel quantile de la distribution
plus de tests : 2 tests pour l’égalité de la moyenne à une constante
donnée, 1 pour le même test avec la médiane, 4 pour la normalité de
la distribution, etc.
la création de graphiques pour étudier la distribution (boxplot,
histogrammes, courbes de densité).
Syntaxe :
PROC UNIVARIATE DATA=nom_de_table_SAS <options> ;
VAR liste_de_variables ;
ID variable ;
HISTOGRAM liste_de_variables / <options> ;
PROBLPLOT liste_de_variables / <options> ;
RUN ;

Elodie Brunel (Université de Montpellier) Introduction à SAS 68 / 83


VAR : spécifie les variables numériques à analyser. Par défaut, toutes les
variables numériques de la table en entrée sont analysées.
ID : variable d’identification pour les 5 plus petites et 5 plus grandes
valeurs en sortie.
HISTOGRAM : trace un histogramme pour les variables spécifiées.
PROBPLOT : trace la distribution des variables, en la comparant à une
distribution théorique spécifiée par l’utilisateur.

Elodie Brunel (Université de Montpellier) Introduction à SAS 69 / 83


PROC UNIVARIATE : les sorties par défaut

Elodie Brunel (Université de Montpellier) Introduction à SAS 70 / 83


PROC UNIVARIATE : l’option id

Elodie Brunel (Université de Montpellier) Introduction à SAS 71 / 83


PROC UNIVARIATE : l’option HISTOGRAM
HISTOGRAM / exponential (threshold=est);

Elodie Brunel (Université de Montpellier) Introduction à SAS 72 / 83


PROC UNIVARIATE : l’option HISTOGRAM
l’option HISTOGRAMM fournit aussi les sorties suivantes :

Elodie Brunel (Université de Montpellier) Introduction à SAS 73 / 83


PROC UNIVARIATE : l’option PROBPLOT
probplot gnpr/exponential (threshold=est sigma=est color=blue w=1);

Elodie Brunel (Université de Montpellier) Introduction à SAS 74 / 83


PROC UNIVARIATE : Test de normalité
SAS permet de réaliser quatre tests de normalité : les tests de Shapiro-
Wilk, Kolmogorov-Smirnov, Cramer-von Mises et Anderson-Darling.
Pour obtenir les résultats des quatre tests de normalité :

PROC UNIVARIATE DATA=tableSAS NORMAL ;


VAR variable ;
RUN ;

Elodie Brunel (Université de Montpellier) Introduction à SAS 75 / 83


3.6 PROC FORMAT

On peut avoir besoin de définir des formats personnalisés. Ces types de


formats sont créés et gérés par la procédure format. Par exemple, un
format permet de regrouper plusieurs modalités sous un même libellé.
On distingue deux étapes : la création et gestion de formats : PROC
FORMAT et l’utilisation de formats dans l’instruction de FORMAT existant
dans de nombreuses PROC.
Syntaxe :
PROC FORMAT <options> ;
VALUE nom_de_format
liste_de_valeurs="valeur1 formatée"
liste_de_valeurs="valeurn formatée"
;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 76 / 83


Exemple :

On crée un format regim pour les valeurs de la variable caractère demo :


cela permet de regrouper sous le même libellé Democratie les valeurs
stable et instable :
proc format;
value $ regim
’stable’,’instable’=’Democratie’
’dictature’=’Dictature’
;
run;

Elodie Brunel (Université de Montpellier) Introduction à SAS 77 / 83


3.7 PROC TTEST
La procédure TTEST réalise des tests d’égalité de la variance et de la
moyenne de deux échantillons.
Remarque : On peut obtenir des résultats comparables avec la procédure
NPAR1WAY si l’on travaille sur de petits échantillons, en utilisant alors des
statistiques dites non-paramétriques (cf. TP2).
Syntaxe :

PROC TTEST DATA=tableSAS ;


VAR variable(s)Numérique(s) ;
CLASS variableDeClasse ;
RUN ;

L’instruction VAR contient les variables dont les moyennes seront


comparées. L’instruction CLASS permet de spécifier une variable dont les
valeurs constituent les groupes d’observations à comparer. Cette variable
ne doit avoir que deux valeurs.

Elodie Brunel (Université de Montpellier) Introduction à SAS 78 / 83


Exemple :

on veut tester la différence des PIB moyens (Gnpr) entre démocraties et


dictatures : on utilise la PROC FORMAT qui permet de définir un Libellé
Democratie et Dictature, ils constituent les deux groupes d’observations
à comparer.
PROC FORMAT;
VALUE $ regim
’stable’,’instable’=’Democratie’
’dictature’=’Dictature’
;
RUN;

PROC TTEST DATA=russet;


VAR gnpr;
CLASS demo;
FORMAT demo $regim.;
RUN;

Elodie Brunel (Université de Montpellier) Introduction à SAS 79 / 83


Exemple :
On obtient plusieurs tableaux et des graphiques en sortie de la
PROC TTEST :

Elodie Brunel (Université de Montpellier) Introduction à SAS 80 / 83


Exemple :
On obtient des tableaux et des graphiques en sortie de la PROC TTEST :

Elodie Brunel (Université de Montpellier) Introduction à SAS 81 / 83


Exemple :

On obtient des tableaux et des graphiques en sortie de la PROC TTEST :

Elodie Brunel (Université de Montpellier) Introduction à SAS 82 / 83


Plan

1 Chapitre 1 : Introduction

2 Chapitre 2 : Gestion des Données

3 Chapitre 3 : Procédures Statistiques

4 Chapitre 4 : Les macros

Elodie Brunel (Université de Montpellier) Introduction à SAS 83 / 83

Vous aimerez peut-être aussi