Ce document est un support pour la phase pratique de la formation à l’analyse en composantes principales. Il est vivement conseillé de le personnaliser en y apportant toutes les modifications que vous jugerez pertinentes : supprimer des passages, ajouter vos propres commentaires, insérer de nouvelles lignes de code…

Chargement des packages

Nous allons voir la mise en oeuvre de l’analyse en composantes principales dans R. Le package FactoMineR (parmi d’autres) propose des fonctions permettant sa mise en oeuvre et l’interprétation de ses résultats.

Commençons par charger le package FactoMineR, qu’il aura fallu installer préalablement par exemple au moyen de la commande install.packages("FactoMineR"), en respectant les majuscules, R étant sensible à la casse.

library(FactoMineR)

Données body_light

Importation des données

L’importation des données est réalisée avec la fonction read.table. Si je veux en savoir plus sur cette fonction, je consulte l’aide ?read.table. Je pourrais aussi importer les données en utilisant les menus de RStudio, mais c’est moins reproductible comme manipulation.

Il est toujours bon de vérifier que la taille du jeu de données importé correspond à ce qui est attendu.

body.light <- read.table("body_light.csv",
                         header=TRUE, sep=";", dec=",", row.names=1)
dim(body.light)
## [1] 20  5

Si tout va bien, on continue, sinon on s’interroge sur, par exemple : la présence d’un entête, la présence de noms de lignes dans la première colonne, l’ouverture du fichier csv dans Excel (ce qu’il faut éviter pour ne pas modifier certains codages), le séparateur de colonnes utilisé ( , ou ; )…

Aperçu

Pour un premier aperçu des données, la fonction summary est intéressante.

summary(body.light)
##    shoulder.g       chest.g          waist.g          weight     
##  Min.   : 91.9   Min.   : 78.10   Min.   :57.90   Min.   :48.60  
##  1st Qu.:103.1   1st Qu.: 90.88   1st Qu.:70.88   1st Qu.:66.20  
##  Median :107.3   Median : 94.75   Median :77.65   Median :71.80  
##  Mean   :108.1   Mean   : 94.19   Mean   :75.35   Mean   :70.58  
##  3rd Qu.:112.0   3rd Qu.: 97.20   3rd Qu.:80.10   3rd Qu.:77.20  
##  Max.   :123.5   Max.   :106.90   Max.   :86.00   Max.   :86.40  
##      height     
##  Min.   :157.5  
##  1st Qu.:164.2  
##  Median :174.5  
##  Mean   :174.4  
##  3rd Qu.:184.0  
##  Max.   :193.5

On y verrait par exemple la *présence de données manquantes** (tournure de phrase un peu contradictoire…)

Graphiquement, quelques boxplots sont sympathiques aussi.

boxplot(body.light)

On voit par exemple que la variable Taille est (logiquement) en décalage par rapport aux autres variables.

Insérer ici vos propres commentaires…

Analyse en composantes principales

Réalisons maintenant une analyse en composantes principales. D’abord avec le package FactoMineR puis avec les fonctions R de base pour voir.

Avec FactoMineR

Un petit coup d’oeil à l’aide des fonctions ne fait jamais de mal…

?PCA
?plot.PCA

… puis on se jette à l’eau.

res.PCA.body.light <- PCA(body.light)

Je n’ai rien demandé, mais il m’a fait des graphiques. Cela dit, le coup d’oeil à l’aide de la fonction PCA m’avait prévenu… Si, si, il y a un graph=TRUE quelque part dans la rubrique Usage.

Reprenons en modifiant ce paramètre pour essayer d’y voir plus clair.

res.PCA.body.light <- PCA(body.light, graph = FALSE)

L’aurions-nous vexé ? Il ne dit plus rien. Allons voir de plus près.

