Vous êtes sur la page 1sur 16

INITIATION AU LOGICIEL SAS

(version 9.1.3 sous Windows)

Hlne HAMISULTANE

Bibliographie :
Initiation au logiciel SAS(9) pour Windows, Coqu N. (juin 2006).
www.agroparistech.fr/IMG/pdf/polySas.pdf
SAS base, Introduction SAS SQL, SAS IML.
www.cnam.fr/mathematique/IMG/pdf/SAS_introduction_1.pdf
SAS 9.1.3 Documentation,
http://support.sas.com/documentation/onlinedoc/91pdf/index_913.html

Le logiciel SAS est destin au traitement statistique des donnes. Il est constitu de plusieurs
modules qui regroupent des programmes pr-installs appels "procdures" (certains modules
ne sont pas disponibles lors de linstallation de SAS). Parmi ces modules, nous pouvons citer
brivement :
SAS Stat : procdures destines aux rgressions diverses et aux statistiques descriptives ;
SAS ETS: procdures permettant le traitement des sries temporelles ;
SAS IML : module permettant lusage du langage matriciel.

Nous allons tudier les diffrentes fonctionnalits de ce logiciel travers un exemple.

Soit le tableau de donnes suivant :

Anne
1988
1988
1988
1988
1989
1989
1989
1989

Trimestre
1
2
3
4
1
2
3
4

Ventes
164
198
85
179
168
201
98
197

Pub
34
36
32
29
45
67
76
75

Nous souhaitons effectuer une rgression de Ventes sur Pub par la mthode des Moindres
Carrs Ordinaires (MCO). Pour ce faire, nous devons dabord saisir les donnes du tableau
dans le logiciel SAS.

ETAPE 1 : ENREGISTREMENT, LECTURE ET MODIFICATION DES DONNEES SOUS


SAS

_ Entrez dans le logiciel en cliquant sur licne de SAS.


_ Nous nous trouvons devant 4 fentres :
fentre Explorateur ;
fentre Journal (ou fentre LOG) ;
fentre Sortie (ou fentre OUTPUT) ;
fentre Editeur (ou fentre EDITOR).
Fentre Explorateur
La fentre Explorateur contient les bibliothques (ou Libraries) : WORK, SASUSER et
SASHELP.
La bibliothque WORK comprend les tables SAS dites temporaires tandis que la bibliothque
SASUSER regroupe les tables SAS dites permanentes (il est bien sr possible de crer des
bibliothques "personnalises" pour ranger nos tables permanentes).
Les tables temporaires sont automatiquement dtruites la fin de la session SAS ce qui nest
pas le cas pour les tables permanentes.
Fentre Journal
La fentre Journal dresse le compte-rendu de lexcution dun programme. Cest dans cette
fentre quapparaissent les messages derreur.

Fentre Sortie
La fentre Sortie affiche les rsultats dun programme lorsque ce dernier sest excut sans
erreur.

Fentre Editeur
La fentre Editeur permet la saisie des instructions dun programme.

Remarque :
Tout programme SAS est constitu dune tape DATA et dune tape PROC.
Au cours de ltape DATA, les donnes, les variables et les tables SAS sont cres et
modifies (SAS ne peut travailler quavec des tables converties au format SAS). Tandis que
ltape PROC permet lapplication doprations pr-programmes sur les donnes
enregistres au cours de ltape DATA en faisant appel des procdures (la rgression de
Ventes sur Pub sera effectue laide de la procdure PROC REG ou PROC AUTOREG).

A/ Etape DATA : cration dune table SAS

Il est possible de crer une table SAS soit en saisissant au clavier les donnes soit en
important les donnes dune table externe (table de format texte, Excel ou Access).

Cration dune table SAS partir de la saisie des donnes :


Dans la fentre Editeur, on crit les lignes dinstructions suivantes :

/* Ecriture des donnes dans une table SAS */


LIBNAME lsas "C:\travaux SAS\" ;
DATA lsas.essai ;
INPUT Ventes Pub ;
CARDS (ou DATALINES) ;
164 34
198 36
85 179
168 45
201 67
98 76
197 75
;
PROC PRINT DATA=lsas.essai;
RUN ;
On enregistre ensuite ce programme qui sera sauvegard avec une extension .sas
On excute le programme en cliquant sur "le personnage qui court" apparaissant dans la barre
doutils.

