L`analyse en composantes principales (ACP)
Transcription
L`analyse en composantes principales (ACP)
Montpellier L'analyse des données multivariées à l'aide du logiciel L'analyse en composantes principales (A.C.P.) INRA - Formation Permanente Juillet 2005 André Bouchier INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.1/23 Copyright 2005 André Bouchier Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.2/23 1.Avant propos : l Pré-recquis Ce support de cours concerne la mise en oeuvre d'une analyse en composantes principales à l'aide du logiciel de statistiques R. Ce n'est ni un cours de statistique ni une initiation à R. On suppose donc connues les bases de ce logiciel ainsi que quelques notions de statistiques concernant l'analyse en composantes principales. l Les fonctions utilisées : Les fonctions utilisées pour cette analyse sont disponibles dans les bibliothèques standard de R et dans la bibliothèque ade4. Pour aider à la compréhension, l'écriture des «programmes» sera détaillée. Par la suite, vous pourrez condenser cette écriture. Mais n'oubliez pas de les commenter abondamment. INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.3/23 2.Rappels : l L’ACP est une méthode descriptive. l Son objectif est de représenter sous forme graphique l’essentiel de l’information contenue dans un tableau de données quantitatif. l Dans un tableau de données à j variables, les individus se trouvent dans un espace à j dimensions. l Lorsqu’on projette ces données sur un plan, on obtient un graphique déformé de la réalité. l Le rôle de l’ACP est de trouver des espaces de dimensions plus petites minimisant ces déformations. l On utilise un espace à 2 dimensions (un plan). Ce plan est appelé le plan principal. INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.4/23 3.Les données d'exemple : l Le tableau des données d'exemple : Ce tableau de données, contient les données techniques sur 62 véhicules - année modèle 1994. Les variables sont : row.names : nom du modèle Puissance : en chevaux fiscaux Cylindree : en cm3 Longueur : longueur de la voiture Largeur : largeur de la voiture Surface : surface de la voiture Poids : poids total en Kg Vitesse : vitesse maximum en km/h DepArret : Temps, en secondes, pour parcourir 1000 m, départ arrêté. Conso : Consommation moyenne aux 100 Km, en litres (essence ou gazole) INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.5/23 4.Préparation du tableau des données : l Les données seront dans le tableau « don »: Alfa-Romeo Alfa-Romeo Alfa-Romeo Alfa-Romeo BMW 316i BMW 325 TD BMW 518i BMW 525 TD 33 1.5 ie 155 2.0 155 TD 164 2.5 T Puissance Cylindree Longueur Largeur Surface Poids Vitesse DepArret Conso 7 1490 4.07 1.61 6.58 970 180 31.4 7.7 10 1995 4.44 1.70 7.55 1215 205 31.3 8.0 6 1929 4.44 1.70 7.55 1250 180 35.0 6.4 7 2500 4.55 1.76 8.02 1490 202 32.2 6.8 7 1596 4.43 1.70 7.53 1190 191 34.1 7.9 7 2498 4.43 1.70 7.53 1335 198 33.3 6.9 10 1796 4.72 1.75 8.26 1360 194 33.6 8.6 7 2498 4.72 1.75 8.26 1465 188 NA 7.6 .../... l On élimine les 10 individus ayant des valeurs manquantes don<-na.omit(don) l L'identifiant des individus est row.names(don) Il contient le nom des véhicules INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.6/23 5.Description des variables, les histogrammes : l Les histogrammes de toutes les variables layout(matrix(c(1:9),3,3)) for(i in 1:9) {hist(don[,i],main=names(don)[i],xlab="")} layout(1) 1.7 140 25 9 28 32 5.0 36 40 Frequency Conso 0 0 2 4 6 8 Frequency 10 15 4.5 8 Poids 5 4.0 7 220 15 Frequency 12 8 6 180 DepArret 0 5 0 3.5 15 2.1 4 Frequency 25 Frequency 15 2500 Longueur Frequency 1.9 Surface 0 5 1500 10 0 1.5 Cylindree 500 5 Frequency 15 14 0 5 10 15 8 10 6 5 4 Vitesse 0 5 15 Frequency 25 Largeur 0 5 Frequency Puissance 800 INRA Montpellier - Analyses en composantes principales - Juillet 2005 1200 1600 4 6 8 10 12 p.7/23 6.Description des variables, contrôle de la linéarité des relations : l Les relations entre les variables quantitatives : pairs(don,main="Données voitures 1994") INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.8/23 7.L'A.C.P. - fonction dudi.pca () de la bibliothèque ade4 : l On lance l’analyse en composantes principale Les résultats de l'analyse sont stockés dans la variable z library(ade4) z<- dudi.pca(don, center = T, scale = T, scannf = F) l Choix du type d'analyse Les options center et scale de la fonction dudi.pca sont utilisées pour centrer et réduire les variables. INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.9/23 8.Les valeurs propres : l Impression des valeurs propres (variances de chaque composante) : z$eig 6.453 1.137 0.656 0.331 0.236 0.100 0.0434 0.0390 0.000 l Les variances cumulées (Σ des variances = 9, les données sont centrées réduites) : cumsum(z$eig) 6.453 7.591 8.247 8.579 8.816 8.917 8.960 8.999 9.000 l Les variances en pourcentages et pourcentages cumulés : z$eig/sum(z$eig)*100 71.704 12.640 7.298 3.688 2.632 1.114 0.482 0.434 0.004 cumsum(z$eig/sum(z$eig)*100) 71.70 84.34 91.64 95.33 97.96 INRA Montpellier - Analyses en composantes principales - Juillet 2005 99.07 99.56 99.99 100.00 p.10/23 9.L'histogramme des valeurs propres l Une représentation en % de variance expliquée : inertie<-z$eig/sum(z$eig)*100 barplot(inertie,ylab="% d'inertie",names.arg=round(inertie,2)) title("Eboulis des valeurs propres en %") 40 30 0 10 20 % d'inertie 50 60 70 Eboulis des valeurs propres en % 71.7 12.64 7.3 3.69 2.63 INRA Montpellier - Analyses en composantes principales - Juillet 2005 1.11 0.48 0.43 0 p.11/23 10.Interprétation des composantes : les contributions "relatives" l Contributions des variables à la construction des axes : inertia.dudi(z,col.inertia = T)$col.abs Comp1 Comp2 Puissance 824 1867 Cylindree 1201 2 Longueur 1291 528 Largeur 937 2211 Surface 1307 1196 Poids 1345 485 Vitesse 1263 868 DepArret 798 2354 Conso 1034 490 Somme 10000 10000 INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.12/23 11.Présentation des résultats - le plan principal : l Le résultat de l'A.C.P a été stocké dans la variable z. Les coordonnées des lignes et des colonnes se trouvent respectivement dans z$li et z$co l La première composante sera : cl1<-z$li[,1] pour les individus cc1<-z$co[,1] pour les variables l La deuxième sera : cl2<-z$li[,2] pour les individus cc2<-z$co[,2] pour les variables INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.13/23 12.Présentation des résultats - le plan des individus : l Représentation du graphique du plan des individus : plot(cl1,cl2,type="n",main="Les individus",xlim=c(-7,7)) abline(h=0,v=0) text(cl1,cl2,row.names(z$li)) Les individus Peugeot 605 Sv24 Alfa-Romeo 33 1.5 ie Fiat UNO 1.4i.e Alfa-Romeo 155 2.0 BMW 730i Citroen Renault AX1.0Clio 1.4 RN Citroen XM V6 Fiat TIPO 1.8ie Fiat UNO TD Fiat TEMPRA 1.8ie Citroen XANTIA 2.0 2.0i Fiat CROMA Renault TwingoRenault 19 1.8RN Citroen Renault 21 Prima Peugeot 405 SR TS XM 2.0i Citroen ZX1.6 RenaultRenault Clio 1.9D 19 1.4RN BMW 316i Peugeot 306 XTDT BMW 325 TD Renault 19 1.9XANTIA dT BMW 518i Citroen 1.8I Fiat TIPO TD Peugeot 605 SLi Citroen ZX1.9TD Citroen AX14TD Peugeot 405 STD Fiat CROMA 2.5 TD Alfa-Romeo 164 2.5 T Peugeot 106 XN Peugeot 306 XN Renault Clio 1.2 RN Fiat TEMPRA TD Renault 21 Renault Prima TD Safrane2.0i Alfa-Romeo 405 GL155 TD Peugeot 106 XTDPeugeot CitroenCitroen ZX1.1 XANTIA 1.6I Citroen XANTIA TD Citroen XM Safrane2.5 TD12 Renault Espace d 2.2i Renault -2 -1 cp2 0 1 2 Citroen AX1.4i -3 Peugeot 605 SLD Renault Espace 2.1dT -6 -4 -2 0 2 4 6 cp1 INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.14/23 13.Présentation des résultats - le plan des variables : l La représentation graphique du plan des variables : plot(cc1,cc2,type="n", main="Les variables", xlim=c(-1,1), ylim=c(-1,1), asp=1, #rapport entre "Echelle X" et "Echelle Y" ylab= "Comp2 71.7%", xlab= "Comp1 12.6%") abline(h=0,v=0) text(cc1,cc2,row.names(z$co)) l Le cercle des corrélations : symbols(0,0,circles=1,inches=FALSE,add=TRUE) INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.15/23 14.Graphique du plan des variables : Puissance Vitesse Conso 0.0 Comp2 71.7% 0.5 1.0 Les variables Cylindree Poids Longueur -0.5 Surface Largeur -1.0 DepArret -1.0 -0.5 0.0 0.5 1.0 Comp1 12.6% INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.16/23 15.Les données supplémentaires : l La bibliothèque ade4 propose les fonctions supcol() et suprow() pour calculer les coordonnées des variables et individus supplémentaires. Ces fonctions s'utilisent après le calcul de l'A.C.P. l Le tableau de données donsup contient 10 individus dont les données manquantes ont été remplacées par des valeurs grossièrement estimées. Ces données sont peu fiables et ont été introduites en supplémentaire dans l'analyse. BMW 525 TD Fiat Panda 1000i.e Ford Fiesta 1400 Ford Fiesta TD Ford Escort 1400 Ford Escort 1800 TD Ford MONDEO 1800i Ford MONDEO TD Ford Scorpio 2000i Ford Scorpio 2900i Puissance Cylindree Longueur Largeur Surface Poids Vitesse DepArret Conso 7 2498 4.72 1.75 8.26 1465 188 31 7.6 4 999 3.41 1.49 5.09 715 140 41 6.2 6 1392 3.74 1.61 6.01 840 163 38 7.2 5 1753 3.74 1.61 6.01 900 170 37 6.1 6 1391 4.10 1.70 6.96 1000 163 39 7.8 6 1753 4.10 1.70 6.96 1100 172 35 6.3 7 1796 4.48 1.75 7.83 1277 197 32 7.2 5 1753 4.48 1.75 7.83 1277 183 35 6.2 10 1998 4.74 1.69 8.03 1245 195 33 7.7 15 1998 4.74 1.69 8.03 1345 201 32 10.8 INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.17/23 16.Les individus supplémentaires : l Les coordonnées des individus supplémentaires sont calculés en tenant compte des options utilisées dans l'ACP sur les individus actifs. Ici, ils seront centréréduits. z<- dudi.pca(don, center = T, scale = T, scannf = F) ligsup<-suprow(z,donsup) l Les coordonnées des individus supplémentaires se trouve dans ligsup$lisup Axis1 BMW 525 TD 2.5032655 Fiat Panda 1000i.e -5.7235880 Ford Fiesta 1400 -2.9921568 Ford Fiesta TD -2.7224814 Ford Escort 1400 -1.7987546 Ford Escort 1800 TD -1.0292275 Ford MONDEO 1800i 1.2600677 Ford MONDEO TD 0.1373121 Ford Scorpio 2000i 1.7339527 Ford Scorpio 2900i 3.3727519 Axis2 -0.2648280 -0.1497245 0.1666408 0.1001151 -1.0503674 -0.3706771 0.0763634 -1.2755206 0.4465114 1.9269659 INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.18/23 17.Représentation simultanée des individus actifs et supplémentaires: l Représentation simultanée des individus actifs et supplémentaires cl1<-z$li[,1] cl2<-z$li[,2] csup1<-ligsup$lisup[,1] csup2<-ligsup$lisup[,2] plot(cl1,cl2,type="n",main="Les individus",xlim=c(-8,8)) abline(h=0,v=0) text(cl1,cl2,row.names(z$li),) text(csup1,csup2,row.names(ligsup$lisup),col="red",cex=1.2) Les individus Peugeot 605 Sv24 Ford Scorpio 2900i Alfa-Romeo 33 1.5 ie Fiat UNO 1.4i.eAlfa-Romeo 155 2.0 BMW 730i Citroen Renault AX1.0 Clio Fiat 1.4 RN TIPO 1.8ie Citroen XM V6 Fiat UNO TDFiat TEMPRA 1.8ie Citroen XANTIA 2.0 2.0i Fiat CROMA Renault Twingo Ford Scorpio 2000i Renault 1921 1.8RN Citroen XM 2.0i Renault Prima TS Peugeot 405 SR Citroen ZX1.6 Renault Clio 1.9D Ford Fiesta 1400 Renault 19 1.4RN Ford Fiesta TD BMW 316i Peugeot Ford 306 MONDEO XTDT 1800i BMW 325 TD Renault 19 1.9 BMW dT 518i Citroen XANTIA 1.8I Fiat TIPO TD Peugeot 605 SLi ZX1.9TD Fiat Panda Citroen1000i.e AX14TDCitroen Peugeot 405 BMW STD 525 TD Fiat CROMA 2.5 TD Alfa-Romeo 164 2.5 T Peugeot 106 XN Peugeot Escort 306 XN 1800 TD TD Renault Ford Clio 1.2 RN Fiat TEMPRA Renault 21 Renault Prima Safrane2.0i TD Alfa-Romeo 155 TD Peugeot 405 GL Peugeot 106 XTDCitroen XANTIA 1.6I Citroen ZX1.11400 Ford Escort Citroen XANTIA TD Ford MONDEO TD Citroen XMSafrane2.5 TD12 Renault Espace 2.2i Renault d -2 -1 cl2 0 1 2 Citroen AX1.4i -3 Peugeot 605 SLD Renault Espace 2.1dT -5 0 5 cl1 INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.19/23 18.Représentation séparée des individus principaux et supplémentaires: l Pour plus de lisibilité, dans le cas présent, il est sans doute préférable de représenter séparément les individus supplémentaires plot(cl1,cl2,type="n",main="Individus supplém",xlim=c(-8,8)) abline(h=0,v=0) text(csup1,csup2,row.names(ligsup$lisup),col="red",cex=1.1) 2 Individus supplém Ford Scorpio 2000i Ford Fiesta 1400 Ford Fiesta TD Ford MONDEO 1800i Fiat Panda 1000i.e Ford Escort 1800BMW TD 525 TD -1 cl2 0 1 Ford Scorpio 2900i -3 -2 Ford Escort 1400 Ford MONDEO TD -5 0 5 cl1 INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.20/23 19.L'A.C.P., le programme complet : #lecture et préparation des données don<-na.omit(don) #exploration graphique des données layout(matrix(c(1:9),3,3)) for(i in 1:9) {hist(don[,i],main=names(don)[i],xlab="")} layout(1) pairs(don,main="Données voitures 1994") #le calcul de l'ACP. Les résultats sont stockés dans la variable z library(ade4) z<- dudi.pca(don, center = T, scale = T, scannf = F) #l'éboulis des valeurs propres en % inertie<-z$eig/sum(z$eig)*100 barplot(inertie,ylab="% d'inertie",names.arg=round(inertie,2)) title("Eboulis des valeurs propres en %") #les coordonnées lignes et colonnes cl1<-z$li[,1]; cc1<-z$co[,1]; cl2<-z$li[,2]; cc2<-z$co[,2] #graphique du plan des individus actifs plot(cl1,cl2,type="n",main="Les individus",xlim=c(-8,8)) abline(h=0,v=0) text(cl1,cl2,row.names(z$li),) #graphique du plan des variables actives plot(cc1,cc2,type="n",main="Les variables",xlim=c(-1,1),ylim=c(-1,1), asp=1,ylab= "Comp2 71.7%",xlab= "Comp1 12.6%") abline(h=0,v=0) text(cc1,cc2,row.names(z$co)) symbols(0,0,circles=1,inches=FALSE,add=TRUE) INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.21/23 20.Quelques références : l Logiciel R : R Development Core Team (2004). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. ISBN 3-900051-07-0, URL http://www.R-project.org. l Bibliothèque ade4 : Jean Thioulouse, Anne-Beatrice Dufour and Daniel Chessel (2004). ade4: Analysis of Environmental Data : Exploratory and Euclidean methods in Environmental sciences. R package version 1.3-3. http://pbil.univ-lyon1.fr/ADE-4 Mailing list: http://pbil.univ-lyon1.fr/ADE-4/adelist.html INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.22/23 21.Table des matières 1.Avant propos :....................................................................................................................................................................3 2.Rappels :..............................................................................................................................................................................4 3.Les données d'exemple :.................................................................................................................................................5 4.Préparation du tableau des données :.........................................................................................................................6 5.Description des variables, les histogrammes :..........................................................................................................7 6.Description des variables, contrôle de la linéarité des relations :......................................................................8 7.L'A.C.P. - fonction dudi.pca () de la bibliothèque ade4 :........................................................................................9 8.Les valeurs propres :.....................................................................................................................................................10 9.L'histogramme des valeurs propres...........................................................................................................................11 10.Interprétation des composantes : les contributions "relatives"......................................................................12 11.Présentation des résultats - le plan principal :......................................................................................................13 12.Présentation des résultats - le plan des individus :.............................................................................................14 13.Présentation des résultats - le plan des variables :.............................................................................................15 14.Graphique du plan des variables :.............................................................................................................................16 15.Les données supplémentaires :..................................................................................................................................17 16.Les individus supplémentaires :.................................................................................................................................18 17.Représentation simultanée des individus actifs et supplémentaires:.............................................................19 18.Représentation séparée des individus principaux et supplémentaires:..........................................................20 19.L'A.C.P., le programme complet :..............................................................................................................................21 20.Quelques références :................................................................................................................................................22 INRA Montpellier - Analyses en composantes principales - Juillet 2005 p.23/23