res.PCA.body.light
## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 20 individuals, described by 5 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 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
summary(res.PCA.body.light)
## 
## Call:
## PCA(X = body.light, graph = FALSE) 
## 
## 
## Eigenvalues
##                        Dim.1   Dim.2   Dim.3   Dim.4   Dim.5
## Variance               3.656   0.783   0.338   0.156   0.068
## % of var.             73.110  15.668   6.756   3.112   1.353
## Cumulative % of var.  73.110  88.779  95.535  98.647 100.000
## 
## Individuals (the 10 first)
##                Dist    Dim.1    ctr   cos2    Dim.2    ctr   cos2    Dim.3
## I1         |  1.132 | -0.999  1.366  0.779 |  0.462  1.362  0.166 |  0.158
## I2         |  0.785 |  0.687  0.646  0.766 | -0.240  0.367  0.093 | -0.131
## I3         |  2.671 |  2.413  7.966  0.817 |  0.631  2.538  0.056 |  0.924
## I4         |  1.418 |  0.747  0.762  0.277 |  0.272  0.473  0.037 |  0.860
## I5         |  1.783 |  1.454  2.891  0.665 |  0.146  0.136  0.007 |  0.915
## I6         |  2.191 |  2.046  5.725  0.872 |  0.177  0.199  0.006 | -0.427
## I7         |  3.616 |  3.503 16.783  0.938 |  0.094  0.056  0.001 | -0.810
## I8         |  2.462 |  2.241  6.869  0.829 |  0.710  3.221  0.083 | -0.683
## I9         |  1.516 | -0.961  1.262  0.402 |  1.032  6.794  0.463 | -0.477
## I10        |  2.123 |  1.676  3.843  0.624 |  0.823  4.324  0.150 |  0.160
##               ctr   cos2  
## I1          0.368  0.019 |
## I2          0.253  0.028 |
## I3         12.635  0.120 |
## I4         10.959  0.368 |
## I5         12.404  0.264 |
## I6          2.694  0.038 |
## I7          9.704  0.050 |
## I8          6.912  0.077 |
## I9          3.371  0.099 |
## I10         0.378  0.006 |
## 
## Variables
##               Dim.1    ctr   cos2    Dim.2    ctr   cos2    Dim.3    ctr   cos2
## shoulder.g |  0.853 19.891  0.727 |  0.355 16.083  0.126 | -0.330 32.207  0.109
## chest.g    |  0.906 22.457  0.821 | -0.182  4.243  0.033 | -0.266 20.953  0.071
## waist.g    |  0.825 18.620  0.681 | -0.507 32.801  0.257 |  0.192 10.925  0.037
## weight     |  0.943 24.320  0.889 | -0.157  3.162  0.025 |  0.137  5.531  0.019
## height     |  0.733 14.711  0.538 |  0.585 43.710  0.342 |  0.320 30.384  0.103
##             
## shoulder.g |
## chest.g    |
## waist.g    |
## weight     |
## height     |

OK, il a quand même fait plein de choses. Pour savoir ce que le résultat contient, on peut utiliser la fonction names et également avoir le détail dans la rubrique Value de la fiche d’aide.

names(res.PCA.body.light)
## [1] "eig"  "var"  "ind"  "svd"  "call"

On peut ensuite regarder les éléments séparément si on le souhaite.

  • Les parts de variance expliquée
res.PCA.body.light$eig
##        eigenvalue percentage of variance cumulative percentage of variance
## comp 1 3.65552473              73.110495                          73.11049
## comp 2 0.78341795              15.668359                          88.77885
## comp 3 0.33778275               6.755655                          95.53451
## comp 4 0.15560651               3.112130                          98.64664
## comp 5 0.06766806               1.353361                         100.00000

On retrouve ici les pourcentages de variance expliqué présenté dans le support de cours… En fait non, ce ne sont pas tout à fait les mêmes. La raison de cette différence réside dans une option par défaut de la fonction PCA : scale.unit=TRUE signifie que les données sont centrées-réduites par défaut, ce qui n’est pas le cas de l’exemple montré en cours.

  • Les coordonnées des variables et d’autres informations relatives aux variables
