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