Sunteți pe pagina 1din 9

ACP SOUS SAS

La procdure dACP sous SAS (proc princomp) est assez sommaire : elle ne trace pas les graphiques, ne fournit rien en ce qui concerne les individus (coordonnes, contributions, qualit de reprsentation) et ne permet pas la mise en supplmentaire dindividus ou de variables. On doit avoir recours la programmation si lon veut intgrer ces possibilits. Nous prsentons ici le programme de base, ainsi que quelques complments, permettant de complter les rsultats.

0) Quelques rappels de base pour la programmation sous SAS


Syntaxe SAS ne diffrencie pas les majuscules des minuscules. On appelle instruction une ligne de programme. Chaque instruction doit tre spare dun point-virgule. les noms des variables et des tables SAS ne doivent pas contenir plus de 8 caractres. Seules les lettres et le caractre _ peuvent tre incluses dans ces noms. Les commentaires ventuels se mettent lintrieur de /* */

Construction dune table SAS A partir dune table SAS dorigine On veut construire une table SAS, qui lon appelle A, partir dune autre table SAS appele B : DATA A ; (cre A) SET B ; (va chercher B) Instructions permettant dobtenir la table A partir de B (cration de variables, suppression dindividus.) ; RUN ; (lance le programme) A partir dune liste : On veut crer une table SAS, que lon appelle A, partir de plusieurs colonne de valeurs, chaque colonne reprsentant une variable (les variables seront appeles var1-varn) DATA A ; (cre A) INPUT var1 var 2.varn ; CARDS; (fait un tableau) Valeurs en colonne, la colonne j reprsentant les valeurs de la variable varj ; RUN ; (lance le programme)

(rentre les champs des variables) (*)

(*) : Si une des variables est de type caractre (par exemple var1), on devra faire succder son nom dun $ : input var1 $ var 2varn;

1) Programme de base :
La procdure dACP est la suivante : PROC PRINCOMP DATA= A OUT= B OUTSTAT= C VAR liste des variables quantitatives tudies ; WEIGHT variable ; RUN ; N.B. soulign = facultatif PRINCOMP signifie PRINCIPAL COMPONENTS ( = composantes principales ) A = Nom donn la table SAS contenant les donnes (cre par ltape 0)). B = Nom de la table SAS, cre automatiquement par SAS contenant, entre autre, les composantes principales et les variables quantitatives tudies (cette table est ncessaire pour faire les graphiques, ou pour imprimer les contributions et qualits de reprsentations) C =Nom de la table contenant un rsum de lanalyse (valeurs propres, vecteurs propres...). N = nombre daxes calculer. Par dfaut, SAS calcule p axes (autant daxes que de variables tudies). Ne pas confondre avec le nombre daxes retenir, qui se trouve aprs analyse. COV = si cette option est prcise, SAS fera une ACP centre, mais non rduite (la matrice dinertie est la matrice de variance-covariance et non de corrlation), par dfaut les donnes seront rduites. Vardef=spcifie le nombre de degrs de liberts pour le calcul de variance (= n ou n-1). Par dfaut, SAS calcule les variances et les cartstypes non biaiss. Cela ne change rien lexpression des axes principaux, mais les coordonnes sont diffrentes (pas assez toutefois pour modifier les conclusions de lanalyse) Weight= spcifie une variable dans laquelle se trouvent les poids des individus. Cette instruction est optionnelle ; par dfaut, SAS fait une ACP norme avec poids identiques pour chaque individu. N = nombre COV VARDEF = nombre ;

2) Rsultats du programme de base :


SAS donne les sorties suivantes partir du programme de base (sans les option COV, N, ni linstruction weight) : Les valeurs des diffrents tableaux se rapportent aux donnes brutes fournies au paragraphe 4. Tableau n 1 : Rcapitulatif des donnes ( nombre dindividus et de variables ) The princomp procedure Observations : Variables : 8 5 (nombre dindividus = n ) (nombre de variables tudies =p)

Tableau n 2 : Statistiques descriptives Simple Statistics variables Mean (moyenne) StD (cart type) Maths 9.687 3.490 Sciences 9.875 3.170 Francais 9.937 3.583 Latin 9.950 2.719 Art 10.125 1.691

StD = En labsence de loption vardef, SAS fournit les carts-types non biais:

sX =

1 n 1

( x
i= 1

x ) .

