• Keine Ergebnisse gefunden

Analyse d’une variable quantitative selon les modalités d’une qualitative

CHAPITRE IV : LES METHODES D’ANALYSES DE

IV. 1.2.2.2. Mesure du degré d’association entre deux variables qualitatives

IV.1.3. Croisement des variables de plusieurs niveaux : utilisation de PROC

IV.1.3.1. Analyse d’une variable quantitative selon les modalités d’une qualitative

Le premier avantage de PROC TABULATE par rapport à PROC FREQ réside dans sa capacité à croiser la statistique obtenue à partir d’une variable quantitative (moyenne, médiane) en fonction des modalités d’une ou de plusieurs variables qualitatives. Pour être concrète, commençons la démonstration par une analyse quantitative dans laquelle, on veut étudier le montant moyen de loyers par type de logement dans les grandes villes aux Etats-Unis. La première variable d’intérêt est nommée RENT qui capte le montant du loyer dans chaque cas analysé (l’exemple utilisé ici est tiré de l’article de Lauren Haworth intitulé Anyone Can Learn PROC TABULATE publié dans SUGI 27)

Tableau à simple entrée

D’abord, considérons la variable RENT et faisons la PROC TABULATE suivante : PROC TABULATE DATA=TEMP;

VAR RENT;

TABLE RENT;

RUN;

Par défaut SAS fournit le total de la variable RENT. On peut modifier ce comportement en spécifiant les statistiques souhaitée (ex : Moyenne, Médiane, MIN, Max, Nombre d’observations, etc…). Exemple :

PROC TABULATE DATA=TEMP;

VAR RENT;

TABLE RENT*MEAN;

RUN;

Il faut signaler qu’on peut spécifier plusieurs instructions TABLE dans une même PROC TABULATE ou même invoquer dans une même instruction TABLE plusieurs statistiques sur la même variable ou sur d’autres variables. Les deux exemples ci-dessous sont des illustrations :

PROC TABULATE DATA=TEMP;

VAR RENT;

TABLE RENT*MEAN;

TABLE RENT*N;

RUN;

Ou encore

PROC TABULATE DATA=TEMP;

VAR RENT;

TABLE RENT*MEAN RENT*N;

RUN;

La différence entre les deux formulations est que dans le premier cas, SAS créer deux tables et dans le second cas les statistiques sont présentées dans une même table (ce qui est logique !)

Il faut signaler que la seconde formulation peut être améliorée encore un peu plus car la variable RENT est spécifiée à chaque fois qu’une statistique est invoquée. Pour rendre efficient cette écriture, on peut utiliser une parenthèse. Dans ce cas on aura la présentation suivante :

PROC TABULATE DATA=TEMP;

VAR RENT;

TABLE RENT*( N MEAN);

RUN;

La moyenne présentée dans ce tableau est une moyenne générale. Elle peut cacher des disparités au sein de l’échantillon. Par exemple, il est probable que le montant du loyer soit plus élevé dans les grands agglomérations que dans les petites. C’est pourquoi, il peut être intéressant de présenter les montants moyens des loyers par ville. Pour réaliser cela, on ajoute ce qu’on appelle variable de classification ou variable de croisement. Le croisement entre deux variables se fait en utilisant le signe

*. Remarquons aussi que le signe * est aussi utilisé pour afficher une statistique sur une variable. Dès lors pour afficher la moyenne de la variable RENT par ville, il faut croiser d’abord croiser RENT avec le mot MEAN, ensuite croiser cet ensemble avec la variable ville. C’est cet exemple qui est illustré ci-dessous :

PROC TABULATE DATA=TEMP;

CLASS CITY;

VAR RENT;

TABLE RENT*MEAN*CITY;

RUN;

Le résultat obtenu par cette formulation ci-dessous se présente comme suit :

La moyenne est beaucoup plus élevée à San Francisco comparativement à Orlando ou à Seattle. Ce qui justifie la pertinence de la catégorisation de la moyenne.

Remarquons que la prise en compte de la variable de classification se fait en ajoutant l’instruction CLASS. Cette instruction est très importante car elle définit le niveau de croisement entre les variables. Un croisement de deux niveaux correspond à la spécification de deux variables de classification.

On peut ajouter autant de variables de classification que nous voulons à l’instruction CLASS et réaliser les croisements en conséquence. Cependant quel que soit le nombre de variable ajouté à l’instruction CLASS, le tableau de résultats obtenu reste toujours un tableau à une seule dimension (en l’occurrence un tableau à plusieurs colonnes et une ligne).

Par ailleurs, il est possible d’afficher la moyenne générale en ajoutant le mot clé ALL comme suit :

PROC TABULATE DATA=TEMP;

CLASS CITY;

VAR RENT;

TABLE RENT*MEAN*(CITY ALL);

RUN;

