© JP Cabannes 1995-2007

 

Éléments pour l'emploi de SAS sous Windows

 

La version 8.2 pour Windows présentée ici du logiciel statistique SAS est issue du monde des gros systèmes informatiques, cela explique son côté parfois encore "rétro". La grande variété des méthodes implantées et disponibles en fait néanmoins un outil de choix pour les travaux économétriques, et plus généralement statistiques.

Destiné, entre autres, aux entreprises et aux administrations, SAS inclut une gestion élaborée des bases de données. Ces fonctions ne sont pas présentées ici, et les séries traitées seront lues ou saisies de la manière la plus simple.

Le tutorial comme le module Entreprise Guide permettent également de se former; ils mettent davantage l'accent sur la gestion des données et les commandes statistiques élémentaires.

On présente ici le mode de fonctionnement semi-conversationnel, puis quelques commandes de base pour spécifier ses données et faire exécuter des régressions (un "mode assisté" existe, il est incomplet et pas toujours plus aisé à utiliser...).

La documentation est disponible en ligne et remplace avantageusement les anciennes brochures papier, elle contient de nombreux exemples de programmes SAS, souvent aussi instructifs que la description de la syntaxe des commandes. Cette aide, qui décrit l'emploi de SAS, ne remplace naturellement pas un cours de statistique ou d'économétrie. On pourra également rechercher des informations et des exemples sur le site de la société SAS (www.sas.com) et les sites universitaires.

 

Principes généraux

Cette version de SAS étant une version Windows, les commodités de cet environnement y sont naturellement disponibles.

Le travail en SAS consiste à écrire et à mettre au point des programmes (dans un langage approprié, comportant des instructions telles que "lire les variables suivantes...", "faire telle régression", etc.) dans la fenêtre PROGRAM EDITOR, puis à en demander l'exécution, l’analyse d’un programme et de son éventuelle exécution apparaissant dans la fenêtre LOG, et enfin à examiner les résultats produits dans la fenêtre OUTPUT.

 

Principales commandes

Bien que SAS ne distingue pas les majuscules des minuscules, on convient ici de noter en majuscules grasses les mots propres au langage, de manières à les distinguer des autres termes pris en exemples (tel le nom d'un fichier de données ou encore d'une variable).

La fenêtre PROGRAM EDITOR est donc destinée à la saisie ou à la correction des programmes écrits en langage SAS. Un programme SAS ayant été ainsi écrit ou appelé dans cette fenêtre, on en demande l'exécution par la commande SUBMIT, ou en utilisant le petit bonhomme qui court, situé à droite de la barre d'icônes.

Au bout d'un certain temps, on voit apparaître le compte-rendu dans la fenêtre LOG, les erreurs rédhibitoires étant généralement signalées en rouge, puis ensuite les résultats éventuels dans la fenêtre OUTPUT.

Les fenêtres LOG et OUTPUT ne sont pas effacées à chaque nouvelle demande, mais les nouveaux résultats sont placés à la suite des précédents, et cela peut être source de confusion lorsqu'on débute. Aussi lors de la phase de mise au point, il peut être avisé de vider le contenu de ces fenêtres lors des essais successifs, cela se fait par la commande EDIT suivie de CLEAR ALL, on y parvient plus rapidement via le menu contextuel obtenu par un click droit de la souris.

 

Éléments du langage SAS

On présente d'abord à l'aide de quelques exemples commentés les éléments de base du langage nécessaires pour faire exécuter des calculs économétriques usuels.

Pour la bonne compréhension, on convient encore de noter en majuscules grasses les mots du langage, les nombreuses espaces et lignes sautées sont de même uniquement destinées à clarifier l'exposé et sans incidence sur l'interprétation du programme par SAS.

Chaque instruction se termine par un point-virgule.

/* Exemple 1 - classe */

DATA
classe;
INPUT nom $ taille poids age sexe $;
taill2 = taille * taille;
ratio = poids /taille;

CARDS;
Alfred 69.0 112.5 14 g
Alice 56.5 84.0 13 f
... ... ...
William 66.5 112.0 15 g
;

PROC PRINT;

PROCREG;
MODEL poids = taille;
TITLE 'Régression simple';

PROC SORT;
BY sexe;
PROCPRINT;

PROC REG;
MODEL poids = age taille;
BY sexe;

PROC REG;
MODEL poids = age taille taill2 / R;
TITLE 'Régression multiple';

RUN;

Commentons (en italiques) l'exemple précédent.

/* Exemple 1 - classe */

Tout texte entre /* et */ est un simple commentaire destiné à rendre le programme plus intelligible (très utile si on le relit longtemps après...)

DATA classe;
INPUT nom $ taille poids age sexe $;
taill2 = taille *taille;
ratio = poids / taille;

CARDS;
Alfred 69.0 112.5 14 g
Alice 56.5 84.0 13 f
... ... ...
William 66.5 112.0 15 g
;