res.PCA.body.light$var
## $coord
##                Dim.1      Dim.2      Dim.3        Dim.4       Dim.5
## shoulder.g 0.8527202  0.3549636 -0.3298329 -0.171120672  0.09379239
## chest.g    0.9060558 -0.1823183 -0.2660360  0.264797061 -0.07021602
## waist.g    0.8250111 -0.5069206  0.1920988 -0.003256275  0.15961080
## weight     0.9428858 -0.1574010  0.1366895 -0.198105920 -0.16811104
## height     0.7333341  0.5851797  0.3203621  0.130192861  0.01427696
## 
## $cor
##                Dim.1      Dim.2      Dim.3        Dim.4       Dim.5
## shoulder.g 0.8527202  0.3549636 -0.3298329 -0.171120672  0.09379239
## chest.g    0.9060558 -0.1823183 -0.2660360  0.264797061 -0.07021602
## waist.g    0.8250111 -0.5069206  0.1920988 -0.003256275  0.15961080
## weight     0.9428858 -0.1574010  0.1366895 -0.198105920 -0.16811104
## height     0.7333341  0.5851797  0.3203621  0.130192861  0.01427696
## 
## $cos2
##                Dim.1      Dim.2      Dim.3        Dim.4        Dim.5
## shoulder.g 0.7271318 0.12599919 0.10878975 2.928228e-02 0.0087970131
## chest.g    0.8209371 0.03323996 0.07077517 7.011748e-02 0.0049302898
## waist.g    0.6806434 0.25696847 0.03690195 1.060333e-05 0.0254756076
## weight     0.8890336 0.02477509 0.01868402 3.924596e-02 0.0282613208
## height     0.5377789 0.34243524 0.10263186 1.695018e-02 0.0002038317
## 
## $contrib
##               Dim.1     Dim.2     Dim.3        Dim.4      Dim.5
## shoulder.g 19.89131 16.083266 32.207019 18.818161667 13.0002437
## chest.g    22.45744  4.242941 20.952866 45.060765577  7.2859922
## waist.g    18.61958 32.800942 10.924759  0.006814193 37.6479043
## weight     24.32027  3.162436  5.531372 25.221281568 41.7646369
## height     14.71140 43.710415 30.383984 10.892976995  0.3012229
  • Les coordonnées des individus et d’autres informations relatives aux individus
