TD 1: Analyse en Composantes Principales 1 Questions de cours Soit un tableau de données, X n p contenant les observations de n individus statistiques sur p variables quantitatives continues. L'espace des colonnes R n est muni d'une métrique D = diag(..., p i,...) des poids des individus. L'espace des lignes R p est muni d'une métrique M. 1.1 Généralités 1. Sur quel type de données peut-on réaliser une ACP? 2. Soit un tableau de données comprenant en ligne diérents pays et en colonne diérents indicateurs économiques. Quels sont les objectifs d'une ACP sur un tel jeu de données? 3. Dans quel espace vivent les individus? 4. Dénir l'inertie? Que vaut l'inertie totale du nuage quand les variables sont centrées réduites? 5. Dessiner un poisson en maximisant l'inertie projetée. 6. Quand est il indispensable de réduire les variables? Simuler et commenter: library(mvtnorm) Z=rmvnorm(n=200,rep(0,3),sigma=diag(3)) X1=Z[,1] X2=X1+0.001*Z[,2] X3=10*Z[,3] don=cbind.data.frame(x1,x2,x3) library(factominer) acp=pca(don,scale=f) acp=pca(don,scale=t) 1.2 Mise en oeuvre de l'acp 7. Soit une ACP du triplet (X, M, D). Les axes principaux sont les vecteurs propres de V M = X DXM sont les vecteurs propres de W D = XMX D constituent un repère des individus constituent un repère des variables 8. Soit une ACP de (X, M, D). Les composantes principales sont les vecteurs propres de V M = X DXM sont les vecteurs propres de W D = XMX D constituent un repère des individus constituent un repère des variables sont des variables synthétiques: combinaisons linéaires des variables initiales 9. Dans quel espace vit le vecteur de coordonnées des individus sur un axe? 1
R n R p 10. Soit une ACP de (X, M, D), la représentation d'un individu dans le plan 1-2 est une projection d'un vecteur de R 2 une projection d'un vecteur de R p une projection d'un vecteur de R n 11. Dans quel espace vit le vecteur de coordonnées des variables? R n R p 12. La coordonnée d'une variable k sur l'axe c 1 / λ 1 représente (quand les variables sont centrées réduites) : le cosinus de l'angle entre c 1 et k le coecient de corrélation entre c 1 et k 13. Soient les valeurs propres {λ α } que l'on obtient lors d'une ACP de (X, M, D). Ce sont les valeurs propres de V M Ce sont les valeurs propres de W D Ce sont les inerties des axes α 1.3 Aides à l'interprétation 14. Dénir la contribution d'un individu à la création de l'axe et sa qualité de représentation. 15. Dénir la notion d'individus et de variables supplémentaires. 1.4 Questions diverses pour voir si on a bien compris 16. VRAI OU FAUX La variance des coordonées des individus sur le premier axe factoriel est plus élevée que la variance des coordonnées sur le deuxième axe. 17. VRAI OU FAUX Une ACP normée est eectuée sur un trés grand nombre de variable : le pourcentage d'inertie obtenu sur le premier plan factoriel est nécessairement faible. 18. Quatre jeux de données ont été utilisés et sur chacun d'eux, une ACP normée a été construite. On donne la matrice de corrélations des variables pour chaque jeux de données ainsi qu'un extrait des résultats de chaque ACP. Retrouvez quelles matrices de corrélation correspond à quels résultats de l'acp. Justiez vos réponses. Matrice de corrélation A Matrice de corrélation B 1.00-0.46 0.54-0.10-0.14 1.00 0.95 0.95 0.94 0.94-0.46 1.00-0.55-0.14-0.10 0.95 1.00 0.94 0.95 0.95 0.54-0.55 1.00 0.04 0.04 0.95 0.94 1.00 0.93 0.92-0.10-0.14 0.04 1.00 0.94 0.94 0.95 0.93 1.00 0.94-0.14-0.09 0.04 0.94 1.00 0.94 0.95 0.92 0.94 1.00 Matrice de corrélation C Matrice de corrélation D 1.00 0.59 0.53 0.56 0.56 1.00-0.01 0.04-0.06 0.07 0.59 1.00 0.55 0.59 0.72-0.01 1.00-0.07 0.09 0.01 0.53 0.55 1.00 0.47 0.50 0.04-0.07 1.00 0.23 0.29 0.56 0.59 0.47 1.00 0.51-0.06 0.09 0.23 1.00 0.17 0.56 0.72 0.50 0.51 1.00 0.07 0.01 0.29 0.17 1.00 2
Résultats de l'acp 1 Résultats de l'acp 2 Axe Valeur % d'inertie % d'inertie Axe Valeur % d'inertie % d'inertie Propre de l'axe cumulé Propre de l'axe cumulé 1 4.77 95.39 95.39 1 1.47 29.31 29.31 2 0.08 1.63 97.02 2 1.08 21.64 50.95 3 0.06 1.21 98.23 3 1.00 20.01 70.96 4 0.05 0.90 99.13 4 0.77 15.49 86.45 5 0.04 0.87 100 5 0.68 13.55 100 Résultats de l'acp 3 Résultats de l'acp 4 Axe Valeur % d'inertie % d'inertie Axe Valeur % d'inertie % d'inertie Propre de l'axe cumulé Propre de l'axe cumulé 1 3.24 64.86 64.86 1 2.05 40.95 40.95 2 0.54 10.84 75.70 2 1.964 39.27 80.22 3 0.52 10.40 86.10 3 0.498 9.96 90.18 4 0.43 8.50 94.60 4 0.431 8.61 98.79 5 0.27 5.40 100 5 0.06 1.21 100 19. On dispose d'un tableau de données constitué de 10 individus et de 20000 variables. Sans eectuer l'analyse en Composantes Principales, a t'on une idée de la forme du graphe des variables que l'on va obtenir? Simuler et commenter: mat=matrix(rnorm(7*200,0,1),ncol=200) PCA(mat) 2 Applications 2.1 FactoMineR FactoMineR est un package du logiciel R, développé par le laboratoire de mathématiques appliquées d'agrocampus Ouest Rennes, dédié à l'analyse de données. Il peut être téléchargé sur le CRAN, ou sur son site internet: http://www.factominer.free.fr. Il permet de réaliser les analyses classiques comme les ACP, AFC, ACM, AFM... et des méthodes plus avancées (AFM Hiérarchique, Analyse Factorielle de Données Mixtes,...). Une interface graphique est également disponible, permettant d'eectuer ces analyses à l'aide un menu déroulant convivial. Cette interface est intégrée au menu RCommander (library(rcmdr) de John Fox). Toutes ces interfaces ont été programmées en TCLTK. Pour plus d'informations sur R et TCLTK taper tout simplement sur google "R TCLTK examples"... Vous trouverez aussi sur Youtube sur les playlist de François Husson de nombreuses video qui expliquent comment réaliser les méthodes d'analyse de données avec FactoMineR https://www.youtube.com/user/hussonfrancois. Par ailleurs, il est aussi possible de réaliser ces méthodes avec des données manquantes en utilisant le package missmda. Depuis la version 1.24 de FactoMineR, il y a de nombreuses options graphiques qui permettent une meilleure interprétation des graphiques. Il existe aussi d'autres packages pour réaliser des analyses factorielles comme le package très complet ade4: http://pbil.univ-lyon1.fr/ade-4, que nous utiliserons dans le cadre de ces TD. Charger FactoMineR et son interface graphique. source("http://factominer.free.fr/install-facto.r"). Pour utiliser FactoMineR, il faut charger la librairie: library(factominer) 3
Pour bénécier de l'interface graphique de FactoMineR, il faut charger RCommander: library(rcmdr) 2.2 ACP des données du Rhone 1. Importer le jeu de données rhone.csv qui se trouve sur ma page internet: http://math.agrocampusouest.fr/infogluedeliverlive/membres/julie.josse/teaching/rennes2. Ce jeu de données est constitué de 15 variables quantitatives mesurées à diérentes dates (39) sur une même station du rhône et d'une variable qualitative indiquant la saison (été ou hiver) pendant laquelle la mesure a été réalisée. Les variables écologiques sont les suivantes: Température de l'air (Ta), Température de l'eau (Te), Conductivité (Co), PH (ph), Saturation en oxygène (Ox), Transparence (Tr), Dureté (Dt), Dureté calcique (Dc), Magnésium (Mg), Sulfate (Su), Azote Nitrique (NO), Tac (TAC), Matière en suspension (Ms), Matière organique (Mo), Chlorophile (Ch). 2. Réaliser l'acp de ce jeu de données : res.pca<-pca(rhone, quali.sup=16) summary(res.pca, nbelements=5, ncp=3) 3. Comment introduire la variable saison dans l'acp? Comment sont calculées ses coordonnées? 4. Colorier les individus en fonction de la variable saison : plot.pca(res.pca,choix="ind", habillage=16) 5. Améliorer les graphiques : plot.pca(res.pca,choix="ind", habillage=16,autolab="no") plot(res.pca, habillage="saison", select="cos2 0.8") plot(res.pca, select="contrib 10") plot(res.pca,choix="var", select="contrib 8", unselect=0) 6. Dessiner des ellipses de conance autour des centres de gravités des modalités : plotellipses(res.pca) 7. Acher les résultats de l'acp : res.pca 8. Examiner le diagramme en bâtons des valeurs propres : barplot(res.pca$eig[,1], main = "Eigenvalues", names.arg = paste("dim",1:nrow(res.pca$eig), sep="")) 9. Indication sur le nombre de dimensions : estim_ncp(rhone[,-16]) 10. Analyse des plans factoriels : Dénir des groupes de variables fortement corrélées, et associer un sens à chaque axe. 4
Quelles dates de mesures sont caractérisées par de fortes valeurs des variables température de l'air (Ta) et température de l'eau (Te)? Ces dates ont-elles de fortes valeurs pour la conductivité? 11. Analyse des critères CTR et COS2 : A quoi servent les CTR et les COS2? Ne pas oublier: A H A HB D H AHB H D H D H C H C B C Peut-on se passer de l'analyse de ces tableaux et retrouver ces résultats sur le(s) plan(s) factoriel(s)? 12. Décrire de manière automatique les axes: dimdesc(res.pca) 13. Choisir le plan factoriel 3 4 pour les individus. plot(res.pca, choix="ind", axes = c(3, 4)) plot(res.pca, choix="var", axes = c(3, 4)) Que remarquez-vous? Interpréter en consultant les données brutes et les données centrées réduites. scale(rhone[,1:15]) On peut relancer l'analyse en mettant par exemple en supplémentaire quelques individus; mais la structure globale des liens linéaires entre les variables n'est que faiblement modiée. i1=which(rownames(rhone)=="05/12/83") i2=which(rownames(rhone)=="22/06/83") res.pca2=pca(rhone, quali.sup=16, ind.sup=c(i1,i2)) 14. Familiarisez-vous avec l'interface graphique : cliquer sur l'onglet FactoMineR puis sur l'onglet ACP et relancer l'acp. 15. Pour aller plus loin: et si on comprenait la formule de reconstitution des données? X c = p c i a i, avec X c correspondant aux données centrées (et réduites dans notre cas). i=1 5
Reconstituer les données avec un axe factoriel: (Dans FactoMineR, on dispose des c qui sont les coordonnées des individus sur les axes, mais pas explicitement des axes a; par contre on dispose des z, coordonnées des variables sur les axes et on sait que a = 1/ λ z La formule de reconstitution des données avec 1 dimension équivaut alors à : ˆX c = 1 λ1 c 1 z 1. Xchap1axe=(1/sqrt(res.pca$eig[1,1]))*(as.matrix(res.pca$ind$coord[,1])%*% t(as.matrix(res.pca$var$coord[,1]))) dim(xchap1axe) Reconstituer les données avec les deux premiers axes factoriels : La formule de reconstitution des données est : ˆX c = 1 λ1 c 1 z 1 + 1 λ2 c 2 z 2. Xchap2axes=(1/sqrt(res.pca$eig[1,1]))*(as.matrix(res.pca$ind$coord[,1])%*% t(as.matrix(res.pca$var$coord[,1]))) + (1/sqrt(res.pca$eig[2,1]))*(as.matrix(res.pca$ind$coord[,2])%*% t(as.matrix(res.pca$var$coord[,2]))) dim(xchap2axes) Revenir aux données brutes (multiplier par l'écart type et rajoutter la moyenne) moy=apply(rhone[,1:15],2,mean) et=apply(rhone[,1:15],2,sd) Xchapeau1=sweep(Xchap1axe, 2, et, FUN = "*") Xchapeau1=sweep(Xchapeau1, 2, moy, FUN = "+") Xchapeau2=sweep(Xchap2axes, 2, et, FUN = "*") Xchapeau2=sweep(Xchapeau2, 2, moy, FUN = "+") On peut comparer l'écart entre X et ˆX, on peut aussi observer directement les données reconstituées: for( i in 1:15){ x11() plot(rhone[,i],ylab=colnames(rhone)[i]) lines(xchapeau1[,i],col=2) lines(xchapeau2[,i],col=3) } A partir du cercle de corrélation et des diérents graphiques, commenter la reconstruction de la variable Te et Dt avec 1 dimension et 2 dimensions; commenter la reconstruction de la variable Ms et Tr avec 1 et 2 axes; commenter la reconstruction de la variable Ch et NO. 2.3 ACP d'un nuage sans structure: quelques simulations; merci à Pierre-Andre Cornillon et François Husson pour certain de ces exemples 1. Souvent nous constatons une liaison linéaire entre les variables, ou dit de manière diérente, deux axes (nous nous sommes presque toujours arrêté à 2) de dispersion privilégiés. Cependant il peut n'y avoir aucune structure apparente, aucun lien linéaire entre les variables ou aucun axe de dispersion intéressant (le nuage des individus forme une boule dans IR p où il n'est pas possible de dégager un axe, par opposition à un ellipsoide). C'est le cas du chier mult2.txt. Importer les données et lancer l'acp. Vous pouvez constater la décroissance des valeurs propres caractéristique (cas d'école) d'une absence de structure. La représentation des variables et la représentation 6
des individus ne sont pas interprétables. Remarque : ce chier provient d'un loi multinormale dont la matrice de variance est diagonale et constante sur cette diagonale. 2. Simuler un tableau de données avec 3 individus et 10 variables indépendantes: mat=matrix(rnorm(3*10,0,1),ncol=10) Faire l'acp et commenter les résultats. 3. Même question avec 4 individus et 10 variables indépendantes. 4. Simuler un tableau avec 500 individus et 350 variables (330 variables indépendantes et 20 variables presque identiques) mat=matrix(rnorm(330*500,0,1),ncol=330) mat2=cbind(mat,matrix(jitter(rep(mat[,1],20)),ncol=20)) aa=pca(mat2,graph=f) plot.pca(aa,choix="var",lim.cos2.var=0,label="none") Commenter les résultats. 5. On va s'intéresser au pourcentage d'inertie du premier plan factoriel dans le cas ou les variables sont indépendantes. Créer un tableau avec 50 individus et 8 variables et simuler uniquement du hasard (des lois normales indépendantes). Faire l'acp et conserver le pourcentage d'inertie du premier plan factoriel. nr=50 nc=8 iner=rep(0,1000) for (i in 1:1000) { mat=matrix(rnorm(nr*nc,0,1),ncol=nc) iner[i]=pca(mat,graph=f)$eig[2,3] } quantile(iner,0.95) Commenter les résultats. Voici les résultats obtenus pour diérentes tailles d'échantillons: 7
Number of variables nbind 4 5 6 7 8 9 10 11 12 13 14 15 16 5 96.5 93.1 90.2 87.6 85.5 83.4 81.9 80.7 79.4 78.1 77.4 76.6 75.5 6 93.3 88.6 84.8 81.5 79.1 76.9 75.1 73.2 72.2 70.8 69.8 68.7 68.0 7 90.5 84.9 80.9 77.4 74.4 72.0 70.1 68.3 67.0 65.3 64.3 63.2 62.2 8 88.1 82.3 77.2 73.8 70.7 68.2 66.1 64.0 62.8 61.2 60.0 59.0 58.0 9 86.1 79.5 74.8 70.7 67.4 65.1 62.9 61.1 59.4 57.9 56.5 55.4 54.3 10 84.5 77.5 72.3 68.2 65.0 62.4 60.1 58.3 56.5 55.1 53.7 52.5 51.5 11 82.8 75.7 70.3 66.3 62.9 60.1 58.0 56.0 54.4 52.7 51.3 50.1 49.2 12 81.5 74.0 68.6 64.4 61.2 58.3 55.8 54.0 52.4 50.9 49.3 48.2 47.2 13 80.0 72.5 67.2 62.9 59.4 56.7 54.4 52.2 50.5 48.9 47.7 46.6 45.4 14 79.0 71.5 65.7 61.5 58.1 55.1 52.8 50.8 49.0 47.5 46.2 45.0 44.0 15 78.1 70.3 64.6 60.3 57.0 53.9 51.5 49.4 47.8 46.1 44.9 43.6 42.5 16 77.3 69.4 63.5 59.2 55.6 52.9 50.3 48.3 46.6 45.2 43.6 42.4 41.4 17 76.5 68.4 62.6 58.2 54.7 51.8 49.3 47.1 45.5 44.0 42.6 41.4 40.3 18 75.5 67.6 61.8 57.1 53.7 50.8 48.4 46.3 44.6 43.0 41.6 40.4 39.3 19 75.1 67.0 60.9 56.5 52.8 49.9 47.4 45.5 43.7 42.1 40.7 39.6 38.4 20 74.1 66.1 60.1 55.6 52.1 49.1 46.6 44.7 42.9 41.3 39.8 38.7 37.5 25 72.0 63.3 57.1 52.5 48.9 46.0 43.4 41.4 39.6 38.1 36.7 35.5 34.5 30 69.8 61.1 55.1 50.3 46.7 43.6 41.1 39.1 37.3 35.7 34.4 33.2 32.1 35 68.5 59.6 53.3 48.6 44.9 41.9 39.5 37.4 35.6 34.0 32.7 31.6 30.4 40 67.5 58.3 52.0 47.3 43.4 40.5 38.0 36.0 34.1 32.7 31.3 30.1 29.1 45 66.4 57.1 50.8 46.1 42.4 39.3 36.9 34.8 33.1 31.5 30.2 29.0 27.9 50 65.6 56.3 49.9 45.2 41.4 38.4 35.9 33.9 32.1 30.5 29.2 28.1 27.0 100 60.9 51.4 44.9 40.0 36.3 33.3 31.0 28.9 27.2 25.8 24.5 23.3 22.3 Table 1: 95 % quantile inertia on the two rst dimensions of 10000 PCA on data with independent variables. 8