ACP

#traitement

library(factoextra)
## Le chargement a nécessité le package : ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(FactoMineR)
data("mtcars")
mtcars$country=c(rep("Japon",3),rep("us",4),rep("Europe",7),rep("us",3),"Europe",rep("japon",3),rep("us",4),rep("Europe",3),"us",rep("Europe",3))
base =mtcars
names(base)
##  [1] "mpg"     "cyl"     "disp"    "hp"      "drat"    "wt"      "qsec"    "vs"     
##  [9] "am"      "gear"    "carb"    "country"
View(base)
summary(base)
##       mpg             cyl             disp             hp             drat      
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0   Min.   :2.760  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5   1st Qu.:3.080  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0   Median :3.695  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7   Mean   :3.597  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0   3rd Qu.:3.920  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0   Max.   :4.930  
##        wt             qsec             vs               am              gear      
##  Min.   :1.513   Min.   :14.50   Min.   :0.0000   Min.   :0.0000   Min.   :3.000  
##  1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:3.000  
##  Median :3.325   Median :17.71   Median :0.0000   Median :0.0000   Median :4.000  
##  Mean   :3.217   Mean   :17.85   Mean   :0.4375   Mean   :0.4062   Mean   :3.688  
##  3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:4.000  
##  Max.   :5.424   Max.   :22.90   Max.   :1.0000   Max.   :1.0000   Max.   :5.000  
##       carb         country         
##  Min.   :1.000   Length:32         
##  1st Qu.:2.000   Class :character  
##  Median :2.000   Mode  :character  
##  Mean   :2.812                     
##  3rd Qu.:4.000                     
##  Max.   :8.000

remarque taille des données pas homogène

#in acp

acp= PCA(base,scale.unit = T,quali.sup = 12)
## Warning: ggrepel: 9 unlabeled data points (too many overlaps). Consider increasing
## max.overlaps

#scale.unit pour une homogeneité (centré et reduire), quali.sup=12 ajouter la 12eme var qui est quali
#obtenir les propriétés de l'objet acp 
acp
## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 32 individuals, described by 12 variables
## *The results are available in the following objects:
## 
##    name                description                                          
## 1  "$eig"              "eigenvalues"                                        
## 2  "$var"              "results for the variables"                          
## 3  "$var$coord"        "coord. for the variables"                           
## 4  "$var$cor"          "correlations variables - dimensions"                
## 5  "$var$cos2"         "cos2 for the variables"                             
## 6  "$var$contrib"      "contributions of the variables"                     
## 7  "$ind"              "results for the individuals"                        
## 8  "$ind$coord"        "coord. for the individuals"                         
## 9  "$ind$cos2"         "cos2 for the individuals"                           
## 10 "$ind$contrib"      "contributions of the individuals"                   
## 11 "$quali.sup"        "results for the supplementary categorical variables"
## 12 "$quali.sup$coord"  "coord. for the supplementary categories"            
## 13 "$quali.sup$v.test" "v-test of the supplementary categories"             
## 14 "$call"             "summary statistics"                                 
## 15 "$call$centre"      "mean of the variables"                              
## 16 "$call$ecart.type"  "standard error of the variables"                    
## 17 "$call$row.w"       "weights for the individuals"                        
## 18 "$call$col.w"       "weights for the variables"

pour voir les resultats sur les les 2 première dimention il faut

