Documente Academic
Documente Profesional
Documente Cultură
#etu=read.csv2("etudiants.csv",row.names=1)
etu <-read.csv2(file.choose(),row.names=1)
head(etu)
summary(etu)
boxplot(etu,col=2:5);axis(side=1,at=1:4,labels=c("MATH","STAT","ARABE","ANGLAIS"),col.axis="magenta")
1
14
12
10
2
2.9
9
2.
1
1.
1.1
0
0.0
comp 1 comp 2 comp 3 comp 4
#Q-7
lambda <-diag(res$svd$vs[c(1,3)])
v1324=t(res$svd$V[c(2,4),c(1,3)])
round(lambda%*%v1324,2)
## [,1] [,2]
## [1,] 0.90 0.91
## [2,] 0.03 -0.04
plot(res,axes=c(1,3),choix="var",col.var=c("white",3,"white",2))
3
Variables factor map (PCA)
1.0
0.5
Dim 3 (0.089%)
ARABE STAT
0.0
● MATH
ANGLAIS
−0.5
−1.0
Dim 1 (71.89%)
# Q8
round(sum(res$eig[c(1,3),2]),1)
## [1] 72
#Q10
round(apply(res$ind$cos2[,1:2],1,sum),2)
res$ind$cos2
# Ce qui veut dire que tous les étudiants sont dans le plan (F1,F2)
# sauf sara (très proche)
#Q11
plot(res,choix="var",col.var=c(2,3,4,12),cex=.6) # cercle de corrélation en couleur
4
Variables factor map (PCA)
1.0
ARABE
0.5
ANGLAIS
Dim 2 (27.99%)
0.0
●
−0.5
STAT
MATH
−1.0
Dim 1 (71.89%)
MG <- apply(etu,1,mean)
sexe <- c("H","H","H","H","F","F","F","F","F")
(etud1<-cbind(etu,MG,sexe))
res3=PCA(etud1,quanti.sup=5,quali.sup=6)
summary(res3)
##
## Call:
5
## PCA(X = etud1, 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 cos2
## Mohamed | 2.776 | -2.743 29.068 0.976 | -0.427 1.813 0.024 | -0.023 1.647 0.000 |
## Ali | 1.250 | -1.241 5.947 0.985 | -0.153 0.232 0.015 | -0.004 0.060 0.000 |
## Ilyas | 1.472 | -1.031 4.106 0.490 | 1.049 10.926 0.508 | 0.058 10.552 0.002 |
## Anas | 3.144 | 3.138 38.050 0.996 | 0.186 0.342 0.003 | -0.011 0.404 0.000 |
## Soumaya | 2.146 | 2.051 16.261 0.914 | -0.628 3.911 0.086 | 0.025 1.871 0.000 |
## Houda | 1.785 | -0.971 3.643 0.296 | -1.498 22.254 0.703 | -0.026 2.126 0.000 |
## Yassmine | 1.967 | -0.335 0.433 0.029 | 1.937 37.248 0.970 | 0.055 9.464 0.001 |
## Firdaous | 1.434 | 0.620 1.486 0.187 | -1.291 16.536 0.811 | 0.066 13.626 0.002 |
## Sara | 0.979 | 0.510 1.006 0.271 | 0.824 6.739 0.708 | -0.139 60.249 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 v.test
## F | 0.398 | 0.375 0.891 0.700 | -0.131 0.108 -0.391 | -0.004 0.000 -0.206 |
## H | 0.497 | -0.469 0.891 -0.700 | 0.164 0.108 0.391 | 0.005 0.000 0.206 |
x11() # crée une fenêtre vide : pour ne pas écraser un graphique par un autre.
plot(res3,choix="ind",habillage=6)
6
Individuals factor map (PCA)
F
H
3
Yassmine
2
●
Ilyas●
Dim 2 (27.99%)
1 Sara
●
H Anas
●
● F
0
Mohamed Ali●
●
●
Soumaya
−1
●
● Firdaous
Houda
−2
−3
−3 −2 −1 0 1 2 3 4
Dim 1 (71.89%)
F
H
3
Yassmine
2
Ilyas●
Dim 2 (27.99%)
Sara
1
H ● Anas
● F
0
Ali●
●
Mohamed ●
Soumaya
−1
●
● Firdaous
Houda
−2
−3
−4 −2 0 2 4
Dim 1 (71.89%)
# ce qui veut dire les résultats des garçons et des filles ne sont pas
# significativements différents (au vu des 4 matières) ou / à la moyenne générale.
7
plot(res3,choix="var",col.var=c(2,3,4,12,6),cex=.8) # cercle de corrélation en couleur
1.0
ARABE
0.5 ANGLAIS
Dim 2 (27.99%)
0.0
● MG
−0.5
STAT
MATH
−1.0
Dim 1 (71.89%)
dimdesc(res3, axes = 1:2) # même chose que Cercle-Corrélation mais avec la significativité
## $Dim.1
## $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
# et très utile lorsque p est très grand
dimdesc(res3, axes = 1:2,prob=.1)# Pour visualiser la structure des notes
## $Dim.1
## $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
##
##
## $Dim.2
## $Dim.2$quanti
## correlation p.value
## ARABE 0.6573601 0.05435131
## MATH -0.5840463 0.09867318
8
x11()
plot(res3,choix="ind",select="contrib 7") # les 7 premiers contributifs au 1er plan
3
Yassmine
2
●
Ilyas●
Dim 2 (27.99%)
H Anas
●
● F
0
●
Mohamed ●
Soumaya
−1
●
● Firdaous
Houda
−2
−3
−3 −2 −1 0 1 2 3 4
Dim 1 (71.89%)
x11()
require(LeLogicielR)
sort(res3$ind$cos2[,1]+res3$ind$cos2[,2],decreasing=TRUE)->cosi
barplot(cosi,col= "skyblue2",las=2)
fleches()
abline(h=mean(cosi),col="red",lty=2,lwd=2)
9
0.8
0.6
0.4
0.2
0.0
Mohamed
Anas
Ali
Yassmine
Soumaya
Ilyas
Sara
Firdaous
Houda
x11()
plot(res3,select="cos2 .98") # ceux qui ont QR >= 95%
Yassmine
2
Ilyas●
Dim 2 (27.99%)
H Anas
●
● F
0
●
Mohamed Ali
●
Soumaya
−1
●
● Firdaous
Houda
−2
−3
−3 −2 −1 0 1 2 3 4
Dim 1 (71.89%)
10
res3$eig # les valeurs et vecteurs propres et le cumul...
########### les individus qui contribuent plus que la moyenne (1/n) sur l'axe 1 #############
n <- 9
contribution <- data.frame(res3$ind$contrib[which(res3$ind$contrib[,1]>=100/n),1])
row.names(contribution )<-row.names(res3$ind$contrib)[which(res3$ind$contrib[,1]>=100/n)]
names(contribution )<- " les individus qui contribuent plus que la moyenne sur axe 1"
contribution
seuil=1/n*100
i=which(res3$ind$contrib[,1]>=seuil)
dd <-row.names(data.frame(sort(res3$ind$contrib[i,1],decreasing=TRUE)))
dd
res3$ind$contrib[dd,1]->con
s=cbind(sign(res3$ind$coord[dd,1]),con)
s=data.frame(s);s
## V1 con
## Anas 1 38.05024
## Mohamed -1 29.06785
## Soumaya 1 16.26097
s1=s[sign(s[,1])==-1,]
names(s)<-names(s1)<-c("sign","contr");s
## sign contr
## Anas 1 38.05024
## Mohamed -1 29.06785
## Soumaya 1 16.26097
ss=rbind(s[sign(s[,1])==1,],s1)
ss
## sign contr
## Anas 1 38.05024
## Soumaya 1 16.26097
## Mohamed -1 29.06785
11
############# Un résumé de Quatre Graphiques #######################
x11()
op <- par(mfrow = c(2, 2),bg="lightyellow")
plot(res3,choix="ind",sub="ACP 1 2")
sort(res3$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)
fleches()
sort(res3$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)
fleches()
35
Yassmine
2
Dim 2 (27.99%)
●
30
Ilyas● 25
Sara
1
H Anas● 20
●F
0
●
Ali●
15
Mohamed Soumaya●
●
10
Houda
●
Firdaous 5
−2
0
Anas
Mohamed
Soumaya
Ali
Ilyas
Sara
Yassmine
−3 −1 0 1 2 3 4
Firdaous
Houda
Dim 1 (71.89%)
ACP 1 2
35
30 Yassmine
2
Dim 2 (27.99%)
25 Ilyas●
1
20 H
●F
●
Ali
0
15 ● Anas
Mohamed Soumaya●
●
10 ●
5 Houda
●
Firdaous
−2
0
Yassmine
Ilyas
Sara
Soumaya
Mohamed
Anas
Ali
−3 −1 0 1 2 3 4
Firdaous
Houda
Dim 1 (71.89%)
cos2 sur Dim 1−2
par(op)
#La dimension 1 oppose des individus tels que Anas, Soumaya et Firdaous (à droite du graphe,
#caractérisés par une
#coordonnée fortement positive sur lŠaxe) à des individus comme Mohamed et Houda (à gauche du graphe, ca
12
#par une coordonnée fortement négative sur lŠaxe).
# de fortes valeurs pour les variables STAT et MATH (de la plus extrême à la moins extrême).
#La dimension 2 distingue particulièrement des individus tels que Yassmine et Ilyas
#(en haut du graphe, caractérisés par une coordonnées fortement positive sur lŠaxe).
hc <- HCPC(res3,nb.clust=-1,prob=.06)
hc$desc.var
##
## Link between the cluster variable and the quantitative variables
## ================================================================
## Eta2 P-value
## STAT 0.8219462 0.005644870
## MATH 0.7951220 0.008599759
## MG 0.7588715 0.014019931
## ANGLAIS 0.6934477 0.028808031
## ARABE 0.6852610 0.031178245
##
## Description of each cluster by quantitative variables
## =====================================================
13
## $`1`
## v.test Mean in category Overall mean sd in category Overall sd p.value
## MG -1.965974 7.333333 9.944444 1.217637 2.656302 0.04930156
## ANGLAIS -2.290862 6.833333 10.055556 1.027402 2.813109 0.02197138
## ARABE -2.335477 6.166667 10.222222 1.312335 3.473000 0.01951852
##
## $`2`
## NULL
##
## $`3`
## v.test Mean in category Overall mean sd in category Overall sd p.value
## STAT 2.563480 13.66667 9.833333 0.8498366 2.990726 0.01036287
## MATH 2.469324 13.83333 9.666667 0.6236096 3.374743 0.01353686
## MG 2.269236 12.95833 9.944444 1.6372402 2.656302 0.02325395
hc$desc.ind
## $para
## Cluster: 1
## Ali Houda Mohamed
## 0.6785368 1.0544917 1.1237207
## -------------------------------------------------------------------
## Cluster: 2
## Yassmine Ilyas Sara
## 0.6722120 0.7806902 0.9214766
## -------------------------------------------------------------------
## Cluster: 3
## Soumaya Anas Firdaous
## 0.1355416 1.4250856 1.4977280
##
## $dist
## Cluster: 1
## Mohamed Houda Ali
## 2.987107 2.851931 1.714283
## -------------------------------------------------------------------
## Cluster: 2
## Yassmine Sara Ilyas
## 2.942089 2.006734 1.850741
## -------------------------------------------------------------------
## Cluster: 3
## Anas Soumaya Firdaous
## 3.591368 3.011039 2.350776
x11()
plot(hc,choice="map", draw.tree=FALSE)
14
Factor map
cluster 1
cluster 2
3
cluster 3
Yassmine
2
●
cluster 2
Ilyas
Dim 2 (27.99%)
●
1 Sara
●
Anas
●
0
●
Ali ●
●
Mohamed cluster 3
●
cluster 1 Soumaya
−1
● Firdaous
Houda
−2
−3
−3 −2 −1 0 1 2 3 4
Dim 1 (71.89%)
x11()
plot(hc, choice="3D.map", angle=60)
cluster 1
cluster 2
cluster 3
2.5
2.0
Dim 2 (27.99%)
1.5
height
● 2.0
Yassmine 1.5
1.0
●
●
1.0
Ilyas
Sara 0.5
●
0.0
0.5
● Anas
●
Ali ●
−0.5
Mohamed
Soumaya −1.0
●
0.0
●
Firdaous −1.5
−3 −2 Houda
−1 0 1 2 3 4
Dim 1 (71.89%)
15
#Description of each cluster by quantitative variables
#=====================================================
#$`1`
# v.test Mean in category Overall mean sd in category Overall sd
#ANGLAIS -2.290862 6.833333 10.05556 1.027402 2.813109
#ARABE -2.335477 6.166667 10.22222 1.312335 3.473000
# p.value
#ANGLAIS 0.02197138
#ARABE 0.01951852
#$`2`
#NULL
#$`3`
# v.test Mean in category Overall mean sd in category Overall sd
#STAT 2.563480 13.66667 9.833333 0.8498366 2.990726
#MATH 2.469324 13.83333 9.666667 0.6236096 3.374743
# p.value
#STAT 0.01036287
#MATH 0.01353686
#La classe 1 est composée dŠindividus tels que Mohamed et Houda . Ce groupe est caractérisé par :
# de faibles valeurs pour les variables ARABE et ANGLAIS (de la plus extrême à la moins extrême).
#La classe 2 est composée dŠindividus tels que Ilyas et Yassmine. Ce groupe est caractérisé par :
#La classe 3 est composée dŠindividus tels que Anas, Soumaya et Firdaous . Ce groupe est caractérisé par
# de fortes valeurs pour les variables STAT et MATH (de la plus extrême à la moins extrême).
The R session information (including the OS info, R version and all packages used):
sessionInfo()
16
## [7] rgl_0.99.16 factoextra_1.0.5 ggplot2_3.1.0
## [10] FactoMineR_1.41 knitr_1.20
##
## loaded via a namespace (and not attached):
## [1] gtools_3.8.1 tinytex_0.6 tidyselect_0.2.5
## [4] xfun_0.3 purrr_0.2.5 lattice_0.20-35
## [7] colorspace_1.3-2 miniUI_0.1.1.1 htmltools_0.3.6
## [10] rlang_0.3.0.1 manipulateWidget_0.10.0 pillar_1.3.0
## [13] later_0.7.3 glue_1.3.0 withr_2.1.2
## [16] bindrcpp_0.2.2 bindr_0.1.1 plyr_1.8.4
## [19] stringr_1.3.1 munsell_0.5.0 gtable_0.2.0
## [22] htmlwidgets_1.2 leaps_3.0 evaluate_0.10.1
## [25] httpuv_1.4.4.2 crosstalk_1.0.0 highr_0.7
## [28] Rcpp_1.0.0 scales_1.0.0 promises_1.0.1
## [31] flashClust_1.01-2 scatterplot3d_0.3-41 webshot_0.5.0
## [34] jsonlite_1.5 mime_0.5 ellipse_0.4.1
## [37] digest_0.6.18 stringi_1.2.4 dplyr_0.7.8
## [40] ggrepel_0.8.0 shiny_1.1.0 grid_3.5.1
## [43] tools_3.5.1 magrittr_1.5 lazyeval_0.2.1
## [46] tibble_1.4.2 cluster_2.0.7-1 crayon_1.3.4
## [49] pkgconfig_2.0.1 MASS_7.3-50 assertthat_0.2.0
## [52] R6_2.3.0 compiler_3.5.1
Sys.time()
17