Diapoo 2
Diapoo 2
L’étude d’une population de taille n passe le plus souvent par le recueil d’un
nombre élevé p de données quantitatives par élément observé.
L’analyse en composantes principales (ACP) introduite en 1901 par K.
Pearson et développé par H. Hotelling en 1933, est une méthode très
puissante pour explorer la structure de telles données.
X ,X
1
, . . . , Xj , . . . , Xp sur une
2
population E composée de n individus
E = {1, 2, . . . , i , . . . , n} munis respectivement des poids
n
{p1 , . . . , pi , . . . , pn }. Les poids pi >0 et on a : pi = 1.
X
i =1
Exemples
Echantillon de billets de banque, avec pour chacun différentes
caractéristiques (longueur, largeur, diagonale ...)
Echantillon de performances de sportifs à différentes épreuves
Echantillon de notes d’étudiants à différents examens
X= X Xp ..
.
1
··· = .
en
n
où X̄j est la moyenne de la variable Xj avec X̄j = pi xij .
X
i =1
n
G= p i ei .
X
i =1
Définition
Le tableau des données centrées et réduites Xcr s’écrit :
z11 . . . z1j . . . z1p
.. .. ..
. . .
Xcr = zi . . . zij . . . zip
1
.. .. ..
. . .
zn1 . . . znj . . . znp ,
avec
xij − X̄j
n 2
et pi xij − X̄j .
zij =
X
, sj2 =
sj
i =1
1
s1 0
1
s2
D /s
= ...
1
0 1
sp
Formule marticielle
1
V = X′ DX − GG′ = X′c Xc = X′c DXc
n
F. N. DIOP (Université de Thiès, UFR SES Analyse
) en composantes principales 18 / 121
Analyse en composantes principales Introduction
Matrice de corrélation
Définition
C’est la matrice carrée de dimension p
1
r12 . . . r1p
. 1 .
R=
... .
,
.
rp1 1
Xj , Xh n
xij − X̄j xih − X¯h
! !
cov
et
X
rjh = p = pi .
Var (Xj ) Var (Xh )
p
sj sh
i =1
Remarque
L’ACP sur matrice des covariances concerne plutôt des tableaux dont les
colonnes sont des mesures de même nature (on dit que les variables Xj sont
homogènes) : avec des variations comparables (c’est-à-dire même
signification, même unité de mesure, même ordre de grandeur...).
Du fait qu’on ne peut pas visualiser ces distances dès que p dépasse 3, on
projette le nuage des individus sur un petit nombre d’axes orthogonaux, de
manière à déformer le moins possible les distances entre individus, ou ce qui
revient au même à obtenir un nuage le plus dispersé possible.
i =1
3 Le cosinus de l’angle entre des variables est égal à leur coefficient de
corrélation linéaire :
hXj , Xj iD
′
Dans l’espace des individus on s’intéresse aux distances entre points alors
que dans l’espace des variables on s’intéresse plutôt aux angles en raison de
la propriété ci-dessus.
dD2 (Xj , Xj ) = hXj − Xj , Xj − Xj iD
′ ′ ′
Définition
L’inertie du nuage N(Ω) par rapport à un point a ∈ Rp est :
n n
pi (ei − a)′ M(ei − a) = pi hei − a, ei − aiM .
X X
Ia =
i =1 i =1
L’inertie est une notion fondamentale en ACP, puisqu’elle est une mesure de
la dispersion totale du nuage de points autour de son centre de gravité G.
Définition
L’inertie totale du nuage de points N(Ω) autour de son centre de gravité
est : n
pi kei − Gk .
X
2
I = G M
i =1
L’inertie totale I est la moitié de la moyenne des carrés des distances entre
G
les individus n X n
2I = pi pi ′ kei − ei ′ k .
X
2
G M
i =1 j=1
Preuve
n X
n
pi pi ′ kei − ei ′ k2M
X
i =1 i ′ =1
n X
n
pi pi ′ kei k2M − 2e′i ei ′ + kei ′ k2M
X
=
i =1 i ′ =1
n n n n
! ! ! !
pi kei kM −2 e p i ′ ei ′
X X X X
= pi ′ 2
pi ′i +
i ′ =1 i =1 i =1 i ′ =1
n n
! !
pi ′ kei ′ k2M = IG − 0 + IG .
X X
+ pi
i =1 i ′ =1
Inertie totale
L’inertie totale est la trace de la matrice MV ou VM :
I G = Trace(MV) = Trace(VM),
Métriques particulières
Les métriques les plus couramment utilisées en ACP sont :
Métrique usuelle : M = Ip correspond au produit scalaire usuel
p
I = Trace(V) =
X
G sj2 .
j=1
Remarque
Problèmes liés à la métrique I p
i =1
i =1
n n n
car on a : pi kei − GkM = pi kei − fi kM + pi kfi − Gk2M .
X X X
2 2
i =1 i =1 i =1
Il est donc clair ici que trouver les valeurs de fi les plus proches de celles de
ei dans un nouvel espace, revient à maximiser la dispersion (ou inertie
totale) des fi .
L’inertie totale est définie comme la somme des distances de chaque
individu au centre de gravité G. Dans l’espace initial, on a donc :
n
pi kei − Gk2M .
X
IG =
i =1
Définition
L’inertie du nuage N(Ω) par rapport à l’espace Ek s’écrit :
n
I p d (e , E
X
2
E k = i M i k ).
i=1
∆u ⊥ .
n
La quantité I∆u = pi kP∆u ⊥ (ei )k2 est l’inertie résiduelle de N(Ω) autour
X
i =1
de ∆u dont on cherche le minimum.
De même, la quantité
n
pi kP∆u (ei )k2
X
I∆u⊥ =
i =1
avec hu, u1 iM = 0
et kukM = 1.
Définition
Dans l’ACP sur matrice des covariances, c’est la matrice des
variances-covariances empiriques du tableau de données qui est diagonalisé,
et les vecteurs propres de la matrice VM donnent les coordonnées des axes
principaux ou axes factoriels.
Soient ∆u , . . . , ∆ul , . . . , ∆uq les q premiers axes principaux de vecteurs
1
unitaires u , . . . , ul , . . . , uq .
1
Remarque
Si r est le rang de la matrice X , alors r ≤ min(p, n − 1) et on montre que :
λ , . . . , λr > 0 et λr + , . . . , λp = 0, donc I∆ui ⊥ pour tout i > r .
1 1
Définition
Le pourcentage d’inertie expliquée par les q premières composantes
principales
λ1 + · · · + λq
λ1 + · · · + λr
p
A aj1 Xj ∈ (Rp )∗
X
1
=
j=1
On cherche ensuite p
A aj2 Xj ∈ (Rp )∗ ,
X
2
=
j=1
Théorème
Les nouvelles variables A , . . . , Aq appelées facteurs principaux possédent
1
1 si
j =h
hAj , Ah iM−1 = ∀1 ≤ j, h ≤ q
0 sinon
2 Les facteurs principaux sont les vecteurs propres de la matrice MV
associés aux valeurs propres λ ≥ · · · ≥ λq .1
3 Var A = λ et cov(A , A ) = 0 si j 6= h.
j j h
j
Remarque
La projection de e sur l’axe principal ´u (de vecteur unitaire uj ) est
i j
puisque A = Mu .
j
j
C j
= XAj ∀j ∈ 1, . . . , q.
Définition
La variable C (élément de R ) définie par le facteur principal Aj est appelée
j n
Théorème
Les composantes principales ont les propriétés suivantes :
1 Les composantes principales sont les vecteurs propres de la matrice
(XMX′ ) D associés aux valeurs propres λ ≥ · · · ≥ λ (identiques aux
1 q
valeurs propres de VM ).
2 La variance d’une composante principale Cj est égale à la valeur propre
λj :
Var(C ) = λ . j
j
Facteurs principaux A j
MVAj = λj Aj M −1 -orthonormés
Composantes
principales C j
XMX ′ D Cj = λj Cj D-orthogonales
Cj = XAj Aj = Muj
En pratique, on calcule les Aj par diagonalisation de la matrice MV, puis on
obtient les Cj = XAj , les axes principaux u n’ayant pas d’ntérêt pratique.
j
La somme des valeurs propres est le nombre de variables entré dans l’ACP.
Une valeur propre de 1 signifierait alors que la composante expliqurait
presque qu’une seule variable fait la variabilité. La raison pour utiliser le
critère de valeur propre est que chaque composante devrait expliquer au
moins la valeur de variabilité d’une variable, et donc le critère de valeur
propre signifie que seuls les composantes avec des valeurs propres
supérieures à 1 doivent être retenues.
Remarque
S’il y a moins de vingt variables, le critère de valeur propre aurait tendance
à recommander d’extraire trop peu de composantes, alors que s’il y a plus
de cinquante variables, ce critère pourrait recommander d’en extraire trop.
L’ACP n’extrait pas toute la variance des variables, mais uniquement une
proportion de la variance qui est partagée par plusieurs variables.
Définition
La communalité représente la proportion de variance d’une variable
particulière qui est partagée par les autres variables. La communalité
représente l’importance globale de chaque variable dans l’ACP dans son
ensemble.
Les valeurs de communalité sont calculées comme la somme des poids des
composantes au carré pour une variable donnée.
Supposons qu’il soit nécessaire de garder un certain ensemble de variables
dans l’analyse. Ensuite, suffisamment de composantes doivent être extraites
pour que les communalités de chacune de ces variables excèdent un certain
seuil (par exemple 50%). Ainsi, nous sommes finalement prêts à décider
combien de composantes retenir.
On a :
corr(X , C
j h
) = corr(Z , C
j h
)
cov (Zj , Ch )
A.
p
j
= = λh
Var (Zj ) Var (Ch )
p p
d’ordonnée corr(X , C ). j 2
Xj , alors les individus qui sont très prononcés sur l’axe 1 (grandes
coordonnées) sont caractérisés par une valeur fortement supérieure à la
moyenne pour la variable Xj .
λ j
Mais tous les points du nuage ne sont pas pour autant proches de l’axe. La
contribution est un indicateur de cette proximité à l’axe.
Ainsi, les individus ayant une bonne contribution (valeur numérique élevée)
sont ceux qui sont le plus proche de l’axe et donc ceux qui attirent l’axe
vers eux, qui favorisent la détermination de l’axe.
Et par conséquent, c’est grâce à ces individus que l’on va pouvoir chercher
à donner un sens à l’axe.
Il faut bien voir que, dans la plupart des cas, ce sont eux qui donnent une
forme particulièrement allongée au nuage suivant la direction de l’axe. Un
bon moyen de caractériser l’axe rapidement est donc de classer les individus
par ordre décroissant de contribution.
Idéalement, lorsqu’un individu est sur le plan factoriel, l’angle défini est
alors nul, ce qui entraîne une cos égal à 1. 2
Tous les individus occupant des positions intermédiaires entre ces deux
extrémités auront un cos compris entre 0 et 1, d’autant plus proche de 1
2
points centraux.
De la même façon que pour les individus, seules les variables les mieux
projetées (grande valeur du cos entre la variable et sa projection) peuvent
2
être interprétées.
Theorem
Une matrice X(n × p) de rang r peut s’écrire :
r p
X = UΛ / V ′ = λk uk vk′ ;
X
1 2
k=1
unités utilisées. Dans la suite, on considère que les données sont centrées et
réduites.
Les options de cette commande de lecture des données sont explicitées dans
l’aide en ligne auquel on peut accéder par help([Link]).
new=[Link]("chemin/[Link]",
sep=";",dec=",",header=TRUE,[Link]=1)
new
cor(new,new)
Poids Taille Age Note
Poids 1.0000000 0.3665158 0.4854043 -0.5678917
Taille 0.3665158 1.0000000 0.3955146 -0.6287373
Age 0.4854043 0.3955146 1.0000000 -0.3223292
Note -0.5678917 -0.6287373 -0.3223292 1.0000000
Il existe trois façons d’effectuer des ACP dans R : princomp (), prcomp ()
et pca () dans la bibliothèque labdsv. La fonction princomp () retourne un
“objet princomp” qui contient la racine carrée des valeurs propres (“sdev”),
les vecteurs propres (“loadings ”), les moyennes pour chaque variable
(“centrée”) et les notes («scores»), ainsi que d’autres choses. Taper
summary (princomp) renvoie le pourcentage de la variation expliquée.
La commande princomp(), équivalent à princomp(X, cor=FALSE),
réalise l’ACP centrée ; l’ACP centrée réduite s’obtient par la commande
suivante où le paramètre cor de la fonction princomp() à la valeur TRUE.
Les résultats de l’ACP sont stockés dans la variable de type list (liste) que
nous avons arbitrairement nommée b. Affichons b.
Standard deviations:
Comp.1 Comp.2 Comp.3 Comp.4
1.5462532 0.8662052 0.7644646 0.5238164
Les proportions de variance expliquée par chacun des axes sont obtenues
par la commande suivante.
> summary(b)
Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4
Standard
deviation 1.5462532 0.8662052 0.7644646 0.52381643
Proportion
of Variance 0.5977247 0.1875779 0.1461015 0.06859591
Cumulative
Proportion 0.5977247 0.7853026 0.9314041 1.00000000
> barplot(b1^2)
> b3<-b[[3]]
> b3
Poids Taille Age Note
58.500 1.635 13.800 12.000
Ce sont les moyennes des variables. Elles servent à calculer la matrice des
données centrées. Rappelons que sous R, la fonction t() désigne la
transposée.
> Xc<-t(t(X)-b3)
> Xc
Poids Taille Age Note
1 -13.5 -0.135 -0.8 2
2 -8.5 -0.035 -0.8 4
3 -8.5 0.015 -0.8 3
4 1.5 0.115 1.2 -3
5 1.5 0.065 0.2 -2
6 1.5 0.065 0.2 -5
7 11.5 -0.035 0.2 -4
8 6.5 -0.035 -0.8 1
9 1.5 -0.085 1.2 5
10 6.5 0.065 0.2 -1
Selon que l’ACP est réduite ou non, le quatrième élément b[[4]] de la liste b
prend une valeur différente. Dans le cas de l’ACP réduite (cor=TRUE), le
vecteur b[[4]] contient les écarts-types des variables.
> b4<-b[[4]]
> b4
Poids Taille Age Note
7.43303437 0.07433034 0.74833148 3.31662479
> b5<-b[[5]]
> b5
[1] 10
> b6<-b[[6]]
> b6
Comp.1 Comp.2 Comp.3 Comp.4
1 2.6383478 -0.20304035 -0.10408766 -1.04443266
2 1.9434521 -0.35783346 0.31559230 0.34952125
3 1.4422179 -0.80252677 0.59077968 0.48620265
4 -2.0830449 0.07837172 1.20080516 -0.19195868
5 -0.9867493 -0.42008337 0.29589940 0.05285961
6 -1.4737035 -0.81638306 0.06130029 -0.55456712
7 -1.3169524 0.35329157 -1.45426142 -0.40902793
8 0.4313990 -0.13555130 -1.24948767 0.67416087
9 0.5711642 2.38554456 0.41285443 0.07121803
10 -1.1661308 -0.08178953 -0.06939452 0.56602398
−2 −1 0 1 2 3 4
0.8
4
0.6
3
0.4
2
Age
Note
Comp.2
0.2
1
Poids
7
4
0.0
0
8 10
1
2 5
−0.2
−1
Taille
3 6
−0.4
−2
−0.4 −0.2 0.0 0.2 0.4 0.6 0.8
Comp.1
On les calcule pour les K premiers axes ; dans ce qui suit, K est fixé à 2.
> K<-2
> coorvariables<-t(t(b2[,1:K])*b1[1:K])
> coorvariables
Comp.1 Comp.2
Poids -0.7854549 0.2655173
Taille -0.7790566 -0.4025286
Age -0.6885515 0.6113569
Note 0.8324225 0.3795068
> contvariables<-t(t(coorvariables^2)/b1[1:K]^2)
# (si cor=TRUE)
> contvariables
Comp.1 Comp.2
Poids 0.2580366 0.09396024
Taille 0.2538498 0.21594937
Age 0.1982949 0.49813619
Note 0.2898187 0.19195421
Les coordonnées des individus sont données par les composantes principales,
c’est-à-dire la matrice b6. On calcule les contributions et qualités de
représentation pour les K premiers axes.
> contindividus<-t(t(b6[,1:K]^2/b5)/b1[1:K]^2)
#si cor=TRUE
> contindividus
Comp.1 Comp.2
1 0.291140689 0.0054944366
2 0.157974311 0.0170655513
3 0.086996252 0.0858375857
4 0.181483053 0.0008186102
5 0.040724189 0.0235195723
6 0.090836214 0.0888272884
7 0.072540233 0.0166350835
8 0.007783897 0.0024488706
9 0.013644596 0.7584614348
10 0.056876566 0.0008915667
> qualindividus<-b6[,1:K]^2/rowSums(Xcr^2)
> qualindividus
Comp.1 Comp.2
1 0.85896712 0.005087181
2 0.91523525 0.031027512
3 0.62849993 0.194608831
4 0.74503375 0.001054623
5 0.78490790 0.142257783
6 0.68955164 0.211609196
7 0.41879097 0.030138644
> k1<-1
> k2<-2
> #individus
> abscisses<-b6[,k1]
> ordonnees<-b6[,k2]
> plot(abscisses,ordonnees,type="n")
> text(abscisses,ordonnees,rownames(X))
> abline(h=0,lty=2)
> #variables
> abscisses<-coorvariables[,k1]
> ordonnees<-coorvariables[,k2]
> plot(abscisses,ordonnees,xlim=c(-1,1),ylim=c(-1,1),
type="n")
> arrows(0,0,abscisses,ordonnees,length=0.07)
> text(asbcisses,ordonnees,colnames(X))
1.0
Age
0.5
Note
Poids
Dim 2 (18.76%)
0.0
Taille
−0.5
−1.0
Dim 1 (59.77%)
2.5
9
2.0
1.5
1.0
ordonnees
0.5
4
0.0
8 10
1
2
5
−0.5
3 6
−2 −1 0 1 2
abcisses
L’argument [Link] est ici fixé à −1 pour laisser la fonction déterminer elle
même où couper l’arbre hiérarchique.
Classification hiérarchique
cluster 1
cluster 2
cluster 3
cluster 4
2.0
1.5
Dim 2 (18.76%)
height
2.5
1.0
9 2.0
1.5
1.0
0.5
0.5
7 0.0
4
8 10
1
2
−0.5
5
0.0
3 6 −1.0
−3 −2 −1 0 1 2 3
Dim 1 (59.77%)
Pour interpréter les composantes principales (ou les axes factoriels) est de
les relier aux variables initiales, en utilisant les corrélations précédemment
introduites. Généralement, pour un couple de composantes principales C 1