Corrigé - Persane - Emmanuel Périnel
Download
Report
Transcript Corrigé - Persane - Emmanuel Périnel
Université de Strasbourg
Analyse des données
Master de Sciences, Spécialité Statistique
2014/15
Master Actuariat
Emmanuel Périnel
Analyse des données - Logiciel R
TP n2. L'Analyse en Composantes Principales (ACP) Corrigé
1. Une ACP à la main sur un jeu de données à deux variables.
L'objectif de cet exercice est de retrouver les résultats d'une analyse en composantes
principales normée (c'est-à-dire lorsque les données sont centrées et réduites) en utilisant le formalisme matriciel du logiciel R.
1. Sous Rcmdr, créer le jeu de données suivant (appelé par exemple
individus et deux variables quantitatives (de type
Données → Nouveau jeu de données.
X1
0
1
2
3
4
Remarque importante.
avoir
visualisé
ou
édité
data)
comportant cinq
numeric dans le langage R) :
X2
1
2
2
3
2
Le logiciel Rcmdr est sensible aux fenêtres mal fermées ! Après
des données, il est vivement conseillé de
refermer la fenêtre
achant ces données avant de réaliser d'autres analyses (sous peine de planter le logiciel
R...)
2. Centrer-réduire les variables à l'aide de l'outil de gestion des variables :
Données → Gérer les variables dans le jeu de données actif → Standardiser les variables.
3. Visualiser le nuage des cinq individus dans l'espace des deux variables centrées réduites.
Graphes → Nuage de points → Choisir Z.X1 et Z.X2.
4. Construire le jeu de données constitué des seules données centrées réduites :
> datacr = data[,3:4]
5. Dans Rcmdr, la réduction des données est réalisée en utilisant la formule de l'écart type
suivant :
s′ =
√
1
n−1
∑n
i=1 (xi
−x
¯)2 .
Mais pour retrouver les résultats usuels de l'ACP, il
convient de réduire les données sur la base de l'écart type habituel
s=
√ ∑
n
1
n
i=1 (xi
−x
¯ )2 .
Quelle transformation doit-on appliquer aux données an d'obtenir des données standardisées selon l'écart-type
s?
Eectuer cette transformation.
√
On multiplie toutes les données par le rapport
> datacr = sqrt(5/4) * datacr
n
n−1 (avec
n = 5)
:
6. Pour eectuer l'ACP à l'aide du langage matriciel, il est nécessaire de transformer le jeu
de données
data (qui correspond au type dataframe dans le langage de R) en une matrice
X, grâce la commande :
> X = as.matrix(datacr)
7. Calculer la matrice
> t(X) %*% X
(X'X)
(où %*% désigne le produit matriciel dans R) :
8. Lorsque les individus sont aectées de masses (ou poids)
est égale à
matrice
V
mi =
1
n , la matrice à diagonaliser
1
′
n (X X). Calculer cette nouvelle matrice, que l'on notera
V.
coïncide bien avec la matrice des corrélations du jeu de données
Vérier que la
data.
> V = 1/5 * t(X) %*% X
> V
Z.X1
Z.X2
Z.X1 1.0000000 0.6708204
Z.X2 0.6708204 1.0000000
Puis : Statistique → Résumé → Matrice des corrélations (choisir X1 et X2)
On obtient bien :
> cor(data[,c("Z.X1","Z.X2")], use="complete.obs")
Z.X1
Z.X2
Z.X1 1.0000000 0.6708204
Z.X2 0.6708204 1.0000000
9. Déterminer les axes factoriels de l'ACP en calculant les vecteurs propres de la matrice
V
:
> vecp = eigen(V)$vectors
> vecp
[,1]
[,2]
[1,] -0.7071068 0.7071068
[2,] -0.7071068 -0.7071068
10. Vérier que la norme de chaque vecteur propre est bien égale à un et que les deux vecteurs
propres sont bien orthogonaux.
> v1 = vecp[,1]
> sqrt(v1%*%v1)
[,1]
[1,]
1
> v2 = vecp[,2]
> sqrt(v2%*%v2)
[,1]
[1,]
1
> v1%*%v2
[,1]
[1,] -1.013729e-17
11. Calculer l'inertie de chacun des axes factoriels en déterminant les valeurs propres de
V
:
> valp = eigen(V)$values
> valp
[1] 1.6708204 0.3291796
12. Calculer la somme des inerties des deux axes. Que constate-t-on ?
> sum(valp)
[1] 2
On retrouve le résultat suivant : en ACP normée, l'inertie totale (la somme des valeurs
propres) est égale au nombre de variables actives.
13. Représenter le nuage de points des données centrées réduites, puis utiliser la commande
abline(a,b) (qui trace une droite d'ordonnée à l'origine a et de pente b) an d'ajouter au
graphique les deux premiers axes factoriels.
Graphes → Nuage de points → Choisir Z.X1 et Z.X2.
Les coordonnées des deux premiers vecteurs propres étant de la forme
(a, a)
et
(−a, a),
les
deux premières directions factorielles sont déterminées respectivement par la première et
la deuxième bissectrice du plan :
> abline(0,1)
> abline(0,-1)
14. Calculer (à l'aide d'un produit scalaire) la coordonnée de l'individu 1 le long du premier
axe ; puis le long du deuxième axe. Faire de même pour l'individu 3.
> X[1,]%*%v1
[,1]
[1,] 2.118034
> X[1,]%*%v2
[,1]
[1,] 0.118034
> X[3,]%*%v1
[,1]
[1,]
0
> X[3,]%*%v2
[,1]
[1,]
0
15. Refaire l'ACP du jeu de données initial (data) à l'aide du menu déroulant de Rcmdr :
Statistique → Analyse multivariée → Analyse en composantes principales (Choisir : analy-
ser la matrice des corrélations et ajouter les composantes principales au jeu de données)
Identier, parmi les résultats proposés, ceux obtenus dans les questions précédentes : vecteurs et valeurs propres, composantes principales (à savoir les vecteurs renfermant les coordonnées des individus le long des axes factoriels).
> unclass(loadings(.PC)) # component loadings
Comp.1
Comp.2
X1 0.7071068 -0.7071068
X2 0.7071068 0.7071068
> .PC$sd^2 # component variances
Comp.1
Comp.2
1.6708204 0.3291796
> summary(.PC) # proportions of variance
Importance of components:
Comp.1
Comp.2
Standard deviation
1.2926022 0.5737418
Proportion of Variance 0.8354102 0.1645898
Cumulative Proportion 0.8354102 1.0000000
On retrouve au signe près (mais l'orientation des axes est arbitraire) les mêmes vecteurs
propres ainsi que les mêmes valeurs propres. En visualisant le jeu de données, il est possible
de vérier également que les composantes principales renferment bien les coordonnées des
individus obtenues dans la question 14 (là encore, au signe près compte tenu de l'orientation
diérente des axes).
Complément à propos de l'ACP à deux variables.
Lorsqu'une ACP normée est réalisée
sur un tableau de données ne comportant que deux variables quantitatives
x1 et x2 , des propriétés
intéressantes sont observées pour les valeurs propres et vecteurs propres obtenus :
Les composantes des vecteurs propres sont toutes égales à
1 ± r(x1 , x2 ),
x2 .
Les valeurs propres sont égales à
linéaire entre les variables
x1
et
où
r(x1 , x2 )
± √12
est le coecient de corrélation
1. Vérier que les résultats obtenus satisfont ces deux propriétés.
On a déjà vu que les coordonnées des vecteurs propres étaient données par :
> unclass(loadings(.PC)) # component loadings
Comp.1
Comp.2
X1 0.7071068 -0.7071068
X2 0.7071068 0.7071068
De plus, comme r(x1 , x2 ) = 0.671
1 − r(x1 , x2 ) = 0.329
on retrouve bien :
λ1 = 1 + r(x1 , x2 ) = 1.671
et
λ2 =
2. Que se passe-t-il lorsque les deux variables étudiées sont de corrélation nulle ? totalement
corrélées ?
Lorsque les deux variables sont non corrélées (r(x1 , x2 )
= 0),
l'analyse produit deux axes
de valeurs égales à 1. Si au contraire les variables sont totalement corrélées (r(x1 , x2 )
= 1),
alors un seul axe (d'inertie égale à 2) sut à résumer parfaitement le jeu de données
λ2 = 1 − r(x1 , x2 ) = 0.329
> unclass(loadings(.PC)) # component loadings
Comp.1
Comp.2
X1 0.7071068 -0.7071068
X2 0.7071068 0.7071068
2. ACP des données Taille .
1.
Importer
le jeu de données
taille.txt.
Ce jeu de données décrit la taille (en mètres) de
87 élèves (garçons) de l'école supérieure d'agronomie de Rennes ainsi que la taille du père
et celle de la mère de l'étudiant.
2. Produire les
statistiques descriptives
quartiles) pour les 3 variables du chier.
(moyenne, écart-type, coecients de variation,
mean
sd
cv %
TailleEleve 1.804943 0.06821433 0.03779307 0
TailleMere 1.632644 0.05765696 0.03531509 0
TaillePere 1.770230 0.05402362 0.03051785 0
3. À l'aide d'une
n
87
87
87
matrice de nuages de points
, visualiser les relations 2 à 2 entre les 3
variables. Faire apparaître les histogrammes sur la diagonale puis les graphes quantilesquantiles. Commenter.
1.55
1.60
1.65
1.70
1.75
1.95
1.50
1.75
1.65
1.75
1.85
TailleEleve
1.50
1.55
1.60
1.65
1.70
TailleMere
1.65
1.75
1.85
TaillePere
1.65
1.75
1.85
1.95
1.65
1.75
1.85
80
2
86
42
46 48 56
0
Z.TailleEleve
1
87
12
49
83
−1
4
−2
76
2
−2
−1
0
1
2
3
Z.TaillePere
Visuellement, l'intensité de la liaison entre la taille de l'élève et la taille du père est la
plus importante. Les deux autres liaisons sont sans doute positives, mais peu intenses. Les
graphes de la diagonales (histogrammes et QQ-plot montrent un écart à la normalité plus
important pour la variable
élève (même si l'on sait que l'hypothèse d'une taille distribuée
normalement est en général acceptable.)
4. Calculer les valeurs des
coecients de corrélation
cédentes. Ces coecients sont-ils
signicativement diérents de zéro ?
TailleEleve TailleMere TaillePere
TailleEleve
1.00
0.22
TailleMere
0.22
1.00
TaillePere
0.57
0.19
P
associés à chacune des liaisons pré-
0.57
0.19
1.00
TailleEleve TailleMere TaillePere
TailleEleve
0.0405
0.0000
TailleMere 0.0405
0.0736
TaillePere 0.0000
0.0736
Le premier tableau conrme les résultats de l'analyse graphique. Au seuil de risque de 5%,
le second tableau montre une seule liaison non signicative : celle entre la taille du père et
la taille de la mère.
5.
Centrer-réduire
nuage de points
(= standardiser) les variables
TailleEleve
et
TaillePere.
6. Un petit détour du côté de la régression...
Construire un
avec les consignes suivantes :
en ordonnée : la taille de l'élève centrée réduite
en abscisse : la taille du père centrée réduite
Faire gurer la droite de régression (ligne des moindres carrés) et choisir
en x et en y.
Ajouter dans un second temps la droite d'équation
décalage aléatoire
y = x.
Retrouver au travers de ce graphique, les résultats célèbres de la régression dus au statis-
0
−2
−1
Z.TailleEleve
1
2
ticien F. Galton.
−2
−1
0
1
2
3
Z.TaillePere
On remarque que la droite de régression permettant de prédire la taille d'un ls à partir de
celle de son père possède une pente inférieure à 1 (la bissectrice). Par conséquent, un père
dont la taille s'écarte de la moyenne de deux écarts types par valeur supérieure (respectivement inférieure) doit s'attendre à avoir un ls dont la taille sera également supérieure
(respectivement inférieure) à la moyenne (des ls), mais de moins de deux écarts types.
Schématiquement : un père de grande (respectivement petite) taille s'attend à un ls de
grande (respectivement petite) taille, mais moins (respectivement plus) grand qu'attendu.
7. Partant du même graphique qu'à la question précédente, choisir l'option
à la souris
Identier les points
et cliquer sur les individus les plus en périphérie du nuage ainsi que les plus
Attention!
axes factoriels
proches du centre de gravité. (
Ne pas oublier de faire un clic droit
→ arrêter,
an de sortir du mode identication des points ; sinon : risque important de planter R !).
8. Tracer (commande
abline ) les
1 et 2 de ce nuage de points.
On a déjà vu que pour une ACP à deux variables, les axes factoriels peuvent être tracés sur
le nuage de points des données centrées-réduites à l'aide des deux bissectrices (commandes
abline(0,1) et abline(0,-1))
2
80
42
12
46 56
48
0
Z.TailleEleve
1
87
1
−1
83
4
−2
76
2
−2
−1
0
1
2
3
Z.TaillePere
9. En déduire les observations qui ont les
contributions
les plus élevées aux axes 1 et 2.
Rappel : en ACP, un élément contribue d'autant plus à un axe qu'il possède une coordonnée
élevée (en valeur absolue) le long de cet axe, et que son poids est important.
D'après le graphique précédent, les individus 2, 80, 86 et 87 (de coordonnées importante le
long de la première bissectrice) auront de fortes contributions à l'axe 1. Selon un raisonnement similaire, les individus 12, 42, 76 et 83 posséderont une contribution élevée à l'axe 2.
10. À l'aide de FactoMiner, eectuer une ACP avec le paramétrage suivant :
Variables actives :
TailleEleve et TaillePere.
Scale the variables (= centrer réduire les variables = ACP normée.)
Onglet Outputs : cocher
valeurs propres et résultats pour les individus.
On vérie à ce niveau les contributions exactes des individus cités plus haut. On peut
obtenir les contributions triées à l'aide des commandes suivantes :
> sort(res$ind$contrib[,1], decreasing=T)
2
87
86
80
85
81
7.4953331678 7.0165709859 5.4275961241 5.2113256849 4.6277533616 3.7088411688
...
> sort(res$ind$contrib[,2], decreasing=T)
83
76
12
42
3
1
8.4608901933 8.4107654363 4.7809310689 4.7432704591 4.6616654973 4.6616654973
...
nuage de points en 3 dimensions
ACP normée
11. Construire le
pour les 3 variables centrées - réduites.
Quelle sera selon vous la variable la plus liée au premier axe factoriel de ce nuage de points ?
12. Eectuer l'
des 3 variables du chier. Que peut-on dire des individus 74,75
et 51,52 ? Valider votre conclusion en consultant les valeurs de ces individus dans le tableau
de données.
Les trois variables sont corrélées positivement avec l'axe 1. Les variables
TailleElève
TaillePère
et
sont très corrélées entre elles et très peu corrélées à la taille de la mère. Les
Variables factor map (PCA)
0.0
0.5
TailleMere
TailleEle
TailleP
−1.0
−0.5
0
−2
51
1541
52
23
2029
53
54
40
30
16
22
14
13
42
71
43
78
76 6250 7079
17
68
1 1121
33
26
36
43
58
32
35
34
7761 69 85
49
59
4427
5667
8 18
48
86
46
31
72
45
56719 37
64
66
65
38
60 818087
2524 83
55
82
63
12
47
28
9 10
73 84
39
57
7574
−4
Dim 2 (29.25%)
2
Dim 2 (29.25%)
2
1.0
Individuals factor map (PCA)
−2
0
2
−1.0
Dim 1 (56.4%)
−0.5
0.0
0.5
1.0
Dim 1 (56.4%)
quatre individus étant situés du côté positif de l'axe 1, ceux-ci ont tendance à être plus
grand que la moyenne, de même que leurs deux parents. Toutefois, les individus 51 et
52 étant positionnés du côté positif de l'axe 2, on peut armer que leur mère est plutôt
de grande taille, contrairement aux individus 74 et 75 dont la mère est sans doute plus
petite que la moyenne. Ce constat est facilement vériable en consultant le jeu des données
centrées réduites.
13. Découper la variable
TailleMère
en 4 classes de même eectif avec les étendues comme
nom de niveaux ; donner un nom à la nouvelle variable construite (de nature qualitative ou
de type
facteur selon la terminologie du logiciel R).
Le découpage en une variable à quatre modalités fournissant des eectifs très diérents
(malgré l'option même eectif ) on a opté pour un découpage en cinq classes, d'eectifs
plus équilibrés :
Mère4classes
[1.49,1.6] :26
(1.6,1.65] :34
(1.65,1.67]: 5
(1.67,1.75]:22
Mère5classes
[1.49,1.58]:19
(1.58,1.63]:21
(1.63,1.65]:20
(1.65,1.68]:12
(1.68,1.75]:15
14. Réaliser à nouveau l'ACP en étudiant cette dernière variable comme
taire
facteur supplémen-
. Dans les options graphiques, colorier les individus selon la variable
en 4 classes.
taille de la mère
On obtient la représentation factorielle ci-dessous :
On visualise sur le plan des individus cinq nuages de points bien séparés correspondant à
des élèves dont la mère est de plus en plus grande au fur et à mesure que l'on s'éloigne
dans la direction indiquée par la variable
TailleMère.
Variables factor map (PCA)
0.0
0.5
TailleMere
−0.5
TailleEle
TailleP
−1.0
Dim 2 (29.25%)
0
−2
51
1541
[1.49,1.58]
52
(1.58,1.63]
23
2029
53
(1.63,1.65]
54
40
2
30
16
(1.65,1.68]
(1.68,1.75]
22
14
13
42
71
43
(1.68,1.75]
78
62
76
7079
17
68
1 11(1.63,1.65]
(1.65,1.68]
21
5061 69
33
26
36
43
18
58
32
35
34
77
49
59
4427
5667
8(1.58,1.63]
85
48
86
46
31
72 45
56719 37
66 6460 8180
3865
25
24 83
87
6355 73 82
12
[1.49,1.58]
28
9 1047
84
39
57
7574
−4
Dim 2 (29.25%)
2
1.0
Individuals factor map (PCA)
−2
0
Dim 1 (56.4%)
2
−1.0
−0.5
0.0
0.5
Dim 1 (56.4%)
1.0