res.PCA.body.light$ind
## $coord
##          Dim.1       Dim.2       Dim.3        Dim.4       Dim.5
## I1  -0.9994124  0.46187796  0.15762659 -0.157932800  0.14347452
## I2   0.6872141 -0.23967969 -0.13081837  0.142564783  0.22190284
## I3   2.4133542  0.63058129  0.92389440  0.040818341  0.23635283
## I4   0.7465567  0.27218036  0.86043169  0.784535982 -0.14898687
## I5   1.4538186  0.14572658  0.91541721  0.354593417 -0.28355125
## I6   2.0458496  0.17663098 -0.42664632 -0.001248843  0.63376767
## I7   3.5028948  0.09366715 -0.80965404  0.023091369 -0.37903362
## I8   2.2409129  0.71044495 -0.68333901  0.162466482 -0.20224920
## I9  -0.9607277  1.03171951 -0.47723971 -0.010802100  0.28814669
## I10  1.6763028  0.82307005  0.15969697 -0.996349614 -0.00551424
## I11 -1.2004884  0.11881324  0.06691581 -0.389698193 -0.05999007
## I12 -0.4482664 -1.76619675  0.11279708 -0.332399600 -0.40125281
## I13 -0.7975526 -0.59893554  0.85894864  0.175247564  0.13987932
## I14 -1.1033800 -0.22755924 -1.33240350  0.477010903 -0.06159849
## I15  0.2393917 -2.33791626 -0.05071202 -0.551281871  0.16848119
## I16 -0.3617861  0.66372638  0.04733402 -0.279675714 -0.43422067
## I17 -2.9655153  0.43102341 -0.35201670  0.226048977 -0.10025560
## I18 -4.9688543  0.73868926  0.22700235 -0.140110968 -0.03516636
## I19 -0.7513536  0.38477673  0.04118958 -0.094208686  0.12490310
## I20 -0.4489587 -1.51264037 -0.10842469  0.567330571  0.15491101
## 
## $cos2
##           Dim.1        Dim.2        Dim.3        Dim.4        Dim.5
## I1  0.778792654 0.1663362413 0.0193727540 1.944810e-02 1.605026e-02
## I2  0.766177726 0.0931982728 0.0277640530 3.297387e-02 7.988608e-02
## I3  0.816523396 0.0557453531 0.1196661123 2.335808e-04 7.831557e-03
## I4  0.277360783 0.0368665925 0.3684276562 3.062987e-01 1.104626e-02
## I5  0.664869740 0.0066802653 0.2636053986 3.955282e-02 2.529177e-02
## I6  0.871908595 0.0064991610 0.0379192339 3.248920e-07 8.367269e-02
## I7  0.938181344 0.0006708219 0.0501223684 4.076918e-05 1.098470e-02
## I8  0.828569540 0.0832798354 0.0770462352 4.355184e-03 6.749205e-03
## I9  0.401592164 0.4631353501 0.0990963779 5.076929e-05 3.612534e-02
## I10 0.623655060 0.1503533540 0.0056602142 2.203246e-01 6.748555e-06
## I11 0.892239635 0.0087396735 0.0027721905 9.402045e-02 2.228047e-03
## I12 0.055746035 0.8654059119 0.0035296968 3.065227e-02 4.466608e-02
## I13 0.356775810 0.2012041528 0.4138197072 1.722585e-02 1.097448e-02
## I14 0.371641682 0.0158074981 0.5419331712 6.945937e-02 1.158282e-03
## I15 0.009782878 0.9330529714 0.0004390057 5.187950e-02 4.845641e-03
## I16 0.155740999 0.5241763172 0.0026659134 9.306979e-02 2.243470e-01
## I17 0.959537250 0.0202704415 0.0135203529 5.575279e-03 1.096677e-03
## I18 0.975578075 0.0215612070 0.0020361520 7.757000e-04 4.886573e-05
## I19 0.764163929 0.2004081716 0.0022965323 1.201378e-02 2.111759e-02
## I20 0.070792197 0.8036073861 0.0041288483 1.130433e-01 8.428244e-03
## 
## $contrib
##          Dim.1       Dim.2       Dim.3        Dim.4        Dim.5
## I1   1.3661856  1.36154176  0.36778287 8.014694e-01  1.521023099
## I2   0.6459582  0.36663925  0.25332031 6.530806e-01  3.638412809
## I3   7.9664054  2.53780733 12.63505722 5.353687e-02  4.127697759
## I4   0.7623351  0.47281371 10.95885900 1.977734e+01  1.640145119
## I5   2.8909508  0.13553581 12.40425516 4.040207e+00  5.940860877
## I6   5.7248973  0.19911787  2.69444023 5.011385e-05 29.678805962
## I7  16.7831879  0.05599524  9.70356930 1.713332e-02 10.615530809
## I8   6.8686320  3.22134583  6.91201973 8.481444e-01  3.022455242
## I9   1.2624694  6.79359693  3.37136427 3.749373e-03  6.134985507
## I10  3.8434851  4.32364557  0.37750776 3.189817e+01  0.002246764
## I11  1.9712251  0.09009613  0.06628115 4.879766e+00  0.265916320
## I12  0.2748480 19.90923846  0.18833379 3.550285e+00 11.896588377
## I13  0.8700394  2.28947895 10.92111393 9.868388e-01  1.445750313
## I14  1.6652157  0.33049540 26.27871177 7.311372e+00  0.280366673
## I15  0.0783860 34.88465170  0.03806750 9.765392e+00  2.097437805
## I16  0.1790292  2.81160716  0.03316495 2.513343e+00 13.931800256
## I17 12.0287534  1.18570922  1.83425230 1.641902e+00  0.742683070
## I18 33.7701358  3.48257160  0.76276936 6.307925e-01  0.091377903
## I19  0.7721630  0.94491790  0.02511350 2.851833e-01  1.152743520
## I20  0.2756977 14.60319416  0.17401589 1.034224e+01  1.773171813
## 
## $dist
##        I1        I2        I3        I4        I5        I6        I7        I8 
## 1.1324885 0.7851042 2.6707716 1.4175562 1.7829613 2.1909791 3.6164602 2.4618439 
##        I9       I10       I11       I12       I13       I14       I15       I16 
## 1.5160296 2.1226590 1.2709171 1.8985811 1.3352470 1.8099347 2.4203368 0.9167489 
##       I17       I18       I19       I20 
## 3.0273961 5.0306633 0.8595103 1.6873832

Insérer ici vos propres commentaires ainsi que vos lignes de code pour réaliser une ACP sur les données brutes, c’est à dire et non centrées-réduites…

On peut ensuite choisir de représenter les graphiques qui n’ont pas été produits par défaut en choisissant de représenter les individus ou les variables.

plot(res.PCA.body.light, choix="ind")

plot(res.PCA.body.light, choix="var")

On voit que …

Sans utiliser FactoMineR

Le traditionnel coup d’oeil à l’aide de la fonction que l’on va utiliser.

?prcomp

On peut noter au passage une option scale.=FALSE

