1. Arthur CHARPENTIER - Analyse des donn´ees
Analyse des donn´ees (0)
Petit compl´ement d’alg`ebre lin´eaire
Arthur Charpentier
http ://perso.univ-rennes1.fr/arthur.charpentier/
blog.univ-rennes1.fr/arthur.charpentier/
Master 2, Universit´e Rennes 1
1
2. Arthur CHARPENTIER - Analyse des donn´ees
Un peu de manipulation matricielle
Consid´erons la matrice 5 × 3 suivante, not´ee M
> M=matrix(c(1,2,3,3,2,5,8,4,1,0,3,6,7,7,9),5,3)
> M
[,1] [,2] [,3]
[1,] 1 5 3
[2,] 2 8 6
[3,] 3 4 7
[4,] 3 1 7
[5,] 2 0 9
L’´etude des valeurs propres et vecteurs propres de MM donne
> M%*%t(M)
[,1] [,2] [,3] [,4] [,5]
[1,] 35 60 44 29 29
[2,] 60 104 80 56 58
[3,] 44 80 74 62 69
[4,] 29 56 62 59 69
[5,] 29 58 69 69 85
> eigen(M%*%t(M))
2
3. Arthur CHARPENTIER - Analyse des donn´ees
$values
[1] 3.042519e+02 5.117949e+01 1.568639e+00 3.758495e-15 -5.406259e-15
$vectors
[,1] [,2] [,3] [,4] [,5]
[1,] -0.2939547 0.411761479 0.1437865 0.00000000 0.85051075
[2,] -0.5344927 0.576483364 0.2141664 0.29339899 -0.50003428
[3,] -0.4920963 0.004313133 -0.4529159 -0.73725901 -0.09559762
[4,] -0.4119712 -0.366246257 -0.5630259 0.60184409 0.13011096
[5,] -0.4647893 -0.603294698 0.6413479 -0.09027661 0.02300889
alors que l’´etude des valeurs propres et vecteurs propres de M M donne
> t(M)%*%M
[,1] [,2] [,3]
[1,] 27 36 75
[2,] 36 106 98
[3,] 75 98 224
> eigen(t(M)%*%M)
$values
[1] 304.251867 51.179493 1.568639
3
4. Arthur CHARPENTIER - Analyse des donn´ees
$vectors
[,1] [,2] [,3]
[1,] -0.2869216 0.1017140 0.95253884
[2,] -0.4658692 -0.8836587 -0.04596922
[3,] -0.8370435 0.4569481 -0.30092622
Notons que les 3 plus grandes valeurs propres sont identiques.
De plus, on retrouve num´eriquement la formule de diagonalisation
M M = PDP , o`u P est la matrice des vecteurs propres (matrice de changement
de base) et D est la matrice diagonale des valeurs propres,
> P1=eigen(t(M)%*%M)$vectors
> D1=diag(eigen(t(M)%*%M)$values)
> P1%*%D1%*%t(P1)
[,1] [,2] [,3]
[1,] 27 36 75
[2,] 36 106 98
[3,] 75 98 224
et de mani`ere similaire pour MM ,
> P2=eigen(M%*%t(M))$vectors
4
5. Arthur CHARPENTIER - Analyse des donn´ees
> D2=diag(eigen(M%*%t(M))$values)
> P2%*%D2%*%t(P2)
[,1] [,2] [,3] [,4] [,5]
[1,] 35 60 44 29 29
[2,] 60 104 80 56 58
[3,] 44 80 74 62 69
[4,] 29 56 62 59 69
[5,] 29 58 69 69 85
Pour l’instant, avec les valeurs propres et les vecteurs propres de M M et de
MM , nous arrivons `a reconstituer ces deux matrices.
L’int´erˆet de ces m´ethodes - dites factorielles - est la reconstitution des donn´ees
initiales. En particulier, on peut reconstituer un tableau tr`es proche du tableau
intial avec un nombre beaucoup plus petit de param`etres.
D’un point de vue technique, il s’agit simplement de la d´ecomposition en valeurs
singuli`eres d’une matrice rectangulaire (on parle de d´ecomposition
d’Eckart-Young).
Autrement dit, pouvons nous reconstituer la matrice M de d´epart ?
5
6. Arthur CHARPENTIER - Analyse des donn´ees
Le seul soucis est que les vecteurs propres calcul´es ne sont pas uniques. On
notera toutefois qu’ils sont unitaires.
> P1
[,1] [,2] [,3]
[1,] -0.2869216 0.1017140 0.95253884
[2,] -0.4658692 -0.8836587 -0.04596922
[3,] -0.8370435 0.4569481 -0.30092622
> sum(P1[,1]^2)
[1] 1
> sum(P1[,2]^2)
[1] 1
> sum(P1[,3]^2)
[1] 1
On peut mˆeme montrer qu’ils sont orthogonaux
> sum(P1[,3]*P1[,2])
[1] 1.387779e-17
> sum(P1[,2]*P1[,3])
[1] 1.387779e-17
> sum(P1[,2]*P1[,1])
6
7. Arthur CHARPENTIER - Analyse des donn´ees
[1] -4.163336e-17
En effet, toute matrice symm´etrique r´eelle (ce qui est le cas par construction de
M M et de MM ) est diagonalisable dans une base orthonorm´ee.
Mais si u est un vecteur propre unitaire pour M M, associ´e `a une valeur propre
λ, alors −u aussi (et il reste orthogonal aux autres vecteurs propres).
Bref, on a un soucis sur le signe des vecteurs propres. En changeant le signe des
vecteurs propres 2 et 3 propos´es par R, on peut reconstituer la matrice M initale.
En effet
> P2b=cbind(P2[,1],-P2[,2:3],P2[,4:5])
> P2b
[,1] [,2] [,3] [,4] [,5]
[1,] -0.2939547 -0.411761479 -0.1437865 0.00000000 0.85051075
[2,] -0.5344927 -0.576483364 -0.2141664 0.29339899 -0.50003428
[3,] -0.4920963 -0.004313133 0.4529159 -0.73725901 -0.09559762
[4,] -0.4119712 0.366246257 0.5630259 0.60184409 0.13011096
[5,] -0.4647893 0.603294698 -0.6413479 -0.09027661 0.02300889
> P2
[,1] [,2] [,3] [,4] [,5]
7
8. Arthur CHARPENTIER - Analyse des donn´ees
[1,] -0.2939547 0.411761479 0.1437865 0.00000000 0.85051075
[2,] -0.5344927 0.576483364 0.2141664 0.29339899 -0.50003428
[3,] -0.4920963 0.004313133 -0.4529159 -0.73725901 -0.09559762
[4,] -0.4119712 -0.366246257 -0.5630259 0.60184409 0.13011096
[5,] -0.4647893 -0.603294698 0.6413479 -0.09027661 0.02300889
> P2b%*%sqrt(D2[,1:3])%*%t(P1)
[,1] [,2] [,3]
[1,] 1 5.000000e+00 3
[2,] 2 8.000000e+00 6
[3,] 3 4.000000e+00 7
[4,] 3 1.000000e+00 7
[5,] 2 -1.316882e-15 9
Autrement dit, il est possible de reconstituer la matrice initiale (au probl`eme de
signe pr`es).
L’id´ee de l’analyse factorielle est de se dire qu’il est inutile de prendre en compte
toutes toutes les composantes. Autrement dit, si l’on suppose que deux facteurs
seulement interviennent, cela revient `a ne garder dans la matrice diagonale que 2
valeurs, les 2 facteurs principaux.
8
9. Arthur CHARPENTIER - Analyse des donn´ees
> D20=D2
> D20[3,3]=0
> P2b%*%sqrt(D20[,1:3])%*%t(P1)
[,1] [,2] [,3]
[1,] 1.171539 4.99172159 2.945807
[2,] 2.255503 7.98766952 5.919282
[3,] 2.459667 4.02607632 7.170702
[4,] 2.328304 1.03241583 7.212202
[5,] 2.765135 -0.03692516 8.758279
> M
[,1] [,2] [,3]
[1,] 1 5 3
[2,] 2 8 6
[3,] 3 4 7
[4,] 3 1 7
[5,] 2 0 9
On voit qu’en ne gardant ici que les deux premiers facteurs, on obtient une
matrice reconstitu´ee relativement proche de la matrice M initiale.
Pour cela, nous avons gard´e les deux premi`eres valeurs propres. Supposons que
9
10. Arthur CHARPENTIER - Analyse des donn´ees
l’on garde les deux derni`eres,
> D20=D2
> D20[1,1]=0
> P2b%*%sqrt(D20[,1:3])%*%t(P1)
[,1] [,2] [,3]
[1,] -0.4711614 2.611302953 -1.2918555
[2,] -0.6749870 3.656674168 -1.8038054
[3,] 0.5371949 0.001189930 -0.1848019
[4,] 0.9381988 -2.347707675 0.9850566
[5,] -0.3261410 -3.776911215 2.2138916
> M
[,1] [,2] [,3]
[1,] 1 5 3
[2,] 2 8 6
[3,] 3 4 7
[4,] 3 1 7
[5,] 2 0 9
dans ce cas, on ne reconstitue pas du tout la matrice M.
Autrement dit, on peut relativement bien reconstituer la matrice initiale `a
10
11. Arthur CHARPENTIER - Analyse des donn´ees
condition de garder les facteurs principaux, c’est `a dire associ´es aux plus grandes
valeurs propres.
Notons que cette d´ecomposition/recomposition est `a relier avec la d´ecomposition
en valeurs singuli`ere
> svd(M)
$d
[1] 17.442817 7.153984 1.252453
$u
[,1] [,2] [,3]
[1,] -0.2939547 -0.411761479 -0.1437865
[2,] -0.5344927 -0.576483364 -0.2141664
[3,] -0.4920963 -0.004313133 0.4529159
[4,] -0.4119712 0.366246257 0.5630259
[5,] -0.4647893 0.603294698 -0.6413479
$v
[,1] [,2] [,3]
[1,] -0.2869216 0.1017140 0.95253884
[2,] -0.4658692 -0.8836587 -0.04596922
11
12. Arthur CHARPENTIER - Analyse des donn´ees
[3,] -0.8370435 0.4569481 -0.30092622
> svd(M)$u%*%diag(svd(M)$d)%*%t(svd(M)$v)
[,1] [,2] [,3]
[1,] 1 5.000000e+00 3
[2,] 2 8.000000e+00 6
[3,] 3 4.000000e+00 7
[4,] 3 1.000000e+00 7
[5,] 2 2.245572e-15 9
Les “valeurs propres” de M sont simplement des racines des valeurs propres de
M M ou MM
> svd(M)$d
[1] 17.442817 7.153984 1.252453
> sqrt(eigen(t(M)%*%M)$values)
[1] 17.442817 7.153984 1.252453
> sqrt(eigen(M%*%t(M))$values)
[1] 1.744282e+01 7.153984e+00 1.252453e+00 6.130657e-08 NaN
Warning message:
In sqrt(eigen(M %*% t(M))$values) : production de NaN
12
13. Arthur CHARPENTIER - Analyse des donn´ees
et de mˆeme, une correspondance peut ˆetre faite entre les matrices de transition
> eigen(M%*%t(M))$vectors[,1:3]
[,1] [,2] [,3]
[1,] -0.2939547 0.411761479 0.1437865
[2,] -0.5344927 0.576483364 0.2141664
[3,] -0.4920963 0.004313133 -0.4529159
[4,] -0.4119712 -0.366246257 -0.5630259
[5,] -0.4647893 -0.603294698 0.6413479
> svd(M)$u
[,1] [,2] [,3]
[1,] -0.2939547 -0.411761479 -0.1437865
[2,] -0.5344927 -0.576483364 -0.2141664
[3,] -0.4920963 -0.004313133 0.4529159
[4,] -0.4119712 0.366246257 0.5630259
[5,] -0.4647893 0.603294698 -0.6413479
et
> eigen(t(M)%*%M)$vectors
[,1] [,2] [,3]
[1,] -0.2869216 0.1017140 0.95253884
[2,] -0.4658692 -0.8836587 -0.04596922
13
14. Arthur CHARPENTIER - Analyse des donn´ees
[3,] -0.8370435 0.4569481 -0.30092622
> svd(M)$v
[,1] [,2] [,3]
[1,] -0.2869216 0.1017140 0.95253884
[2,] -0.4658692 -0.8836587 -0.04596922
[3,] -0.8370435 0.4569481 -0.30092622
Bref, nous pouvons d´ecomposer, simplifier, puis recomposer...
L’id´ee de l’analyse en composantes principales (ACP) est concentrer sur un petit
nombre de facteurs.
L’´etude de M M donne des informations sur les individus (les 5 lignes) dans la
base des variables (les 3 colonnes). Rappelons que le premier vecteur propre, dans
cet espace (i.e. R3
) est
> eigen(t(M)%*%M)$vectors[,1]
[1] -0.2869216 -0.4658692 -0.8370435
Le centre de gravit´e associ´e `a la matrice est
> (m=apply(M,2,mean))
[1] 2.2 3.6 6.4
14
15. Arthur CHARPENTIER - Analyse des donn´ees
On peut calculer la matrice de covariance associ´ee `a M,
> cov(M)*4/5
[,1] [,2] [,3]
[1,] 0.56 -0.72 0.92
[2,] -0.72 8.24 -3.44
[3,] 0.92 -3.44 3.84
(le facteur 4/5 vient du fait que l’on souhaite connaˆıtre la variance empirique).
Et on appelle intertie totale du nuage la moyenne des carr´es des distances au
centre de gravit´e,
> (t(M)-m)^2
[,1] [,2] [,3] [,4] [,5]
[1,] 1.44 0.04 0.64 0.64 0.04
[2,] 1.96 19.36 0.16 6.76 12.96
[3,] 11.56 0.16 0.36 0.36 6.76
> apply((t(M)-m)^2,1,mean)
[1] 0.56 8.24 3.84
Notons que l’inertie est alors simplement trace(M),
> sum(apply((t(M)-m)^2,1,mean))
15
16. Arthur CHARPENTIER - Analyse des donn´ees
[1] 12.64
> sum(diag(cov(M)*4/5))
[1] 12.64
Pour revenir `a nos vecteurs propres, notons que les coordonn´ees des individus
dans la nouvelle base des vecteurs propress sont alors
> M%*%P1
[,1] [,2] [,3]
[1,] -5.127398 -2.94573520 -0.1800859
[2,] -9.323058 -4.12415301 -0.2682334
[3,] -8.583546 -0.03085609 0.5672561
[4,] -7.185939 2.62012001 0.7051637
[5,] -8.107235 4.31596087 -0.8032583
L’inertie du nuage projet´e sur chacun des axes propres est donn´e par
> diag((t(P1)%*%V%*%P1)/(t(P1)%*%P1))
[1] 2.0914754 10.2348141 0.3137105
Notons que ces inerties correspondent aux valeurs propres de la matrice de
variance covariance de M,
16
17. Arthur CHARPENTIER - Analyse des donn´ees
> eigen(V)
$values
[1] 10.2426324 2.0842335 0.3131342
$vectors
[,1] [,2] [,3]
[1,] 0.1104654 0.2664074 0.95750953
[2,] -0.8688099 0.4937506 -0.03714359
[3,] 0.4826662 0.8277907 -0.28599974
L’analyse d’un tableau `a n lignes et p colonnes, en ACP, repose sur
– la repr´esentation des n individus sur les p variables (i.e. visualisation de n
points dans Rp
)
– la repr´esentation des p variables sur les n individus (i.e. visualisation de p
points dans Rn
)
Ces deux analyses pr´esentent l’avantage d’avoir beaucoup de points en commun.
On parlera d’analyse duale.
1. Les axes factoriels dans Rn
se d´eduisent de ceux obtenus dans l’analyse
17
18. Arthur CHARPENTIER - Analyse des donn´ees
directe (dans Rp
)
2. Les taux d’inertie sont identiques pour les axes de mˆeme rang dans les deux
analyses
Cette dualit´e se traduit formellement par la relation suivante : dans l’analyse
directe, on cherche ui tel que X Xui = λiui et dans l’analyse duale le vj tels que
XX vi = λivi, et les vecteurs propres v´erifient
ui =
1
√
λi
X vi et vi =
1
√
λi
Xui
(on parle de formules de transition). Les axes dans un espace se d´eduisent
(simplement) de ceux de l’autre espace.
Comme annonc´e, on peut aussi obtenir les formules de transition sur les vecteurs
propres de MM et M M
> t(t(t(M)%*%eigen(M%*%t(M))$vectors)/sqrt(eigen(M%*%t(M))$values))
[,1] [,2] [,3] [,4] [,5]
[1,] -0.2869216 -0.1017140 -0.95253884 -3.060483e-07 NaN
[2,] -0.4658692 0.8836587 0.04596922 1.810937e-08 NaN
18
20. Arthur CHARPENTIER - Analyse des donn´ees
[5,] -0.4647893 -0.603294698 0.6413479 -0.09027661 0.02300889
On retrouve sur ce petit exemple que les signes ne co¨ıncident pas sur les 2`eme et
3`eme colonnes.
Les
bluecomposantes principales sont les 3 vecteurs de R5
d´efinis par les facteurs
principaux, Mu
> M%*%eigen(t(M)%*%M)$vectors
[,1] [,2] [,3]
[1,] -5.127398 -2.94573520 -0.1800859
[2,] -9.323058 -4.12415301 -0.2682334
[3,] -8.583546 -0.03085609 0.5672561
[4,] -7.185939 2.62012001 0.7051637
[5,] -8.107235 4.31596087 -0.8032583
qui correspondent aussi aux coordonn´ees des lignes,
> library(ade4)
> dudi.pca(M,center=FALSE,scale=FALSE)$li
Select the number of axes: 5
20
22. Arthur CHARPENTIER - Analyse des donn´ees
En analyse factorielle des correspondances (simples), nous travaillerons avec
d’autres types de matrices, parfois appel´ee stochastiques, voire stochastiques, au
sens o`u elles peuvent ˆetre interpr´et´ees comme des distributions de probabilit´e.
Par exemple
> (M=matrix(c(0.4,0.5,0.1,0.2,0.7,0.1,0.6,0.1,0.3,0.2,0.2,0.6),3,4))
[,1] [,2] [,3] [,4]
[1,] 0.4 0.2 0.6 0.2
[2,] 0.5 0.7 0.1 0.2
[3,] 0.1 0.1 0.3 0.6
Chaque colonne de cette matrice peut ˆetre interpr´et´ee comme une distribution de
probabit´e : pour la seconde colonne (seconde modalit´e de la variable X2), la
modalit´e prise par X1 est 1 dans 20% des cas, 2 dans 70% des cas et 3 dans 10%
des cas.
Ces matrices v´erifient un certain nombre de propri´et´es...
22
23. Arthur CHARPENTIER - Analyse des donn´ees
En analyse factorielle multiple, nous utiliserons des tableaux disjonctifs conplets.
Les matrices associ´ees sont des propri´et´es particuli`eres :
• elles ne sont compos´ees que de 0 et de 1
• pour toute colonne j, il existe un ensemble de colonnes J avec j ∈ J tel que la
somme des colonnes J est le vecteur 1.
Par exemple
> (M=matrix(c(1,0,0,1,0,1,1,0,0,1,0,0,1,0,0,0,0,0,1,1),4,5))
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 0 1 0
[2,] 0 1 1 0 0
[3,] 0 1 0 0 1
[4,] 1 0 0 0 1
> apply(M[,1:2],1,sum)
[1] 1 1 1 1
> apply(M[,3:5],1,sum)
[1] 1 1 1 1
23