• Aucun résultat trouvé

ACP SOUS SAS

N/A
N/A
Protected

Academic year: 2022

Partager "ACP SOUS SAS"

Copied!
1
0
0

Texte intégral

(1)

ACP SOUS SAS

La procédure d’ACP sous SAS (proc princomp) est assez sommaire : elle ne trace pas les graphiques, ne fournit rien en ce qui concerne les individus (coordonnées, contributions, qualité de représentation) et ne permet pas la mise en supplémentaire d’individus ou de variables. On doit avoir recours à la programmation si l’on veut intégrer ces possibilités. Nous présentons ici le programme de base, ainsi que quelques compléments, permettant de compléter les résultats.

0) Quelques rappels de base pour la programmation sous SAS

Syntaxe

 SAS ne différencie pas les majuscules des minuscules.

 On appelle instruction une ligne de programme. Chaque instruction doit être séparée d’un point-virgule.

 les noms des variables et des tables SAS ne doivent pas contenir plus de 8 caractères. Seules les lettres et le caractère _ peuvent être incluses dans ces noms.

 Les commentaires éventuels se mettent à l’intérieur de /* */

Construction d’une table SAS A partir d’une table SAS d’origine

On veut construire une table SAS, qui l’on appelle A, à partir d’une autre table SAS appelée B : DATA A ; (crée A)

SET B ; (va chercher B)

Instructions permettant d’obtenir la table A à partir de B (création de variables, suppression d’individus….) ; RUN ; (lance le programme)

A partir d’une liste :

On veut créer une table SAS, que l’on appelle A, à partir de plusieurs colonne de valeurs, chaque colonne représentant une variable (les variables seront appelées var1-varn)

DATA A ; (crée A)

INPUT var1 var 2…….varn ; (rentre les champs des variables) (*)

CARDS; (fait un tableau)

Valeurs en colonne, la colonne j représentant les valeurs de la variable varj

;

RUN ; (lance le programme)

(*) : Si une des variables est de type caractère (par exemple var1), on devra faire succéder son nom d’un $ : input var1 $ var 2…varn;

1) Programme de base :

La procédure d’ACP est la suivante :

PROC PRINCOMP DATA= A OUT= B OUTSTAT= C N = nombre COV VARDEF = nombre ; VAR liste des variables quantitatives étudiées ;

WEIGHT variable ; RUN ;

N.B. souligné = facultatif

PRINCOMP signifie PRINCIPAL COMPONENTS ( = composantes principales ) A = Nom donné à la table SAS contenant les données (créée par l’étape 0)).

B = Nom de la table SAS, créée automatiquement par SAS contenant, entre autre, les composantes principales et les variables quantitatives étudiées (cette table est nécessaire pour faire les graphiques, ou pour imprimer les contributions et qualités de représentations)

C =Nom de la table contenant un résumé de l’analyse (valeurs propres, vecteurs propres...).

N = nombre d’axes à calculer. Par défaut, SAS calcule p axes (autant d’axes que de variables étudiées). Ne pas confondre avec le nombre d’axes à retenir, qui se trouve après analyse.

COV = si cette option est précisée, SAS fera une ACP centrée, mais non réduite (la matrice d’inertie est la matrice de variance-covariance et non de corrélation), par défaut les données seront réduites.

Vardef=spécifie le nombre de degrés de libertés pour le calcul de variance (= à n ou n-1). Par défaut, SAS calcule les variances et les écarts- types non biaisés. Cela ne change rien à l’expression des axes principaux, mais les coordonnées sont différentes (pas assez toutefois pour modifier les conclusions de l’analyse)

Weight= spécifie une variable dans laquelle se trouvent les poids des individus. Cette instruction est optionnelle ; par défaut, SAS fait une ACP normée avec poids identiques pour chaque individu.

(2)

2) Résultats du programme de base :

SAS donne les sorties suivantes à partir du programme de base (sans les option COV, N, ni l’instruction weight) : Les valeurs des différents tableaux se rapportent aux données brutes fournies au paragraphe 4.