res.prcomp.body.light <- prcomp(body.light)
res.prcomp.body.light
## Standard deviations (1, .., p=5):
## [1] 15.989241  7.757795  4.846040  2.933938  2.002735
## 
## Rotation (n x k) = (5 x 5):
##                  PC1        PC2        PC3        PC4         PC5
## shoulder.g 0.4510211 -0.1607983  0.7795273 -0.1832817  0.35981775
## chest.g    0.3227778  0.2513743  0.2624192  0.7213856 -0.49331972
## waist.g    0.3361956  0.5318767 -0.3338707  0.2373719  0.66050328
## weight     0.5351247  0.3625794 -0.1745548 -0.6008788 -0.43663838
## height     0.5413026 -0.7046973 -0.4260684  0.1691444  0.01578585
summary(res.prcomp.body.light)
## Importance of components:
##                            PC1    PC2     PC3     PC4    PC5
## Standard deviation     15.9892 7.7578 4.84604 2.93394 2.0027
## Proportion of Variance  0.7264 0.1710 0.06673 0.02446 0.0114
## Cumulative Proportion   0.7264 0.8974 0.96414 0.98860 1.0000
plot(res.prcomp.body.light)

biplot(res.prcomp.body.light)

Données body_full

Vous pouvez maintenant rejouer la même partition avec un autre jeu de données.

Importation des données

body.full <- read.table("body_full.csv",
                         header=TRUE, sep=";", dec=",")
dim(body.full)
## [1] 507  25

Aperçu

summary(body.full)
##    biacromial    pelvic.breadth  bitrochanteric   chest.depth   
##  Min.   :32.40   Min.   :18.70   Min.   :24.70   Min.   :14.30  
##  1st Qu.:36.20   1st Qu.:26.50   1st Qu.:30.60   1st Qu.:17.30  
##  Median :38.70   Median :28.00   Median :32.00   Median :19.00  
##  Mean   :38.81   Mean   :27.83   Mean   :31.98   Mean   :19.23  
##  3rd Qu.:41.15   3rd Qu.:29.25   3rd Qu.:33.35   3rd Qu.:20.90  
##  Max.   :47.40   Max.   :34.70   Max.   :38.00   Max.   :27.50  
##    chest.diam      elbow.diam      wrist.diam      knee.diam    
##  Min.   :22.20   Min.   : 9.90   Min.   : 8.10   Min.   :15.70  
##  1st Qu.:25.65   1st Qu.:12.40   1st Qu.: 9.80   1st Qu.:17.90  
##  Median :27.80   Median :13.30   Median :10.50   Median :18.70  
##  Mean   :27.97   Mean   :13.39   Mean   :10.54   Mean   :18.81  
##  3rd Qu.:29.95   3rd Qu.:14.40   3rd Qu.:11.20   3rd Qu.:19.60  
##  Max.   :35.60   Max.   :16.70   Max.   :13.30   Max.   :24.30  
##    ankle.diam    shoulder.girth    chest.girth      waist.girth    
##  Min.   : 9.90   Min.   : 85.90   Min.   : 72.60   Min.   : 57.90  
##  1st Qu.:13.00   1st Qu.: 99.45   1st Qu.: 85.30   1st Qu.: 68.00  
##  Median :13.80   Median :108.20   Median : 91.60   Median : 75.80  
##  Mean   :13.86   Mean   :108.20   Mean   : 93.33   Mean   : 76.98  
##  3rd Qu.:14.80   3rd Qu.:116.55   3rd Qu.:101.15   3rd Qu.: 84.50  
##  Max.   :17.20   Max.   :134.80   Max.   :118.70   Max.   :113.20  
##   navel.girth       hip.girth       thigh.girth     bicep.girth   
##  Min.   : 64.00   Min.   : 78.80   Min.   :46.30   Min.   :22.40  
##  1st Qu.: 78.85   1st Qu.: 92.00   1st Qu.:53.70   1st Qu.:27.60  
##  Median : 84.60   Median : 96.00   Median :56.30   Median :31.00  
##  Mean   : 85.65   Mean   : 96.68   Mean   :56.86   Mean   :31.17  
##  3rd Qu.: 91.60   3rd Qu.:101.00   3rd Qu.:59.50   3rd Qu.:34.45  
##  Max.   :121.10   Max.   :128.30   Max.   :75.70   Max.   :42.40  
##  forearm.girth     knee.girth      calf.girth     ankle.girth     wrist.girth  
##  Min.   :19.60   Min.   :29.00   Min.   :28.40   Min.   :16.40   Min.   :13.0  
##  1st Qu.:23.60   1st Qu.:34.40   1st Qu.:34.10   1st Qu.:21.00   1st Qu.:15.0  
##  Median :25.80   Median :36.00   Median :36.00   Median :22.00   Median :16.1  
##  Mean   :25.94   Mean   :36.20   Mean   :36.08   Mean   :22.16   Mean   :16.1  
##  3rd Qu.:28.40   3rd Qu.:37.95   3rd Qu.:38.00   3rd Qu.:23.30   3rd Qu.:17.1  
##  Max.   :32.50   Max.   :49.00   Max.   :47.70   Max.   :29.30   Max.   :19.6  
##       age            weight           height         gender         
##  Min.   :18.00   Min.   : 42.00   Min.   :147.2   Length:507        
##  1st Qu.:23.00   1st Qu.: 58.40   1st Qu.:163.8   Class :character  
##  Median :27.00   Median : 68.20   Median :170.3   Mode  :character  
##  Mean   :30.16   Mean   : 69.15   Mean   :171.1                     
##  3rd Qu.:36.00   3rd Qu.: 78.85   3rd Qu.:177.8                     
##  Max.   :67.00   Max.   :116.40   Max.   :198.1

