library(dplyr)
library(ggplot2)
library(FactoMineR)
library(explor)
Exemple jouet : Considérons les notes (de 0 à 20) obtenues par 12 élèves dans 4 disciplines (mathématiques, physique, français, anglais).
Un exemple similiaire peut être trouve dans le fichier pdf de la la site web :
http://www.math.univ-toulouse.fr/~besse/Wikistat/pdf/st-l-des-multi
ou également dans la site web wikistat (Contributeurs: Alain Baccini, Philippe Besse et autes).
Notes<- matrix(c(6,6,5,5.5,8,8,8,8,6,7,11,9.5,14.5,14.5,15.5,15,14,14,12,12.5,11,
10,5.5,7,5.5,7,14,11.5,13,12.5,8.5,9.5,9,9.5,12.5,12,
12,11.5,14,12,6,8,8,7,15,16,14,12),nrow=12,byrow=T)
rownames(Notes) <- c("Rémi","Thomas","Gaëtan","Lenny","Louis.E","Louis.H",
"Antoine","Raphaël","Jean","Abdou","Matthieu","Sophie")
colnames(Notes) <- c("Math","Phys","Fr","Ang")
Cet exemple jouet est une pure fiction. Toute ressemblance avec des personnages existant ou ayant existé serait fortuite et indépendante de la volonté de l’enseignante …
Notes
## Math Phys Fr Ang
## Rémi 6.0 6.0 5.0 5.5
## Thomas 8.0 8.0 8.0 8.0
## Gaëtan 6.0 7.0 11.0 9.5
## Lenny 14.5 14.5 15.5 15.0
## Louis.E 14.0 14.0 12.0 12.5
## Louis.H 11.0 10.0 5.5 7.0
## Antoine 5.5 7.0 14.0 11.5
## Raphaël 13.0 12.5 8.5 9.5
## Jean 9.0 9.5 12.5 12.0
## Abdou 12.0 11.5 14.0 12.0
## Matthieu 6.0 8.0 8.0 7.0
## Sophie 15.0 16.0 14.0 12.0
Matrice de corrélation :
cor(Notes)
## Math Phys Fr Ang
## Math 1.0000000 0.9727308 0.4114137 0.6055654
## Phys 0.9727308 1.0000000 0.5222863 0.6738495
## Fr 0.4114137 0.5222863 1.0000000 0.9445221
## Ang 0.6055654 0.6738495 0.9445221 1.0000000
Remarquons que toutes les corrélations linéaires sont positives (ce qui signifie que toutes les variables varient, en moyenne, dans le même sens), certaines étant très fortes(0.97 et 0.94) et d’autres moyennes (0.67 et 0.41).
Matrice de variances-covariance :
La diagonale de la matrice de varances-covariances fournit les variances des 4 variables considérées.
cov.Notes<-11/12*cov(Notes)
cov.Notes
## Math Phys Fr Ang
## Math 12.375000 10.895833 4.937500 5.770833
## Phys 10.895833 10.138889 5.673611 5.812500
## Fr 4.937500 5.673611 11.638889 8.729167
## Ang 5.770833 5.812500 8.729167 7.338542
sum(diag(cov.Notes))
## [1] 41.49132
La somme des variances des 4 variables initiales (voir la diagonale de la matrice des variances-covariances) vaut 41.49, c’est-à-dire, la dispersion totale des individus considérés vaut 41.49.
Une question naturel se posse. Comment faire une étude simultanée des 4 variables ? Pour répondre ce question il faut faire appele à une méthode d’analyse multivarié : L’analyse en composantes principales (ACP).
Lorsque les données sont constituées de \(n\) individus décrits par \(p >3\) variables il devient impossible d’effectuer une représentation graphique, comme cela peut être le cas pour \(p=2\) et \(p=3\). L’ACP est une méthode exploratoire (i.e., descriptive) qui permet de décrire un jeu de données multivarié, de le résumer, d’en réduire la dimensionnalité.
Une ACP consiste en la transformation des \(p\) variables originelles, fortement liées entre elles, en nouvelles variables décorrélées les unes des autres. Ces nouvelles variables sont nommées composantes principales (voir les documents de cours pour plus de détails !).
\[C_j = \alpha_{j,1} X_1 + \alpha_{j,2} X_p + \ldots + \alpha_{j,p}X_p \quad j=1,\ldots,p\] Le nuage de points construit à partir des premières composantes contient généralement une information relativement fidèle du nuage de points originel à \(p\) dimensions.
Pour plus de details voir la site : http://factominer.free.fr/classical-methods/index_fr.html
ACP appliqué à l’exemple jouet
Notes.PCA <- PCA(Notes, scale.unit = FALSE,graph=FALSE)
Pourquoi dans la fonction PCA ci-dessous on a considéré l’argument scale.unit = FALSE ?
Taper sur la console de R la comande suivante explor(Notes.PCA). Que peut-on remarquer ?
Utiliser les résultats obtenus pour répondre aux questions suivantes :
combien d’axes retiendriez-vous pour l’ACP de ce jeu de données ?
quelle est la part d’inertie expliquée par le plan principal ?
visualiser les coordonnées des individus dans le plan factoriel
commenter les contributions des élèves aux variables principales.
Taper sur la console de R la commande Notes.PCA. On pet remarquer que chaque ligne du tableau ci-dessus correspond à une variable virtuelle (facteurs ou composantes) dont la colonne VAL. PR. (valeur propre) fournit la variance (en fait,chaque valeur propre représente la variance du facteur correspondant).
L’ACP peut être définie comme la recherche des combinaisons linéaires de plus grande variance, des variables initiales (les valeurs propres).
round(Notes.PCA$eig,2)
## eigenvalue percentage of variance cumulative percentage of variance
## comp 1 31.50 75.92 75.92
## comp 2 9.49 22.86 98.78
## comp 3 0.39 0.93 99.72
## comp 4 0.12 0.28 100.00
La somme des 4 valeurs propres obtenues vaut 41.49 (comme on l’a vu précédemment dans la somme de la diagonale de la matrice de covariance).
inertie=Notes.PCA$eig[,2]
barplot(inertie,ylab="% d'inertie",names.arg=round(inertie,2))
title("valeurs propres en %")
Notes.PCA$var$coord
## Dim.1 Dim.2 Dim.3 Dim.4
## Math 3.109711 -1.620314 0.2084252 -0.1893098
## Phys 2.958512 -1.111935 -0.3389558 0.1865700
## Fr 2.683554 2.088091 -0.2414257 -0.1378911
## Ang 2.423972 1.124136 0.4135945 0.1678104
Notes.PCA$var$cor
## Dim.1 Dim.2 Dim.3 Dim.4
## Math 0.8839902 -0.4606028 0.05924854 -0.05381464
## Phys 0.9291334 -0.3492080 -0.10645053 0.05859312
## Fr 0.7866012 0.6120596 -0.07076651 -0.04041854
## Ang 0.8947932 0.4149675 0.15267568 0.06194609
Il faut remarquer que le premier facteur est corrélé positivement, et assez fortement, avec chacune des 4 variables initiales : plus un élève obtient de bonnes notes dans chacune des 4 disciplines, plus il a un score élevé sur l’axe. Le deuxième axe corresponds à deux type de profil : les littéraires (corrélations positives) en haut et les scientifiques en bas (corrélations negatives).
Notes.PCA$ind$coord
## Dim.1 Dim.2 Dim.3 Dim.4
## Rémi -9.2074308 -1.861117273 0.14504724 -0.133927598
## Thomas -4.5309014 -0.688953550 0.22317918 -0.132841116
## Gaëtan -4.0839197 3.305703670 -0.06877213 -0.045174385
## Lenny 9.1061334 1.184506316 0.60224332 0.224566941
## Louis.E 5.8123304 -1.657342237 0.40352309 0.412368582
## Louis.H -3.4416729 -5.049254014 0.44374695 -0.184907474
## Antoine -2.0627627 6.332679179 -0.07086136 0.003193134
## Raphaël 1.4984208 -4.057606580 0.24968588 0.087948541
## Jean 0.6930346 2.754284456 0.65353112 0.278743323
## Abdou 4.1267051 1.470895954 -0.01262482 -0.891323810
## Matthieu -6.0709261 -0.001752782 -1.11057190 0.481314549
## Sophie 8.1609894 -1.732043139 -1.45812657 -0.099960687
Représentation des variables et répresentation d’individus
Notes.PCA <- PCA(Notes, scale.unit = FALSE,graph=TRUE)
Circle de corrélation
plot(Notes.PCA,choix="varcor")
Dans la réprésentation d’individus, l’axe 1 capture presque 76% de l’énergie totale. Il correspond, comme on l’a vu précédemment, au niveau global de l’élève. Par exemple, Lenny apparait comme un meilleur élève que Rémi. L’axe 2 capture presque 23% de l’énergie, de sorte que les 2 axes capturent presque 99% de l’énergie. Cet axe correspond à la différence entre littéraire et scientfique. Par exemple, l’élève “le plus haut” sur le graphique, celui qui a la coordonnée la plus élevée sur l’axe 2, est Antoine dont les résultats sont les plus contrastés en faveur des disciplines littéraires (14 et 11.5 contre 7 et 5.5). C’est exactement le contraire pour Louis.H qui obtient la moyenne dans les disciplines scientifiques (11 et 10) mais des résultats très faibles dans les disciplines littéraires (7 et 5.5). On notera que Matthieu et Thomas qui ont un score voisin de 0 sur l’axe 2 car ils ont des résultats très homogènes dans les 4 disciplines.
En regardant le circle de corrélation on voit bien que les deux axes capturent presque toute l’information. Sur le cercle des corrélations (1,2), les principes de lecture sont les suivants :