heptathlon Installer et charger le package ”HSAUR”
Transcription
heptathlon Installer et charger le package ”HSAUR”
Analyse en composantes principales : données des jeux olympiques - heptathlon Installer et charger le package ”HSAUR” Charger les données contenant les p = 7 résultats aux épreuves d’heptathlon et le score final attribué par le comité, pour n = 25 athlètes : > data(”heptathlon”, package = ”HSAUR”) Pour mettre toutes les performances dans la même direction (les grands résultats sont les meilleurs) nous pouvons remplacer les résultats obtenus par leur écart au pire résultat obtenu : > heptathlon$hurdles = max(heptathlon$hurdles) - heptathlon$hurdles > heptathlon$run200m = max(heptathlon$run200m) - heptathlon$run200m > heptathlon$run800m = max(heptathlon$run800m) - heptathlon$run800m Nous pouvons examiner les corrélations linéaires entre les variables 2 à 2, excepté la variable score : > cor(heptathlon[,-heptathlon$score]) > pairs(heptathlon) On constate que presque toutes les variables sont coorélées positivement, sauf pour l’épreuve plus ”technique” du javelot qui est peu ou corrélée négativement avec les épreuves de ”puissance”. La fonction prcomp effectue une ACP et produit une listes de résultats. L’option scale = TRUE sert à effectuer une ACP normée (les variables initiales sont centrées et réduites au préalable). > h pca = prcomp(heptathlon[,-heptathlon$score], scale = TRUE) > print(h pca) Standard deviations : [1] 2.1119364 1.0928497 0.7218131 0.6761411 0.4952441 0.2701029 0.2213617 1 Rotation : P C1 P C2 P C3 P C4 P C5 hurdles −0.4528710 0.15792058 −0.04514996 0.02653873 −0.09494792 highjump −0.3771992 0.24807386 −0.36777902 0.67999172 0.01879888 0.12431725 0.51165201 shot −0.3630725 −0.28940743 0.67618919 run200m −0.4078950 −0.26038545 longjump −0.4562318 0.08359211 −0.36106580 −0.64983404 0.05587394 0.13931653 javelin −0.0754090 −0.84169212 −0.47156016 run800m −0.3749594 0.12079924 0.13510669 0.22448984 −0.39585671 −0.60341130 0.50432116 P C6 P C7 hurdles −0.78334101 0.38024707 highjump 0.11129249 −0.18429810 0.09939981 −0.43393114 shot −0.05085983 −0.21762491 run200m longjump 0.02495639 −0.45338483 0.59020972 0.61206388 javelin −0.02724076 0.17294667 run800m 0.15555520 −0.09830963 Les vecteurs propres P C1, ..., P C7 sont les facteurs ou axes factoriels. Les colonnes de la matrice de départ après rotation (dans les nouvelles coordonnées) sont les composantes principales. Ces nouvelles variables ne présentent plus des corrélations linéaires, par construction. Nous devons en suite projeter les n individus sur les 2 premières composantes (ou plus si besoin) et regarder leurs liens avec les axes ainsi que la façon dont ils se regroupent. Nous projetons les anciennes variables (centrées et réduites au préalable) sur ces nouvelles coordonées - c’est le cercle des corrélations. En effet, les coordonnées de cette projection sont les corrélations des anciennes aux nouvelles variables. Nous pouvons superposer ces deux graphiques, mais seulement l’orientation des vecteurs correspondant aux anciennent variables peut aider à l’interprétation, pas leur valeur ou proximité avec les individus. La commande suivante nous indique comment récupérer les calculs fait par prcomp : > sum h pca = summary(h pca) ; summary(sum h pca) ; Ainsi, h pca$center et h pca$scale contiennent les moyennes et les écarts-type des variables initiales ; 2 sum h pca$rotation ou simplement h pca$rotation (affichée ci-dessus) indique la matrice de rotation des anciennes variables en nouvelles coordonnées des vecteurs propres ; sum h pca$x ou h pca$x contient la matrice des individus normée au préalable et exprimée dans les nouvelles coordonnées : (Si h=as.matrix(heptathlon) et on centre et réduit les colonnes : hs = scale(h), alors hs%*%h pca$rotation produira la même matrice) ; sum h pca$sdev ou h pca$sdev (valeurs affichés ci-dessus) contient les écarts-type des colonnes de h pca$x. La combinaison linéaire pour la première composante principale est > u1 = h pca$rotation[,1] > u1 Nous obtenons la même chose avec les commandes > plot(h pca) et > barplot(h pca$sdevˆ 2) Les variances ci-dessus sont les valeurs propres de la matrice de départ (centrée et réduite). La somme des variances est égale au nombre de variables (ici 7) car les variables ont été normalisées. Ici, les deux premières composantes principales expliquent une part de la variance totale égale à > (h pca$sdev[1]ˆ 2 + h pca$sdev[2]ˆ 2) / 7 = 80.79%. Calcul de la première composante principale : > hm = as.matrix(heptathlon[,-heptathlon$score]) > scale(hm) %*% h pca$rotation[,1] ou bien en utilisant > predict(h pca[,1]) Le graphique suivant superpose dans l’espace des deux premières composantes les individus et les variables d’origine (vecteurs) : > biplot(h pca, col = c(”gray”, ”black”)) L’épreuve de 200m et le saut en longueur reçoivent les poids les plus importants, mais l’épreuve du javelot le moindre poids. On constate un lien linéaire très fort entre le score attribué et le premier facteur de l’ACP : > plot(heptathlon$score,h pca$x[,1]) 3