Tableau n 3 : Matrice de corrlation 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 loption COV est prsente, SAS donne la matrice de variances-covariances au lieu de la matrice de corrlations. Utilisation pratique : Ce tableau permet dores et dj de reprer les variables les plus corrles entre elles. Si deux variables sont bien reprsentes sur un plan principal, ces variables seront dautant plus rapproches sur le graphique que leur coefficient de corrlation est grand. Exemple : Ici, la matrice de corrlation nous indique que les variables Sciences et Maths sont trs corrles. Les variables Latin et Franais sont galement trs corrles. La variable Art (dessin et musique) semble particulire. Elle est lgrement anticorrle avec le ple littraire (latin et francais). Tableau n 4 : Valeurs propres de la matrice de corrlations Eigenvalues of the Correlation Matrix ( Eigenvalue = valeur propre ) Eigenvalue Rang k de laxe principal PRIN1 PRIN2 PRIN3 PRIN4 PRIN5 Difference Proportion Cumulative proportion cumule
k

k
2.90771 1.46222 0.62666 0.00309 0.00038

k k +1
1.44549 0.83556 0.62365 0.00264 .

0.5815 0.2924 0.1253 0.0006 0.0001

0.5815 0.8740 0.9993 0.9999 1.00000


p

La colonne eigenvalue fournit linertie de chaque axe. Rappelons quen ACP norme,

k= 1

= I = tr ( R ) = p . Ici, p=5=

k= 1

k .

Utilisation pratique : Permet de choisir le nombre q daxes retenir. Rappelons les critres utiliss pour ce choix : Les critres bass sur le taux dinertie restitu ( laide des 2, 4 et 5 colonnes) Critre du coude ( laide de la 3 colonne) Scree-test Critre de linterprtabilit de laxe

Dans le cas particulier de lACP norme, un critre bas sur le taux dinertie restitu, appel critre de Kaiser, conduit ne retenir que les valeurs propres suprieures 1, en se basant sur lide que chaque axe devrait restituer en moyenne une inertie de 1 (inertie moyenne). CECI NEST VALABLE QUE DANS LE CAS DE lACP NORMEE. Exemple : Ici, le critre de Kaiser nous conduit slectionner deux axes (2 valeurs propres suprieures 1). On voit que laxe 1 restitue lui seul plus de la moiti (58%) de linertie; avec deux axes, on restitue 87 % de linertie totale, ce qui est excellent. .Tableau n 5 : Coordonnes des axes principaux du nuage de points-individus, dans le repre dorigine constitu par les variables Eigenvectors ( = vecteurs propres) Eigenvectors PRIN1 (u1) Variables Maths Sciences Francais Latin Art 0.458490 0.522021 0.456383 0.546348 -.102466 PRIN2 (u2) 0.468425 0.348218 -0.409539 -0.261715 0.650465 PRIN3 (u3) 0.161174 0.098746 -.231960 -.113485 0.947411 PRIN4 (u4) -.298694 0.526606 0.469273 -.641950 0.033926 PRIN5 (u5) 0.614112 -.523649 0.441404 -.392038 0.011217

La colonne PRINk reprsente les coordonnes du vecteur

uk

. Lintersection entre la ligne dfinie par la j variable et cette colonne


j

donne la valeur de u jk : coordonne de u k sur laxe du repre dorigine correspondant la variable X

. Rappelons que

u' k u k =

jk

= 1 ( u k est norm) et que pour tout k l

' uk ul

= 0 (les axes factoriels sont orthogonaux deux deux).

Utilisation pratique : Permet danalyser la contribution des variables laxe k. On comparera la valeur absolue de la valeur lue sur chaque ligne 1/
p . Les valeurs suprieures correspondent aux variables contribuant le plus la formation de laxe. Le signe permet de savoir si elles y contribuent positivement ou ngativement.

En multipliant la ligne PRINk par

k , on obtient aussi le vecteur de coordonnes D k , c'est--dire le vecteur constitu


donne aussi la qualit de reprsentation des variables sur laxe.

des coefficients de corrlations entre les variables et la composante principale de rang k. En ACP norme, Le carr de

Dk

