acp voitures 1-méthode - iml.univ-mrs.friml.univ-mrs.fr/~reboul/corvoiture.pdf · acp voitures...

46
ACP Voitures 1- Méthode acp=princomp(voit,cor=T) Call: princomp(x = voit, cor = T) 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.

Upload: hoangkhanh

Post on 03-Dec-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

ACP Voitures1- Méthode

acp=princomp(voit,cor=T)

Call:princomp(x = voit, cor = T)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 Voitures1- Méthode

summary(acp)

Importanceof components:

Comp.1 Comp.2 Comp.3 Comp.4 Comp.5

Standard deviation 2.1577815 0.9566721 0.49033725 0.32048327 0.25427593Standard 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 Voitures2- 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 Voitures2- 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 Voitures2- Choix du nombre d’axes

� Scree-test de Catelllist(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 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 Voitures2- 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.à peu près 93% de l’inertie totale.

ACP Voitures3- 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 Voitures3- 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 qlt

Renault_21 - 0.1805120 0.03357692

tab2=tab[tab[,1]>0,]

contrib qlt

Honda_Civic 2.02290470 0.8766111128Renault_21 - 0.1805120 0.03357692

Bmw_530i -3.9456318 0.93860336

Rover_827i -3.1938972 0.94429690

Renault_25 -3.4396227 0.93583367

Opel_Omega -1.4995690 0.66739260

Peugeot_405_Break -0.5865307 0.61965973

Ford_Sierra -0.7393253 0.63132099

Bmw_325iX -1.7061778 0.50367479

Audi_90_Quattro -1.4135416 0.56974756

Ford_Scorpio -2.7950566 0.91565592

Renault_Espace -0.9199997 0.44530992

VW_Caravelle -1.2219947 0.19177255

Honda_Civic 2.02290470 0.8766111128

Renault_19 0.77851246 0.6623990534

Fiat_Tipo 1.28979214 0.7639797857

Peugeot_405 0.27382089 0.1069827320

Citroen_BX 0.50464772 0.4826435993

Nissan_Vanette 0.02474295 0.0001191134

Ford_Fiesta 3.49885607 0.9336125401

Fiat_Uno 3.75768985 0.9768995537

Peugeot_205 2.61879210 0.8857026180

Peugeot_205_Rallye 2.28877205 0.6985932945

Seat_Ibiza_SX_I 1.93307264 0.7872635901

Citroen-ax-sport 2.65025551 0.7788498294

ACP Voitures3- 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.

0.0

0.2

Com

p.2

Honda_Civic

Renault_19

Fiat_TipoPeugeot_405

Citroen_BX

Bmw_530iRover_827i

Renault_25

Peugeot_405_Break

Ford_Sierra

Bmw_325iX

Audi_90_Quattro

Ford_ScorpioFiat_Uno

Peugeot_205

Peugeot_205_Rallye

Seat_Ibiza_SX_I

Citroen-ax-sport

-4 -2 0 2

02

Cylindre

Puissance

Vitesse

-0.4 -0.2 0.0 0.2

-0.4

-0.2

Comp.1

Com

p.2

Fiat_TipoPeugeot_405

Renault_21

Opel_Omega

Ford_Sierra

Renault_Espace

Nissan_Vanette

VW_Caravelle

Ford_Fiesta

-4-2

PoidsLongueur

Largeur

ACP Voitures3- 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 Voitures3- 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.puissantes.

ACP Voitures4- 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 Voitures4- Etude de l’axe 2

qlt=(acp$scores^2/apply(acp$scores^2,1,sum))[,2]

tab=cbind(contrib=acp$scores[,2],qlt)tab1=tab[tab[,1]<0,]

contrib qlt

tab2=tab[tab[,1]>0,]

contrib qltRenault_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

contrib qlt

Honda_Civic 0.3199428 0.02192808

Bmw_530i 0.8353867 0.04207500

Rover_827i 0.7714359 0.05508920

Renault_25 0.6092422 0.02936007

Peugeot_405_Break 0.1431626 0.03691738

Bmw_325iX 1.3627420 0.32131344

Audi_90_Quattro 1.0893324 0.33836555

Peugeot_205 0.4150747 0.02225043

Peugeot_205_Rallye 1.4787932 0.29163137

Seat_Ibiza_SX_I 0.9014207 0.17119018

Citroen-ax-sport 1.2951047 0.18598931

ACP Voitures4- 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) -sportives (et accessoirement routières) -Bmw_325iX, Audi_90_Quattro Peugeot_205_Rallye, Seat_Ibiza_SX_I et Citroen-ax-sport -

0.0

0.2

Com

p.2

Honda_Civic

Renault_19

Fiat_TipoPeugeot_405

Citroen_BX

Bmw_530iRover_827i

Renault_25

Peugeot_405_Break

Ford_Sierra

Bmw_325iX

Audi_90_Quattro

Ford_ScorpioFiat_Uno

Peugeot_205

Peugeot_205_Rallye

Seat_Ibiza_SX_I

Citroen-ax-sport

-4 -2 0 2

02

Cylindre

Puissance

Vitesse

-0.4 -0.2 0.0 0.2

-0.4

-0.2

Comp.1

Com

p.2

Fiat_TipoPeugeot_405

Renault_21

Opel_Omega

Ford_Sierra

Renault_Espace

Nissan_Vanette

VW_Caravelle

Ford_Fiesta

-4-2

PoidsLongueur

Largeur

ACP Voitures4- 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.contribuent le plus qui sont le mieux représentées.