Remarques :
On peut saisir des dates au clavier en prcisant le format de la variable date laide de
DDMMYYw. (pour des dates crites sur w 6 caractres), YYMMDDw. , MONYYw.
(pour des dates crites sur w 5 caractres o MON correspond au 3 premires lettres du
mois en anglais) et ANYDTDTEw. (pour tous formats).
Exemple :
LIBNAME lsas "C:\travaux SAS\" ;
DATA lsas.essai ;
INPUT days DDMMYY10. Ventes Pub ;
CARDS ;
01/01/1988 164 34
01/04/1988 198 36
01/08/1988 85 179
3

01/12/1988 168 45
;
RUN ;
PROC PRINT DATA=lsas.essai;
FORMAT days date9. ;
/* Les instructions FORMAT days date9. permettent dafficher lisiblement les dates sous
la forme 01JAN1988, 01AVR1988, , 01DEC1988. Date9. permet dcrire les dates sur 9
caractres */
RUN ;
On peut inscrire des commentaires laide des caractres /* */ ou en plaant en dbut de
ligne *.
Linstruction LIBNAME permet de crer une bibliothque o sera range la table SAS qui
sera cre. On a appel cette bibliothque lsas. Elle est construite dans le dossier "travaux
SAS" qui se trouve sur le disque dur C.
ATTENTION : Le nom de la bibliothque ne doit pas dpasser 8 caractres, ne doit pas
comporter de lettre accentue ni de chiffres !
ATTENTION : Les instructions sous SAS sont suivies dun point virgule !!
SAS ne distingue pas les minuscules et les majuscules. On peut crire donc DATA ou data.
Linstruction DATA permet de crer une table SAS.
Pour crer une table SAS temporaire, on crira : DATA nomTable.
Pour crer une table SAS permanente, on crira : DATA nomLIBRARY.nomTable
La syntaxe de linstruction DATA est :
DATA nomTable
. ;
RUN ;
La table SAS cre aura pour extension .sas7bdat
Linstruction INPUT dclare les variables qui composeront la table SAS. Ici les variables
sont Ventes et Pub. Ce sont des variables numriques qui ne contiennent que des valeurs.
Lorsque lon souhaite dclarer des variables caractres, il faut ajouter $ aprs la
dclaration de la variable caractre.
Exemple :
DATA lsas.essai ;
INPUT Societe $ Ventes Pub ;
CARDS ;

Dupont 164 34
AAA 198 36
LSA 85 179
Store 168 45
;
PROC PRINT;
RUN ;
ATTENTION : Le nom des variables ne doivent pas comporter de lettre accentue !
Les nombres dcimaux scrivent avec un point !
Linstruction CARDS permet de rentrer manuellement les donnes dans la table SAS. Sa
syntaxe est :
CARDS ;
donnes
;

La procdure PRINT permet de visualiser les rsultats dans la fentre Sortie.

Cration dune table SAS partir dun fichier de donnes externe :

A partir dun fichier texte


On possde les donnes de Ventes et de Pub dans le fichier texte appel essai.txt qui se
trouve dans le dossier Documents sur le disque dur C. Pour transfrer ces donnes vers la
table SAS appele essai, on tape les lignes suivantes dans la fentre Editeur :

LIBNAME lsas "C:\travaux SAS\" ;


DATA lsas.essai ;
INFILE "C:\Documents\essai.txt" EXPANDTABS FIRSTOBS=2 ;
INPUT Ventes Pub ;
PROC PRINT ;
RUN ;
Remarques :
Linstruction EXPANDTABS indique SAS que les donnes du fichier essai.txt sont
spares par un espace.
Si les donnes sont spares par une virgule, on crit alors :
INFILE "C:\ Documents \essai.txt" DLM=, ;

Linstruction FIRSTOBS indique SAS de ne pas prendre en compte la 1re ligne du


fichier. Cette instruction est utiliser lorsque la 1re ligne du fichier comporte le nom des
variables alors que SAS sattend trouver en 1re ligne des valeurs numriques.

A partir dune autre table SAS


