library(dplyr)
library(questionr)
library(ggfortify)
library(ggplot2)
library(reshape2)
library(FactoMineR)
library(explor)
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
```
NotesL <-melt(Notes)
colnames(NotesL) <- c("Prenom","Matiere","Note")
Nous disposons des 4 variables quantitatives. Nous avons déjà vu comment analyser séparément chacune de ces 4 variables (soit en faisant un graphique, soit en calculant des résumés numériques). Par exemple :
#n=12 (12 étudiants)
#Remarque : attention au factor 11/12 (j'ai consideré la var sans correction)
summarise(group_by(NotesL, Matiere), Note.min = min(Note),
Note.max = max(Note), Note.moy = mean(Note),Note.var = 11/12*var(Note))
## # A tibble: 4 × 5
## Matiere Note.min Note.max Note.moy Note.var
## <fctr> <dbl> <dbl> <dbl> <dbl>
## 1 Math 5.5 15.0 10.00000 12.375000
## 2 Phys 6.0 16.0 10.33333 10.138889
## 3 Fr 5.0 15.5 10.66667 11.638889
## 4 Ang 5.5 15.0 10.12500 7.338542
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).
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
#diag(cov.Notes)
#sum(diag(cov.Notes))
On peut remarquer que 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.
Notes.PCA <- PCA(Notes, scale.unit = TRUE,graph=FALSE)
Chaque ligne du tableau ci-dessus correspond àune variable virtuelle (facteurs) dont la colonne VAL. PR. (valeur propre) fournit la variance (en fait,chaque valeur propre représente la variance du facteur correspondant).Un facteur est une combinaison linéaire des variables initiales dans laquelle les coefficients sont données par les coordonnées des vecteurs propres (changement de base).
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 3.07 76.79 76.79
## comp 2 0.88 21.88 98.67
## comp 3 0.04 1.05 99.72
## comp 4 0.01 0.28 100.00
On peut remarquer que la somme des 4 valeurs propres obtenues vaut 41.49. Le nuage de points en dimension 4 est toujours le même et sa dispersion globale n’a pas changé. Il s’agit d’un simple changement de base dans un espace vectoriel.
En résumé : l’ACP est un simple changement de base : passer d’une représentation dans la base canonique des variables initiales à une représentation dans la base des variables virtuelles ou facteurs définis par les vecteurs propres de la matrice des variances-covarinces.
Utiliser les résultats obtenus dans l’ACP 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.
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 0.8571774 -0.5071905 -0.06117226 0.06528916
## Phys 0.9075744 -0.4036409 0.09940278 -0.05917639
## Fr 0.8179501 0.5643078 0.10324119 0.04307612
## Ang 0.9187356 0.3695413 -0.13303729 -0.04080776
Notes.PCA$var$cor
## Dim.1 Dim.2 Dim.3 Dim.4
## Math 0.8571774 -0.5071905 -0.06117226 0.06528916
## Phys 0.9075744 -0.4036409 0.09940278 -0.05917639
## Fr 0.8179501 0.5643078 0.10324119 0.04307612
## Ang 0.9187356 0.3695413 -0.13303729 -0.04080776
Il faut remarqur 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 -2.9310724 -0.472692155 -0.04915672 0.04156629
## Thomas -1.4335580 -0.156952347 -0.07029720 0.04316194
## Gaëtan -1.1735851 1.035952126 0.03064328 0.01255782
## Lenny 2.9078599 0.307328072 -0.20167524 -0.05955304
## Louis.E 1.7944433 -0.531250748 -0.15314523 -0.12093009
## Louis.H -1.2267087 -1.478163190 -0.14974022 0.06205830
## Antoine -0.4456743 1.935085149 0.03679721 -0.00182872
## Raphaël 0.3521219 -1.230175550 -0.09469930 -0.02381740
## Jean 0.3390762 0.864603245 -0.22073252 -0.07689549
## Abdou 1.2866434 0.396461373 0.05092723 0.27562597
## Matthieu -1.9051355 0.005464451 0.33913085 -0.16445132
## Sophie 2.4355893 -0.675660427 0.48194787 0.01250574
Représentation des variables et répresentation d’individus
Notes.PCA <- PCA(Notes, scale.unit = FALSE,graph=TRUE)
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.
Circle de corrélation
plot(Notes.PCA,choix="varcor")
#explor(Notes.PCA)
En regardant le circle de corrélation on voit bien que les deux axes capturent presque toute l’information.