Vous êtes sur la page 1sur 16

ENIT 2 ème année MINDS

TP n°1 : Analyse en Composantes Principales avec R


Lien utile :

1. http://www.sthda.com/french/articles/38-methodes-des-composantes-principales-dans-r-guide-
pratique/79-acp-dans-r-prcomp-vs-princomp/
2. http://eric.univ-lyon2.fr/~ricco/cours/didacticiels/R/acp_avec_r.pdf
I. Etude des modèles de voitures via fichier le fichier «voitures.txt » : 

1. Faire une analyse en composantes principales sur l'ensemble des variables quantitatives disponibles

#Importation des packages

library(FactoMineR)

library(ggplot2)

library(factoextra)

#Séparer les données quantitatives des données illustratives

Voiture.illus <- Voiture[,8:10]

Voiture.actifs <- Voiture[,2:7]

#Réaliser l’ACP

#centrage et réduction des données --> scale.unit = TRUE

#Afficher le cercle de corrélation  graph=TRUE

res_pca <- PCA(Voiture.actifs, ncp = 5, scale.unit = TRUE, graph=TRUE)

1
Walid Ayadi
ENIT 2 ème année MINDS

#Afficher la part de la variance expliquée par chacune des composantes principales

print(res_pca$eig)

#scree plot (graphique des éboulis des valeurs propres)

fviz_eig(res_pca)

2. Interpréter les résultats trouvés et conclure.

2
Walid Ayadi
ENIT 2 ème année MINDS

Après avoir effectué l’ACP sur les données quantitatives, nous devons sélectionner les axes principaux pour faire
notre étude. Si on applique le critère de coude, on voit que les scree plot présente un décrochement au niveau de
l’évolution des parts des variances expliquées par les composantes principales, en particulier à partir de la 2eme
composante principale. Il en résulte qu’on prend en considération les deux premières composantes principales qui
contribuent 73.68% de l’inertie totale.

3. Analyser les contributions et la qualité de projection des observations et des variables.

#Analyse des contributions et des qualités des variables

#Contribution des variables à la formation des deux premiers axes

res_pca$var$contrib[,1:2]

#Corrélation entre les variables

corr=round(cor(Voiture.actifs),3)

print(corr)

#Cercle de corrélation

fviz_pca_var(res_pca,

col.var = "contrib",

gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), repel = TRUE )

3
Walid Ayadi
ENIT 2 ème année MINDS

Et plus précisément :

res_pca$var$cor[,1:2]

En pratique, on retient pour l’interprétation les variables qui ont des contributions supérieures à la moyenne notamment
1/p=1/6=0.166. Si de plus on tient en considération des corrélations avec les deux axes, on fixe les variables qui
définissent les axes comme suit :

Premier axe : PUISS, POIDS, CYL,LONG

On souligne que les variables définissant le premier axe notamment : PUISS, POIDS, CYL, LONG présentent des fortes
corrélations positives entre elles et avec l’axe aussi.

Des petites - 0 + des grandes

Voitures voitures

Deuxième axe : LARG , V-MAX

On remarque que la largeur LARG est corrélée négativement avec le deuxième alors que la vitesse maximale V-MAX est
corrélée positivement. Cela dit que les voitures du coté positive de l’axe ont des grandes vitesses maximales et des
largeur minimales et vice versa pour le côté négatif. C’est tout à fait logique

Des voitures - 0 + des voitures

familiales sportives

#Qualité de représentation des variables

fviz_pca_var(res_pca, col.var = "cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"))


4
Walid Ayadi
ENIT 2 ème année MINDS

On remarque que les valeurs V.MAX


,PUISS,LONG et POIDS sont bien représentées.
En d’autres termes, elles sont bien expliquées
par les deux premières composantes principales

#Analyse des contributions et des qualités des individus

#Contribution des individus à la formation des deux premiers axes

fviz_contrib(res_pca, choice = "ind", axes = 1)

fviz_contrib(res_pca, choice = "ind", axes = 2)

5
Walid Ayadi
ENIT 2 ème année MINDS
En pratique, les individus qui participent les plus à l’inertie d’un axe bien particulier sont ceux qui ont des contributions
supérieures à la contribution moyenne 1/n=0.05. En se basant sur les deux figures précédentes , on retient les
individus satisfaisant ce dernier critère pour l’interprétation :

#Affichage des coordonnées des individus sur les deux axes

res_pca$ind$coord[,1:2]

D’après tout ce qui précède, on peut dire que l’interprétation des axes se repose sur :

 Premier axe
 Individus

+ -
Renault30 Lada1300
Datsun-200L ToyotaCorolla
Opel-Rekord CitroenGSClub Voiture petite et sportive Voiture grande et sportive
AlphasudTI
 Variables

+ -
CYL
PUISS
POIDS
LONG
Voiture petite et Voiture grande et familiale
 Deuxième axe Familiale
 Individus

+ -
Alfetta-1.66 Audi-100
AlfaSudTI Renault16TL
Renault30 Peugeot504
 Variables

+ -
V-Max LARG

6
Walid Ayadi
ENIT 2 ème année MINDS

Après avoir interpréter les axes, il est temps d’analyser les graphiques et d’étudier les proximités entre les
points.

#Qualité de représentation des individus

On doit tout d’abord distinguer les individus qui sont bien représentés. Un individu est bien représenté sur un
axe s’il est proche de sa projection. Autrement dit l’angle qu’il fait avec l’axe est proche de 0. En pratique, on
regarde les individus qui ont des cos 2> 0.5 .