Tableau n° 1 : Récapitulatif des données ( nombre d’individus et de variables ) The princomp procedure Observations : 8 (nombre d’individus = n ) Variables : 5 (nombre de variables étudiées =p)

Tableau n° 2 : Statistiques descriptives

Simple Statistics

variables Maths Sciences Francais Latin Art

Mean (moyenne) 9.687 9.875 9.937 9.950 10.125

StD (écart type) 3.490 3.170 3.583 2.719 1.691

StD = En l’absence de l’option vardef, SAS fournit les écarts-types non biaisé:

 

n

i i

X x x

s n

1

)² 1 (

1 .

Tableau n° 3 : Matrice de corrélation

Correlation Matrix

Maths Sciences Francais Latin Art

Maths 1.0000 0.9794 0.2283 0.5035 0.1549

Sciences 0.9794 1.0000 0.4175 0.6658 0.0729

Francais 0.2283 0.4175 1.0000 0.9472 -0.2978

Latin 0.5035 0.6658 0.9472 1.000 -0.3086

Art 0.1549 0.0729 -0.2978 -0.3086 1.0000

RQ

: si l’option COV est présente, SAS donne la matrice de variances-covariances au lieu de la matrice de corrélations.

Utilisation pratique : Ce tableau permet d’ores et déjà de repérer les variables les plus corrélées entre elles.

Si deux variables sont bien représentées sur un plan principal, ces variables seront d’autant plus rapprochées sur le graphique que leur coefficient de corrélation est grand.

Exemple : Ici, la matrice de corrélation nous indique que les variables Sciences et Maths sont très corrélées. Les variables Latin et Français sont également très corrélées. La variable Art (dessin et musique) semble particulière. Elle est légèrement anticorrélée avec le pôle littéraire (latin et francais).

Tableau n° 4 : Valeurs propres de la matrice de corrélations

Eigenvalues of the Correlation Matrix ( Eigenvalue = valeur propre )

Eigenvalue Difference Proportion Cumulative

Rang k de l’axe

principal

k

k

 

k1

k

k

proportion cumulée

PRIN1 2.90771 1.44549 0.5815 0.5815

PRIN2 1.46222 0.83556 0.2924 0.8740

PRIN3 0.62666 0.62365 0.1253 0.9993

PRIN4 0.00309 0.00264 0.0006 0.9999

PRIN5 0.00038 . 0.0001 1.00000

La colonne eigenvalue fournit l’inertie de chaque axe. Rappelons qu’en ACP normée,

p k

k I tr R p

1

)