On peut crer une table SAS (table essai) partir dune table SAS existante (table donnee) en
tapant les lignes suivantes (ici on cre une table temporaire) :
DATA donnee ;
SET essai ;
RUN ;

A partir dun fichier Excel


Pour transfrer des donnes dun fichier Excel vers une table SAS, on peut utiliser la
procdure IMPORT ou lassistant dimportation (fentre "Import Wizard"). Pour faire appel
la procdure IMPORT, on crit les lignes suivantes :
LIBNAME lsas "C:\travaux SAS\";
PROC IMPORT OUT= lsas.essai
DATAFILE= "C:\Documents\essai.xls"
DBMS=EXCEL REPLACE;
SHEET="Feuil1";
GETNAMES=YES;
MIXED=NO;
USEDATE=YES;
SCANTIME=YES;
RUN;
PROC PRINT DATA=lsas.essai;
RUN;

Remarques :
Avant dimporter les donnes du fichier Excel, il faut sassurer que les valeurs manquantes
sont remplaces par un blanc, que les dcimaux sont bien crits avec une virgule (SAS ne
comprend pas les dcimaux crits avec un point sous Excel) et que lintitul des variables
figure en 1re ligne.
Le fichier Excel peut comporter une colonne date au format 01/01/1993 ou mar-98 par
exemple.
Linstruction OUT permet dindiquer SAS le nom de la table SAS ainsi que
lemplacement o lon souhaite la placer.
Linstruction DBMS renseigne SAS sur le format du fichier importer.
Linstruction REPLACE crase une version antrieure de la table SAS portant le mme
nom.
6

Linstruction SHEET="Feuil1" demande SAS dimporter les donnes qui se trouvent


dans la premire feuille Excel appele Feuil1.
Linstruction GETNAMES=YES permet de reprendre les intituls des variables qui se
trouvent en 1re ligne du fichier Excel.
Linstruction MIXED=NO informe SAS que les donnes sont soit des caractres soit des
valeurs. Si on a des valeurs manquantes, il est souhaitable dutiliser MIXED=YES pour
pouvoir lire les donnes.
Linstruction USEDATE=YES permet SAS de lire la variable date (dans un format non
dfini).
Linstruction SCANTIME=YES demande SAS de lire la variable date tant que cette
dernire ne possde pas un format date.
Il est possible dutiliser PROC IMPORT sans mentionner la plupart des instructions cidessus en crivant simplement :
LIBNAME lsas "C:\travaux SAS\";
PROC IMPORT DATAFILE="C:\Documents\essai.xls" OUT=lsas.essai;
/* Sil existe dj une table essai, on utilise linstruction REPLACE la suite de OUT */
RUN ;
PROC PRINT DATA=lsas.essai;
RUN;

Pour faire appel lassistant dimportation, on va dans Fichier puis on choisit Importer
donnes.
Remarque : Lassistant dimportation permet dimporter galement des formats .txt, .cvs,

Pour limportation des donnes, on suit les tapes suivantes :

1. Dans la liste droulante, on slectionne le format du fichier qui contient les donnes
importer puis on clique sur Suivant (ou Next).
2. Une fentre apparat ("Connect to MS Excel"). Dans lencadr "Workbook", on indique en
cliquant sur Browse lemplacement du fichier Excel puis on clique sur Ouvrir et sur OK.
3. Une autre fentre apparat o on demande quelle table on souhaite importer. Si le nom de
la feuille Excel qui apparat nous convient, on clique sur Suivant.
4. Une nouvelle fentre nous demande de renseigner le nom de la bibliothque (Library) vers
laquelle on veut transfrer les donnes (on choisit dans la liste droulante : SASUSER pour la
cration dune table permanente ou WORK pour une table provisoire).
Dans lencadr "Member", on attribue un nom la table SAS qui va tre cre (ici on lappelle
essai).
5. Une dernire fentre apparat et on clique Termin (ou Finish).

B/ Etape DATA : lecture dune table SAS


La lecture dune table SAS seffectue partir de linstruction SET. Pour lire les donnes
dune table SAS existante dans la bibliothque lsas, on tape dans la fentre Editeur les lignes
suivantes :
LIBNAME lsas "C:\travaux SAS\";
DATA lsas.essai;
SET lsas.essai;
RUN;