Exemple : Ici, la racine carre de la contribution moyenne vaut 0,45, ce qui nous pousse considrer que toutes les variables, lexception de Art, contribuent la dfinition de laxe 1. Le sens de contribution stablit grce au signe de la coordonne. Ici, toutes les variables ont une coordonne positive. Laxe 1 peut donc sinterprter comme laxe des matires acadmiques (maths, sciences, francais, latin). Laxe 2 est dtermin par les Arts et dans une moindre mesure les Maths. Etant donn la diffrence importante de contribution entre ces deux variables et la mdiocre qualit de reprsentation de la variable maths , laxe 2 peut tre interprt comme laxe 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 carre des contributions. On peut en dduire les coordonnes et qualits de reprsentations, mais cela ncessite des calculs. SAS ne fournit pas : pour le nuage des individus : les composantes principales, contributions et qualits de reprsentations ; le dessin du nuage projet. Pour le nuage des variables : les coordonnes et qualits de reprsentations ; le dessin du nuage projet. On va donc crer des programmes priphriques pour les obtenir : Coordonnes et qualits de reprsentation des variables sur les axes factoriels On sait que la coordonne de la variable X j sur laxe k est : d jk = r ( X j , C k ) . Par ailleurs, la qualit de reprsentation de cette variable sur laxe k est le carr de cette coordonne. Il suffit donc dditer les coefficients de corrlations entre les composantes principales et les variables dorigine. Dans la mesure o, ce stade de lanalyse, le nombre daxes q retenir a t choisi, il suffit dditer les q premiers vecteurs de coordonnes.

Programme : PROC CORR DATA=B .....OUT = D NOPROB NOSIMPLE; (calcule les corrlations; stocke les rsultats dans D, nimprime ni les probabilits, ni les statistiques simples) VAR prin1-prinq; (corrlations calcules entre les q premires composantes principales et les variables dorigine). WITH variables quantitatives tudies; TITLE Coordonnees des variables sur les axes ; RUN; Tableau 6 : Rsultats Coordonnees des variables sur les axes The CORR Procedure 5 With Variables: maths sciences francais latin 2 Variables: Prin1 Prin2 Pearson Correlation Coefficients, N = 8 (Pearson=coefficient de corrlation linaire) variable Maths Sciences Francais Latin Art PRIN1 (C1) 0.78182 0.89015 0.77822 0.93163 -0.17473 PRIN2 0.56643 0.42107 -0.49522 -0.31647 0.78656 (C2) art

