TP Analyse de sonnées- Semestre 1 L3 IBH Informatique Biomédicale et Hospitalière
TP1 : Analyse en Composantes Principales
avec R
Chargée de TP : Mme. SETTOUTI Nesma
Cursus : L3 IBH Informatique Biomédicale et Hospitalière
Introduction
Dans ce TP, nous appliquons L’ACP, ou Analyse en Composantes Principales qui est la méthode type
pour l’exploration de données, elle consiste à réduire la dimensionnalité du problème pour en extraire
l’essentiel.
Autrement dit, l’ACP cherche à définir k nouvelles variables combinaisons linéaires des p variables
initiales qui feront perdre le moins d’information possible. Ces variables seront appelées «
composantes principales », les axes qu’elles déterminent : « axes principaux » les formes linéaires
associées : « facteurs principaux ».
L’analyse en composantes principales permet de faire une synthèse de l’ensemble du tableau afin de:
– Synthétiser les liaisons entre variables (cercle des corrélations), définir les variables qui vont
dans le même sens, dans un sens opposé, indépendantes ...
– Représenter dans un plan les individus afin de déterminer les individus proches ou éloignés,
les regrouper en classe homogène, ... On parle de topologie des individus.
– Construire de nouvelles variables, appelées composantes principales, non corrélées et qui
permettent de synthétiser l’information.
Ainsi, au lieu d’analyser le tableau à travers p variables, l’ACP permettra de limiter l’étude à quelques
variables synthétiques (les composantes principales). La difficulté sera de donner un sens à ces
variables et de proposer une analyse de ces résultats.
1.3 Manipulation des données
Nous utilisons dans ce TP comme exemple d’étude, le jeu de données « satisfaction_hopital.csv » c’est
une enquête de satisfactions sur plusieurs hôpitaux de la région parisienne, récupéré lors d’un cours
de FUN 1 (France Unité Numérique). Cette collecte a été réalisée afin d’évaluer la qualité de relation
et la quantité d’information reçue par le patient lors de son séjour à l’hôpital.
Pour avoir un aperçu sur la base de données, utilisons la fonction summary() :
base= [Link] ("C:\\...\\Documents\\satisfaction_hopital.csv",sep=",", header=TRUE)
summary(base)
2. L’analyse en composantes principales sous R
La fonction prcomp() permet le calcul des valeurs propres de l’ACP, mais ne permet pas de réaliser
efficacement et de manière élégante des ACP. En revanche, trois packages très complets écrits par des
mathématiciens français contiennent toutes les options nécessaires :
– le package FactoMineR (adossé à l’université de Rennes) ;
1
TP Analyse de sonnées- Semestre 1 L3 IBH Informatique Biomédicale et Hospitalière
– le package ade4 (adossé à l’université de Lyon) ;
– le package amap (adossé à l’université de Toulouse).
Ce document décrira l’utilisation d’ade4, qui est probablement le plus couramment utilisé. D’autre
part, FactoMineR présente une interface graphique assez intuitive et en constante amélioration qui
facilite l’application de l’ACP. De ce fait, il est recommandé aux étudiants de visiter le site web de
FactoMineR et amap qui contiennent de nombreux détails et des tutoriels vidéo pour une réalisation
simple d’une ACP.
#visualisation des données
layout(matrix(c(1:9),3,3))
for(i in 1:9) {hist(base[,i],main=names(base)[i],xlab="")}
layout(1)
#suppression des données manquantes
newdata<-[Link](base)
L’ACP est appliquée que sur les variables quantitatives du jeu de données. Les variables qualitatives
sont placées dans les variables supplémentaires, elles ne participent pas à la construction de l’ACP,
mais elles apporteront de l’information supplémentaire par la suite de cette analyse.
#le calcul de l’ACP.
library(ade4)
acp<- [Link](newdata, center=T, scale=T, nf=5)
print(acp)
print(summary(acp))
Avec :
– Nf : nombre de dimensions conservées dans les résultats finaux.
– Center : une valeur logique spécifiant si les variables doivent être déplacées pour être zéro
centrées.
– Scale : une valeur logique. Si TRUE, les données sont mises à l’échelle de la variance unitaire
avant l’analyse. Cette standardisation d’échelle évite que certaines variables deviennent
dominantes simplement en raison de leurs grandes unités de mesure.
L’éboulis des valeurs propres : nous permet de connaître le pourcentage d’information (i.e. de
variance, ou encore d’inertie) porté par chaque axe (ou composante principale) de l’ACP.
#l’éboulis des valeurs propres en %
inertie<-acp$eig/sum(acp$eig)*100
barplot(inertie,ylab="% d’inertie", [Link]=round(inertie,2))
title("Eboulis des valeurs propres en %")
La matrice de corrélation : permet d’identifier rapidement quelques paires de variables fortement
corrélées, et quelques paires de variables quasiment décorrélées.
head(acp$co)
2
TP Analyse de sonnées- Semestre 1 L3 IBH Informatique Biomédicale et Hospitalière
Le cercle des corrélations : il est à noter que l’interprétation du cercle de corrélation se base sur les
points suivants :
– plus une variable possède une qualité de représentation élevée dans l’ACP, plus sa flèche est
longue;
– plus deux variables sont corrélées, plus leurs flèches pointent dans la même direction (dans
le cercle de corrélation, le coefficient de corrélation est symbolisé par les angles géométriques
entre les flèches);
– plus une variable est proche d’un axe principal de l’ACP, plus elle est liée à lui.
Cette dernière règle permet généralement de donner un sens concret aux axes de l’ACP.
[Link](acp$co)
title("Le cercle des corrélations")
Le nuage d’individus : Il soustrait des informations concernant les composantes principales choisies,
par l’analyse de la représentation des individus. En effet, un individu mal représenté se situe
généralement près du centre du repère, et sa spécificité est mal prise en compte par l’ACP, pour les
composantes principales considérées.
[Link](acp$li, xax = 1, yax = 2)
Les coordonnées carrées des variables COSINUS : C’est un indicateur de la qualité de la représentation
des variables sur les composantes principales. Permet de déterminer les variables qui pèsent le plus
dans la définition d’une composante.
inertia <- [Link](acp, [Link]=TRUE,[Link] = TRUE)
var.cos2 <- abs(inertia$[Link]/10000)
head(var.cos2)
# ou bien plus simplement
head(acp$co^2)
– Un cos2 élevé indique une bonne représentation de la variable sur la composante principale.
Dans ce cas, la variable est positionnée à proximité de la circonférence du cercle de corrélation.
– Un cos2 faible indique que la variable n’est pas parfaitement représentée par les
composantes principales. Dans ce cas, la variable est proche du centre du cercle.
La contribution des variables aux composantes principales Les contributions peuvent être imprimées
en% comme suit :
[Link] <- inertia$[Link]/100
head([Link])
Les variables les plus importantes pour une composante principale donnée peuvent être visualisées à
l’aide de la fonction fviz_pca_contrib() du package factoextra :
3
TP Analyse de sonnées- Semestre 1 L3 IBH Informatique Biomédicale et Hospitalière
library(factoextra)
fviz_pca_contrib(acp, choice = "var", axes = 1)
fviz_pca_contrib(acp, choice = "var", axes = 2)
Si la contribution des variables est uniforme, la valeur attendue sera 1 / longueur (variables) = 1/10 =
10%.
La ligne pointillée rouge sur le graphique ci-dessus indique la contribution moyenne attendue. Pour
une composante donnée, une variable avec une contribution supérieure à cette coupure pourrait être
considérée comme importante pour contribuer à la composante.
#Classement qualité de la représentation des variables dans toutes les composantes principales
fviz_cos2(acp, choice="var", axes = 1:5)
3. Travail demandé
Après le tirage au sort réalisé au sein du laboratoire, on désignera pour chaque étudiant une base de
données sur laquelle il va travailler. Aussi, dans ce premier TP, il est demandé de réaliser les pré-
traitements nécessaires pour la préparation de la BDD.
1. Présenter la base de données attribuée,
2. Procéder au chargement de la base de données,
3. Réaliser un aperçu des données, effectuer des transformations/codage/traitement des
données manquantes si nécessaires.
4. Traiter les données manquantes à l’aide du package MLR et de la fonction impute() pour
appliquer la méthode d’imputation médiane / mode ; c’est-à-dire que les valeurs manquantes
dans la variable entière seront imputées avec la médiane et les variables factorielles seront
imputées avec le mode (valeur la plus fréquente).
5. Effectuer une réduction de dimension de la base par l’application de l’Analyse en composantes
principales.
a) Analyser le nuage des variables (cercle des corrélations) : Quelles sont les variables qui
semblent bien représentées ? Quelles sont les variables moins bien représentées ? Quelles
sont les variables paraissant assez fortement corrélées à chacun des axes ? Tenter
d’expliquer qualitativement l’information portée par chacun des deux premiers axes de
l’ACP.
b) Analyser le nuage d’individus : Quel est son aspect général ? Des groupes semblent-ils se
former ? Peut-on identifier des individus mal représentés ? y a t-il des individus qui
paraissent proches sur le plan factoriel (1,2) mais qui n’étaient pas forcément très proches
dans le nuage initial ?
c) Quelles sont les variables qui contribuent pour la composition de chaque composante
principale ?
d) Si vous pouvez déduire les variables les plus pertinentes, donnez le classement de leur
importance.