mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-01-14 15:54:13 +01:00
513 lines
22 KiB
R
513 lines
22 KiB
R
contribs <- res.notes$ind$contrib
|
|
contrib_moy_ind <- mean(contribs) # 100 * 1/42
|
|
contrib_therese <- res.notes$ind$contrib["Thérèse",3]
|
|
contrib_moy_ind
|
|
contrib_therese
|
|
quali_julien <- res.notes$ind$cos2["Julien", 1:2]
|
|
quali_julien
|
|
sum(quali_julien * 100)
|
|
contrib_moy_ind <- mean(res.notes$ind$contrib)
|
|
contrib_moy_ind
|
|
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[,1], decreasing = TRUE)
|
|
head(indiv_contrib_axe_1, 3)
|
|
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[,2:2], decreasing = TRUE)
|
|
indiv_contrib_axe_1[1:3]
|
|
mal_representes <- rownames(res.notes$ind$contrib)[rowSums(res.notes$ind$contrib[,1:2]) <= contrib_moy_ind]
|
|
cat("Les individus mal représentés sont : ", mal_representes)
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
summary(res.notes_sup, nb.dec = 2, nbelements = Inf, nbind = Inf)
|
|
contrib_moy_var <- mean(res.notes_sup$var$contrib) # 100 * 1/14
|
|
contrib_moy_var
|
|
var_contrib_axe_2 <- sort(res.notes_sup$var$contrib[,2:2], decreasing = TRUE)
|
|
head(var_contrib_axe_2, 3)
|
|
mal_representes <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= 0.6]
|
|
mal_representes
|
|
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[,2], decreasing = TRUE)
|
|
indiv_contrib_axe_1[1:3]
|
|
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[,2], decreasing = TRUE)
|
|
head(indiv_contrib_axe_1, 3)
|
|
knitr::opts_chunk$set(include = FALSE)
|
|
rm(list=ls())
|
|
library(dplyr)
|
|
notes_MAN <- read.table("notes_MAN.csv", sep=";", dec=",", row.names=1, header=TRUE)
|
|
# on prépare le jeu de données en retirant la colonne des Mentions
|
|
# qui est une variable catégorielle
|
|
notes_MAN_prep <- notes_MAN[,-1]
|
|
X <- notes_MAN[1:6,]%>%select(c("Probas","Analyse","Anglais","MAN.Stats","Stats.Inférentielles"))
|
|
# on prépare le jeu de données en retirant la colonne des Mentions
|
|
# qui est une variable catégorielle
|
|
# View(X)
|
|
X <- scale(X,center=TRUE,scale=TRUE)
|
|
X
|
|
cor_X <- cor(X)
|
|
eigen_X <- eigen(cor_X, symmetric = TRUE)
|
|
lambda <- eigen_X["values"]$values
|
|
vect <- eigen_X["vectors"]$vectors
|
|
lambda
|
|
inertie_total_1 <- sum(diag(cor_X)) # Inertie est égale à la trace de la matrice de corrélation
|
|
inertie_total_1
|
|
inertie_total_2 <- sum(lambda) # Inertie est aussi égale à la somme des valeurs propres
|
|
inertie_total_2
|
|
inertie_axes <- (lambda[1] + lambda[2]) / inertie_total_1 # Inertie expliquée par les deux premières composantes principales
|
|
inertie_axes
|
|
C <- X %*% vect
|
|
C[,1:2]
|
|
plot(
|
|
C[,1],C[,2],
|
|
main="Coordonnées des individus par rapport \n aux deux premières composantes principales",
|
|
xlab = "Première composante principale",
|
|
ylab = "Deuxieme composante principale",
|
|
panel.first = grid(),
|
|
col = c('blue', 'red', 'green', 'yellow', 'purple', 'orange'),
|
|
pch=15
|
|
)
|
|
legend(x = 'topleft', legend = rownames(X), col = c('blue', 'red', 'green', 'yellow', 'purple', 'orange'), pch = 15)
|
|
nrow(notes_MAN_prep) # Nombre d'individus
|
|
ncol(notes_MAN_prep) # Nombre de variables
|
|
dim(notes_MAN_prep) # On peut également utiliser 'dim' qui renvoit la dimension
|
|
library(FactoMineR)
|
|
# help(PCA)
|
|
# Ne pas oublier de charger la librairie FactoMineR
|
|
# Indication : pour afficher les résultats de l'ACP pour tous les individus, utiliser la
|
|
# fonction summary en précisant dedans nbind=Inf et nbelements=Inf
|
|
res.notes <- PCA(notes_MAN_prep, scale.unit = TRUE)
|
|
summary(res.notes, nbind = Inf, nbelements = Inf, nb.dec = 2)
|
|
eigen_values <- res.notes$eig
|
|
bplot <- barplot(
|
|
eigen_values[, 1],
|
|
names.arg = 1:nrow(eigen_values),
|
|
main = "Eboulis des valeurs propres",
|
|
xlab = "Principal Components",
|
|
ylab = "Eigenvalues",
|
|
col = "lightblue"
|
|
)
|
|
lines(x = bplot, eigen_values[, 1], type = "b", col = "red")
|
|
abline(h=1, col = "darkgray", lty = 5)
|
|
coords_man_stats <- res.notes$var$coord["MAN.Stats",]
|
|
coords_man_stats[1:2]
|
|
contribs <- res.notes$ind$contrib
|
|
contrib_moy_ind <- mean(contribs) # 100 * 1/42
|
|
contrib_therese <- res.notes$ind$contrib["Thérèse",3]
|
|
contrib_moy_ind
|
|
contrib_therese
|
|
quali_julien <- res.notes$ind$cos2["Julien", 1:2]
|
|
quali_julien
|
|
sum(quali_julien * 100)
|
|
contrib_moy_ind <- mean(res.notes$ind$contrib)
|
|
contrib_moy_ind
|
|
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[,1], decreasing = TRUE)
|
|
head(indiv_contrib_axe_1, 3)
|
|
indiv_contrib_axe_2 <- sort(res.notes$ind$contrib[,2], decreasing = TRUE)
|
|
head(indiv_contrib_axe_2, 3)
|
|
mal_representes <- rownames(res.notes$ind$contrib)[rowSums(res.notes$ind$contrib[,1:2]) <= contrib_moy_ind]
|
|
cat("Les individus mal représentés sont : ", mal_representes)
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
summary(res.notes_sup, nb.dec = 2, nbelements = Inf, nbind = Inf)
|
|
contrib_moy_var <- mean(res.notes_sup$var$contrib) # 100 * 1/14
|
|
contrib_moy_var
|
|
var_contrib_axe_2 <- sort(res.notes_sup$var$contrib[,2:2], decreasing = TRUE)
|
|
head(var_contrib_axe_2, 3)
|
|
mal_representes <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= 0.6]
|
|
mal_representes
|
|
indiv_contrib_axe_2 <- sort(res.notes$ind$contrib[,2], decreasing = TRUE)
|
|
head(indiv_contrib_axe_2, 4)
|
|
indiv_contrib_axe_2 <- sort(res.notes$ind$contrib[,2], decreasing = TRUE)
|
|
head(indiv_contrib_axe_2, 3)
|
|
View(X)
|
|
colors <- c('blue', 'red', 'green', 'yellow', 'purple', 'orange')
|
|
plot(
|
|
C[,1],C[,2],
|
|
main="Coordonnées des individus par rapport \n aux deux premières composantes principales",
|
|
xlab = "Première composante principale",
|
|
ylab = "Deuxieme composante principale",
|
|
panel.first = grid(),
|
|
col = colors,
|
|
pch=15
|
|
)
|
|
legend(x = 'topleft', legend = rownames(X), col = colors, pch = 15)
|
|
View(X)
|
|
View(notes_MAN)
|
|
View(res.notes)
|
|
mal_representes <- rownames(res.notes$ind$contrib)[rowSums(res.notes$ind$contrib[,1:2]) <= 4.334]
|
|
cat("Les individus mal représentés sont : ", mal_representes)
|
|
mal_representes <- rownames(res.notes$ind$contrib)[rowSums(res.notes$ind$contrib[,1:2]) <= contrib_moy_ind]
|
|
cat("Les individus mal représentés sont : ", mal_representes)
|
|
mal_representes <- rownames(res.notes$ind$cos2)[rowSums(res.notes$ind$cos2[,1:2]) <= mean(res.notes$ind$cos2[,1:2])]
|
|
cat("Les individus mal représentés sont : ", mal_representes)
|
|
View(notes_MAN_prep)
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
plot(res.notes_sup, habillage = "Mentions")
|
|
knitr::opts_chunk$set(include = FALSE)
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
knitr::opts_chunk$set(include = FALSE)
|
|
rm(list=ls())
|
|
library(dplyr)
|
|
notes_MAN <- read.table("notes_MAN.csv", sep=";", dec=",", row.names=1, header=TRUE)
|
|
# on prépare le jeu de données en retirant la colonne des Mentions
|
|
# qui est une variable catégorielle
|
|
notes_MAN_prep <- notes_MAN[,-1]
|
|
X <- notes_MAN[1:6,]%>%select(c("Probas","Analyse","Anglais","MAN.Stats","Stats.Inférentielles"))
|
|
# on prépare le jeu de données en retirant la colonne des Mentions
|
|
# qui est une variable catégorielle
|
|
# View(X)
|
|
X <- scale(X,center=TRUE,scale=TRUE)
|
|
X
|
|
cor_X <- cor(X)
|
|
eigen_X <- eigen(cor_X, symmetric = TRUE)
|
|
lambda <- eigen_X["values"]$values
|
|
vect <- eigen_X["vectors"]$vectors
|
|
lambda
|
|
inertie_total_1 <- sum(diag(cor_X)) # Inertie est égale à la trace de la matrice de corrélation
|
|
inertie_total_1
|
|
inertie_total_2 <- sum(lambda) # Inertie est aussi égale à la somme des valeurs propres
|
|
inertie_total_2
|
|
inertie_axes <- (lambda[1] + lambda[2]) / inertie_total_1 # Inertie expliquée par les deux premières composantes principales
|
|
inertie_axes
|
|
C <- X %*% vect
|
|
C[,1:2]
|
|
colors <- c('blue', 'red', 'green', 'yellow', 'purple', 'orange')
|
|
plot(
|
|
C[,1],C[,2],
|
|
main="Coordonnées des individus par rapport \n aux deux premières composantes principales",
|
|
xlab = "Première composante principale",
|
|
ylab = "Deuxieme composante principale",
|
|
panel.first = grid(),
|
|
col = colors,
|
|
pch=15
|
|
)
|
|
legend(x = 'topleft', legend = rownames(X), col = colors, pch = 15)
|
|
nrow(notes_MAN_prep) # Nombre d'individus
|
|
ncol(notes_MAN_prep) # Nombre de variables
|
|
dim(notes_MAN_prep) # On peut également utiliser 'dim' qui renvoit la dimension
|
|
library(FactoMineR)
|
|
# help(PCA)
|
|
# Ne pas oublier de charger la librairie FactoMineR
|
|
# Indication : pour afficher les résultats de l'ACP pour tous les individus, utiliser la
|
|
# fonction summary en précisant dedans nbind=Inf et nbelements=Inf
|
|
res.notes <- PCA(notes_MAN_prep, scale.unit = TRUE)
|
|
summary(res.notes, nbind = Inf, nbelements = Inf, nb.dec = 2)
|
|
eigen_values <- res.notes$eig
|
|
bplot <- barplot(
|
|
eigen_values[, 1],
|
|
names.arg = 1:nrow(eigen_values),
|
|
main = "Eboulis des valeurs propres",
|
|
xlab = "Principal Components",
|
|
ylab = "Eigenvalues",
|
|
col = "lightblue"
|
|
)
|
|
lines(x = bplot, eigen_values[, 1], type = "b", col = "red")
|
|
abline(h=1, col = "darkgray", lty = 5)
|
|
coords_man_stats <- res.notes$var$coord["MAN.Stats",]
|
|
coords_man_stats[1:2]
|
|
contribs <- res.notes$ind$contrib
|
|
contrib_moy_ind <- mean(contribs) # 100 * 1/42
|
|
contrib_therese <- res.notes$ind$contrib["Thérèse",3]
|
|
contrib_moy_ind
|
|
contrib_therese
|
|
quali_julien <- res.notes$ind$cos2["Julien", 1:2]
|
|
quali_julien
|
|
sum(quali_julien * 100)
|
|
contrib_moy_ind <- mean(res.notes$ind$contrib)
|
|
contrib_moy_ind
|
|
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[,1], decreasing = TRUE)
|
|
head(indiv_contrib_axe_1, 3)
|
|
indiv_contrib_axe_2 <- sort(res.notes$ind$contrib[,2], decreasing = TRUE)
|
|
head(indiv_contrib_axe_2, 3)
|
|
mal_representes <- rownames(res.notes$ind$cos2)[rowSums(res.notes$ind$cos2[,1:2]) <= mean(res.notes$ind$cos2[,1:2])]
|
|
cat("Les individus mal représentés sont : ", mal_representes)
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
plot.PCA(res.iris, choix = "ind", habillage = "Mentions", label = "none")
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
plot.PCA(res.notes_sup, choix = "ind", habillage = "Mentions", label = "none")
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
plot.PCA(res.notes_sup, choix = "ind", habillage = "Mentions")
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
plot.PCA(res.notes_sup, choix = "ind", habillage = "Mention")
|
|
View(notes_MAN)
|
|
View(notes_MAN)
|
|
knitr::opts_chunk$set(include = FALSE)
|
|
mal_representes <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= 0.6]
|
|
mal_representes
|
|
mal_representes_moy <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= mean(res.notes_sup$var$cos2[,1:2])
|
|
mal_representes_moy
|
|
knitr::opts_chunk$set(include = FALSE)
|
|
rm(list=ls())
|
|
library(dplyr)
|
|
notes_MAN <- read.table("notes_MAN.csv", sep=";", dec=",", row.names=1, header=TRUE)
|
|
# on prépare le jeu de données en retirant la colonne des Mentions
|
|
# qui est une variable catégorielle
|
|
notes_MAN_prep <- notes_MAN[,-1]
|
|
X <- notes_MAN[1:6,]%>%select(c("Probas","Analyse","Anglais","MAN.Stats","Stats.Inférentielles"))
|
|
# on prépare le jeu de données en retirant la colonne des Mentions
|
|
# qui est une variable catégorielle
|
|
# View(X)
|
|
X <- scale(X,center=TRUE,scale=TRUE)
|
|
X
|
|
cor_X <- cor(X)
|
|
eigen_X <- eigen(cor_X, symmetric = TRUE)
|
|
lambda <- eigen_X["values"]$values
|
|
vect <- eigen_X["vectors"]$vectors
|
|
lambda
|
|
inertie_total_1 <- sum(diag(cor_X)) # Inertie est égale à la trace de la matrice de corrélation
|
|
inertie_total_1
|
|
inertie_total_2 <- sum(lambda) # Inertie est aussi égale à la somme des valeurs propres
|
|
inertie_total_2
|
|
inertie_axes <- (lambda[1] + lambda[2]) / inertie_total_1 # Inertie expliquée par les deux premières composantes principales
|
|
inertie_axes
|
|
C <- X %*% vect
|
|
C[,1:2]
|
|
colors <- c('blue', 'red', 'green', 'yellow', 'purple', 'orange')
|
|
plot(
|
|
C[,1],C[,2],
|
|
main="Coordonnées des individus par rapport \n aux deux premières composantes principales",
|
|
xlab = "Première composante principale",
|
|
ylab = "Deuxieme composante principale",
|
|
panel.first = grid(),
|
|
col = colors,
|
|
pch=15
|
|
)
|
|
legend(x = 'topleft', legend = rownames(X), col = colors, pch = 15)
|
|
nrow(notes_MAN_prep) # Nombre d'individus
|
|
ncol(notes_MAN_prep) # Nombre de variables
|
|
dim(notes_MAN_prep) # On peut également utiliser 'dim' qui renvoit la dimension
|
|
library(FactoMineR)
|
|
# help(PCA)
|
|
# Ne pas oublier de charger la librairie FactoMineR
|
|
# Indication : pour afficher les résultats de l'ACP pour tous les individus, utiliser la
|
|
# fonction summary en précisant dedans nbind=Inf et nbelements=Inf
|
|
res.notes <- PCA(notes_MAN_prep, scale.unit = TRUE)
|
|
summary(res.notes, nbind = Inf, nbelements = Inf, nb.dec = 2)
|
|
eigen_values <- res.notes$eig
|
|
bplot <- barplot(
|
|
eigen_values[, 1],
|
|
names.arg = 1:nrow(eigen_values),
|
|
main = "Eboulis des valeurs propres",
|
|
xlab = "Principal Components",
|
|
ylab = "Eigenvalues",
|
|
col = "lightblue"
|
|
)
|
|
lines(x = bplot, eigen_values[, 1], type = "b", col = "red")
|
|
abline(h=1, col = "darkgray", lty = 5)
|
|
coords_man_stats <- res.notes$var$coord["MAN.Stats",]
|
|
coords_man_stats[1:2]
|
|
contribs <- res.notes$ind$contrib
|
|
contrib_moy_ind <- mean(contribs) # 100 * 1/42
|
|
contrib_therese <- res.notes$ind$contrib["Thérèse",3]
|
|
contrib_moy_ind
|
|
contrib_therese
|
|
quali_julien <- res.notes$ind$cos2["Julien", 1:2]
|
|
quali_julien
|
|
sum(quali_julien * 100)
|
|
contrib_moy_ind <- mean(res.notes$ind$contrib)
|
|
contrib_moy_ind
|
|
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[,1], decreasing = TRUE)
|
|
head(indiv_contrib_axe_1, 3)
|
|
indiv_contrib_axe_2 <- sort(res.notes$ind$contrib[,2], decreasing = TRUE)
|
|
head(indiv_contrib_axe_2, 3)
|
|
mal_representes <- rownames(res.notes$ind$cos2)[rowSums(res.notes$ind$cos2[,1:2]) <= mean(res.notes$ind$cos2[,1:2])]
|
|
cat("Les individus mal représentés sont : ", mal_representes)
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
plot.PCA(res.notes_sup, choix = "ind", habillage = "Mention")
|
|
summary(res.notes_sup, nb.dec = 2, nbelements = Inf, nbind = Inf)
|
|
contrib_moy_var <- mean(res.notes_sup$var$contrib) # 100 * 1/14
|
|
contrib_moy_var
|
|
var_contrib_axe_2 <- sort(res.notes_sup$var$contrib[,2], decreasing = TRUE)
|
|
head(var_contrib_axe_2, 3)
|
|
mal_representes <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= 0.6]
|
|
mal_representes
|
|
mal_representes_moy <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= mean(res.notes_sup$var$cos2[,1:2])
|
|
mal_representes_moy
|
|
mal_representes <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= 0.6]
|
|
mal_representes
|
|
mal_representes_moy <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= mean(res.notes_sup$var$cos2[,1:2])]
|
|
mal_representes_moy
|
|
knitr::opts_chunk$set(include = FALSE)
|
|
rm(list=ls())
|
|
library(dplyr)
|
|
notes_MAN <- read.table("notes_MAN.csv", sep=";", dec=",", row.names=1, header=TRUE)
|
|
# on prépare le jeu de données en retirant la colonne des Mentions
|
|
# qui est une variable catégorielle
|
|
notes_MAN_prep <- notes_MAN[,-1]
|
|
X <- notes_MAN[1:6,]%>%select(c("Probas","Analyse","Anglais","MAN.Stats","Stats.Inférentielles"))
|
|
# on prépare le jeu de données en retirant la colonne des Mentions
|
|
# qui est une variable catégorielle
|
|
# View(X)
|
|
X <- scale(X,center=TRUE,scale=TRUE)
|
|
X
|
|
cor_X <- cor(X)
|
|
eigen_X <- eigen(cor_X, symmetric = TRUE)
|
|
lambda <- eigen_X["values"]$values
|
|
vect <- eigen_X["vectors"]$vectors
|
|
lambda
|
|
inertie_total_1 <- sum(diag(cor_X)) # Inertie est égale à la trace de la matrice de corrélation
|
|
inertie_total_1
|
|
inertie_total_2 <- sum(lambda) # Inertie est aussi égale à la somme des valeurs propres
|
|
inertie_total_2
|
|
inertie_axes <- (lambda[1] + lambda[2]) / inertie_total_1 # Inertie expliquée par les deux premières composantes principales
|
|
inertie_axes
|
|
C <- X %*% vect
|
|
C[,1:2]
|
|
colors <- c('blue', 'red', 'green', 'yellow', 'purple', 'orange')
|
|
plot(
|
|
C[,1],C[,2],
|
|
main="Coordonnées des individus par rapport \n aux deux premières composantes principales",
|
|
xlab = "Première composante principale",
|
|
ylab = "Deuxieme composante principale",
|
|
panel.first = grid(),
|
|
col = colors,
|
|
pch=15
|
|
)
|
|
legend(x = 'topleft', legend = rownames(X), col = colors, pch = 15)
|
|
nrow(notes_MAN_prep) # Nombre d'individus
|
|
ncol(notes_MAN_prep) # Nombre de variables
|
|
dim(notes_MAN_prep) # On peut également utiliser 'dim' qui renvoit la dimension
|
|
library(FactoMineR)
|
|
# help(PCA)
|
|
# Ne pas oublier de charger la librairie FactoMineR
|
|
# Indication : pour afficher les résultats de l'ACP pour tous les individus, utiliser la
|
|
# fonction summary en précisant dedans nbind=Inf et nbelements=Inf
|
|
res.notes <- PCA(notes_MAN_prep, scale.unit = TRUE)
|
|
summary(res.notes, nbind = Inf, nbelements = Inf, nb.dec = 2)
|
|
eigen_values <- res.notes$eig
|
|
bplot <- barplot(
|
|
eigen_values[, 1],
|
|
names.arg = 1:nrow(eigen_values),
|
|
main = "Eboulis des valeurs propres",
|
|
xlab = "Principal Components",
|
|
ylab = "Eigenvalues",
|
|
col = "lightblue"
|
|
)
|
|
lines(x = bplot, eigen_values[, 1], type = "b", col = "red")
|
|
abline(h=1, col = "darkgray", lty = 5)
|
|
coords_man_stats <- res.notes$var$coord["MAN.Stats",]
|
|
coords_man_stats[1:2]
|
|
contribs <- res.notes$ind$contrib
|
|
contrib_moy_ind <- mean(contribs) # 100 * 1/42
|
|
contrib_therese <- res.notes$ind$contrib["Thérèse",3]
|
|
contrib_moy_ind
|
|
contrib_therese
|
|
quali_julien <- res.notes$ind$cos2["Julien", 1:2]
|
|
quali_julien
|
|
sum(quali_julien * 100)
|
|
contrib_moy_ind <- mean(res.notes$ind$contrib)
|
|
contrib_moy_ind
|
|
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[,1], decreasing = TRUE)
|
|
head(indiv_contrib_axe_1, 3)
|
|
indiv_contrib_axe_2 <- sort(res.notes$ind$contrib[,2], decreasing = TRUE)
|
|
head(indiv_contrib_axe_2, 3)
|
|
mal_representes <- rownames(res.notes$ind$cos2)[rowSums(res.notes$ind$cos2[,1:2]) <= mean(res.notes$ind$cos2[,1:2])]
|
|
cat("Les individus mal représentés sont : ", mal_representes)
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
plot.PCA(res.notes_sup, choix = "ind", habillage = "Mention")
|
|
summary(res.notes_sup, nb.dec = 2, nbelements = Inf, nbind = Inf)
|
|
contrib_moy_var <- mean(res.notes_sup$var$contrib) # 100 * 1/14
|
|
contrib_moy_var
|
|
var_contrib_axe_2 <- sort(res.notes_sup$var$contrib[,2], decreasing = TRUE)
|
|
head(var_contrib_axe_2, 3)
|
|
mal_representes <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= 0.6]
|
|
mal_representes
|
|
mal_representes_moy <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= mean(res.notes_sup$var$cos2[,1:2])]
|
|
mal_representes_moy
|
|
mal_representes <- rownames(res.notes$ind$cos2)[rowSums(res.notes$ind$cos2[,1:2]) <= mean(res.notes$ind$cos2[,1:2])]
|
|
mal_representes
|
|
knitr::opts_chunk$set(include = FALSE)
|
|
rm(list=ls())
|
|
library(dplyr)
|
|
notes_MAN <- read.table("notes_MAN.csv", sep=";", dec=",", row.names=1, header=TRUE)
|
|
knitr::opts_chunk$set(include = FALSE)
|
|
rm(list=ls())
|
|
library(dplyr)
|
|
notes_MAN <- read.table("notes_MAN.csv", sep=";", dec=",", row.names=1, header=TRUE)
|
|
knitr::opts_chunk$set(include = FALSE)
|
|
rm(list=ls())
|
|
library(dplyr)
|
|
notes_MAN <- read.table("notes_MAN.csv", sep=";", dec=",", row.names=1, header=TRUE)
|
|
knitr::opts_chunk$set(include = FALSE)
|
|
rm(list=ls())
|
|
library(dplyr)
|
|
notes_MAN <- read.table("notes_MAN.csv", sep=";", dec=",", row.names=1, header=TRUE)
|
|
# on prépare le jeu de données en retirant la colonne des Mentions
|
|
# qui est une variable catégorielle
|
|
notes_MAN_prep <- notes_MAN[,-1]
|
|
X <- notes_MAN[1:6,]%>%select(c("Probas","Analyse","Anglais","MAN.Stats","Stats.Inférentielles"))
|
|
# on prépare le jeu de données en retirant la colonne des Mentions
|
|
# qui est une variable catégorielle
|
|
# View(X)
|
|
X <- scale(X,center=TRUE,scale=TRUE)
|
|
X
|
|
cor_X <- cor(X)
|
|
eigen_X <- eigen(cor_X, symmetric = TRUE)
|
|
lambda <- eigen_X["values"]$values
|
|
vect <- eigen_X["vectors"]$vectors
|
|
lambda
|
|
inertie_total_1 <- sum(diag(cor_X)) # Inertie est égale à la trace de la matrice de corrélation
|
|
inertie_total_1
|
|
inertie_total_2 <- sum(lambda) # Inertie est aussi égale à la somme des valeurs propres
|
|
inertie_total_2
|
|
inertie_axes <- (lambda[1] + lambda[2]) / inertie_total_1 # Inertie expliquée par les deux premières composantes principales
|
|
inertie_axes
|
|
C <- X %*% vect
|
|
C[,1:2]
|
|
colors <- c('blue', 'red', 'green', 'yellow', 'purple', 'orange')
|
|
plot(
|
|
C[,1],C[,2],
|
|
main="Coordonnées des individus par rapport \n aux deux premières composantes principales",
|
|
xlab = "Première composante principale",
|
|
ylab = "Deuxieme composante principale",
|
|
panel.first = grid(),
|
|
col = colors,
|
|
pch=15
|
|
)
|
|
legend(x = 'topleft', legend = rownames(X), col = colors, pch = 15)
|
|
nrow(notes_MAN_prep) # Nombre d'individus
|
|
ncol(notes_MAN_prep) # Nombre de variables
|
|
dim(notes_MAN_prep) # On peut également utiliser 'dim' qui renvoit la dimension
|
|
library(FactoMineR)
|
|
# help(PCA)
|
|
# Ne pas oublier de charger la librairie FactoMineR
|
|
# Indication : pour afficher les résultats de l'ACP pour tous les individus, utiliser la
|
|
# fonction summary en précisant dedans nbind=Inf et nbelements=Inf
|
|
res.notes <- PCA(notes_MAN_prep, scale.unit = TRUE)
|
|
summary(res.notes, nbind = Inf, nbelements = Inf, nb.dec = 2)
|
|
eigen_values <- res.notes$eig
|
|
bplot <- barplot(
|
|
eigen_values[, 1],
|
|
names.arg = 1:nrow(eigen_values),
|
|
main = "Eboulis des valeurs propres",
|
|
xlab = "Principal Components",
|
|
ylab = "Eigenvalues",
|
|
col = "lightblue"
|
|
)
|
|
lines(x = bplot, eigen_values[, 1], type = "b", col = "red")
|
|
abline(h=1, col = "darkgray", lty = 5)
|
|
coords_man_stats <- res.notes$var$coord["MAN.Stats",]
|
|
coords_man_stats[1:2]
|
|
contribs <- res.notes$ind$contrib
|
|
contrib_moy_ind <- mean(contribs) # 100 * 1/42
|
|
contrib_therese <- res.notes$ind$contrib["Thérèse",3]
|
|
contrib_moy_ind
|
|
contrib_therese
|
|
quali_julien <- res.notes$ind$cos2["Julien", 1:2]
|
|
quali_julien
|
|
sum(quali_julien * 100)
|
|
contrib_moy_ind <- mean(res.notes$ind$contrib)
|
|
contrib_moy_ind
|
|
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[,1], decreasing = TRUE)
|
|
head(indiv_contrib_axe_1, 3)
|
|
indiv_contrib_axe_2 <- sort(res.notes$ind$contrib[,2], decreasing = TRUE)
|
|
head(indiv_contrib_axe_2, 3)
|
|
mal_representes <- rownames(res.notes$ind$cos2)[rowSums(res.notes$ind$cos2[,1:2]) <= mean(res.notes$ind$cos2[,1:2])]
|
|
mal_representes
|
|
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
|
|
plot.PCA(res.notes_sup, choix = "ind", habillage = "Mention")
|
|
summary(res.notes_sup, nb.dec = 2, nbelements = Inf, nbind = Inf)
|
|
contrib_moy_var <- mean(res.notes_sup$var$contrib) # 100 * 1/14
|
|
contrib_moy_var
|
|
var_contrib_axe_2 <- sort(res.notes_sup$var$contrib[,2], decreasing = TRUE)
|
|
head(var_contrib_axe_2, 3)
|
|
mal_representes <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= 0.6]
|
|
mal_representes
|
|
mal_representes_moy <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= mean(res.notes_sup$var$cos2[,1:2])]
|
|
mal_representes_moy
|