C/ Etape DATA : modification dune table SAS

Ajout dune variable


Pour ajouter une variable appele lVentes qui provient du calcul du logarithme nprien de la
variable Ventes de la table SAS existante appele essai, on crit les lignes suivantes :
LIBNAME lsas "C:\travaux SAS\";
DATA lsas.essai;
SET lsas.essai;
lVentes=log(Ventes);
t=_n_;
/* cration de la variable temps t */
RUN;

Remarques :
Pour quune modification puisse tre prise en compte dans la table SAS, il faut dabord
fermer la vue de la table (fentre ViewTable qui apparat en allant dans la fentre
Explorateur) avant de procder toute modification.
On peut crer une nouvelle variable en effectuant des oprations sur plusieurs variables.
Exemple :
Benefice = Ventes Pub ;
Les oprations mathmatiques peuvent seffectuer laide des fonctions suivantes :
ABS(num) : donne la valeur absolue dun nombre
MAX(num1, , numn) : donne le maximum dune liste de nombres
MIN(num1, , numn) : donne le minimum dune liste de nombres
SQRT(num) : fournit la racine carre dun nombre
INT(num) : donne lentier dun nombre
EXP(num) : donne lexponentiel dun nombre
SUM(num1, , numn) : calcule la somme dune liste de nombres
MEAN(num1, , numn) : calcule la moyenne dune liste de nombres
VAR(num1, , numn) : dtermine la variance dune liste de nombres
STD(num1, , numn) : donne lcart-type dune liste de nombres
On peut noter que les instructions de calcul se font toujours lintrieur de la syntaxe
DATA.
On peut crire la suite plusieurs instructions DATA. Par exemple :
LIBNAME lsas "C:\travaux SAS\";
PROC IMPORT DATAFILE="C:\travaux SAS\essai.xls" OUT=lsas.essai;
RUN ;
PROC PRINT DATA=lsas.essai;
RUN;
DATA lsas.essai;
SET lsas.essai;
lPub=log(Pub);
RUN;
DATA lsas.chgessai; /* cration dune autre table dans la bibliothque lsas */
SET lsas.essai;
RUN;

Suppression dune variable


La suppression dune variable est ralise laide de linstruction DROP. Pour supprimer la
variable Ventes de la table SAS appele essai, on tape les lignes suivantes :
LIBNAME lsas "C:\travaux SAS\";

DATA lsas.essai;
SET lsas.essai;
DROP Ventes;
RUN;

Renommer une variable


Le changement de nom dune variable seffectue laide de linstruction RENAME. Pour
renommer la variable Ventes de la table SAS appele essai, on tape les lignes suivantes :
/* 1re mthode pour renommer une variable */
LIBNAME lsas "C:\travaux SAS\";
DATA lsas.essai;
SET lsas.essai;
RENAME Ventes=Sales;
RUN;
ou
/* 2me mthode pour renommer une variable */
LIBNAME lsas "C:\travaux SAS\";
DATA lsas.essai;
SET lsas.essai;
Sales=Ventes;
DROP Ventes;
RUN;

D/ Etape DATA : exportation des donnes dune table SAS


Lexportation des donnes peut tre mene laide de PROC EXPORT ou de lassistant
dexportation (fentre "Export Wizard" qui apparat en allant dans Fichier puis en choisissant
Exporter donnes).

Cration dun fichier texte partir dune table SAS et de PROC EXPORT

LIBNAME lsas "C:\travaux SAS\" ;


PROC EXPORT DATA =lsas.essai
OUTFILE='C:\travaux SAS\essai.txt'
REPLACE
DBMS=DLM ;
DELIMITER=',' ; /* sans cette instruction, le caractre de sparation des valeurs
est l'espace */
RUN;

10

Cration dun fichier Excel partir dune table SAS et de PROC EXPORT
LIBNAME lsas "C:\travaux SAS\" ;
PROC EXPORT DATA=lsas.essai OUTFILE='C:\travaux SAS\essai.xls' REPLACE;
RUN;

ETAPE 2 : REGRESSION LINEAIRE PAR LES MCO