( . Ici, p=5=

5

1 k

k .

Utilisation pratique : Permet de choisir le nombre q d’axes à retenir. Rappelons les critères utilisés pour ce choix :

(3)

Les critères basés sur le taux d’inertie restitué (à l’aide des 2°, 4° et 5° colonnes)

Critère du coude (à l’aide de la 3° colonne)

 Scree-test

 Critère de l’interprétabilité de l’axe

Dans le cas particulier de l’ACP normée, un critère basé sur le taux d’inertie restitué, appelé critère de Kaiser, conduit à ne retenir que les valeurs propres supérieures à 1, en se basant sur l’idée que chaque axe devrait restituer en moyenne une inertie de 1 (inertie moyenne). CECI N’EST VALABLE QUE DANS LE CAS DE l’ACP NORMEE.

Exemple : Ici, le critère de Kaiser nous conduit à sélectionner deux axes (2 valeurs propres supérieures à 1). On voit que l’axe 1 restitue à lui seul plus de la moitié (58%) de l’inertie; avec deux axes, on restitue 87 % de l’inertie totale, ce qui est excellent.

.Tableau n° 5 : Coordonnées des axes principaux du nuage de points-individus, dans le repère d’origine constitué par les variables Eigenvectors ( = vecteurs propres)

Eigenvectors

PRIN1 PRIN2 PRIN3 PRIN4 PRIN5

Variables

(u1) (u2) (u3) (u4) (u5)

Maths 0.458490 0.468425 0.161174 -.298694 0.614112

Sciences 0.522021 0.348218 0.098746 0.526606 -.523649

Francais 0.456383 -0.409539 -.231960 0.469273 0.441404

Latin 0.546348 -0.261715 -.113485 -.641950 -.392038

Art -.102466 0.650465 0.947411 0.033926 0.011217

La colonne PRINk représente les coordonnées du vecteur

u

k . L’intersection entre la ligne définie par la j° variable et cette colonne donne la valeur de ujk : coordonnée de

u

ksur l’axe du repère d’origine correspondant à la variable X j. Rappelons que

1

² 'k uk

ujk

u (

u

k est normé) et que pour tout

kl u

k'

u

l

 0

(les axes factoriels sont orthogonaux deux à deux).

Utilisation pratique :

Permet d’analyser la contribution des variables à l’axe k. On comparera la valeur absolue de la valeur lue sur chaque ligne à 1/

p . Les valeurs supérieures correspondent aux variables contribuant le plus à la formation de l’axe. Le signe permet de savoir si elles y contribuent positivement ou négativement.

En multipliant la ligne PRINk par k , on obtient aussi le vecteur de coordonnées

D

k , c'est-à-dire le vecteur constitué des coefficients de corrélations entre les variables et la composante principale de rang k.

En ACP normée, Le carré de

D

k donne aussi la qualité de représentation des variables sur l’axe.

Exemple : Ici, la racine carrée de la contribution moyenne vaut 0,45, ce qui nous pousse à considérer que toutes les variables, à l’exception de Art, contribuent à la définition de l’axe 1. Le sens de contribution s’établit grâce au signe de la coordonnée. Ici, toutes les variables ont une coordonnée positive. L’axe 1 peut donc s’interpréter comme l’axe des matières académiques (maths, sciences, francais, latin).

L’axe 2 est déterminé par les Arts et dans une moindre mesure les Maths. Etant donné la différence importante de contribution entre ces deux variables et la médiocre qualité de représentation de la variable maths , l’axe 2 peut être interprété comme l’axe artistique.

3) Extensions du programme de base :

SAS fournit donc :

- pour le nuage des individus : les axes factoriels.

- Pour le nuage des points variables : la racine carrée des contributions. On peut en déduire les coordonnées et qualités de représentations, mais cela nécessite des calculs.

SAS ne fournit pas :

- pour le nuage des individus : les composantes principales, contributions et qualités de représentations ; le dessin du nuage projeté.

- Pour le nuage des variables : les coordonnées et qualités de représentations ; le dessin du nuage projeté.

On va donc créer des programmes périphériques pour les obtenir :

Coordonnées et qualités de représentation des variables sur les axes factoriels

On sait que la coordonnée de la variable X jsur l’axe k est : djkr(Xj,Ck). Par ailleurs, la qualité de représentation de cette variable sur l’axe k est le carré de cette coordonnée. Il suffit donc d’éditer les coefficients de corrélations entre les composantes principales et les variables d’origine. Dans la mesure où, à ce stade de l’analyse, le nombre d’axes q à retenir a été choisi, il suffit d’éditer les q premiers vecteurs de coordonnées.

Programme :

(4)

PROC CORR DATA=B ...OUT = D NOPROB NOSIMPLE; (calcule les corrélations; stocke les résultats dans D, n’imprime ni les probabilités, ni les statistiques simples)

VAR prin1-prinq; (corrélations calculées entre les q premières composantes principales et les variables d’origine).

WITH variables quantitatives étudiées;

TITLE ‘Coordonnees des variables sur les axes ‘ ; RUN;

Tableau 6 : Résultats

Coordonnees des variables sur les axes The CORR Procedure

5 With Variables: maths sciences francais latin art 2 Variables: Prin1 Prin2

Pearson Correlation Coefficients, N = 8 (Pearson=coefficient de corrélation linéaire)

variable PRIN1 (C1) PRIN2 (C2)

Maths 0.78182 0.56643

Sciences 0.89015 0.42107

Francais 0.77822 -0.49522

