library(FactoMineR)
data(decathlon)
# Rang, Points : variables quantitatives supplémentaires
# Compétition : variable qualitative supplémentaire.
res_pca <- PCA(decathlon, quanti.sup=c(11,12), quali.sup=13)
1) Quelle est la part d'inertie associée aux deux premiers axes factoriels ?
res_pca$eig[2,3]
# Ou, au début de l'affichage de
summary(res_pca)
# "Cumulative % of var." Dim.2
2) Étudier le graphique des individus. Dans le plan des deux premières composantes principales axes=c(1,2), que pouvez vous dire de
# Affichage des individus sur les 2 premiers axes, ainsi que leur qualité de représentation.
plot(res_pca, choix="ind", habillage="cos2")
# NOTE : les individus "proches du centre" sont mals voire très mal projetés,
# on ne peut donc pas conclure qu'ils sont proches du centre de gravité.
# Bourguignon et Karpov ?
# Bien représentés et très éloignés le long de l'axe 1 => individus très différents.
decathlon[rownames(decathlon) %in% c("BOURGUIGNON","Karpov"),]
# En effet hormis au saut à la perche, Karpov est nettement meilleur.
# Barras et Qi ?
# Qi étant très mal projeté, mais Barras plutôt bien,
# on en déduit que ces deux individus sont éloignés le long d'un autre axe.
decathlon[rownames(decathlon) %in% c("Barras","Qi"),]
# Ce n'est pas flagrant numériquement : l'axe en question capte sans doute un faible pourcentage d'inertie.
# Casarsa ?
# Individu atypique différent de tous les autres.
rbind(
decathlon[rownames(decathlon) == "Casarsa",1:10],
"moyenne"=colMeans(decathlon[,1:10])
)
# On constate en effet des performances loin de la moyenne en longueur, 400m, 110H, disque et 1500m
# Serble et Clay ?
# Relativement mal projetés, donc on ne peut rien dire : peut-être proches, peut-être très différents.
decathlon[rownames(decathlon) %in% c("SEBRLE","Clay"),]
# Performances plutôt différentes en lancer de disque et javelot.
3) Comment interpréter ces deux premières composantes principales axes=c(1,2).
# D'après la comparaison Karpov vs. BOURGUIGNON, le premier axe représenterait la performance globale :
# de plus en plus performant de gauche à droite.
# Concernant le second axe, comparons deux individus extrêmes aux performances comparables :
decathlon[rownames(decathlon) %in% c("Casarsa","NOOL"),]
# Différences notables au niveau du saut en longueur, lancers de poids et disque, 400m et 1500m :
# NOOL est moins bon en lancers, mais court plus vite et saute plus loin.
# L'axe 2 serait donc positivement corrélé à la performance aux lancers,
# et négativement corrélé à la perf. en sauts et courses.
# Vérification : coefficients de la seconde variable =
cbind(names(decathlon)[1:10], res_pca$svd$V[,2])
# L'interprétation ci-dessus n'est donc pas tout à fait vraie (cf. 400m en particulier).
4) Étudier le graphique des variables. Savez vous justifier pourquoi le cercle est centré sur l’origine 0 et de rayon 1 ?
plot(res_pca, choix="var")
Première dimension = points (logiquement inversement corrélé au rang), d'après le cercle des corrélations. Le cercle est centré sur l'origine et de rayon 1 car on observe des corrélations dans l'intervalle [-1,1]. Concernant l'axe 2, on note une légère corrélation positive avec le temps réalisé au 1500m (donc corrélation négative avec la performance) : plus un athlète progresse sur cet axe, plus il court le 1500m lentement. La corrélation valant à peine 0.5, ce n'est toutefois qu'une tendance, pas une règle.
5) Que peut-on dire sur les scores des épreuves du 110m haie et les épreuves du 100m.
Les flèches correspondantes sur le cercle des corrélations forment un angle très faible, et touchent presque le bord : on en déduit que ces variables sont très corrélées. C'est assez logique.
6) Quid de ces scores par rapport au saut en longueur ?
Ces scores semblent négativement corrélés avec la variables saut en longueur : plus un athlète court vite, moins il a tendance à sauter loin.
7) Que peut-on dire sur les scores de l'épreuve du javelot ou du saut à la perche ?
Ces deux variables étant très mal projetées, on ne peut pas en dire grand chose dans ce plan factoriel.
8) Qu'est ce que le 3ème axe factoriel semble représenter ?
plot(res_pca, axes=c(1,3), choix="var")
# Nette corrélation positive avec le temps au 1500m, et la hauteur de saut à la perche.
# Les athlètes ayant une grande coordonnée sur l'axe 3 auraient tendance à être lent au 1500m
# mais performants au saut à la perche.
# Vérification : coefficients de la troisième variable =
cbind(names(decathlon)[1:10], res_pca$svd$V[,3])
# L'interprétation ci-dessus est donc vérifiée, et complétée par une
# légère corrélation négative avec la performance au javelot (-0.32).
9) Combien d'axes factoriels conserveriez vous ?
# Affichage de la variance cumulée :
t(as.matrix(res_pca$eig[,3]))
# Pour capter au moins 85% de l'information, on garde 6 axes.
# Pour capter au moins 90% de l'information, on en conserve 7.
# Cela semble élevé : en pratique on se contenterait sans doute des 4 premiers
# (environ 75% de variance expliquée).
10) Ajoutez au jeu de données initial les scores de Kevin Mayer réalisés lors du championnat du monde 2017 de décathlon, réalisez l'ACP avec cette performance comme individu supplémentaire et interpréter vos résultats.
# Kevin Mayer
Mayer <- c(10.70, 7.52, 17.72, 2.08, 48.26, 13.75, 47.14, 5.10, 66.10, 276.73, 1, 8768, NA)
decathlon2 <- decathlon
levels(decathlon2[, 13]) <- c(levels(decathlon[, 13]), "London")
decathlon2 <- rbind(decathlon2, Mayer)
rownames(decathlon2)[42] <- "Mayer"
decathlon2[42, 13] <- "London"
res_pca2 <- PCA(decathlon2, quanti.sup=c(11,12), quali.sup=13)
# Kevin Mayer contribue largement à l'optimisation de l'axe 1,
# et dans une proportion non négligeable à celui de l'axe 2 :
res_pca2$ind$coord[40:42,]
res_pca2$ind$contrib[40:42,]
# On en déduit que le premier plan factoriel doit s'en trouver affecté. En effet,
plot(res_pca2, choix="var")
# Les flèches 100m et 110H sont encore plus proches, donc encore plus corrélées qu'en première analyse.
# De plus, la variable 1500m obtient une corrélation cette-fois supérieure à 0.5 sur le second axe.
# vérification : calcul des matrices des corrélations entre variables
cor(decathlon[,1:6]) #corrélation 100m - 110H = 0.58
cor(decathlon2[,1:6]) #corrélation 100m - 110H = 0.60
11) À l’aide des commandes ci-après, interprétez l’ajout de la variable "Competition" comme variable qualitative illustrative.
plot(res_pca, axes = c(1,2), habillage=13)
# Le décathlon "OlympicG" semble d'un légèrement meilleur niveau que "Decastar".
# Cependant en y regardant de plus près ce sont les mêmes athlètes qui ont réalisé de meilleures
# performances à l'occasion des Jeux Olympiques : Karpov <--> KARPOV, Sebrle <--> SEBRLE, Clay <--> CLAY