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)

Analyse préliminaire des données

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 ?

Visualisation des données

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.

Ellipsoïde et ACP

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.

ACP avec 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.