ACP Voitures 1
Transcription
ACP Voitures 1
ACP Voitures 1- Méthode acp=princomp(voit,cor=T) Call: princomp(x = voit, cor = T) Standard deviations: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 2.1577815 0.9566721 0.4903373 0.3204833 0.2542759 0.1447788 6 variables and 24 observations. ACP Voitures 1- Méthode summary(acp) Importance of components: Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Standard deviation 2.1577815 0.9566721 0.49033725 0.32048327 0.25427593 Proportion of Variance 0.7760035 0.1525369 0.04007177 0.01711825 0.01077604 Cumulative Proportion 0.7760035 0.9285404 0.96861222 0.98573047 0.99650652 Comp.6 Standard deviation 0.144778802 Proportion of Variance 0.003493484 Cumulative Proportion 1.000000000 Rq : sum(acp$sdev^2)=6 ACP Voitures 2- Choix du nombre d’axes Critère de Kaiser : (acp$sdev)^2 Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 4.65602121 0.91522148 0.24043062 0.10270953 0.06465625 0.02096090 On ne retient que la première composante qui retient 77,6% de l’inertie totale ACP Voitures 2- Choix du nombre d’axes Critère du coude : plot(acp) On sélectionne deux axes, représentant 92,8% de l’inertie totale. ACP Voitures 2- Choix du nombre d’axes Scree-test de Catell list(acp$sdev^2,diff(acp$sdev^2),diff(diff(acp$sdev^2))) [[1]] Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 4.65602121 0.91522148 0.24043062 0.10270953 0.06465625 0.02096090 [[2]] Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 -3.74079973 -0.67479086 -0.13772109 -0.03805328 -0.04369535 [[3]] Comp.3 Comp.4 Comp.5 Comp.6 3.066008870 0.537069767 0.099667814 -0.005642069 Conduit à retenir 3 composantes ACP Voitures 2- Choix du nombre d’axes Conclusion : Un bon compromis est de considérer deux composantes, représentant à peu près 93% de l’inertie totale. ACP Voitures 3- Etude de l’axe 1 Individus : Contribuent essentiellement les individus dont les coordonnées sur l’axe 1 (composantes principales) sont > en valeur absolue à la racine de la valeur propre d’ordre 1, égale à 2.1577815, sous réserve qu’ils soient bien représentés sur l’axe. ACP Voitures 3- Etude de l’axe 1 qlt=(acp$scores^2/apply(acp$scores^2,1, sum))[,1] tab=cbind(contrib=acp$scores[,1],qlt) tab1=tab[tab[,1]<0,] contrib Renault_21 -0.1805120 Bmw_530i -3.9456318 Rover_827i -3.1938972 Renault_25 -3.4396227 Opel_Omega -1.4995690 Peugeot_405_Break -0.5865307 Ford_Sierra -0.7393253 Bmw_325iX -1.7061778 Audi_90_Quattro -1.4135416 Ford_Scorpio -2.7950566 Renault_Espace -0.9199997 VW_Caravelle -1.2219947 qlt 0.03357692 0.93860336 0.94429690 0.93583367 0.66739260 0.61965973 0.63132099 0.50367479 0.56974756 0.91565592 0.44530992 0.19177255 tab2=tab[tab[,1]>0,] contrib Honda_Civic Renault_19 Fiat_Tipo Peugeot_405 Citroen_BX Nissan_Vanette Ford_Fiesta Fiat_Uno Peugeot_205 Peugeot_205_Rallye Seat_Ibiza_SX_I Citroen-ax-sport 2.02290470 0.77851246 1.28979214 0.27382089 0.50464772 0.02474295 3.49885607 3.75768985 2.61879210 2.28877205 1.93307264 2.65025551 qlt 0.8766111128 0.6623990534 0.7639797857 0.1069827320 0.4826435993 0.0001191134 0.9336125401 0.9768995537 0.8857026180 0.6985932945 0.7872635901 0.7788498294 ACP Voitures 3- Etude de l’axe 1 L'axe 1 oppose la Bmw 530i, la Rover 827i, la Renault 25 et la Ford Scorpio à la Fiat Uno, la Ford Fiesta, la Citroen-ax-sport, la Peugeot 205 Rallye et la Peugeot 205 et éventuellement Seat Ibiza SX I et le Honda Civic, c’est à dire les grosses berlines aux citadines. Tous les modèles sont assez bien représentés sur l'axe 1, à part la Nissan Vanette, la Peugeot_405 et la Renault 21. -4 -2 2 Peugeot_205_Rallye Vitesse Bmw_325iX Citroen-ax-sport Audi_90_Quattro Puissance Bmw_530i Rover_827i 2 0.2 0 Seat_Ibiza_SX_I Renault_25 Fiat_Uno Ford_Scorpio 0 0.0 Peugeot_405_Break Cylindre Renault_19 Citroen_BX Ford_SierraPeugeot_405 Fiat_Tipo Ford_Fiesta -2 Renault_21 Opel_Omega Renault_Espace Largeur -4 -0.2 Poids Longueur -0.4 Comp.2 Peugeot_205 Honda_Civic Nissan_Vanette VW_Caravelle -0.4 -0.2 0.0 Comp.1 0.2 ACP Voitures 3- Etude de l’axe 1 Variables : On retient les variables telles que la coordonnée de u1 (premier vecteur propre) est supérieur en valeur absolue à 1/racine(nombre de variables)= 0.4082483. Il n’y a pas de problème de représentativité car ce sont les variables qui contribuent le plus qui sont le mieux représentées. loadings(acp)[,1] Cylindre Puissance Vitesse Poids Longueur Largeur [1,] -0.4442019 -0.4144904 -0.3435401 -0.4303213 -0.4302088 -0.3776328 L’axe1 isole les modèles ayant de fortes valeurs de toutes leurs caractéristiques aux autres (effet taille) ACP Voitures 3- Etude de l’axe 1 Conclusion pour l’axe 1: l’axe 1 est un axe de « taille ». Il oppose les grosses berlines puissantes et de grande dimension aux citadines de faible dimension et peu puissantes. ACP Voitures 4- Etude de l’axe 2 Individus : Contribuent essentiellement les individus dont les coordonnées sur l’axe 2 (composantes principales) sont > en valeur absolue à la racine de la valeur propre d’ordre 2, égale à 0.9566721 , sous réserve qu’ils soient bien représentés sur l’axe. ACP Voitures 4- Etude de l’axe 2 qlt=(acp$scores^2/apply(acp$scores^2,1,su m))[,2] tab=cbind(contrib=acp$scores[,2],qlt) tab1=tab[tab[,1]<0,] contrib qlt Renault_19 -0.13290412 1.930481e-02 Fiat_Tipo -0.43420734 8.658382e-02 Peugeot_405 -0.46469601 3.081190e-01 Renault_21 -0.63714766 4.183204e-01 Citroen_BX -0.20760635 8.168291e-02 Opel_Omega -0.77567731 1.785709e-01 Ford_Sierra -0.43459960 2.181513e-01 Ford_Scorpio -0.12172675 1.736693e-03 Renault_Espace -0.88853769 4.153734e-01 Nissan_Vanette -1.82044478 6.447820e-01 VW_Caravelle -2.38484782 7.304141e-01 Ford_Fiesta -0.90432558 6.236834e-02 Fiat_Uno -0.01491689 1.539446e-05 tab2=tab[tab[,1]>0,] contrib Honda_Civic 0.3199428 Bmw_530i 0.8353867 Rover_827i 0.7714359 Renault_25 0.6092422 Peugeot_405_Break 0.1431626 Bmw_325iX 1.3627420 Audi_90_Quattro 1.0893324 Peugeot_205 0.4150747 Peugeot_205_Rallye 1.4787932 0.9014207 Seat_Ibiza_SX_I Citroen-ax-sport 1.2951047 qlt 0.02192808 0.04207500 0.05508920 0.02936007 0.03691738 0.32131344 0.33836555 0.02225043 0.29163137 0.17119018 0.18598931 ACP Voitures 4- Etude de l’axe 2 L’axe 2 oppose les voitures familiales (vans ou volumineuses) - VW caravelle , Nissan caravelles et accessoirement ford fiesta et renault espace- , aux sportives (et accessoirement routières) Bmw_325iX, Audi_90_Quattro Peugeot_205_Rallye, Seat_Ibiza_SX_I et Citroen-axsport - -4 -2 2 Peugeot_205_Rallye Vitesse Bmw_325iX Citroen-ax-sport Audi_90_Quattro Puissance Bmw_530i Rover_827i 2 0.2 0 Seat_Ibiza_SX_I Renault_25 Fiat_Uno Ford_Scorpio 0 0.0 Peugeot_405_Break Cylindre Renault_19 Citroen_BX Ford_SierraPeugeot_405 Fiat_Tipo Ford_Fiesta -2 Renault_21 Opel_Omega Renault_Espace Largeur -4 -0.2 Poids Longueur -0.4 Comp.2 Peugeot_205 Honda_Civic Nissan_Vanette VW_Caravelle -0.4 -0.2 0.0 Comp.1 0.2 ACP Voitures 4- Etude de l’axe 2 Variables : On retient les variables telles que la coordonnée de u2 (deuxième vecteur propre) est supérieur en valeur absolue à 1/racine(nombre de variables)= 0.4082483. Il n’y a pas de problème de représentativité car ce sont les variables qui contribuent le plus qui sont le mieux représentées. ACP Voitures 4- Etude de l’axe 2 tab1=loadings(acp)[loadings(acp)[, 2]<0,2] Poids Longueur Largeur -0.2551693 -0.2955840 -0.4783191 tab2=loadings(acp)[loadings(acp)[,2]> 0,2] Cylindre Puissance Vitesse 0.03396424 0.42122241 0.66343624 ACP Voitures 4- Etude de l’axe 2 Conclusion : L’axe 2 oppose les voitures familiales (VW caravelle , Nissan caravelles et accessoirement ford fiesta et renault espace), imposantes mais lentes aux sportives (Bmw_325iX ,Audi_90_Quattro Peugeot_205_Rallye, Seat_Ibiza_SX_I et Citroen-axsport), de petit gabarit (moins larges que la moyenne et aussi accessoirement moins longues et moins lourdes) mais roulant vite et puissantes. Classification 1- Méthode Ici, il y a peu d’individus et n-p est raisonnable. La méthode la plus appropriée est la CAH. On va utiliser la métrique inverse des écartstypes (tableau centré réduit, puis utilisation de la métrique Euclidienne), et la distance de Ward comme stratégie d’agrégation. >voi=scale(voit)*sqrt(24/23) On peut vérifier que l’inertie du nuage de points individus=nombre de variables (car le tableau est centré réduit ): > sum(voi^2)/24 [1] 6 Classification 1- Méthode > cl=hclust(dist(voi)^2, method="ward") Perte d’inertie inter-classes (distance d’agrégation) à chaque agrégation : >dib=cl$height/48 [1] 0.003928178 0.009030076 0.011413142 0.011587196 0.012513408 0.015491365 [7] 0.023291571 0.023520352 0.026305100 0.032032549 0.035005189 0.036628865 [13] 0.040100034 0.047724631 0.058974617 0.061522706 0.105877746 0.199606047 [19] 0.225112404 0.226436998 0.292694735 1.429194809 3.072008281 Classification on vérifie: >sum(dib) [1] 6 Ainsi, l’inertie interclasses passe de 6 (=inertie totale) à 6sum(dib)=0. Classification 2- Choix du nombre de classes Pourcentage d’inertie inter conservé à chaque itération > r2=(6-cumsum(dib))/6;r2 [1] 9.993453e-01 9.978403e-01 9.959381e-01 9.940069e-01 9.919213e-01 [6] 9.893394e-01 9.854575e-01 9.815375e-01 9.771533e-01 9.718145e-01 [11] 9.659803e-01 9.598755e-01 9.531922e-01 9.452381e-01 9.354090e-01 [16] 9.251552e-01 9.075089e-01 8.742412e-01 8.367225e-01 7.989830e-01 [21] 7.502005e-01 5.120014e-01 -2.960595e-16 >r2=r2[24-1:24] > plot(r2,type="b", main="R² : % de variance inter expliquée", cex=0.5, xlab=« Nombre de classes") Classification 2- Choix du nombre de classes Pourcentage de variation perdu à chaque itération > sprs2=dib/6;sprs2 [1] 0.0006546964 0.0015050127 0.0019021903 0.0019311993 0.0020855680 [6] 0.0025818941 0.0038819286 0.0039200586 0.0043841833 0.0053387582 [11] 0.0058341981 0.0061048108 0.0066833390 0.0079541051 0.0098291029 [16] 0.0102537843 0.0176462910 0.0332676746 0.0375187341 0.0377394996 [21] 0.0487824558 0.2381991349 0.5120013802 >sprs=sprs2[24-1:24] > plot(sprs2,type="b", cex=0.5, main="R² semi-partiel",xlab=« Nombre de classes") Classification 2- Choix du nombre de classes Dendogramme Classification 2- Choix du nombre de classes Conclusion : Avec le R2 : La première chute notable du % de variance interclasses eu lieu au passage de 7 à 6 classes, où l’on passe de 91% à 87% de l’inertie totale . Un deuxième décrochement du % de variance interclasses a lieu lorsque l’on passe à deux classes. Jusqu’à 3 classes, la perte d’inertie inter est tolérable 3 classes restituent encore 75% de l’inertie totale (ie, de l’information contenue dans les données). Il semble que le bon choix soit 7 classes, mais si cela fait trop ou qu’elles ne sont pas interprétables, on peut en choisir 3. Avec le R2 semi-partiel : le pic suivi d’un creux dans le graphe se fait au passage de 6 à 7 classes, ensuite la perte est beaucoup trop importante, ce qui conduit par ce critère à choisir 7 classes. On retrouve un saut sur le dendogramme au passage de 7 à 6 classes. Classification 3- Identification des classes >plot(cl,hang=-1,cex=0.7); rect.hclust(cl, k=7, border="red"); rect.hclust(cl, k=7, border=« blue") Classification 3- Identification des classes • Vérification de la stabilité des classes par partitionnement km=kmeans(voi,7) ; sort(km$cluster) Renault_19 1 Citroen_BX 1 Peugeot_405_Break 3 Peugeot_205_Rallye 4 Rover_827i 5 Fiat_Uno 6 Fiat_Tipo 1 Bmw_325iX 2 Ford_Sierra 3 Seat_Ibiza_SX_I 4 Renault_25 5 Peugeot_205 6 Peugeot_405 1 Audi_90_Quattro 2 Renault_Espace 3 Citroen-ax-sport 4 Ford_Scorpio 5 Nissan_Vanette 7 Renault_21 1 Opel_Omega 3 Honda_Civic 4 Bmw_530i 5 Ford_Fiesta 6 VW_Caravelle 7 Classification 3- Identification des classes Classification 3- Identification des classes C1(n=4) C4 C2(n=5) C1 C3(n=4) C5 C4(n=4) C3 C5(n=2) C2 C6(n=2) C7 C7(n=3) C6 Berlines Petites Grandes volumin sportives moyennes routières euses routières vans petites Honda_Civic Peugeot_205 _Rallye Seat_Ibiza_S X_I Citroen-axsport Bmw_325iX Audi_90_Qu attro Ford_Fiesta Fiat_Uno Peugeot_205 Renault_19 Fiat_Tipo Peugeot_405 Renault_21 Citroen_BX Bmw_530i Rover_827i Renault_25 Ford_Scorpio Opel_Omega Peugeot_405 _Break Ford_Sierra Renault_Esp ace Nissan_Vane tte VW_Caravell e Classification 4- Caractérisation Calcul des moyennes par classes sur le tableau centré réduit > km$center (classes de la k-means) 1 2 3 4 5 6 7 Cylindre Puissance -0.2413439 -0.6602082 0.6537910 1.3651911 0.1289199 0.1799770 -1.0543378 -0.4389682 1.7015981 1.5956494 -1.2289723 -1.3432427 0.2406667 -0.3731230 Vitesse Poids Longueur Largeur -0.18972741 -0.3053255 0.05971492 0.04893725 1.13093740 0.6616618 0.34387555 -0.31141884 0.13841323 0.4287864 0.69598763 0.72293659 -0.04388712 -1.2567878 -1.44757191 -1.04547753 1.43477133 1.2493949 1.18400263 1.02323332 -1.48878625 -1.2752699 -1.31578727 -1.49036158 -1.48203439 1.1717698 0.61568137 1.02323332 On compare les moyennes à 0. Classification 4- Caractérisation Calcul de l’excentricité des classes= distance renormalisée du centre de gravité de la classe au centre de gravité du nuage= distance du centre de gravité du tableau centré réduit à 0 apply(km$centers^2,1,sum) 1 0.6293026 2 4.2232372 3 1.2590642 4 5 6 6.0742505 11.5099583 11.1099455 7 5.1926815 Calcul des moyennes par classes du tableau brut tab= cbind(voit,class=cutree(cl,k=7)) t=matrix(rep(0,49),7,7) for(i in 1:7){t[i,]= apply(tab[which(tab[,7]==i),],2,mean)} Classification 4- Caractérisation • Moyennes brutes (avec classes de la CAH) C1 C2 C3 C4 C5 C6 Cylindre 1361.25 1781.4 2785.50 1972.75 2244.0 2030.5 Puissance 97.00 88.6 174.25 120.50 165.5 99.5 Vitesse 182.00 178.4 218.50 186.50 211.0 146.5 Poids 827.50 1042.0 1392.50 1207.50 1260.0 1375.0 Longueur 363.00 424.0 469.50 449.75 435.5 446.5 Largeur 161 169.2 176.50 174.25 166.5 176.5 excentricité 6.07 0.63 11.51 1.26 4.22 5.19 C7 total 1271.00 1906.12 62.67 113.67 146.33 183.08 823.33 1110.83 368.33 421.58 157.67 168.83 11.12 0 Classification 4- Caractérisation Classification 5- Représentation dans les axes factoriels de l’ACP (programme n°3 du cours modifié cl=hclust(dist(voi), method="ward") p = princomp(voi) u = p$loadings x = (t(u) %*% t(voi))[1:2,] x = t(x) plot(x, col=cutree(cl, k=7), pch=3, lwd=3, xlab="caractéristiques fortes--faibles", ylab="volumineuses---puissantes") text( x[,1], x[,2], attr(x, "dimnames")[[1]],col=cutree(cl, k=7),cex=0.7 ) Classification Discrimination >tab= cbind(voit,class=cutree(cl,k=7)) >library(MASS) >a=lda(class~Cylindre+Puissance+Vitesse+Poids+Longueur+Largeur,dat a=tab) Call: lda(class ~ Cylindre + Puissance + Vitesse + Poids + Longueur + Largeur, data = tab) Prior probabilities of groups: 1 2 3 4 5 6 7 0.16666667 0.20833333 0.16666667 0.16666667 0.08333333 0.08333333 0.12500000 Discrimination Group means: Cylindre Puissance Vitesse Poids Longueur Largeur 1 1361.25 97.00000 182.0000 827.5000 363.0000 161.0000 2 1781.40 88.60000 178.4000 1042.0000 424.0000 169.2000 3 2785.50 174.25000 218.5000 1392.5000 469.5000 176.5000 4 1972.75 120.50000 186.5000 1207.5000 449.7500 174.2500 5 2244.00 165.50000 211.0000 1260.0000 435.5000 166.5000 6 2030.50 99.50000 146.5000 1375.0000 446.5000 176.5000 7 1271.00 62.66667 146.3333 823.3333 368.3333 157.6667 Discrimination Coefficients of linear discriminants: LD1 LD2 LD3 LD4 LD5 Cylindre 0.0016867438 -0.0055426310 0.0006515035 0.004406976 0.004707521 Puissance 0.0188485289 0.2322451672 -0.1335815806 0.018063675 0.032349352 Vitesse 0.0500851386 -0.3519812675 0.0868250743 -0.061434408 0.003717565 Poids 0.0056690829 0.0002716697 0.0058568595 -0.013243823 0.002007374 Longueur 0.0009633568 0.0854434933 0.0135398604 0.060653891 0.069579423 Largeur 0.1270096422 -0.2917519647 0.1690229430 -0.186982209 0.143698029 ………………………… Discrimination Proportion of trace: LD1 LD2 LD3 LD4 LD5 LD6 0.5131 0.3531 0.1091 0.0134 0.0097 0.0015 Deux axes conservent à peu près 87% de l’information donc on n’interprètera que les deux premiers axes. Discrimination > rbind(a$mean,mean(voi)) Cylindre Puissance 1 1361.250 97.00000 2 1781.400 88.60000 3 2785.500 174.25000 4 1972.750 120.50000 5 2244.000 165.50000 6 2030.500 99.50000 7 1271.000 62.66667 1906.125 113.66667 Vitesse 182.0000 178.4000 218.5000 186.5000 211.0000 146.5000 146.3333 183.0833 Poids Longueur 827.5000 363.0000 1042.0000 424.0000 1392.5000 469.5000 1207.5000 449.7500 1260.0000 435.5000 1375.0000 446.5000 823.3333 368.3333 1110.8333 421.5833 Largeur 161.0000 169.2000 176.5000 174.2500 166.5000 176.5000 157.6667 168.8333 Discrimination > D=matvoi%*%a$scaling > cor(voi,D[,1:2]) LD1 LD2 Cylindre 0.9549318 0.05354816 Puissance 0.9248392 -0.05328764 Vitesse 0.7881948 -0.46536482 Poids 0.9065631 0.33102158 Longueur 0.8929594 0.16274329 Largeur 0.7844772 0.14437622 L’axe 1 oppose les voitures dont les caractéristiques sont faibles à celles dont toutes les caractéristiques sont fortes. L’axe 2 oppose les voitures lourdes et peu rapides aux autres. Discrimination >plot(a, col = as.numeric(tab[ ,7]),dimen=2,xlab="faible-----forte",ylab="-----+lourdes et lentes") Discrimination