res_pca$ind$cos2

Premier axe Deuxième axe


AlfasudTI Peugeot504
Simca1300 Alfetta-1.66
CitroenGSClub
Renault16TL
Renault30
ToyotaCorolla
Princes-1800
Datsun-200L
Taunus -2000
Opel-Rekord
#Visualisation de la qualité de représentation avec R

fviz_pca_ind (res_pca, col.ind = "cos2",

gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),

repel = TRUE # Évite le chevauchement de texte

7
Walid Ayadi
ENIT 2 ème année MINDS

Caractérisation des entreprises faillites par rapport aux entreprises en bonne santé financière

Le fichier Faillite_entrep.txt est composé de variables caractérisant des entreprises qui ont fait faillite et d’autre en
bonne santé financière. Les variables des entreprises sont :

FD : flux de trésorerie / dette totale,

RA : résultat net / actif,

AD : actif à court terme / dette à court terme,

AV : actif à court terme / ventes,

ET : F si faillite et NF sinon.

On propose d’appliquer une analyse en composantes principales sur les données afin de caractériser les deux classes
d’entreprises par rapport aux variables disponibles .

1. Faire une analyse en composantes principales sur l'ensemble des variables quantitatives disponibles
avec ET comme variable qualitative illustrative :

8
Walid Ayadi
ENIT 2 ème année MINDS

#Importation des packages

library(FactoMineR)

library(ggplot2)

library(factoextra)

#Importation des données

Entreprise = read.table("E:/analyse des données/P2/Faillite_entrep.txt",header=T,row.names="Ent")

#Réaliser l’ACP

Ent_pca <- PCA(Entreprise[,1:5], scale.unit = TRUE, graph = F, quali.sup=5)

fviz_eig(Ent_pca, addlabels = TRUE, ylim = c(0, 50))

Si on applique le critère de Kaiser pour la sélection des axes principaux, on retient les axes principaux dont la variance
(Valeur propre associé) est supérieure 1. De ce fait, on garde les deux premiers axes principaux pour l’interprétation
assurant 79.55% de l’inertie totale.

1. Interpréter les résultats trouvés et conclure.

#Analyse des contributions et des qualités des variables

#Contribution des variables à la formation de deux axes principaux

9
Walid Ayadi
ENIT 2 ème année MINDS

fviz_contrib(Ent_pca, choice = "var", axes = 1)

fviz_contrib(Ent_pca, choice = "var", axes = 2)

#Cercle de corrélation

10
Walid Ayadi
ENIT 2 ème année MINDS

Et plus précisément  :

Ent_pca$var$cor[,1:2]

#Corrélation entre les variables

corr=round(cor(Entreprise[,1:4]),3)

print(corr)

D’après ces résultats, on remarque que les deux ratios FD (: flux de trésorerie / dette totale) et RA(résultat net
/ actif) sont fortement corrélés positivement entre elles d’une part et avec le premier axe principal d’autres
part.

En ce qui concerne la variable AV (actif à court terme / ventes), elle est fortement corrélée positivement
avec le deuxième axe principal.

En pratique, on retient pour l’interprétation des axes les variables qui ont des contributions supérieure à la
moyenne de contribution notamment 1/p=1/5=0.25

Premier axe : FD,RA

Le premier axe oppose les entreprises qui ont des bonnes capacités d’autofinancement à ceux qui ont des
mauvaises

Mauvaise capacité - 0 + Bonne capacité

D’autofinancement D’autofinancement

11
Walid Ayadi
ENIT 2 ème année MINDS

Deuxième axe : AV

Le deuxième axe oppose les entreprise qui ont une bonne gestion de leurs actifs à court terme et ceux qui ont une
mauvaise.

Mauvaise gestion - 0 + Bonne gestion

De ce fait, on peut diviser le plan factoriel comme suit :

Axe 2
Entreprise avec une mauvaise capacité Entreprise avec une bonne capacité
d’autofinancement et bonne gestion des d’autofinancement et bonne gestion des
actifs à court terme actifs à court terme

Axe1

Entreprise avec une mauvaise capacité Entreprise avec une bonne capacité
d’autofinancement et mauvaise gestion d’autofinancement et mauvaise gestion des
des actifs à court actifs à court

#Qualité de représentation des variables

fviz_pca_var(Ent_pca, col.var = "cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"))

On remarque que les variables AV,FD et


RA sont bien représentées
contrairement à la variable AD. Ceci
montre que les trois variables sont bien
expliquées par les deux premières
composantes principales

12
Walid Ayadi
ENIT 2 ème année MINDS

13
Walid Ayadi
ENIT 2 ème année MINDS

En pratique, les individus qui participent les plus à la l’inertie d’un axe bien particulier sont ceux qui ont des
contributions supérieures à la contribution moyenne 1/n=0.05. D’après les deux figures précédentes :

#Visualisation des contributions des individus

fviz_pca_ind (Ent_pca, col.ind = "contrib",

gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),

repel = TRUE # Évite le chevauchement de texte

14
Walid Ayadi
ENIT 2 ème année MINDS

#Visualisation du nuage des individus

plot(Ent_pca, axes = c(1,2), habillage=5)

15
Walid Ayadi
ENIT 2 ème année MINDS

On remarque que notre interprétation de plan factoriel n’est pas en contradiction avec ce qui illustré par la variable
illustrative

#visualisation de la qualité de représentation des individus

fviz_pca_ind (Ent_pca, col.ind = "cos2",

gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),

repel = TRUE # Évite le chevauchement de texte

16
Walid Ayadi