summary(acp,ncp=2)
## 
## Call:
## PCA(X = base, scale.unit = T, quali.sup = 12) 
## 
## 
## Eigenvalues
##                        Dim.1   Dim.2   Dim.3   Dim.4   Dim.5   Dim.6   Dim.7   Dim.8
## Variance               6.608   2.650   0.627   0.270   0.223   0.212   0.135   0.123
## % of var.             60.076  24.095   5.702   2.451   2.031   1.924   1.230   1.117
## Cumulative % of var.  60.076  84.172  89.873  92.324  94.356  96.279  97.509  98.626
##                        Dim.9  Dim.10  Dim.11
## Variance               0.077   0.052   0.022
## % of var.              0.700   0.473   0.200
## Cumulative % of var.  99.327  99.800 100.000
## 
## Individuals (the 10 first)
##                       Dist    Dim.1    ctr   cos2    Dim.2    ctr   cos2  
## Mazda RX4         |  2.234 | -0.657  0.204  0.087 |  1.735  3.551  0.604 |
## Mazda RX4 Wag     |  2.081 | -0.629  0.187  0.091 |  1.550  2.833  0.555 |
## Datsun 710        |  2.987 | -2.779  3.653  0.866 | -0.146  0.025  0.002 |
## Hornet 4 Drive    |  2.521 | -0.312  0.046  0.015 | -2.363  6.584  0.879 |
## Hornet Sportabout |  2.456 |  1.974  1.844  0.646 | -0.754  0.671  0.094 |
## Valiant           |  3.014 | -0.056  0.001  0.000 | -2.786  9.151  0.855 |
## Duster 360        |  3.187 |  3.003  4.264  0.888 |  0.335  0.132  0.011 |
## Merc 240D         |  2.841 | -2.055  1.998  0.523 | -1.465  2.531  0.266 |
## Merc 230          |  3.733 | -2.287  2.474  0.375 | -1.984  4.639  0.282 |
## Merc 280          |  1.907 | -0.526  0.131  0.076 | -0.162  0.031  0.007 |
## 
## Variables (the 10 first)
##                      Dim.1    ctr   cos2    Dim.2    ctr   cos2  
## mpg               | -0.932 13.143  0.869 |  0.026  0.026  0.001 |
## cyl               |  0.961 13.981  0.924 |  0.071  0.191  0.005 |
## disp              |  0.946 13.556  0.896 | -0.080  0.243  0.006 |
## hp                |  0.848 10.894  0.720 |  0.405  6.189  0.164 |
## drat              | -0.756  8.653  0.572 |  0.447  7.546  0.200 |
## wt                |  0.890 11.979  0.792 | -0.233  2.046  0.054 |
## qsec              | -0.515  4.018  0.266 | -0.754 21.472  0.569 |
## vs                | -0.788  9.395  0.621 | -0.377  5.366  0.142 |
## am                | -0.604  5.520  0.365 |  0.699 18.440  0.489 |
## gear              | -0.532  4.281  0.283 |  0.753 21.377  0.567 |
## 
## Supplementary categories
##                       Dist    Dim.1   cos2 v.test    Dim.2   cos2 v.test  
## Europe            |  1.023 | -0.868  0.720 -1.658 |  0.338  0.109  1.020 |
## japon             |  3.587 | -3.464  0.932 -2.413 | -0.570  0.025 -0.627 |
## Japon             |  1.923 | -1.355  0.497 -0.944 |  1.046  0.296  1.151 |
## us                |  2.307 |  2.218  0.924  3.721 | -0.514  0.050 -1.361 |
#il donne les valeurs propre, les coordonné des var 

#pour obtenir les valeus propres (variance associé aux axes) il faut

val.propre=round(acp$eig[,1],2)
val.propre
##  comp 1  comp 2  comp 3  comp 4  comp 5  comp 6  comp 7  comp 8  comp 9 comp 10 
##    6.61    2.65    0.63    0.27    0.22    0.21    0.14    0.12    0.08    0.05 
## comp 11 
##    0.02
#calcul en pourcentage
cumulative.percentage.variance=round(acp$eig[,3],2)
cumulative.percentage.variance # comme regle on peut prendre deux dimensions 
##  comp 1  comp 2  comp 3  comp 4  comp 5  comp 6  comp 7  comp 8  comp 9 comp 10 
##   60.08   84.17   89.87   92.32   94.36   96.28   97.51   98.63   99.33   99.80 
## comp 11 
##  100.00
#tracer du graphique des valeurs propres
plot(1:11,val.propre,type = "b",ylab = "valeurs propres",xlab = "composante",main = "scree plot")

##coordonnées des variables sur les axes factoriels

