Analyse en Composantes Principales
On utilise ici l'exemple du tableau de données décathlon qui contient les performances réalisées par des athlètes lors de deux compétitions.
Vous pouvez charger le jeu de données ici.
Présentation des données
Le tableau de données contient 41 lignes et 13 colonnes.
Les colonnes 1 à 12 sont des variables continues: les dix premières colonnes correspondent aux performances des athlètes pour les dix épreuves du décathlon et les colonnes 11 et 12 correspondent respectivement au rang et au nombre de points obtenus. La dernièer colonne est une variable qualitative correspondant au nom de la compétition (Jeux Olympiques de 2004 ou Décastar 2004).
Chargez la package FactoMineR
et le tableau de données en tapant la ligne de code suivante : library(FactoMineR)
data(decathlon)
Objectifs
L'ACP permet de décrire un jeu de données, de le résumer, d'en réduire la dimensionnalité.
L'ACP réalisée sur les individus du tableau de données répond à différentes questions :
- Etude des individus (i.e. des athlètes) : deux athlètes sont proches s'ils ont des résultats similaires. On s'intéresse à la variabilité entre individus. Y a-t-il des similarités entre les individus pour toutes les variables ? Peut-on établir des profils d'athlètes ? Peut-on opposer un groupe d'individus à un autre ?
- Etude des variables (i.e. des performances) : on étudie les liaisons linéaires entre les variables. Les objectifs sont de résumer la matrice des corrélations et de chercher des variables synthétiques: peut-on résumer les performances des athlètes par un petit nombre de variables ?
- Lien entre les deux études : peut-on caractériser des groups d'individus par des variables ?
ACP
On étudie les profils d'ahtlètes uniquement en fonction de leur performance. Les variables actives ne seront donc que celles qui concernent les dix épreuves du décathlon.
Les autres variables ("Rank", "Points"
et "Competition") n'appartiennent pas aux profils d'athlètes et utilisent une information déjà donnée par les autres variables (dans le cas de "Rank"et "Points")
mais il est intéressant de les confronter aux composantes principales. Nous les utiliserons comme variables illustratives.
Dans ce tableau de données, les variables ne sont pas mesurées dans les mêmes unités. On doit les réduire de façon à donner la même influence à chacune.
Individus et variables Actifs
Réalisez l'ACP sur tous les individus et seulement les variables actives (i.e. les dix premières) en tapant la ligne de code suivante : res.pca =
PCA(decathlon[,1:10], scale.unit=TRUE, ncp=5, graph=T)
#decathlon: le tableau de données utilisé
#scale.unit: pour choisir de réduire ou non les variables
#ncp: le nombre de dimensions à garder dans les résultats
#graph: pour choisir de faire apparaître les graphiques ou non
Les deux premières dimensions contiennent 50% de l'inertie totale (l'inertie est la variance totale du tableau de données, i.e. la trace de la matrice des corrélations).
La variable "X100m" est négativement corrélée à la variable "long.jump". Quand un ahtlète réalise un temps faible au 100m, il peut sauter loin. Il faut faire attention ici qu'une petite valeur pour les variables "X100m", "X400m", "X110m.hurdle" et "X1500m" correspond à un score élevé : plus un athlète court rapidement, plus il gagne de points.
Le premier axe oppose les athlètes qui sont "bons partout" comme Karpov pendant les Jeux Olympiques à ceux qui sont "mauvais partout" comme Bourguignon pendant le Décastar. Cette dimension est particulièrement liée aux variables de vitesse et de saut en longueur qui constituent un groupe homogène.
Le deuxième axe oppse les athlètes qui sont forts (variables "Discus"
et "Shot.put") à ceuw qui ne le sont pas.
Les variables "Discus", "Shot.put" et "High.jump" ne sont pas très corrélées aux variables "X100m", "X400m",
"X110m.hurdle" et "Long.jump".
Cela signifie que force et vitesse ne sont pas très corrélées.
A l'issue de cette première approche, on peut diviser le premier plan factoriel en quatre parties : les athlètes rapides et puissants (comme Sebrle), les athlètes lents (comme Casarsa), les athlètes rapides mais faibles (comme Warners) et les ahtlètes ni forts ni rapides, relativement parlant (comme Lorenzo).
variables illustratives
Les variables illustratives n'influencent pas la construction des composantes principales de l'analyse. Elles aident à l'interprétation des dimensions de variabilité.
On peut ajouter deux types de variables : continues et qualitatives.
On ajoute les variables "Rank" and "Points" comme variables continues illustratives.
Tapez la ligne de code suivante : res.pca
= PCA(decathlon, scale.unit=TRUE, ncp=5, quanti.sup=c(11: 12), graph=T)
#decathlon: le tableau de données utilisé
#scale.unit: pour choisir de réduire ou non les variables
#ncp: le nombre de dimensions à garder dans les résultats
#quanti.sup: vecteur des index des variables continues illustratives
#graph: pour choisir de faire apparaître les graphiques ou non
Les gagnants du décathlon sont ceux qui marquent le plus de points (ou ceux dont le rang est faible).
Les variables les plus liées au nombre de points sont les variables qui réfèrent à la vitesse ("X100m", "X110m.hurdle",
"X400m") et au saut en longueur. Au contraire, "Pole-vault"
et "X1500m" n'ont pas une grande influence sur le nombre de points. Les athlètes qui sont bons à ces deux épreuves ne sont pas favorisés.
On ajoute la variable
"Competition" comme variable qualitative illustrative : res.pca =
PCA(decathlon, scale.unit=TRUE, ncp=5, quanti.sup=c(11: 12),
quali.sup=13, graph=T)
#decathlon: le tableau de données utilisé
#scale.unit: pour choisir de réduire ou non les variables
#ncp: le nombre de dimensions à garder dans les résultats
#quanti.sup: vecteur des index des variables continues illustratives
#quali.sup: vecteur des index des variables qualitatives illustratives
#graph: pour choisir de faire apparaître les graphiques ou non
Les centres de gravité des modalités de cette variable supplémentaire apparaissent sur le graphe des individus. Ils sont localisés au barcentre des individus qui les possèdent et représentent un individu moyen.
On peut également colorier les individus selon la couleur des centres de gravité des modalités : plot.PCA(res.pca,
axes=c(1, 2), choix="ind", habillage=13)
#res.pca: le résultat d'une ACP
#axes: les axes à représenter
#choix: le graph à représenter ("ind" pour les individus, "var" pour les
variables)
#habillage: pour choisir les couleurs des individus: aucune
("none"), une couleur par individu ("ind") ou colorier les individus en fonction des modalités d'une variable qualitative (donner l'index de la variable en question)
En regardant les points qui représentent "Decastar"
et "Olympic Games", on voit que "Olympic Games" a une coordonnée plus élevée sur le premier axe que "Decastar". Ceci montre une évolution des performances des athlètes. Tous les athlètes qui ont participé aux deux compétitions ont obtenu des résultats légèrement meilleurs aux jeux Olympiques.
Cependant, il n'y a aucune différence entre les points "Decastar" et "Olympic Games" sur le deuxième axe. Cela signifie que les athlètes ont amélioré leurs performances mais n'ont pas changé de profil (à l'exception de Zsivoczky qui est passé de lent et fort pendant le Décastar à rapide et faible pendant les Jeux Olympiques).
Les points qui représentent un même individu vont dans le même direction. Par exemple, Sebrle a obtenu de bons résultats aux deux compétitions mais le point qui représente sa performance aux J.O. est plus extrême. Sebrle a obtenu plus de points pendant les J.O. que pendant le Décastar..
On peut envisager deux interprétations :
- Les athlètes qui participent aux J.O. sont meilleurs que ceux qui participent au Décastar
- Les athlètes font de leur mieux aux J.O. (plus motivés, plus entraînés)
La fonction dimdesc() permet de décrire les dimensions.
On peut décrire les dimensions données par les variables en écrivant : dimdesc(res.pca, axes=c(1,2))
#res.pca: le résultat d'une
PCA
#axes: les axes choisi
La fonction dimdesc() calcule le coefficient de corrélation entre une variable et une dimendsion et réalise un test de significativité.
Ces tableaux donnent le coefficient de corrélation et la probabilité critique des variables qui sont significativement corrélées aux dimensions principales. Les variables actives et illustratives dont le probabilité critique est inférieure à 0.05 apparaissent.
Les tableaux de la description des deux axes principaux montrent que les variables "Points" et "Long.jump" sont les plus corrélées à la première dimension et que "Discus" est la variable la plus corrélée à la deuxième dimension. Ceci confirme la premièer interprétation.
Cette fonction est très utile lorsqu'on est en présence d'un nombre élevé de variables. Elle facilite l'interprétation.
Si on ne veut pas qu'un (ou plusieurs) individu participe à l'analyse, il est possible de l'ajouter en tant qu'individu illustratif. Ainsi, il ne sera pas actif dans l'analyse mais apportera de l'information supplémentaire.
Pour ajouter des individus illustratifs, utilisez l'argument suivant de la fonction PCA : ind.sup
Tous les résultats détaillés peuvent être vus dans l'objet res.pca.
On peut récupérer les valeurs propres, les résultats des individus actifs et illustratifs, les résultats des variables actives et les résultats des variables continues et qualitatives illustratives en tapant : res.pca
names(res.pca)
res.pca$eig, res.pca$ind,
res.pca$ind.sup, res.pca$var, res.pca$quali.sup, res.pca$quanti.sup
Pour aller plus loin
Dans la plupart des ACPs, le poids des individus est égal à
1/(nombre d'individus). Néanmoins, il est parfois nécessaire de donner un poids spécifique à certains individuss.
Pour cela, l'utilisateur doit utiliser l'argument : row.w
Il peut également être intéressant de donner un poids spécifique à certaines variables.
L'utilisateur doit alors utiliser l'argument : col.w
Pour voir si les modalités d'une variable illustrative sont significativement différentes les unes des autres, on peut tracer des ellipses de confiance autour d'elle.
Pour ce faire, écrivez : plotellipses(res.pca)