cours add-r1-part0
TRANSCRIPT
Arthur CHARPENTIER - Analyse des donnees
Analyse des donnees (0)
Petit complement d’algebre lineaire
Arthur Charpentier
http ://perso.univ-rennes1.fr/arthur.charpentier/
blog.univ-rennes1.fr/arthur.charpentier/
Master 2, Universite Rennes 1
1
Arthur CHARPENTIER - Analyse des donnees
Un peu de manipulation matricielle
Considerons la matrice 5× 3 suivante, notee 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
Arthur CHARPENTIER - Analyse des donnees
$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
Arthur CHARPENTIER - Analyse des donnees
$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 numeriquement la formule de diagonalisationM ′M = PDP ′, ou P est la matrice des vecteurs propres (matrice de changementde 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 maniere similaire pour MM ′,> P2=eigen(M%*%t(M))$vectors
4
Arthur CHARPENTIER - Analyse des donnees
> 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 deMM ′, nous arrivons a reconstituer ces deux matrices.
L’interet de ces methodes - dites factorielles - est la reconstitution des donneesinitiales. En particulier, on peut reconstituer un tableau tres proche du tableauintial avec un nombre beaucoup plus petit de parametres.
D’un point de vue technique, il s’agit simplement de la decomposition en valeurssingulieres d’une matrice rectangulaire (on parle de decompositiond’Eckart-Young).
Autrement dit, pouvons nous reconstituer la matrice M de depart ?
5
Arthur CHARPENTIER - Analyse des donnees
Le seul soucis est que les vecteurs propres calcules ne sont pas uniques. Onnotera 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 meme 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
Arthur CHARPENTIER - Analyse des donnees
[1] -4.163336e-17
En effet, toute matrice symmetrique reelle (ce qui est le cas par construction deM ′M et de MM ′) est diagonalisable dans une base orthonormee.
Mais si u est un vecteur propre unitaire pour M ′M , associe 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 desvecteurs propres 2 et 3 proposes 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
Arthur CHARPENTIER - Analyse des donnees
[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 probleme designe pres).
L’idee de l’analyse factorielle est de se dire qu’il est inutile de prendre en comptetoutes toutes les composantes. Autrement dit, si l’on suppose que deux facteursseulement interviennent, cela revient a ne garder dans la matrice diagonale que 2valeurs, les 2 facteurs principaux.
8
Arthur CHARPENTIER - Analyse des donnees
> 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 unematrice reconstituee relativement proche de la matrice M initiale.
Pour cela, nous avons garde les deux premieres valeurs propres. Supposons que
9
Arthur CHARPENTIER - Analyse des donnees
l’on garde les deux dernieres,
> 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
Arthur CHARPENTIER - Analyse des donnees
condition de garder les facteurs principaux, c’est a dire associes aux plus grandesvaleurs propres.
Notons que cette decomposition/recomposition est a relier avec la decompositionen valeurs singuliere> 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
Arthur CHARPENTIER - Analyse des donnees
[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 deM ′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
Arthur CHARPENTIER - Analyse des donnees
et de meme, 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
Arthur CHARPENTIER - Analyse des donnees
[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 decomposer, simplifier, puis recomposer...
L’idee de l’analyse en composantes principales (ACP) est concentrer sur un petitnombre de facteurs.
L’etude de M ′M donne des informations sur les individus (les 5 lignes) dans labase des variables (les 3 colonnes). Rappelons que le premier vecteur propre, danscet espace (i.e. R3) est
> eigen(t(M)%*%M)$vectors[,1]
[1] -0.2869216 -0.4658692 -0.8370435
Le centre de gravite associe a la matrice est
> (m=apply(M,2,mean))
[1] 2.2 3.6 6.4
14
Arthur CHARPENTIER - Analyse des donnees
On peut calculer la matrice de covariance associee 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 carres des distances aucentre de gravite,> (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
Arthur CHARPENTIER - Analyse des donnees
[1] 12.64
> sum(diag(cov(M)*4/5))
[1] 12.64
Pour revenir a nos vecteurs propres, notons que les coordonnees des individusdans 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 projete sur chacun des axes propres est donne 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 devariance covariance de M ,
16
Arthur CHARPENTIER - Analyse des donnees
> 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 representation des n individus sur les p variables (i.e. visualisation de npoints dans Rp)
– la representation des p variables sur les n individus (i.e. visualisation de ppoints dans Rn)
Ces deux analyses presentent l’avantage d’avoir beaucoup de points en commun.On parlera d’analyse duale.
1. Les axes factoriels dans Rn se deduisent de ceux obtenus dans l’analyse
17
Arthur CHARPENTIER - Analyse des donnees
directe (dans Rp)
2. Les taux d’inertie sont identiques pour les axes de meme rang dans les deuxanalyses
Cette dualite se traduit formellement par la relation suivante : dans l’analysedirecte, on cherche ui tel que X ′Xui = λiui et dans l’analyse duale le vj tels queXX ′vi = λivi, et les vecteurs propres verifient
ui =1√λi
X ′vi et vi =1√λi
Xui
(on parle de formules de transition). Les axes dans un espace se deduisent(simplement) de ceux de l’autre espace.
Comme annonce, on peut aussi obtenir les formules de transition sur les vecteurspropres 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
Arthur CHARPENTIER - Analyse des donnees
[3,] -0.8370435 -0.4569481 0.30092622 9.869604e-08 NaN
> eigen(t(M)%*%M)$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
ou, de maniere duale,
> t(t(M%*%eigen(t(M)%*%M)$vectors)/sqrt(eigen(t(M)%*%M)$values))
[,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
> eigen(M%*%t(M))$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
19
Arthur CHARPENTIER - Analyse des donnees
[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 2eme et3eme colonnes.
Les
bluecomposantes principales sont les 3 vecteurs de R5 definis par les facteursprincipaux, 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 coordonnees des lignes,
> library(ade4)
> dudi.pca(M,center=FALSE,scale=FALSE)$li
Select the number of axes: 5
20
Arthur CHARPENTIER - Analyse des donnees
Axis1 Axis2 Axis3
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
21
Arthur CHARPENTIER - Analyse des donnees
En analyse factorielle des correspondances (simples), nous travaillerons avecd’autres types de matrices, parfois appelee stochastiques, voire stochastiques, ausens ou elles peuvent etre interpretees comme des distributions de probabilite.
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 interpretee comme une distribution deprobabite : pour la seconde colonne (seconde modalite de la variable X2), lamodalite prise par X1 est 1 dans 20% des cas, 2 dans 70% des cas et 3 dans 10%des cas.
Ces matrices verifient un certain nombre de proprietes...
22
Arthur CHARPENTIER - Analyse des donnees
En analyse factorielle multiple, nous utiliserons des tableaux disjonctifs conplets.Les matrices associees sont des proprietes particulieres :• elles ne sont composees 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