On note au passage que le jeu de données contient une variable qualitative sur la 25ème et dernière colonne et on en tient compte au moment de représenter les boxplots…

boxplot(body.full[,-25], las=3, cex.axis=0.65)

Analyse en composantes principales

… ainsi que dans l’ACP. Ce que la fonction PCA de FactoMineR permet très simplement avec l’option quali.sup.

res.PCA.body.full <- PCA(body.full, graph = FALSE, quali.sup = 25)

Cela est très utile au moment de représenter les individus de façon différenciée selon la catégorie qui les caractérisent.

plot(res.PCA.body.full, choix = "ind", habillage = 25, label = "none")

Ce qui ne change rien au fait que l’ACP est une méthode non supervisée. Le facteur gender n’est utilisé ici qu’après avoir effectué les calculs, simplement pour colorer les points.

On voit que…

Mes données

Importation

Aperçu

ACP

Session information

Une bonne habitude à prendre lorsque l’on travaille avec R Markdown. Cela permet parfois de comprendre pourquoi on n’obtient pas les mêmes résultats que : la dernière fois / le collègue qu m’a envoyé le script / dans la publi qui utilise pourtant le même code / …

sessionInfo()
## R version 4.0.4 (2021-02-15)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.2 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/atlas/libblas.so.3.10.3
## LAPACK: /usr/lib/x86_64-linux-gnu/atlas/liblapack.so.3.10.3
## 
## locale:
##  [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=fr_FR.UTF-8        LC_COLLATE=fr_FR.UTF-8    
##  [5] LC_MONETARY=fr_FR.UTF-8    LC_MESSAGES=fr_FR.UTF-8   
##  [7] LC_PAPER=fr_FR.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] FactoMineR_2.3
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.4.6         pillar_1.4.4         compiler_4.0.4      
##  [4] tools_4.0.4          digest_0.6.25        evaluate_0.14       
##  [7] lifecycle_0.2.0      tibble_3.0.1         gtable_0.3.0        
## [10] lattice_0.20-41      pkgconfig_2.0.3      rlang_0.4.6         
## [13] ggrepel_0.8.2        yaml_2.2.1           xfun_0.20           
## [16] stringr_1.4.0        dplyr_1.0.0          knitr_1.28          
## [19] cluster_2.1.1        generics_0.0.2       vctrs_0.3.0         
## [22] flashClust_1.01-2    grid_4.0.4           tidyselect_1.1.0    
## [25] scatterplot3d_0.3-41 glue_1.4.0           R6_2.4.1            
## [28] rmarkdown_2.6        farver_2.0.3         ggplot2_3.3.1       
## [31] purrr_0.3.4          magrittr_1.5         scales_1.1.1        
## [34] ellipsis_0.3.0       htmltools_0.4.0      leaps_3.1           
## [37] MASS_7.3-53.1        colorspace_1.4-1     labeling_0.3        
## [40] stringi_1.4.6        munsell_0.5.0        crayon_1.3.4