Utilisation pratique : Ce tableau fournit les coordonnes des variables sur les axes factoriels ; ainsi la coordonne de la variable math sur le premier axe est 0,78182. Par ailleurs, en levant au carr ces quantits, on obtient les qualits de reprsentation des variables sur les axes. Les qualits de reprsentation des variables peuvent donc se lire directement sur le graphique (les variables bien reprsentes sur un axe ont une coordonne sur cet axe proche de -1 ou 1 Exemple : Sur laxe 1, toutes les variables sont bien reprsentes sauf Art. Sur laxe 2, les qualits de reprsentations sont mdiocres (<0,5) sauf Art qui est bien reprsente (0,78656). Coordonnes (composantes principales), contributions et qualits de reprsentation des individus sur les axes Les composantes principales sont contenues dans le tableau B de sortie de du programme de base. Il suffit donc dimprimer ce tableau en le remettant en forme (la premire partie du programme, facultative, permet de classer les valeurs des coordonnes de la premire composante principale PRIN1 dans lordre croissant ; on pourrait faire de mme pour la deuxime, troisimecomposante, ce qui permet de lire demble les contributions les plus fortes). Les contributions peuvent tre dduites des composantes principales, donc du tableau B. Cependant, ce nest pas le cas pour les qualits de reprsentation, quil faut calculer. Avant dimprimer B, on va le modifier pour crer les qualits de reprsentation. Le nouveau tableau (celui quon imprime) sappelle C. Si lon a choisi le nombre daxes q retenir, on peut nimprimer que les q premires composantes et qualits de reprsentations. Le calcul de la qualit de reprsentation dun individu sur un axe ncessite le calcul de sa norme :

qlt k (ei ) =

cik . Pour simplifier ei

la programmation, on admettra le rsultat suivant : Programme : PROC SORT DATA=B; BY PRIN1; RUN;

ei =

c
k= 1

ik

(trie B par valeurs croissantes....) (....de PRIN1)

DATA C; (cre une table C contenant, en plus des variables de B, les qualits de reprsentation) SET B; ( partir du tableau B) ARRAY k{*} PRIN1-PRINp; disto=USS(OF k{*}); (cre la variable norme, appele disto) QLT1=PRIN1*PRIN1/disto; (cre les p variables qualits de reprsentation, appeles QLTk) QLT2=PRIN2*PRIN2/disto; .......... QLTq=PRINq*PRINq/disto; KEEP PRIN1-PRINq QLT1-QLTq nom des individus; (garde seulement les variables listes) RUN; PROC PRINT DATA=C; ID nom de la variable individu ; (imprime le tableau C) (dsigne la variable individu comme identifiant)

VAR PRIN1-PRINq .QLT1-QLTq ; (dsigne les variables conserver dans B) TITLE Coordonnees et qualite de representation des individus sur les axes'; (met un titre aux sorties) RUN;

Tableau 7 : rsultats Coordonnees et qualite de representation des individus sur les axes Prnom Jean Pierre Andr Jacques Didier Serge Alain Eric Utilisation pratique: La colonne PRINk donne les coordonnes du vecteur de loption vardef, ce vecteur est calcul par faudra donc multiplier par PRIN1 -2.31590 -1.10089 -0.94588 3.18016 2.02849 -1.13919 -0.18708 0.48030 PRIN2 -0.84159 -0.45606 -0.56187 -0.85244 0.50264 2.08693 -1.53940 1.66178 QLT1 0.69667 0.66119 0.38714 0.91158 0.92749 0.22591 0.00903 0.07678 QLT2 0.09200 0.11347 0.13660 0.06550 0.05695 0.75816 0.61111 0.91919

C k (vecteur de coordonnes des individus sur les axes). En labsence C k = Xu k , o X est le tableau rduit en utilisant lcart-type non biais. Il

n n 1

pour obtenir les valeurs calcules la main, moins de spcifier loption vardef=n. Cela

ne change pas grand-chose aux rsultats. 2 c ik On sait que : CTRi ( k ) = . On peut donc calculer les contributions des individus la formation des axes. nk Contribuent fortement linertie de laxe k les individus tels que la valeur absolue de la valeur lue est >

k . Le signe de la

Exemple :

coordonne donne le sens de contribution. La colonne QLTk donne les qualits de reprsentation des n individus sur laxe k. Au plus elle est proche de 1 au mieux lindividu est reprsent sur laxe.

Mis part Alain Serge Eric et Andr, les autres lves sont bien reprsents sur laxe 1. Sur laxe 2, les individus bien reprsents 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 laxe 1. Laxe 1 oppose Jean (du ct ngatif) Jacques et Didier (du cot positif). Laxe 2 oppose Alain Serge et Eric. Les individus tant ici anonymes (on ne les connat pas, mis par leur prnom), il ne sont pas trs utiles pour donner un sens aux axes. Graphiques des nuages de points projets sur les axes factoriels : Les graphiques permettent,plus facilement que la lecture des coordonnes sur les axes, dtudier la proximit des points sur un axe. Ils permettent de plus dtudier les proximits sur les plans factoriels. On se servira des qualits de reprsentations sur les axes pour calculer les qualits de reprsentations sur les plans factoriels. Reprsentation des individus sur le premier plan factoriel

DATA indiv; SET B; x=prin1; y=prin2; xsys='2'; ysys='2'; TEXT =nom des individus dans le tableau B; 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;

(cre le tableau indiv) (prend le tableau de sortie B) (cre une nouvelle variable x, gale PRIN1) (cre une nouvelle variable y, gale PRIN2) (cre une variable de lgende pour les points du nuage) (cre un graphique sur le tableau indiv) (titre du graphique ; il ne doit comprendre ni accent ni virgule) (options du graphique)

Reprsentation des variables sur le premier plan factoriel :

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; (quitte la fentre graphique de SAS)

Conclusion sur lexemple : Laxe 1 est laxe des matires acadmiques. Il oppose Jean, non acadmique, Jacques et Didier ayant de bonnes performances dans ces matires. Pierre, bien reprsent sur cet axe est bien expliqu par cet axe : il est plutt non acadmique (du ct de Jean). (rque : Andr ntant pas trs bien reprsent, il vaut mieux tre rserv quant la trs grande proximit avec Pierre sur cet axe.) Laxe 2 est laxe artistique. Il oppose Alain serge et Eric, ayant de bonnes performances artistiques (les autres individus et variables tant assez mal reprsentes sur cet axe, on nen parlera pas). Regardons les qualits de reprsentations sur le premier plan factoriel. Nous pouvons calculer les qualits de reprsentation des points sur ce plan par : Prnom Jean Pierre

QLT (i ) = QLT1 (i ) + QLT2 (i ) , pour un point i (individu ou variable) quelconque. Nous obtenons :
QLT variables 0,78867 maths 0,77466 Sciences QLT 0,93208546 0,96966697

Andr Jacques Didier Serge Alain Eric

0,52374 Francais 0,97708 Latin Art 0,98444 0,98407 0,62014 0,99597

0,85086922 0,96808772 0,64920721

La qualit de reprsentation est bonne pour tous les points sur le premier plan principal. On peut donc distinguer trois groupes de variables homognes, les matires scientifiques (maths et sciences, trs corrles), les matires littraires (latin et francais, trs corrles), les matires artistiques (art).

4) PROGRAMME DE LEXEMPLE
/* 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;

/* 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;