Nous étudions les réponses aux questionnaires de 237 étudiants de l’Université d’Adélaïde.
A l’aide des commandes suivantes, charger le package MASS
et les données correspondantes :
library("MASS")
data(survey)
help(survey)
summary(survey)
Quelles sont les variables, leur nature ?
Il ne sera pas possible de faire une ACP sur l’ensemble des données du tableau car certaines variables sont qualitatives.
Vous constaterez que le tableau contient des données manquantes, nous allons les supprimer :
survey.cc <- survey[complete.cases(survey), ]
dim(survey.cc)
## [1] 168 12
Combien d’individu contient le tableau survey.cc
?
Nous allons nous intéresser uniquement ici aux variables quantitatives WR.Hnd
,NW.Hnd
et Height
. La variable Sex
sera considérée également à titre illustratif.
couleur <- ifelse(survey.cc$Sex=="Male",'blue','red')
X = survey.cc[,c("Wr.Hnd","NW.Hnd","Height")]
Nous visualisons dans un premier temps les données.
library("rgl")
plot3d(X, col = couleur)
Centrer et réduire le tableau de données, enregister le nouveau résultat dans un tableau X.sc
et tracer le nuage de points.
X.sc= scale(X)
plot3d(X.sc, type = "s", col = couleur)
En faisant tourner la figure, chercher le meilleur plan de visualisation des données.
A partir de la matrice de corrélation, pour mieux visualiser, nous pouvons définir un intervalle de confiance à 95% (c’est-à-dire que, sous l’hypothèse de gaussianité des données, moins de 5% des données seront en dehors de l’ellipsoïde). Pour calculer la matrice de corrélation
C = cor(X)
C
## Wr.Hnd NW.Hnd Height
## Wr.Hnd 1.0000000 0.9651297 0.6510316
## NW.Hnd 0.9651297 1.0000000 0.6296482
## Height 0.6510316 0.6296482 1.0000000
plot3d(ellipse3d(C), col = "green", add = TRUE)
La figure représentée en gris est un ellipsoïde, son plus grand diamètre correspond au premier axe de l’ACP, le moyen diamètre au second axe et le plus petit au troisième axe. Le meilleur plan obtenu est donc celui engendré par les deux premiers axes de l’ACP.
FactoMineR
La fonction permettant de faire une ACP avec FactoMineR
est PCA()
. La commande suivante permet de réaliser une ACP sur le tableau X.sc
.
library('FactoMineR')
X.comp = cbind(X,survey.cc$Sex)
res.pca = PCA(X.comp,quali.sup=4,graph=FALSE)
plot(res.pca,habillage=4,col.hab=c("red","blue"))
L’option quali.sup=4
permet d’indiquer que la quatrième colonne est une variable qualitative supplémentaire qui ne sera donc pas prise en compte dans le calcul des axes principaux. La fonction PCA()
admet aussi d’autres options (ind.sup
, quanti.sup
,…) que nous aborderons plus tard dans le cours. La standardisation est faite automatiquement par défaut, pour réaliser une ACP non normée, il faut utiliser l’option scale.unit=FALSE
.