#coorelation variables facteurs 
print(acp$var$cor[,1:2],digits=2) #coordonnées sur deux dimension
##      Dim.1  Dim.2
## mpg  -0.93  0.026
## cyl   0.96  0.071
## disp  0.95 -0.080
## hp    0.85  0.405
## drat -0.76  0.447
## wt    0.89 -0.233
## qsec -0.52 -0.754
## vs   -0.79 -0.377
## am   -0.60  0.699
## gear -0.53  0.753
## carb  0.55  0.673
#contribution de chaque variable par le cosinus et le contrib
round(acp$var$cos2[,1:2],2)
##      Dim.1 Dim.2
## mpg   0.87  0.00
## cyl   0.92  0.01
## disp  0.90  0.01
## hp    0.72  0.16
## drat  0.57  0.20
## wt    0.79  0.05
## qsec  0.27  0.57
## vs    0.62  0.14
## am    0.36  0.49
## gear  0.28  0.57
## carb  0.30  0.45
round(acp$var$contrib[,1:2],2)
##      Dim.1 Dim.2
## mpg  13.14  0.03
## cyl  13.98  0.19
## disp 13.56  0.24
## hp   10.89  6.19
## drat  8.65  7.55
## wt   11.98  2.05
## qsec  4.02 21.47
## vs    9.39  5.37
## am    5.52 18.44
## gear  4.28 21.38
## carb  4.58 17.10
#contributions des variables sur la dim1
fviz_contrib(acp, choice="var",axes = 1,top = 10)

#contributions des variables sur la dim2
fviz_contrib(acp, choice="var",axes = 2,top = 10)

#contributions total sur la dim 1 et 2
fviz_contrib(acp, choice="ind",axes = 1:2)

#cercle de correlarion - variables actives
#colore en fonction du cos2: qualité de representaion
fviz_pca_var(acp, col.var = "cos2",gradient.cols=c("blue","red","yellow"),repel = T,title="cercle de corelation")

#graphique des individus

#projection des individus sur le premier pla factoreil

#composante des individus sur l'axe principale
round(acp$ind$coord[,1:2],2)
##                     Dim.1 Dim.2
## Mazda RX4           -0.66  1.74
## Mazda RX4 Wag       -0.63  1.55
## Datsun 710          -2.78 -0.15
## Hornet 4 Drive      -0.31 -2.36
## Hornet Sportabout    1.97 -0.75
## Valiant             -0.06 -2.79
## Duster 360           3.00  0.33
## Merc 240D           -2.06 -1.47
## Merc 230            -2.29 -1.98
## Merc 280            -0.53 -0.16
## Merc 280C           -0.51 -0.32
## Merc 450SE           2.25 -0.68
## Merc 450SL           2.05 -0.68
## Merc 450SLC          2.15 -0.80
## Cadillac Fleetwood   3.90 -0.83
## Lincoln Continental  3.95 -0.73
## Chrysler Imperial    3.59 -0.42
## Fiat 128            -3.86 -0.30
## Honda Civic         -4.25  0.69
## Toyota Corolla      -4.23 -0.28
## Toyota Corona       -1.90 -2.12
## Dodge Challenger     2.18 -1.01
## AMC Javelin          1.86 -0.91
## Camaro Z28           2.89  0.68
## Pontiac Firebird     2.25 -0.87
## Fiat X1-9           -3.57 -0.12
## Porsche 914-2       -2.65  2.05
## Lotus Europa        -3.39  1.38
## Ford Pantera L       1.37  3.50
## Ferrari Dino         0.00  3.22
## Maserati Bora        2.67  4.38
## Volvo 142E          -2.42  0.23
# si l'on a beaucoup d'individus et leurs libele ne sont pas explicite (des numeros par exmple)
# on peut supprimer les noms des libéles tout en laissant les points avec l'argument label="none"
plot(acp,cex=0.8,invisible = "quali", label = "none", title = "graphique des individus")

#mettons y un peut de couleurs en fction des modalites
plot(acp,cex=0.8,habillage = "country",repel=T,title = "graphique des individus")
## Warning: ggrepel: 9 unlabeled data points (too many overlaps). Consider increasing
## max.overlaps

#elipse de confiance autour des modalités
plotellipses(acp)
## Warning: ggrepel: 9 unlabeled data points (too many overlaps). Consider increasing
## max.overlaps

