Ce travail est réalisé par l’étudiant AMZANI OMAR sous l’encadrement de Mr TOUIJAR.
0.1 Importation des données depuis :
<- read.csv2(file.choose(),row.names=1) ## charger le fichier de données " ex 4 td 2.csv " Note
0.2 Vérification de l’importation et étude descriptive univariée :
summary(Note) ## le résumé des données avant l'ACP; une sorte de vérification des données bien importées ou non, quantitatives et/ou qualitatives...
## MATH STAT ARABE ANGLAIS
## Min. : 5.500 Min. : 6.000 Min. : 5.00 Min. : 5.50
## 1st Qu.: 6.000 1st Qu.: 7.000 1st Qu.: 8.00 1st Qu.: 8.00
## Median : 9.000 Median : 9.500 Median :11.00 Median : 9.50
## Mean : 9.667 Mean : 9.833 Mean :10.22 Mean :10.06
## 3rd Qu.:13.000 3rd Qu.:12.500 3rd Qu.:12.50 3rd Qu.:12.00
## Max. :14.500 Max. :14.500 Max. :15.50 Max. :15.00
str(Note)
## 'data.frame': 9 obs. of 4 variables:
## $ MATH : num 6 8 6 14.5 14 11 5.5 13 9
## $ STAT : num 6 8 7 14.5 14 10 7 12.5 9.5
## $ ARABE : num 5 8 11 15.5 12 5.5 14 8.5 12.5
## $ ANGLAIS: num 5.5 8 9.5 15 12.5 7 11.5 9.5 12
On a importé ici une base de données concernant les notes des étudiants d’une classe. On choisit un échantillon de 9 étudiants
qu’on mesure selon 4 variables
:
MATH
: Quantitative note sur 20.STAT
: Quantitative note sur 20.ARABE
: Quantitative note sur 20.ANGLAIS
: Quantitative note sur 20. On a quatre variablesactives (p=4)
, donc on est dans un espace à 4 dimensions, par conséquent la représentation des individus n’est pas possible!
0.2.1 Ajouter deux autres variables :
MG
La moyenne générale de chaque étudiants: Variable Quantitative (note sur 20)Sexe
Le sexe de l’étudiants : Variable Qualitative ave deux modalités (M,F)
<- apply(Note,1,mean)
MG <- c("M","M","M","M","F","F","F","F","F")
Sexe <- data.frame(Note,MG,Sexe)
Notesummary(Note)
## MATH STAT ARABE ANGLAIS
## Min. : 5.500 Min. : 6.000 Min. : 5.00 Min. : 5.50
## 1st Qu.: 6.000 1st Qu.: 7.000 1st Qu.: 8.00 1st Qu.: 8.00
## Median : 9.000 Median : 9.500 Median :11.00 Median : 9.50
## Mean : 9.667 Mean : 9.833 Mean :10.22 Mean :10.06
## 3rd Qu.:13.000 3rd Qu.:12.500 3rd Qu.:12.50 3rd Qu.:12.00
## Max. :14.500 Max. :14.500 Max. :15.50 Max. :15.00
## MG Sexe
## Min. : 5.625 Length:9
## 1st Qu.: 8.375 Class :character
## Median : 9.500 Mode :character
## Mean : 9.944
## 3rd Qu.:10.875
## Max. :14.875
str(Note)
## 'data.frame': 9 obs. of 6 variables:
## $ MATH : num 6 8 6 14.5 14 11 5.5 13 9
## $ STAT : num 6 8 7 14.5 14 10 7 12.5 9.5
## $ ARABE : num 5 8 11 15.5 12 5.5 14 8.5 12.5
## $ ANGLAIS: num 5.5 8 9.5 15 12.5 7 11.5 9.5 12
## $ MG : num 5.62 8 8.38 14.88 13.12 ...
## $ Sexe : chr "M" "M" "M" "M" ...
0.3 Matrice de corrélation :
On visualise la matrice des corrélations entre les quatre variables actives
pour avoir une idée sur **la pertinance**
de l’ACP.
En effet :
\(1^{er}\) Méthode :
round(cor(Note[,-(5:6)]),2) ## Pour la pertinence de la méthode ACP.
## MATH STAT ARABE ANGLAIS
## MATH 1.00 0.98 0.23 0.51
## STAT 0.98 1.00 0.40 0.65
## ARABE 0.23 0.40 1.00 0.95
## ANGLAIS 0.51 0.65 0.95 1.00
\(2^{ème}\) Méthode :
library(PerformanceAnalytics)
chart.Correlation(Note[,-c(5,6)],histogram=TRUE)
On constate qu’on a une :
Forte corrélation positive entre
MATH
etSTAT
\(r_{12}=\) 0.98Forte corrélation positive entre
ARABE
etANGLAIS
\(r_{34}\)= 0.95Faible corrélation entre variables du Groupe1 (Scientifique) et variables du Groupe2 (Littéraire), par exemple, \(r_{13}=\) 0.23
Donc on peut regrouper nos variables en deux groupes :
\(1^{er}\) groupe (MATH et STAT) qui reflète la discipline Scientifique. \(2^{ème}\) groupe (ARABE et ANGLAIS) qui reflète la discipline Littéraire. On peut alors “espérer” réduire notre dimension de 4 à seulement deux dimensions, l’une “peut être” la discipline Scientifique et l’autre “peut être” la discipline Littéraire (à vérifier). Mais la chose dont on est sûr c’est que l’ACP réduira le dimension du Nuage.
0.4 Lancement de l’ACP :
Pour ce faire on doit décider entre l’ACP non Normée et l’ACP Normée.
boxplot(Note[,-(5:6)]) ## autre façon de comparer les variables et leurs dispersions relatives, points extrèmes, méthode normée ou non.
Il n’y a pas de raison apparente pour normer, même si on va choisir l’ACP Normée.
On lance alors l’ACP :
require(FactoMineR)
<- PCA(Note,quanti.sup=5 , quali.sup=6) Note.acp
summary(Note.acp) ## résumé des sorties ACP.
##
## Call:
## PCA(X = Note, quanti.sup = 5, quali.sup = 6)
##
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4
## Variance 2.876 1.120 0.004 0.001
## % of var. 71.892 27.992 0.089 0.026
## Cumulative % of var. 71.892 99.884 99.974 100.000
##
## Individuals
## Dist Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr
## Mohamed | 2.776 | -2.743 29.068 0.976 | -0.427 1.813 0.024 | -0.023 1.647
## Ali | 1.250 | -1.241 5.947 0.985 | -0.153 0.232 0.015 | -0.004 0.060
## Ilyas | 1.472 | -1.031 4.106 0.490 | 1.049 10.926 0.508 | 0.058 10.552
## Anas | 3.144 | 3.138 38.050 0.996 | 0.186 0.342 0.003 | -0.011 0.404
## Soumaya | 2.146 | 2.051 16.261 0.914 | -0.628 3.911 0.086 | 0.025 1.871
## Houda | 1.785 | -0.971 3.643 0.296 | -1.498 22.254 0.703 | -0.026 2.126
## Yassmine | 1.967 | -0.335 0.433 0.029 | 1.937 37.248 0.970 | 0.055 9.464
## Firdaous | 1.434 | 0.620 1.486 0.187 | -1.291 16.536 0.811 | 0.066 13.626
## Sara | 0.979 | 0.510 1.006 0.271 | 0.824 6.739 0.708 | -0.139 60.249
## cos2
## Mohamed 0.000 |
## Ali 0.000 |
## Ilyas 0.002 |
## Anas 0.000 |
## Soumaya 0.000 |
## Houda 0.000 |
## Yassmine 0.001 |
## Firdaous 0.002 |
## Sara 0.020 |
##
## Variables
## Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr cos2
## MATH | 0.811 22.892 0.658 | -0.584 30.465 0.341 | -0.012 4.104 0.000 |
## STAT | 0.902 28.294 0.814 | -0.430 16.549 0.185 | 0.026 19.466 0.001 |
## ARABE | 0.753 19.707 0.567 | 0.657 38.593 0.432 | 0.032 28.346 0.001 |
## ANGLAIS | 0.915 29.107 0.837 | 0.401 14.393 0.161 | -0.041 48.085 0.002 |
##
## Supplementary continuous variable
## Dim.1 cos2 Dim.2 cos2 Dim.3 cos2
## MG | 1.000 1.000 | 0.014 0.000 | 0.003 0.000 |
##
## Supplementary categories
## Dist Dim.1 cos2 v.test Dim.2 cos2 v.test Dim.3 cos2
## F | 0.398 | 0.375 0.891 0.700 | -0.131 0.108 -0.391 | -0.004 0.000
## M | 0.497 | -0.469 0.891 -0.700 | 0.164 0.108 0.391 | 0.005 0.000
## v.test
## F -0.206 |
## M 0.206 |
summary(Note.acp,nbelements=Inf) ## sortie complète de l'ACP.
##
## Call:
## PCA(X = Note, quanti.sup = 5, quali.sup = 6)
##
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4
## Variance 2.876 1.120 0.004 0.001
## % of var. 71.892 27.992 0.089 0.026
## Cumulative % of var. 71.892 99.884 99.974 100.000
##
## Individuals
## Dist Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr
## Mohamed | 2.776 | -2.743 29.068 0.976 | -0.427 1.813 0.024 | -0.023 1.647
## Ali | 1.250 | -1.241 5.947 0.985 | -0.153 0.232 0.015 | -0.004 0.060
## Ilyas | 1.472 | -1.031 4.106 0.490 | 1.049 10.926 0.508 | 0.058 10.552
## Anas | 3.144 | 3.138 38.050 0.996 | 0.186 0.342 0.003 | -0.011 0.404
## Soumaya | 2.146 | 2.051 16.261 0.914 | -0.628 3.911 0.086 | 0.025 1.871
## Houda | 1.785 | -0.971 3.643 0.296 | -1.498 22.254 0.703 | -0.026 2.126
## Yassmine | 1.967 | -0.335 0.433 0.029 | 1.937 37.248 0.970 | 0.055 9.464
## Firdaous | 1.434 | 0.620 1.486 0.187 | -1.291 16.536 0.811 | 0.066 13.626
## Sara | 0.979 | 0.510 1.006 0.271 | 0.824 6.739 0.708 | -0.139 60.249
## cos2
## Mohamed 0.000 |
## Ali 0.000 |
## Ilyas 0.002 |
## Anas 0.000 |
## Soumaya 0.000 |
## Houda 0.000 |
## Yassmine 0.001 |
## Firdaous 0.002 |
## Sara 0.020 |
##
## Variables
## Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr cos2
## MATH | 0.811 22.892 0.658 | -0.584 30.465 0.341 | -0.012 4.104 0.000 |
## STAT | 0.902 28.294 0.814 | -0.430 16.549 0.185 | 0.026 19.466 0.001 |
## ARABE | 0.753 19.707 0.567 | 0.657 38.593 0.432 | 0.032 28.346 0.001 |
## ANGLAIS | 0.915 29.107 0.837 | 0.401 14.393 0.161 | -0.041 48.085 0.002 |
##
## Supplementary continuous variable
## Dim.1 cos2 Dim.2 cos2 Dim.3 cos2
## MG | 1.000 1.000 | 0.014 0.000 | 0.003 0.000 |
##
## Supplementary categories
## Dist Dim.1 cos2 v.test Dim.2 cos2 v.test Dim.3 cos2
## F | 0.398 | 0.375 0.891 0.700 | -0.131 0.108 -0.391 | -0.004 0.000
## M | 0.497 | -0.469 0.891 -0.700 | 0.164 0.108 0.391 | 0.005 0.000
## v.test
## F -0.206 |
## M 0.206 |
Il s’agit la dessus d’une exploration simple des sorties logiciel.
D’une manière plus approfondie, une fois qu’on aura retenu les axes pertinents par la méthode de Kaiser, par exemple, on procédera ensuite à la description de ces axes factoriels retenus, par :
1- Le cercle de corrélation;
2- la description automatique des axes : dimdesc(Note.acp)
$eig ## les valeurs et vecteurs propres et le cumul... Note.acp
## eigenvalue percentage of variance cumulative percentage of variance
## comp 1 2.875686772 71.89216929 71.89217
## comp 2 1.119687364 27.99218409 99.88435
## comp 3 0.003577590 0.08943975 99.97379
## comp 4 0.001048275 0.02620687 100.00000
$eig[,1] ## les valeurs propres. Note.acp
## comp 1 comp 2 comp 3 comp 4
## 2.875686772 1.119687364 0.003577590 0.001048275
Commençons d’abord par préciser le nombre d’axes à retenir.
0.5 Le nombre d’axes à retenir :
0.5.1 méthode de Kaiser :
1- Par seuil
<- which(Note.acp$eig[,1]>=1) # les n° des axes dont les val-proprs>=1
i0 if(length(i0)==1) {
<- data.frame(Note.acp$eig[1:2,1]) # réecrire comme data.frame pour pouvoir ajouter les noms (lignes et colonnes)
lambda names(lambda) <- "Kaiser nous permet de retenir le 1er axe mais on sera contraint de prendre aussi le deuxieme:" # ajout nom de la colonne
row.names(lambda) <- paste("F",c(i0,2),sep="") # ajout noms des lignes (les components)
lambdaelse {
} <- data.frame(Note.acp$eig[i0,1])
lambda names(lambda) <- paste("Kaiser nous a permis de retenir les",length(i0),"axes suivants :")
row.names(lambda) <- paste("F",i0,sep="")
# Il y a une autre méthode de l'ebouli des valeurs propres lambda}
## Kaiser nous a permis de retenir les 2 axes suivants :
## F1 2.875687
## F2 1.119687
2- Graphiquement
require(LeLogicielR)
barplot(Note.acp$eig[,1])
abline(h=1)
0.5.2 méthode de l’ebouli des valeurs propres ( tuyaux d’orgue : barplot)
require(factoextra)
fviz_eig(Note.acp, addlabels = TRUE, ylim = c(0,Note.acp$eig[1,2]+5))
Le premier plan principale nous rapporte donc 71.89 % de l’inertie totale (l’information) du jeu de données ce qui est nettement supérieure au seuil (86.1 %) donnée par les tables statistiques citées dans le livre de F.HUSSON et al. la variabilité expliquée par ce plan est donc significative.
0.6 Représentation des Variables quantitatives actives et Supplémentaires :
0.6.1 Cercle de corrélation :
plot(Note.acp, choix="var", col.var=rainbow(4)) ## cercle en couleur.
d’une façon bien précise et ordonnée on a :
0.6.2 Description automatique des axes :
dimdesc(Note.acp, axes = 1:2) ## même chose que Cercle-Corrélation mais avec la significativité et très utile lorsque p est très grand.
## $Dim.1
## $quanti
## correlation p.value
## MG 0.9998870 5.045635e-14
## ANGLAIS 0.9148940 5.443832e-04
## STAT 0.9020171 8.799312e-04
## MATH 0.8113552 7.940276e-03
## ARABE 0.7528105 1.922596e-02
##
## attr(,"class")
## [1] "condes" "list"
##
## $Dim.2
## named list()
## attr(,"class")
## [1] "condes" "list"
##
## $call
## $call$num.var
## [1] 1
##
## $call$proba
## [1] 0.05
##
## $call$weights
## [1] 1 1 1 1 1 1 1 1 1
##
## $call$X
## Dim.1 MATH STAT ARABE ANGLAIS MG Sexe
## Mohamed -2.7428277 6.0 6.0 5.0 5.5 5.625 Sexe=M
## Ali -1.2406355 8.0 8.0 8.0 8.0 8.000 Sexe=M
## Ilyas -1.0308943 6.0 7.0 11.0 9.5 8.375 Sexe=M
## Anas 3.1381288 14.5 14.5 15.5 15.0 14.875 Sexe=M
## Soumaya 2.0514708 14.0 14.0 12.0 12.5 13.125 Sexe=F
## Houda -0.9709424 11.0 10.0 5.5 7.0 8.375 Sexe=F
## Yassmine -0.3347428 5.5 7.0 14.0 11.5 9.500 Sexe=F
## Firdaous 0.6201774 13.0 12.5 8.5 9.5 10.875 Sexe=F
## Sara 0.5102656 9.0 9.5 12.5 12.0 10.750 Sexe=F
Ces deux méthodes ci-dessus, nous ont permis de conclure :
1- L’axe 1 (\(F^1\)) est très corrélé positivement, dans l’ordre, à la MG (Moyenne Générale de la classe) (0.9998870) , ANGLAIS (0.914894), , STAT (0.9020171), MATH (0.8113552) et ARABE (0.7528105) alors qu’avec l’axe 2 (\(F^2\)) aucune variable n’est suffisamment significative (mais on en trouve avec une probabilité de 10%). Par conséquent, on peut dire que (\(F^1\)) est l’axe de la Moyenne Générale alors que (\(F^2\)) est l’axe qui oppose la discipline Scientifique à la discipline Littéraire mais pas assez significativement.
Remarque :
1- Notons que la variable MG est extrêmement corrélée à \(F^1\) (corrélation = 1). Cette variable pourrait donc résumer à elle seule la dimension 1.
2- Les quatre Variables ont toutes des coordonnées positives sur L’axe 1 (\(F^1\)). C’est ce qu’on appelle Effet Taille. On peut ajouter que les étudiants qui ont des fortes coordonnées sur \(F^1\) ont une grande Moyenne générale (Les meilleurs de la classe) et donc ont des bonnes notes dans toutes les matières par exemple: Anas et soumaya. Par oppostion, les étudiants ayant des faibles coordonnées sur \(F^1\) ont une trés faible Moyenne générale (Les plus faibles de la classe) et donc ont des mauvaises notes par tout par exemple: Mohammed et Ali.
On passe à l’étape suivante qui est l’étude du mapping des individus.
Commençons par essayer de différencier les étudiants selon la seule V. Quali “Sexe”.
plotellipses(Note.acp)
On remarque que les ellipses des masculins et des féminins se chevauchent donc la moyenne masculine n’est pas significativement différente de la moyenne féminine.
0.7 Contribution des Individus aux axes retenus :
1-
On choisira sur chaque axe (ou sur le plan) les individus les plus “contributifs” (\(|contrib| \geq \frac{1}{n}\)) parmi ceux les bien représentés (QR assez grand). Pour ce, on dispose de plusieurs méthodes :
plot(Note.acp,choix="ind",habillage=6) ## mapping des individus.
plot(Note.acp,choix="ind",select="contrib 7") ## les 6 premiers contributifs au plan.
plot(Note.acp,select="cos2 .98") ## ceux qui ont QR >= 98% dans le plan.
2-
- les individus qui contribuent plus que la moyenne (\(\frac{1}{n}\)) sur les axes 1 et 2.
<- nrow(Note)
n =1/n*100
seuil<- which(Note.acp$ind$contrib[,1] >= seuil)
i <- row.names(data.frame(Note.acp$ind$contrib[i,1]))
sel =data.frame(cbind(sign(Note.acp$ind$coord[sel,1]),Note.acp$ind$contrib[sel,1]))
Tabnames(Tab) <- c("signe", "C.I.F1")
<- Tab[which(sign(Tab[,1])==1),]
Tabp <- Tab[which(sign(Tab[,1])==-1),]
Tabn <-Tabp[order(Tabp$C.I.F1,decreasing = TRUE),]
dfp <-Tabn[order(Tabn$C.I.F1,decreasing = FALSE),]
dfn <- rbind(dfp,dfn)) (dfT
## signe C.I.F1
## Anas 1 38.05024
## Soumaya 1 16.26097
## Mohamed -1 29.06785
<- which(Note.acp$ind$contrib[,2] >= seuil)
i <- row.names(data.frame(Note.acp$ind$contrib[i,2]))
sel =data.frame(cbind(sign(Note.acp$ind$coord[sel,2]),Note.acp$ind$contrib[sel,2]))
Tabnames(Tab) <- c("signe", "C.I.F2")
<- Tab[which(sign(Tab[,1])==1),]
Tabp <- Tab[which(sign(Tab[,1])==-1),]
Tabn <-Tabp[order(Tabp$C.I.F2,decreasing = TRUE),]
dfp <-Tabn[order(Tabn$C.I.F2,decreasing = FALSE),]
dfn <- rbind(dfp,dfn)) (dfT
## signe C.I.F2
## Yassmine 1 37.24834
## Firdaous -1 16.53623
## Houda -1 22.25366
0.7.1 - Graphiques pour la qualité de représentation et la contribution par FactoMineR :
0.7.2 1- QR sur le plan :
sort(Note.acp$ind$cos2[,1]+Note.acp$ind$cos2[,2],decreasing=TRUE) -> cos
barplot(cos,col= "skyblue2",las=2)
abline(h=mean(cos),col="red",lty=2)
0.7.3 2- Contrib :
<- par(mfrow = c(1, 2),bg="lightyellow")
op sort(Note.acp$ind$contrib[,1],decreasing=TRUE) -> cont
barplot(cont,col= "skyblue2",las=2,main="contrib a Dim 1")
abline(h=mean(cont),col="red",lty=2)
sort(Note.acp$ind$contrib[,2],decreasing=TRUE)->cont
barplot(cont,col="lightblue",las=2,main="contrib a Dim 2")
abline(h=mean(cont),col="red",lty=2)
par(op)
Autre méthode simple :
plot(Note.acp, choix="ind", select="co,trib 5", axes=c(1,1))
plot(Note.acp, choix="ind", select="contrib 5", axes=c(2,2))
3- Contrib au plan par factoextra
require(factoextra)
fviz_contrib(Note.acp, choice="ind", axes=c(1,2))
0.8 Classification hierarchique des individus :
HCPC(Note.acp, nb.clust=-1) ##nb.clust=-1 ==> choix auto du nb de clusters.
## **Results for the Hierarchical Clustering on Principal Components**
## name
## 1 "$data.clust"
## 2 "$desc.var"
## 3 "$desc.var$quanti.var"
## 4 "$desc.var$quanti"
## 5 "$desc.axes"
## 6 "$desc.axes$quanti.var"
## 7 "$desc.axes$quanti"
## 8 "$desc.ind"
## 9 "$desc.ind$para"
## 10 "$desc.ind$dist"
## 11 "$call"
## 12 "$call$t"
## description
## 1 "dataset with the cluster of the individuals"
## 2 "description of the clusters by the variables"
## 3 "description of the cluster var. by the continuous var."
## 4 "description of the clusters by the continuous var."
## 5 "description of the clusters by the dimensions"
## 6 "description of the cluster var. by the axes"
## 7 "description of the clusters by the axes"
## 8 "description of the clusters by the individuals"
## 9 "parangons of each clusters"
## 10 "specific individuals"
## 11 "summary statistics"
## 12 "description of the tree"
<- HCPC(Note.acp, nb.clust=-1) hc
$desc.axes hc
##
## Link between the cluster variable and the quantitative variables
## ================================================================
## Eta2 P-value
## Dim.1 0.7602861 0.01377462
## Dim.2 0.7224943 0.02137056
##
## Description of each cluster by quantitative variables
## =====================================================
## $`1`
## NULL
##
## $`2`
## v.test Mean in category Overall mean sd in category Overall sd
## Dim.2 2.400884 1.270251 -1.418618e-16 0.4806357 1.058153
## p.value
## Dim.2 0.01635552
##
## $`3`
## v.test Mean in category Overall mean sd in category Overall sd
## Dim.1 2.284007 1.936592 3.94746e-16 1.031154 1.695785
## p.value
## Dim.1 0.02237112
$data.clust hc
## MATH STAT ARABE ANGLAIS MG Sexe clust
## Mohamed 6.0 6.0 5.0 5.5 5.625 M 1
## Ali 8.0 8.0 8.0 8.0 8.000 M 1
## Ilyas 6.0 7.0 11.0 9.5 8.375 M 2
## Anas 14.5 14.5 15.5 15.0 14.875 M 3
## Soumaya 14.0 14.0 12.0 12.5 13.125 F 3
## Houda 11.0 10.0 5.5 7.0 8.375 F 1
## Yassmine 5.5 7.0 14.0 11.5 9.500 F 2
## Firdaous 13.0 12.5 8.5 9.5 10.875 F 3
## Sara 9.0 9.5 12.5 12.0 10.750 F 2
row.names(hc$data)[which(hc$data$clust==1)]
## [1] "Mohamed" "Ali" "Houda"
row.names(hc$data)[which(hc$data$clust==2)]
## [1] "Ilyas" "Yassmine" "Sara"
row.names(hc$data)[which(hc$data$clust==3)]
## [1] "Anas" "Soumaya" "Firdaous"
les individus appartenant à la première classe sont Mohamed, Ali, Houda. Cette classe est caractérisée par de faibles valeurs en ARABE, ANGLAIS et MG.
Ceux de la deuxième classe sont Ilyas, Yassmine, Sara. Cette classe est celle des moyens et plus au moins des littéraires.
Enfin ceux de la troisième classe sont Anas, Soumaya, Firdaous . Cette classe est caractérisée par les meilleurs partout.