Latin 0.93163 -0.31647

Art -0.17473 0.78656

Utilisation pratique :

 Ce tableau fournit les coordonnées des variables sur les axes factoriels ; ainsi la coordonnée de la variable math sur le premier axe est 0,78182.

 Par ailleurs, en élevant au carré ces quantités, on obtient les qualités de représentation des variables sur les axes. Les qualités de représentation des variables peuvent donc se lire directement sur le graphique (les variables bien représentées sur un axe ont une coordonnée sur cet axe proche de -1 ou 1

Exemple : Sur l’axe 1, toutes les variables sont bien représentées sauf Art. Sur l’axe 2, les qualités de représentations sont médiocres (<0,5) sauf Art qui est bien représentée (0,78656).

Coordonnées (composantes principales), contributions et qualités de représentation des individus sur les axes

Les composantes principales sont contenues dans le tableau B de sortie de du programme de base. Il suffit donc d’imprimer ce tableau en le remettant en forme (la première partie du programme, facultative, permet de classer les valeurs des coordonnées de la première composante principale PRIN1 dans l’ordre croissant ; on pourrait faire de même pour la deuxième, troisième…composante, ce qui permet de lire d’emblée les contributions les plus fortes).

Les contributions peuvent être déduites des composantes principales, donc du tableau B. Cependant, ce n’est pas le cas pour les qualités de représentation, qu’il faut calculer. Avant d’imprimer B, on va le modifier pour créer les qualités de représentation. Le nouveau tableau (celui qu’on imprime) s’appelle C. Si l’on a choisi le nombre d’axes q à retenir, on peut n’imprimer que les q premières composantes et qualités de représentations.

Le calcul de la qualité de représentation d’un individu sur un axe nécessite le calcul de sa norme :

² ) ²

(

i i ik

k

e

e c

qlt

. Pour simplifier

la programmation, on admettra le résultat suivant :

p k

ik

i c

e

1

²

² .

Programme :

PROC SORT DATA=B; (trie B par valeurs croissantes....) BY PRIN1; (....de PRIN1)

RUN;

DATA C; (crée une table C contenant, en plus des variables de B, les qualités de représentation) SET B; (à partir du tableau B)

ARRAY k{*} PRIN1-PRINp;

disto=USS(OF k{*}); (crée la variable norme, appelée disto)

QLT1=PRIN1*PRIN1/disto; (crée les p variables qualités de représentation, appelées QLTk) QLT2=PRIN2*PRIN2/disto;

...

QLTq=PRINq*PRINq/disto;

KEEP PRIN1-PRINq QLT1-QLTq nom des individus; (garde seulement les variables listées) RUN;

PROC PRINT DATA=C; (imprime le tableau C)

ID nom de la variable individu ; (désigne la variable individu comme identifiant) VAR PRIN1-PRINq .QLT1-QLTq ; (désigne les variables à conserver dans B)

(5)

TITLE ‘Coordonnees et qualite de representation des individus sur les axes'; (met un titre aux sorties) RUN;

Tableau 7 : résultats

Coordonnees et qualite de representation des individus sur les axes

Prénom PRIN1 PRIN2 QLT1 QLT2

Jean -2.31590 -0.84159 0.69667 0.09200

Pierre -1.10089 -0.45606 0.66119 0.11347

André -0.94588 -0.56187 0.38714 0.13660

Jacques 3.18016 -0.85244 0.91158 0.06550

Didier 2.02849 0.50264 0.92749 0.05695

Serge -1.13919 2.08693 0.22591 0.75816

Alain -0.18708 -1.53940 0.00903 0.61111

Eric 0.48030 1.66178 0.07678 0.91919

Utilisation pratique:

La colonne PRINk donne les coordonnées du vecteur

C

k (vecteur de coordonnées des individus sur les axes). En l’absence de l’option vardef, ce vecteur est calculé par

C

k

Xu

k, où X est le tableau réduit en utilisant l’écart-type non biaisé. Il faudra donc multiplier par

 1 n

n

pour obtenir les valeurs calculées à la main, à moins de spécifier l’option vardef=n. Cela ne change pas grand-chose aux résultats.

On sait que :

k

i

n

ik

k c

CTR

2

)

