Analyser vos variables qualitatives sous SAS

L'analyse descriptive univariée ou bivariée des variables qualitatives ou quantitatives discrètes avec PROC FREQ

La PROC FREQ permet de dresser des tableaux de contingence, univariée ou bivariée. Il est également possible de stocker les résultats dans une table SAS ainsi que générer automatiquement le diagramme des fréquences associé.
Voyons ceci de plus près.

Données de travail

Nous allons travailler, pour illustrer nos propos, sur une base des salariés d'une société. Cette base compte 150 individus et nous disposons de 2 variables : le sexe et la division à laquelle le salarié est rattaché.
Voici ce à quoi ressemblent les données brutes.

Individu;sexe;division
1;H;ressources humaines
2;F;comptabilité
3;F;gestion
4;H;informatique
5;F;comptabilité
6;H;acceuil
7;H;acceuil
8;H;exploitation

Il s'agit d'un fichier CSV avec le point-virgule comme séparateur et une ligne d'en-tête. Nous constatons par ailleurs qu'il y a des accents, nous allons donc devoir le charger avec un encodage UTF8.


options validvarname=any;
filename FILE "/home/u49997643/gorenja/salaries_par_division.csv" 
         encoding='utf-8' ;

proc import datafile=FILE out=work.salaries dbms=csv replace;
delimiter = ';';
getnames  = yes;
run;

Analyse univariée : Tableau de contingence

Les données ayant été chargées, nous pouvons dresser un premier tableau de contingence via l'instruction PROC FREQ. Nous allons le faire uniquement sur chacune des 2 variables qualitatives sexe et division, nous le précisons donc via l'instruction tables.


proc freq data= work.salaries;
tables sexe division;
run;

Voici le résultat retourné :

SAS proc freq

Nous constatons que les modalités sont ordonnées par ordre alphabétique. Nous pouvons demander à SAS d'ordonner les tableaux de contingence par fréquence décroissante via l'option order=freq.
Par ailleurs, il est également possible de ne pas afficher les pourcentages et fréquences cumulées via l'option nocum.


proc freq data= work.salaries order= freq;
tables sexe division / nocum;
run;

Voici le résultat retourné :

SAS proc freq

Il est enfin possible de demander à SAS d'éditer en plus un tableau de synthèse résumant le nombre de modalités pour chacune des variables d'intérêt. Il suffit pour cela d'ajouter l'option nlevels en fin d'instruction proc freq.


proc freq data= work.salaries order= freq nlevels;
tables sexe division / nocum;
run;

Analyse bivariée : Tableau croisé

L'analyse de 2 variables qualitatives passe par l’édition d'un tableau de contingence croisé. Il suffit de séparer les 2 variables à croiser par un caractère *. L'affichage par défaut proposé par SAS peut être modifié en précisant l'option / list ou / crosslist en fin d'instruction tables.
Il est enfin possible de demander à SAS de stocker le résultat dans une table de sortie via l'option / out = ... en fin d'instruction tables également.


proc freq data= work.salaries;
tables sexe * division;
run;
SAS proc freq

Il ressort de l'analyse que, par exemple, 60% des salariés à la comptabilité sont des femmes, 40% sont des hommes. Si on se réfère au profil colonne, la comptabilité représente 16.67% des effectifs de la société.

Diagramme en barre

Comme nous l'avons évoqué en introduction, il est possible de demander à la proc freq de dresser un diagramme en barre. Il suffit pour cela d'ajouter une option plots en fin d'instruction tables.
Cette option est valable autant pour l'analyse univariée que pour le croisement de 2 variables. Dans ce dernier cas, SAS ajoutera des couleurs pour distinguer les modalités.


proc freq data= work.salaries;
tables sexe * division / plots=freqplot(twoway=stacked orient=vertical);;
run;
SAS proc freq

Pour ceux qui désirent personnaliser le diagramme il est toujours possible de rediriger le tableau de contingence vers une table de travail (via l'option /out), puis d'implémenter une instruction proc sgplot à la suite.


Retrouvez dans la rubrique "Nos datasets" toutes les données dont vous aurez besoin pour tester et pratiquer !