ACP Voitures4- Etude de l’axe 2

tab1=loadings(acp)[loadings(acp)[,2]<0,2]

tab2=loadings(acp)[loadings(acp)[,2]>0,2]

Poids Longueur Largeur

-0.2551693 -0.2955840 -0.4783191

Cylindre Puissance Vitesse

0.03396424 0.42122241 0.66343624

ACP Voitures4- 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 lentes aux sportives (Bmw_325iX ,Audi_90_Quattro Peugeot_205_Rallye, Seat_Ibiza_SX_I et Citroen-ax-sport), de petit gabarit (moins larges que la moyenne et aussi accessoirement moins longues et moins lourdes) mais roulant vite et puissantes.

Classification1- 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 écarts-types (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

Classification1- 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) à 6-sum(dib)=0.

Classification2- 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[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")

Classification2- 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[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")

Classification2- Choix du nombre de classes

�Dendogramme

Classification2- 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 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.

Classification3- Identification des classes

>plot(cl,hang=-1,cex=0.7); rect.hclust(cl, k=7, border="red"); rect.hclust(cl, k=7, border=« blue")

Classification3- Identification des classes

• Vérification de la stabilité des classes par partitionnement

� km=kmeans(voi,7) ; sort(km$cluster)

Renault_19 Fiat_Tipo Peugeot_405 Renault_21

1 1 1 1

Citroen_BX Bmw_325iX Audi_90_Quattro Opel_Omega

1 2 2 3

Peugeot_405_Break Ford_Sierra Renault_Espace Honda_Civic

3 3 3 4

Peugeot_205_Rallye Seat_Ibiza_SX_I Citroen-ax-sport Bmw_530i

4 4 4 5

Rover_827i Renault_25 Ford_Scorpio Ford_Fiesta

5 5 5 6

Fiat_Uno Peugeot_205 Nissan_Vanette VW_Caravelle

6 6 7 7

Classification3- Identification des classes

Classification3- 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

Petites Berlines Grandes volumin routières vans petitesPetites sportives

Berlines moyennes

Grandes routières

volumineuses

routières vans petites

Honda_Civic

Peugeot_205_Rallye Seat_Ibiza_SX_I

Citroen-ax-sport

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_Espace

Bmw_325iX Audi_90_Quattro

Nissan_Vanette VW_Caravelle

Ford_FiestaFiat_Uno

Peugeot_205

Classification4- Caractérisation

� Calcul des moyennes par classes sur le tableau centré réduit

> km$center (classes de la k-means)

Cylindre Puissance Vitesse Poids Longueur Largeur

1 -0.2413439 -0.6602082 -0.18972741 -0.3053255 0.05971492 0.04893725

2 0.6537910 1.3651911 1.13093740 0.6616618 0.34387555 -0.31141884

3 0.1289199 0.1799770 0.13841323 0.4287864 0.69598763 0.72293659

4 -1.0543378 -0.4389682 -0.04388712 -1.2567878 -1.44757191 -1.04547753

5 1.7015981 1.5956494 1.43477133 1.2493949 1.18400263 1.02323332

6 -1.2289723 -1.3432427 -1.48878625 -1.2752699 -1.31578727 -1.49036158

7 0.2406667 -0.3731230 -1.48203439 1.1717698 0.61568137 1.02323332

On compare les moyennes à 0.

Classification4- 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 2 3 4 5 6 7

0.6293026 4.2232372 1.2590642 6.0742505 11.5099583 11.1099455 5.1926815 0.6293026 4.2232372 1.2590642 6.0742505 11.5099583 11.1099455 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)}

Classification4- Caractérisation

• Moyennes brutes (avec classes de la CAH)

C1 C2 C3 C4 C5 C6 C7 total Cylindre 1361.25 1781.4 2785.50 1972.75 2244.0 2030.5 1271.00 1906.12 Puissance 97.00 88.6 174.25 120.50 165. 5 99.5 62.67 113.67 Vitesse 182.00 178.4 218.50 186.50 211.0 146.5 146.33 183.08 Poids 827.50 1042.0 1392.50 1207.50 1260.0 1375.0 823.33 1110.83 Longueur 363.00 424.0 469.50 449.75 435.5 446.5 368.33 421.58 Largeur 161 169.2 176.50 174.25 166.5 176.5 157.67 168.83 excentricité 6.07 0.63 11.51 1.26 4.22 5.19 11.12 0

Classification4- Caractérisation

Classification5- Représentation dans les axes factoriels de l’ACP

� (programme n°3 du cours modifié

cl=hclust(dist(voi), method="ward")

p = princomp(voi) 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,data=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.0323493520.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 Vitesse Poids Longueur Lar geur

1 1361.250 97.00000 182.0000 827.5000 363.0000 161.0000

2 1781.400 88.60000 178.4000 1042.0000 424.0000 16 9.2000

3 2785.500 174.25000 218.5000 1392.5000 469.5000 176. 50003 2785.500 174.25000 218.5000 1392.5000 469.5000 176. 5000

4 1972.750 120.50000 186.5000 1207.5000 449.7500 17 4.2500

5 2244.000 165.50000 211.0000 1260.0000 435.5000 16 6.5000

6 2030.500 99.50000 146.5000 1375.0000 446.5000 176.5000

7 1271.000 62.66667 146.3333 823.3333 368.3333 157.6667

1906.125 113.66667 183.0833 1110.8333 421.5833 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éristiqu es sont faibles à celles dont toutes les caractéristiques s ont 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