( 

. On peut donc calculer les contributions des individus à la formation des axes.

Contribuent fortement à l’inertie de l’axe k les individus tels que la valeur absolue de la valeur lue est  k . Le signe de la coordonnée donne le sens de contribution.

La colonne QLTk donne les qualités de représentation des n individus sur l’axe k. Au plus elle est proche de 1 au mieux l’individu est représenté sur l’axe.

Exemple :

Mis à part Alain Serge Eric et André, les autres élèves sont bien représentés sur l’axe 1. Sur l’axe 2, les individus bien représentés sont Alain, Serge et Eric. En ce qui concerne les contributions, on compare à 1, 70 sur le premier axe et à 1,21 sur le second.

Ce sont Jean Jacques et Didier qui contribuent le plus à la formation de l’axe 1. L’axe 1 oppose Jean (du côté négatif) à Jacques et Didier (du coté positif). L’axe 2 oppose Alain à Serge et Eric.

Les individus étant ici anonymes (on ne les connaît pas, mis à par leur prénom), il ne sont pas très utiles pour donner un sens aux axes.

Graphiques des nuages de points projetés sur les axes factoriels :

Les graphiques permettent,plus facilement que la lecture des coordonnées sur les axes, d’étudier la proximité des points sur un axe. Ils permettent de plus d’étudier les proximités sur les plans factoriels. On se servira des qualités de représentations sur les axes pour calculer les qualités de représentations sur les plans factoriels.

Représentation des individus sur le premier plan factoriel

DATA indiv; (crée le tableau indiv) SET B; (prend le tableau de sortie B)

x=prin1; (crée une nouvelle variable x, égale à PRIN1) y=prin2; (crée une nouvelle variable y, égale à PRIN2) xsys='2';

ysys='2';

TEXT =nom des individus dans le tableau B; (crée une variable de légende pour les points du nuage) RUN;

PROC GPLOT DATA=indiv; (crée un graphique sur le tableau indiv)

TITLE " Representation des individus axe2 * axe1"; (titre du graphique ; il ne doit comprendre ni accent ni virgule) PLOT y*x /annotate=indiv frame href=0 vref=0 ; (options du graphique)

SYMBOL1 v=none;

RUN;

Représentation des variables sur le premier plan factoriel :

DATA varia;

(6)

SET D;

x=prin1;

y=prin2;

xsys='2';

ysys='2';

xmin=-1;

xmax=1;

ymax=1;

ymin=-1;

TEXT= _name_;

RUN;

PROC GPLOT DATA=varia;

TITLE " Representation des variables axe2 * axe1";

PLOT y*x /annotate=varia frame href=0 vref=0 haxis=-1 to 1 vaxis=-1 to 1 ; SYMBOL1 v=none;

RUN;

QUIT; (quitte la fenêtre graphique de SAS)

Conclusion sur l’exemple :

L’axe 1 est l’axe des matières académiques. Il oppose Jean, non académique, à Jacques et Didier ayant de bonnes performances dans ces matières. Pierre, bien représenté sur cet axe est bien expliqué par cet axe : il est plutôt non académique (du côté de Jean). (rque : André n’étant pas très bien représenté, il vaut mieux être réservé quant à la très grande proximité avec Pierre sur cet axe.)

L’axe 2 est l’axe artistique. Il oppose Alain à serge et Eric, ayant de bonnes performances artistiques (les autres individus et variables étant assez mal représentées sur cet axe, on n’en parlera pas).

Regardons les qualités de représentations sur le premier plan factoriel. Nous pouvons calculer les qualités de représentation des points sur ce plan par :

QLT ( i )  QLT

1

( i )  QLT

2

( i )

, pour un point i (individu ou variable) quelconque. Nous obtenons :

Prénom QLT variables QLT

Jean 0,78867 maths 0,93208546

Pierre 0,77466 Sciences 0,96966697

André 0,52374 Francais 0,85086922

(7)

Jacques 0,97708 Latin 0,96808772

Didier 0,98444 Art 0,64920721

Serge 0,98407

Alain 0,62014

Eric 0,99597

La qualité de représentation est bonne pour tous les points sur le premier plan principal. On peut donc distinguer trois groupes de variables homogènes, les matières scientifiques (maths et sciences, très corrélées), les matières littéraires (latin et francais, très corrélées), les matières artistiques (art).

4) PROGRAMME DE L’EXEMPLE