Pour raliser une rgression de Ventes sur Pub et sur une constante par les MCO, on peut
utiliser PROC REG ou PROC AUTOREG.
PROC REG estime par les MCO les coefficients dun modle linaire qui comporte des
erreurs qui sont non autocorrles (si les erreurs sont htroscdastiques, il est possible
dutiliser la mthode destimation des MCG laide de linstruction WEIGHT avec PROC
REG).
PROC AUTOREG estime galement par les MCO les coefficients dun modle linaire avec
des erreurs non autocorrles ou autocorrles (avec la mthode du maximum de
vraisemblance et une structure autorgressive pour lerreur).
PROC AUTOREG permet aussi la mise en uvre de certains tests comme le test de JarqueBera et celui de Chow.
Il existe sous SAS dautres procdures destimation pour des cas plus spcifiques :
CATMOD, GENMOD, GLM, LOGISTIC, MIXED, NLIN, PROBIT, etc...

Pour effectuer une estimation laide de PROC REG ou de PROC AUTOREG, on crit les
lignes suivantes dans la fentre Editeur :
PROC REG DATA=lsas.essai ;
MODEL Ventes=Pub ;
RUN ;
ou
PROC AUTOREG DATA=lsas.essai ;
MODEL Ventes=Pub ;
RUN ;

Remarques :
Il nest pas ncessaire dinclure une constante parmi les variables explicatives car celle-ci
est ajoute automatiquement. Pour mener une rgression sans constante, on crit :
PROC REG DATA=lsas.essai ;

11

MODEL Ventes=Pub / noint ;


RUN ;
PROC AUTOREG DATA=lsas.essai ;
MODEL Ventes=Pub / noint ;
RUN ;
On peut demander le listage des rsidus et des valeurs estimes de la variable endogne
laide des commandes suivantes :
PROC REG DATA=lsas.essai ;
MODEL Ventes=Pub / r p ;
/ * r fournit les rsidus et p donne les valeurs estimes de Ventes dans la fentre Sortie */
RUN ;
ou
PROC REG DATA=lsas.essai ;
MODEL Ventes=Pub ;
OUTPUT OUT=lsas.result r=res p=fit;
/*cration d'une table result dans la bibliothque lsas contenant les rsidus et les valeurs
estimes pour Ventes */
RUN ;
QUIT ; /* commande ncessaire pour pouvoir lire la table result si on ne quitte pas la
session*/
ou
PROC AUTOREG DATA=lsas.essai ;
MODEL Ventes=Pub ;
OUTPUT OUT=result rm=residu p=ventesprev;
/* cration dune table result (table temporaire) dans Work contenant les rsidus et les
valeurs estimes pour Ventes */
RUN ;
/* on peut noter que lon najoute pas ici QUIT */
La rgression de y sur plusieurs variables explicatives x1, x2, x3 et constante seffectue de
la faon suivante :
PROC REG ;
MODEL y=x1 x2 x3 ;
RUN ;

12

A/ Etape PROC : rgression linaire avec des variables retardes

LIBNAME lsas "C:\travaux SAS\";


PROC IMPORT DATAFILE="C:\travaux SAS\essai.xls" OUT=lsas.essai REPLACE;
RUN ;
DATA lsas.essai ;
SET lsas.essai;
/* dclaration des variables retardes dans ltape DATA */
lagVentes=lag1(Ventes);
lagPub1=lag1(Pub);
lagPub2=lag2(Pub);
RUN;
PROC PRINT DATA=lsas.essai;
RUN;
/* rgression laide des variables retardes */
PROC REG DATA=lsas.essai ;
MODEL Ventes=lagVentes Pub lagPub1 / r ;
TITLE Rgression avec des variables retardes ;
RUN ;

B/ Etape PROC : rgression linaire avec une variable indicatrice (muette ou dummy)

LIBNAME lsas "C:\travaux SAS\";


DATA lsas.essai ;
INPUT days Ventes Pub ;
CARDS ;
01011988 164 34
01041988 198 36
01081988 85 179
01121988 168 45
;
RUN;
/* 1re mthode pour crer une variable muette */
DATA lsas.essai;
SET lsas.essai;
DUAG88=(days=01081988);
RUN;
ou
/* 2me mthode pour crer une variable muette */
DATA lsas.essai;
SET lsas.essai;
IF days=01081988 THEN DUAG88=1; ELSE DUAG88=0;
RUN;