Cela signifie qu’on veut les moyennes pour chaque ville mais aussi pour l’ensemble.

Ce mot peut être utilisé pour toutes les statistiques à afficher.

Tableau à double-entrée

Dans de nombreux cas, on est face à des situations nécessitant l’élaboration de tableaux à double entrée ou des tableaux à plusieurs dimensions.

Pour réaliser un tableau à double-entrée, on sépare les arguments TABLE par une virgule. Par exemple, pour réaliser un tableau à double-entrée entre CITY et la moyenne de RENT, on fait :

PROC TABULATE DATA=TEMP;

CLASS CITY;

VAR RENT;

TABLE CITY, RENT*(N MEAN);

RUN;

Maintenant, nous souhaitons généraliser ce cas en analysant la moyenne du loyer par ville selon le nombre de pièces de l’appartement. Ainsi, on peut adopter la formulation suivante :

PROC TABULATE DATA=TEMP;

VAR RENT;

CLASS BEDROOMS CITY;

TABLE BEDROOMS, RENT*CITY*MEAN;

Cette tabulation donne le résultat suivant :

Dans la formulation ci-dessus, la variable de ligne est BEDROOMS qui prend deux modalités (1 Bedroom et 2 Bedrooms). La variable de colonne est la moyenne de RENT croisée avec la variable CITY.

Il faut signaler qu’on peut effectuer un autre croisement de la moyenne de RENT sur une autre variable de ligne sans avoir besoin d’invoquer une autre PROC TABULATE.

Pour cela, il suffit d’ajouter cette variable à la suite de BEDROOMS. Par exemple on souhaite faire une analyse du prix moyen par ville selon que l’appartenant dispose d’une connexion internet ou pas. Voir exemple ci-dessous :

PROC TABULATE DATA=TEMP;

VAR RENT;

CLASS BEDROOMS CITY INTERNET;

TABLE BEDROOMS INTERNET, RENT*CITY*MEAN;

RUN;

Comme il n’y a pas de signe * entre BEDROOMS et INTERNET, alors il ne s’agit pas d’un croisement entre les deux variables. Il s’agit plutôt d’un croisement des deux variables une à une avec le croisement de CITY avec la moyenne de RENT. Le résultat issu de ce croisement se présente comme suit :

Dans ce tableau les résultats des croisements avec BEDROOMS et INTERNET sont présentés sur des lignes séparées. Pour effectuer des croisements en imbriquant les deux variables, il faut légèrement modifier le code en ajoutant une étoile entre les eux variable telle que :

PROC TABULATE DATA=TEMP;

VAR RENT;

CLASS BEDROOMS CITY INTERNET;

TABLE BEDROOMS*INTERNET, RENT*CITY*MEAN;

RUN;

Le résultat obtenu se présente alors comme suit :

Cela permettra par exemple d’afficher toutes les statistiques souhaitables sans avoir à écrire plusieurs PROC TABULATE. Mais abandonnons d’abord cette idée et concentrons-nous uniquement sur la moyenne de la variable RENT.

Là aussi, on peut définir autant de niveau de croisement que l’on souhaite tant que ces variables sont déclarées dans l’instruction CLASS comme des variables catégorielles.

Aussi, il ne faut pas oublier que pour toutes les statistiques affichées ci-dessus, on peut ajouter le mot ALL pour calculer les totaux soit en ligne soit en colonnes.

Par ailleurs, il faut signaler que le croisement peut être effectué en utilisant n’importe quelle autre statistique à la place de la moyenne.

IV.1.3.2. Croisements des variables qualitatives

Dans cette section, nous allons réaliser les tris à plat et les tris croisés en utilisant PROC TABULATE. L’objectif est de montrer que les résultats obtenus sont équivalents

Considérons toujours l’exemple sur le montant des loyers aux Etats-Unis précédemment présenté.

Tableau de fréquences absolues d’une variable

Etablissons le tableau de fréquence sur CITY. Alors on fait : PROC TABULATE DATA=TEMP;

CLASS CITY;

TABLE CITY*N;

RUN;

Ainsi, pour obtenir un tableau de fréquence simple, on utilise simplement CLASS et TABLE.

Tableau croisés entre deux variables

Pour faire le tableau croisé entre deux variables (ex : CITY et BEDROOMS), on fait : PROC TABULATE DATA=TEMP;

CLASS CITY BEDROOMS;

TABLE BEDROOMS, CITY*N;

RUN;

On peut aussi afficher le total en ajoutant ALL par catégorie de BEDROOMS comme suit :

PROC TABULATE DATA=TEMP;

CLASS CITY BEDROOMS;

TABLE BEDROOMS, (CITY ALL)*N;

RUN;

Ou encore le total par ville comme suit : PROC TABULATE DATA=TEMP;

CLASS CITY BEDROOMS;

TABLE BEDROOMS ALL, CITY*N;

RUN;