La première étape d'un programme est la section DATA, qui introduit les données qui seront ensuite traitées.

DATA classe donne le nom classe à l'ensemble des données; il s'agit ici d'un nom temporaire pour la durée de la session de travail, non d'un nom de fichier permanent.

INPUT nom $ taille poids ... indique dans quel ordre les variables seront lues. Une variable suivie d'un $ est une variable alphanumérique. On utilise ici le format d'entrée le plus simple : le format libre, qui lit une observation par ligne jusqu'à épuisement de celles-ci.

Les relations qui suivent permettent de définir de nouvelles variables à partir des précédentes.

CARDS (ou bien DATALINES) signifie que les variables sont à lire dans les lignes qui suivent, dans l'ordre indiqué par INPUT.

Attention : par défaut les nombres utilisent la notation anglo-saxonne, avec le point en guise de séparateur décimal !

Les procédures, introduites par la commande abrégée PROC, permettent ensuite d'ordonner les traitements souhaités sur les données définies dans l'étape DATA.

PROC PRINT;

La procédure PRINT fait afficher les données sur l'écran.

PROC REG;
MODEL poids = taille;
TITLE 'Régression simple';

La procédure REG appelle la régression linéaire multiple (ou simple). La commande MODEL définit la ou les équations à estimer : variable endogène = variable(s) exogène(s). Il n'est pas nécessaire d'indiquer la présence de la constante parmi les explicatives, celle-ci est incluse par défaut.

On peut facultativement prévoir un titre.

PROC SORT;
BY sexe;
PROC PRINT;

PROC REG;
MODEL poids = age taille;
BY sexe;

Pour faire effectuer plusieurs régressions sur des fractions des données par la commande BY de la procédure REG, il faut que ces fractions soient d'un seul tenant.

Cela s'obtient avec un tri préalable par la procédure SORT.

PROC REG;
MODEL poids = age taille taill2 / R;
TITLE 'Régression multiple';

On peut faire suivre la commande MODEL de diverses options après un slash ( / ). L'option R demande le listage et le graphique des résidus.

RUN;

L’ordre final RUN demande l’exécution des commandes qui précèdent.

 

/* Exemple 2 - Modèle de Klein - Fonction de consommation */

DATA
klein;
INPUT year c p w i x wp g t k wsum;
y = c + i + g - t;
klag = LAG (k);
plag = LAG (p);
xlag = LAG (x);
time = year - 1920;
LABEL
year = 'YEAR'
c = 'CONSUMPTION'
p = 'PROFITS'
w = 'PRIVATE WAGE BILL'
i = 'INVESTMENT'
k = 'CAPITAL STOCK'
y = 'NATIONAL INCOME'
x = 'PRIVATE PRODUCTION'
wsum = 'TOTAL WAGE BILL'
wp= 'GOVT WAGE BILL'
g = 'GOVT DEMAND'
t = 'TAXES'
klag = 'LAGGED CAPITAL STOCK'
plag = 'LAGGED PROFITS'
xlag = 'LAGGED PRIVATE PRODUCT'
;
CARDS;
1920   .  12.7   .    .  44.9  .    .    .  182.8   .
1921 41.9 12.4 25.5 -0.2 45.6 2.7  3.9  7.7 182.6 28.2
...  ... ...
1941 69.7 23.5 53.3  4.9 88.4 8.5 13.8 11.6 209.4 61.8
;
PROC REG DATA = klein;
MODEL c = p plag wsum / R P DW;
OUTPUT  OUT = klein2   P = cadj   R = resid;
TITLE
'Fonction de consommation';
test1: TEST p = 0, plag = 0;
test2: TEST p + plag = 0.4;

PROC PRINT;

PROC AUTOREG;
MODEL c = p plag wsum / METHOD = ML NLAG = 1;

RUN;

Dans la section DATA, la fonction LAG crée des variables retardées : LAG (x) décale la variable x d'une période, et LAGi (x) de i périodes.

La fonction DIF (x) définit de même les différences premières "delta x ".