# calculons la contribution des individus actifs pour les deux premiers axes
round(acp$ind$cos2[,1:2],2)
##                     Dim.1 Dim.2
## Mazda RX4            0.09  0.60
## Mazda RX4 Wag        0.09  0.55
## Datsun 710           0.87  0.00
## Hornet 4 Drive       0.02  0.88
## Hornet Sportabout    0.65  0.09
## Valiant              0.00  0.85
## Duster 360           0.89  0.01
## Merc 240D            0.52  0.27
## Merc 230             0.38  0.28
## Merc 280             0.08  0.01
## Merc 280C            0.06  0.03
## Merc 450SE           0.83  0.08
## Merc 450SL           0.79  0.09
## Merc 450SLC          0.79  0.11
## Cadillac Fleetwood   0.88  0.04
## Lincoln Continental  0.88  0.03
## Chrysler Imperial    0.88  0.01
## Fiat 128             0.94  0.01
## Honda Civic          0.88  0.02
## Toyota Corolla       0.93  0.00
## Toyota Corona        0.39  0.48
## Dodge Challenger     0.62  0.13
## AMC Javelin          0.62  0.15
## Camaro Z28           0.77  0.04
## Pontiac Firebird     0.68  0.10
## Fiat X1-9            0.97  0.00
## Porsche 914-2        0.50  0.30
## Lotus Europa         0.72  0.12
## Ford Pantera L       0.11  0.73
## Ferrari Dino         0.00  0.85
## Maserati Bora        0.24  0.65
## Volvo 142E           0.81  0.01
round(acp$ind$contrib[,1:2],2)
##                     Dim.1 Dim.2
## Mazda RX4            0.20  3.55
## Mazda RX4 Wag        0.19  2.83
## Datsun 710           3.65  0.03
## Hornet 4 Drive       0.05  6.58
## Hornet Sportabout    1.84  0.67
## Valiant              0.00  9.15
## Duster 360           4.26  0.13
## Merc 240D            2.00  2.53
## Merc 230             2.47  4.64
## Merc 280             0.13  0.03
## Merc 280C            0.12  0.12
## Merc 450SE           2.39  0.55
## Merc 450SL           1.98  0.55
## Merc 450SLC          2.18  0.76
## Cadillac Fleetwood   7.19  0.81
## Lincoln Continental  7.39  0.63
## Chrysler Imperial    6.10  0.21
## Fiat 128             7.03  0.10
## Honda Civic          8.56  0.56
## Toyota Corolla       8.48  0.09
## Toyota Corona        1.71  5.30
## Dodge Challenger     2.26  1.21
## AMC Javelin          1.64  0.97
## Camaro Z28           3.95  0.55
## Pontiac Firebird     2.39  0.90
## Fiat X1-9            6.04  0.02
## Porsche 914-2        3.32  4.94
## Lotus Europa         5.42  2.24
## Ford Pantera L       0.89 14.44
## Ferrari Dino         0.00 12.22
## Maserati Bora        3.37 22.62
## Volvo 142E           2.77  0.06
#graphe avec selection des individus
#select="cos2 0.7": selectionne les individus qui ont sur le plan tracé une qualité de projection superieure a 0.7
plot(acp,cex=0.8,habillage = 12,select = "cos2 0.8")
## Warning: ggrepel: 3 unlabeled data points (too many overlaps). Consider increasing
## max.overlaps

#select="cos2 5": selectionne les 5 individus qui ont la meilleur qualité de projection sur le le plan
plot(acp,cex=0.8,habillage = 12,select = "cos2 7")

fviz_pca_ind(acp,col.ind = "cos2",gradient.cols=c("green","red","blue"),repel = T) #evite le chevauchement de texte

#graphe avec selection des individus, des tailles de police differentes
#pour les titres des ombres sous les points 
plot(acp,cex=0.8,habillage = 12,select = "cos2 0.7", title = "cathegories des voitures",cex.main=1.1,cex.axis=0.9,shadow=T,auto="y")
## Warning: ggrepel: 9 unlabeled data points (too many overlaps). Consider increasing
## max.overlaps

#graphe biplot
fviz_pca_biplot(acp,cex=0.8,habillage = 12,repel = T,col.var = "black",col.ind = "red",ggtheme=theme_minimal())
## Warning: Duplicated aesthetics after name standardisation: size

                                              _FIN_