2 Principal Component Analysis
Nous allons effectuer une Analyse en Composantes Principales(ACP) pour la variables numériques de notre jeu de données Communities
Application de la fonction PCA
L’objectif est de réduire la dimension de notre jeu de données PCA_df
tout en conservant un pourcentage élevé des informations.
<- FactoMineR::PCA(PCA_df,scale.unit=TRUE,
Communities_PCA graph = FALSE)
Pourcentage d’explication
::fviz_eig(Communities_PCA,addlabels = TRUE) factoextra
Nous constatons que deux dimensions sont insuffisantes pour représenter 75% des informations. Pour y remédier nous allons diminuer le nombre de variables de PCA_df
(6 par exemple).
library(dplyr)
= PCA_df %>% select(murders,pctWhite,pctBlack,
PCA_df
pctKidsBornNevrMarr,
numForeignBorn,pctUnemploy)<- FactoMineR::PCA(PCA_df,scale.unit=TRUE,
Communities_PCA graph = F)
::fviz_eig(Communities_PCA,addlabels = TRUE) factoextra
Ce graphe nous permet de remarquer que deux composantes principales sont suiffisantes pour représenter \(82.4\%\) de l’information ce qui est supérieur à \(75\%\) notre pourcentage seuil.
Graphiques de corrélation des variables
::fviz_pca_var(Communities_PCA,
factoextracol.var = "contrib",
gradient.cols = rainbow(3),
repel = TRUE,
legend.title='Contribution')
À partire du graphe précédent, nous pouvons constater une forte corrélation entre le pourcentage de personnes sans emplois pctUnemploy
, d’enfants nés hors mariage pctKidsBornNevrMarr
et de personnes de la communauté noire américaine pctBlack
. Ces dernières sont peu corrélées avec murders
.
Graphes des individus
::fviz_pca_ind(Communities_PCA,
factoextracol.ind ='cos2',
gradient.cols = rainbow(10),
repel = TRUE,
legend.title = "Cos2 for the variables",
)
Une variable avec un score élevé suivant un axe signifie qu’elle a fortement contribué à la création de cet axe. Une variable moyenne c’est celle qui est proche de l’origine.
Biplot individus et variables
::fviz_pca_biplot(Communities_PCA, repel = TRUE,
factoextracol.var = rainbow(4)[4],
col.ind = rainbow(1)
)
Prenons la la variable numéro 819 (C’est à dire la ligne 819 de PCA_df
). Nous savons que les variables {murders} et {numForeignBorn} sont fortement corrélées. Alors si le nombre de meutres {murders} est très faible par rapport à la moyenne, alors le nombre de personnes nées à l’étranger{numForeignBorn} l’est aussi.
Un raisonnement similaire peut être fait pour les variable fortement et négativement corrélées comme le pourcentage de personnes sans emplois pctUnemploy
et de personnes de la communauté blanche américaine pctWhite
sauf que dans ce cas, les variables varieront dans de sens opposés.
Nous pouvons vérifier ces informations tirées sur le graphes précédent dans notre data set grâce à la cellule de code suivante.
library(dplyr)
<- rbind(PCA_df[819,],apply(PCA_df,2,mean),
variable819 apply(PCA_df,2,min),
apply(PCA_df,2,max)
%>% dplyr::select(murders,numForeignBorn) %>%
) `rownames<-`(.,c('Variable819','mean','min','max'))
variable819
## murders numForeignBorn
## Variable819 446.000000 290374.000
## mean 7.764786 6277.274
## min 0.000000 20.000
## max 1946.000000 2082931.000