cours add-r1-part0

23
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

Upload: arthur-charpentier

Post on 20-Jun-2015

554 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cours add-r1-part0

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

Page 2: Cours add-r1-part0

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

Page 3: Cours add-r1-part0

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

Page 4: Cours add-r1-part0

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

Page 5: Cours add-r1-part0

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

Page 6: Cours add-r1-part0

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

Page 7: Cours add-r1-part0

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

Page 8: Cours add-r1-part0

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

Page 9: Cours add-r1-part0

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

Page 10: Cours add-r1-part0

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

Page 11: Cours add-r1-part0

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

Page 12: Cours add-r1-part0

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

Page 13: Cours add-r1-part0

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

Page 14: Cours add-r1-part0

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

Page 15: Cours add-r1-part0

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

Page 16: Cours add-r1-part0

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

Page 17: Cours add-r1-part0

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

Page 18: Cours add-r1-part0

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

Page 19: Cours add-r1-part0

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

Page 20: Cours add-r1-part0

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

Page 21: Cours add-r1-part0

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

Page 22: Cours add-r1-part0

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

Page 23: Cours add-r1-part0

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