La commande LABEL permet de définir des intitulés détaillés plus clairs qui accompagneront les sorties des régressions (attention à ne pas placer d'apostrophe dans ces intitulés !).

Dans les lignes de données suivant la commande CARDS, des points isolés indiquent des valeurs manquantes; en format libre cela est nécessaire pour que la commande INPUT attribue les bonnes valeurs aux bonnes variables...

Dans la procédure REG, on voit qu'est rappelé le nom des données (DATA = klein), cela est facultatif si on utilise le dernier DATA rencontré.

Dans la commande MODEL les options P et DW demandent le calcul des valeurs ajustées (ou prédites) et celui du coefficient de Durbin-Watson.

La commande OUTPUT ordonne la sauvegarde des séries initiales et de nouvelles séries spécifiées dans un nouveau fichier temporaire qui remplace celui de la dernière commande DATA. Le paramètre OUT indique le nom : "klein2", attribué à ce fichier qui devient le fichier courant et se substitue donc désormais au fichier "klein" de départ. P = cadj et R = resid donnent ainsi l'instruction d'ajouter dans klein2, la variable endogène c ajustée, sous le nom cadj, et la série des résidus, sous le nom de resid. La commande PROC PRINT suivante permet de vérifier ce qui précède.

Les commandes TEST demandent des tests d'hypothèses linéaires, il est commode de les faire précéder d'une étiquette s'il y en a plusieurs, pour la clarté des sorties.

La procédure AUTOREG met enfin en oeuvre une méthode d'estimation alternative en cas d'autocorrélation des résidus, ici par la méthode du maximum de vraisemblance (METHOD = ML) et en supposant un aléa autorégressif d’ordre 1 (NLAG = 1).

 

/* Exemple 3 - Modèle de Smith - Équations simultanées */

DATA
smith;
INFILE 'h:\mesdata\smith.dat';
INPUT year y i t m r;
ylag = LAG (y);
rlag = LAG (r);
c = y- i;
LABEL year = 'ANNÉE'
y = 'REVENU'
c = 'CONSOMMATION'
i = 'INVESTISSEMENT'
t = 'IMPÔTS'
m = 'MASSE MONÉTAIRE'
r = 'TAUX D INTÉRÊT'
ylag = 'REVENU DÉCALÉ'
rlag = 'TAUX r DÉCALÉ';

PROC REG;
conso : MODEL c = y t;
invest : MODEL i = ylag rlag;
monnaie: MODEL y = m r;

PROC SYSLIN 2SLS;
INSTRUMENTS t m ylag rlag;
ENDOGENOUS y c i r;
conso : MODEL c = y t;
invest : MODEL i = ylag rlag;
monnaie : MODEL y = m r;
TITLE 'Modèle de Smith - Doubles moindres carrés';

RUN;

Dans ce dernier programme SAS, les données ne sont plus saisies par la commande CARDS de la section DATA suivie des valeurs à lire, mais par l'ordre INFILE placé au début. La commande INFILE 'nom-de-fichier' fera lire les données dans le fichier texte désigné, dans lequel elles auront été écrites et disposées comme précédemment.

La procédure SYSLIN est la procédure générale d'estimation des modèles à équations simultanées.

L'option 2SLS demande ici l'estimation par la méthode des doubles moindres carrés ; les variables instrumentales - ici exogènes et endogènes retardées - doivent être indiquées (sans précision, telle 2SLS, ou encore SUR pour la méthode SURE, les équations sont estimées séparément par les mco). Viennent ensuite l'indication des endogènes et la déclaration des équations structurelles à estimer.

 

On indique pour terminer la syntaxe usuelle de la procédure LOGISTIC, qui permet en particulier l'estimation directe de modèles logit et probit par la technique du maximum de vraisemblance. En nous limitant au cas de réponse binaire (ie Oui/Non), elle admet deux formes d'appel.

Avec des observations élémentaires :

PROC LOGISTIC;
MODEL y (event = '1') = exogènes / options;

où y désigne la variable réponse (l'événement positif correspondant ici à la valeur '1').

Avec des données regroupées :

PROC LOGISTIC;
MODEL r/n = x z w / options;

où ri est le nombre de succès et ni le nombre d'observations pour chaque combinaison (xi zi, wi) des exogènes observée.

Dans les deux cas, parmi les options, LINK = LOGIT spécifie le modèle logit, et LINK = NORMIT le modèle probit.

 

On n'a présenté ici que quelques commandes usuelles et leurs options de base. Les possibilités offertes par SAS sont beaucoup plus nombreuses : estimation non linéaire, triples moindres carrés, simulation de modèles linéaires ou non, etc., pour nous limiter à la seule économétrie...

 

Session SAS

La manière la plus simple de travailler que nous suggérons consiste, disposant des données et ayant une idée des méthodes que l'on souhaite employer, à :

1° Saisir si nécessaire les données, soit dans l'éditeur SAS, soit à l'extérieur (par exemple sous EXCEL, en prenant garde d'utiliser le point décimal s'il y a lieu, et de sauvegarder en mode texte), et les enregistrer en un fichier indépendant qui sera appelé par INFILE.

2° Saisir le programme envisagé dans la fenêtre SAS PROGRAM EDITOR (ou sous tout autre éditeur de texte) et le sauvegarder.

3° Exécuter le programme précédent, examiner les sorties LOG et OUTPUT, et corriger jusqu'à l’obtention de résultats satisfaisants qui seront alors sauvegardés.

4° Reprendre enfin dans le fichier des résultats sous un traitement de texte quelconque par ses copier/coller les parties qui seront reproduites dans le rapport rédigé.

(Toutes les sauvegardes et saisies se feront naturellement sur des supports personnels.)

(17.07.2007)

----===ooOoo===----