13

Remarques :
Si la variable days est une chane de caractres, les lignes de commandes scrivent :
DATA lsas.essai;
SET lsas.essai;
DUAG88=(days="01081988");
RUN;
Si lon souhaite faire appel au rang dobservation de la variable days pour construire la
variable muette, on crira :
DATA lsas.essai;
SET lsas.essai;
DUAG88=(_n_=3); /* la date 01081988 correspond la 3me observation */
RUN;

ETAPE 3 : REALISATION DES GRAPHIQUES SOUS SAS

PROC REG DATA=lsas.essai ;


MODEL Ventes=Pub / r ;
PLOT Ventes*Pub; /* Trace le graphique de Ventes en ordonne et de Pub en abscisse
avec la droite dajustement */
RUN ;
PROC REG DATA=lsas.essai ;
MODEL Ventes=Pub / r ;
PLOT r.*p. ;
/* Trace le graphique des rsidus en ordonne et des valeurs estimes de
Ventes en abscisse */
RUN ;

LIBNAME lsas "C:\travaux SAS\" ;


DATA lsas.essai;
INPUT Date Ventes Pub;
CARDS;
1 164 34
2 198 36
3 85 179
4 168 45
5 201 67
6 98 76
7 197 75
;
PROC PRINT DATA=lsas.essai;
RUN;
PROC GPLOT data=lsas.essai;
PLOT Ventes*Date; /* Trace le graphique de Ventes en fonction du temps */
RUN;
14

ETAPE 4 : UTILISATION DES TESTS STATISTIQUES SOUS SAS

Tests de normalit
PROC AUTOREG DATA=lsas.essai ;
MODEL Ventes=Pub / NORMAL ;
/* NORMAL pour obtenir le test de Jarque Bera */
RUN ;
ou
PROC REG DATA=lsas.essai ;
MODEL Ventes=Pub;
OUTPUT OUT=result r=res p=Ventesprev ;
RUN;
/* Mise en oeuvre des tests de normalit de Kolmogorov-Smirnov, Cramer-Von Mises et
Andersen-Darling */
PROC UNIVARIATE DATA=result NORMAL;
VAR res;
HISTOGRAM res / NORMAL;
RUN;

Test dautocorrlation dordre 1 : test de Durbin-Watson

PROC REG ;
MODEL Ventes=Pub / DWPROB ;
RUN ;
ou
/* PROC AUTOREG fournit directement les rsultats du test de DW dans la fentre Sortie */
PROC AUTOREG DATA=lsas.essai ;
MODEL Ventes=Pub ;
RUN ;

Test dhtroscdasticit de White

LIBNAME lsas "C:\travaux SAS\" ;


DATA lsas.essai ;
INPUT Ventes Pub Charges ;
CARDS ;
164 34 16
198 36 24
85 179 8
168 45 18
201 67 32

15

98 76 10
197 75 19
;
PROC MODEL;
PARMS B0 B1 B2;
Ventes=B0+B1*Pub+B2*Charges;
FIT Ventes / WHITE;
RUN;
ou
PROC REG DATA=lsas.essai ;
MODEL Ventes=Pub Charges / SPEC;
RUN ;

Test de stabilit des coefficients : test de Chow

PROC AUTOREG DATA=lsas.essai ;


MODEL Ventes=Pub / CHOW=(3);
RUN ;

ETAPE 5 : PREVISION

LIBNAME lsas "C:\travaux SAS\" ;


DATA lsas.essai ;
INPUT Ventes Pub ;
CARDS (ou DATALINES) ;
164 34
198 36
85 179
168 45
201 67
98 76
197 75
/* Ajout des valeurs pour Pub pour la prvision de Ventes hors de lchantillon. Les valeurs
manquantes pour Ventes sont signales laide dun point. * /
. 84
. 90
;
RUN ;
PROC REG DATA=lsas.essai ;
MODEL Ventes=Pub / p ;
/* p affiche les valeurs prvues pour Ventes hors de lchantillon */
RUN ;

16

Vous aimerez peut-être aussi