/* CONSTRUCTION TABLE SAS : notes en 5 matieres de 8 eleves*/

data notes ;

input prenom $ maths sciences francais latin art;

cards;

Jean 6 6 5 6.5 8 Pierre 8 8 8 8 9 André 6 7 11 9.6 11 Jacques 14 14.5 15.5 15 8 Didier 14 14 12 12.5 10 Serge 11 10 5.5 7 13 Alain 5.5 7 14 11.5 10 Eric 13 12.5 8.5 9.5 12 ;

run;

/* PROGRAMME DE BASE */

proc princomp data = notes out=b vardef=n ; var maths sciences francais latin art ; run;

/* GRANDEURS RELATIVES AUX INDIVIDUS*/

data c; set b;

array k{*} prin1-prin5;

disto=uss(of k{*}) ; qlt1=prin1*prin1/disto;

qlt2=prin2*prin2/disto;

keep prin1-prin2 qlt1-qlt2 prenom;

run ;

proc print data=c;

id prenom;

var prin1-prin2 qlt1-qlt2;

title ‘Coordonnees et qualite de representation des individus sur les axes’ ; run ;

/* COORDONNEES DES VARIABLES*/

proc corr data=b out=d noprob nosimple;

var prin1-prin2;

with maths sciences francais latin art ; run ;

/*GRAPHIQUE DES INDIVIDUS */

data indiv;

set b;

x=prin1;

y=prin2;

xsys='2';

ysys='2';

text = prenom;

run;

proc gplot data=indiv;

title " Representation des individus axe2 * axe1";

plot y*x /annotate=indiv frame href=0 vref=0 ; symbol1 v=none;

run;

(8)

/* GRAPHIQUE DES VARIABLES */

data varia;

set d;

x=prin1;

y=prin2;

xsys='2';

ysys='2';

xmin=-1;

xmax=1;

ymax=1;

ymin=-1;

text = _name_;

run;

proc gplot data=varia;

title " Representation des variables axe2 * axe1";

plot y*x /annotate=varia frame href=0 vref=0 haxis=-1 to 1 vaxis=-1 to 1 ; symbol1 v=none;

run;

quit;

(9)

Références

Documents relatifs

Elles sont largement déficitaires pour le territoire de Cœur de Garonne au profit des EPCI voisins où ils trouvent des logements locatifs en plus grand nombre. Personnes

D= Nom de la table contenant les moyennes dans les classes et d’autres statistiques pour chaque classe : FREQ_ : effectif de la classe ; _RMSSTD_ : inertie intra-classe ; _NEAR_

Conformément aux dispositions de l’article 231-6 du Règlement Général de l’AMF, l’Offre porte, à la connaissance de l’Initiateur, sur la totalité des Actions en circulation

• Créer un répertoire par cours où seront regroupés les jeux de données ainsi que les programme SAS, les fichiers graphiques, le rapport éditer par un traitement de texte... •

Cette vignette décrit brièvement les principes et objets du macro langage de SAS permettant d’écrire des macros commandes : ma- cros variables, macros fonctions, passages de

La commande create table nomtable as permet la création ou la modification de tables ou de vues. 3.1 Création

Le sas de décontamination doit être installé à l'extérieur de la zone contaminée. Le sas de décontamination ne doit être installé en aucun cas à l'intérieur de cette zone.

Cette organisation a pour but de récolter des fonds grâce à la communauté du badminton dans le monde, des stars aux joueurs loisirs, et de les reverser à des petits projets