Ajout slides
This commit is contained in:
parent
8ffa0f5614
commit
5455281a42
13 changed files with 5957 additions and 15 deletions
5655
cah-analyse.html
Normal file
5655
cah-analyse.html
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -12,7 +12,6 @@ format:
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description des données
|
## Description des données
|
||||||
|
|
||||||
```{r}
|
```{r}
|
||||||
knitr::opts_chunk$set(echo = FALSE)
|
knitr::opts_chunk$set(echo = FALSE)
|
||||||
library(ggplot2)
|
library(ggplot2)
|
||||||
|
|
@ -24,6 +23,7 @@ library(patchwork)
|
||||||
library(here)
|
library(here)
|
||||||
|
|
||||||
library(knitr)
|
library(knitr)
|
||||||
|
library(kableExtra)
|
||||||
|
|
||||||
library(dplyr)
|
library(dplyr)
|
||||||
library(tidyr)
|
library(tidyr)
|
||||||
|
|
@ -31,18 +31,19 @@ library(stringr)
|
||||||
library(DT)
|
library(DT)
|
||||||
|
|
||||||
|
|
||||||
data <- read.csv(file.path(here(), "data", "03_cah_results.csv"))
|
imp_data <- read.csv(file.path(here(), "data", "03_cah_results.csv"))
|
||||||
colnames(data)[6:ncol(data) - 1] <- c(
|
colnames(imp_data)[6:ncol(imp_data) - 1] <- c(
|
||||||
"1AC-OUVERTURE", "1AC-MI",
|
"1AC-OUVERTURE", "1AC-MI",
|
||||||
"2A-UEchoix-S1-UC1", "2A-UEchoix-S1-UC2", "2A-UEchoix-S2-UC3",
|
"2A-UEchoix-S1-UC1", "2A-UEchoix-S1-UC2", "2A-UEchoix-S2-UC3",
|
||||||
"2A-UEchoix-S2-UC4",
|
"2A-UEchoix-S2-UC4",
|
||||||
"2A-UEchoix-S2-UC5", "2A-UEchoix-S2-UC6",
|
"2A-UEchoix-S2-UC5", "2A-UEchoix-S2-UC6",
|
||||||
"2A-Projet-S2"
|
"2A-Projet-S2"
|
||||||
)
|
)
|
||||||
data <- data %>%
|
data <- imp_data %>%
|
||||||
mutate_if(sapply(data, is.character), as.factor)
|
mutate_if(sapply(imp_data, is.character), as.factor)
|
||||||
```
|
|
||||||
|
|
||||||
|
effectif_cluster <- table(data[["cluster"]])
|
||||||
|
```
|
||||||
```{r}
|
```{r}
|
||||||
|
|
||||||
data_details_sequence <- read.csv(file.path(here(), "data", "details-sequence-nettoyes.csv"))
|
data_details_sequence <- read.csv(file.path(here(), "data", "details-sequence-nettoyes.csv"))
|
||||||
|
|
@ -62,10 +63,14 @@ for (code_bloc in colnames(data)[6:ncol(data) - 1]) {
|
||||||
|
|
||||||
Voici un extrait des données obtenues après tout le traitement :
|
Voici un extrait des données obtenues après tout le traitement :
|
||||||
|
|
||||||
|
|
||||||
```{r}
|
```{r}
|
||||||
#| width: 50%
|
#| width: 50%
|
||||||
kable(head(data[, -1], 3))
|
#| output: asis
|
||||||
effectif_cluster <- table(data[["cluster"]])
|
example_data <- head(data[, -c(1,6:9)], 3)
|
||||||
|
kable(example_data, format = "latex", booktabs = TRUE) %>%
|
||||||
|
kable_styling(latex_options="scale_down") %>%
|
||||||
|
column_spec(1:ncol(example_data),width = "3cm")
|
||||||
```
|
```
|
||||||
|
|
||||||
:::{.callout-caution}
|
:::{.callout-caution}
|
||||||
|
|
@ -78,10 +83,10 @@ Nous avons nous même fixé ce nombre dans le fichier `03_CAH_clust.R`.
|
||||||
|
|
||||||
|
|
||||||
```{r}
|
```{r}
|
||||||
nb_3A_min <- 0
|
nb_3A_min <- 10
|
||||||
data <- data %>%
|
data <- data %>%
|
||||||
group_by(dominante3A) %>%
|
group_by(dominante3A) %>%
|
||||||
mutate(dominante3A = ifelse(n() < nb_3A_min, "Autre", dominante3A))
|
mutate(dominante3A = ifelse(n() < nb_3A_min, as.character("Autre"), as.character(dominante3A))) %>% mutate(dominante3A = as.factor(dominante3A))
|
||||||
```
|
```
|
||||||
|
|
||||||
Les dominantes de 3A sont nombreuses, nous allons donc rassembler celles dont
|
Les dominantes de 3A sont nombreuses, nous allons donc rassembler celles dont
|
||||||
|
|
@ -115,8 +120,6 @@ plot_prop_cluster <- function(orig_data, eff, ...) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
:::{.panel-tabset}
|
|
||||||
|
|
||||||
### Graphiques
|
### Graphiques
|
||||||
|
|
||||||
```{r}
|
```{r}
|
||||||
|
|
@ -137,9 +140,6 @@ htmltools::tagList(lapply(vec_sequences, function(sequence) {
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
|
||||||
|
|
||||||
|
|
||||||
# CAH par dominante
|
# CAH par dominante
|
||||||
|
|
||||||
```{r}
|
```{r}
|
||||||
|
|
|
||||||
BIN
slides.pdf
Normal file
BIN
slides.pdf
Normal file
Binary file not shown.
153
slides.qmd
Normal file
153
slides.qmd
Normal file
|
|
@ -0,0 +1,153 @@
|
||||||
|
---
|
||||||
|
execute:
|
||||||
|
echo: false
|
||||||
|
warning: false
|
||||||
|
fig-width: 10
|
||||||
|
fig-height: 10
|
||||||
|
format:
|
||||||
|
beamer:
|
||||||
|
theme: Boadilla
|
||||||
|
---
|
||||||
|
|
||||||
|
```{r}
|
||||||
|
knitr::opts_chunk$set(echo = FALSE)
|
||||||
|
library(ggplot2)
|
||||||
|
library(plotly)
|
||||||
|
library(ggokabeito)
|
||||||
|
library(RColorBrewer)
|
||||||
|
library(patchwork)
|
||||||
|
|
||||||
|
library(here)
|
||||||
|
|
||||||
|
library(knitr)
|
||||||
|
library(kableExtra)
|
||||||
|
|
||||||
|
library(dplyr)
|
||||||
|
library(tidyr)
|
||||||
|
library(stringr)
|
||||||
|
library(DT)
|
||||||
|
|
||||||
|
|
||||||
|
imp_data <- read.csv(file.path(here(), "data", "03_cah_results.csv"))
|
||||||
|
colnames(imp_data)[6:ncol(imp_data) - 1] <- c(
|
||||||
|
"1AC-OUVERTURE", "1AC-MI",
|
||||||
|
"2A-UEchoix-S1-UC1", "2A-UEchoix-S1-UC2", "2A-UEchoix-S2-UC3",
|
||||||
|
"2A-UEchoix-S2-UC4",
|
||||||
|
"2A-UEchoix-S2-UC5", "2A-UEchoix-S2-UC6",
|
||||||
|
"2A-Projet-S2"
|
||||||
|
)
|
||||||
|
data <- imp_data %>%
|
||||||
|
mutate_if(sapply(imp_data, is.character), as.factor)
|
||||||
|
|
||||||
|
effectif_cluster <- table(data[["cluster"]])
|
||||||
|
```
|
||||||
|
```{r}
|
||||||
|
|
||||||
|
data_details_sequence <- read.csv(file.path(here(), "data", "details-sequence-nettoyes.csv"))
|
||||||
|
|
||||||
|
for (code_bloc in colnames(data)[6:ncol(data) - 1]) {
|
||||||
|
# code_bloc <- "1AC-OUVERTURE"
|
||||||
|
matching_code_cours <- data_details_sequence[which(data_details_sequence[["code_bloc"]] == code_bloc), c("code_cours", "cours")]
|
||||||
|
row_id_in_matching <- which(matching_code_cours[["code_cours"]] %in% levels(data[[code_bloc]]))
|
||||||
|
levels(data[[code_bloc]]) <- matching_code_cours[row_id_in_matching, "cours"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
# Présentation des données
|
||||||
|
|
||||||
|
```{r}
|
||||||
|
#| width: 50%
|
||||||
|
#| tab-cap: Extrait des données traitement et nettoyage ($N = 370$ étudiants)
|
||||||
|
example_data <- head(data[, -c(1,6:9)], 3)
|
||||||
|
kable(example_data, format = "latex", booktabs = TRUE) %>%
|
||||||
|
kable_styling(latex_options="scale_down") %>%
|
||||||
|
column_spec(1:ncol(example_data),width = "3cm")
|
||||||
|
```
|
||||||
|
|
||||||
|
:::{.callout-warning appearance="minimal"}
|
||||||
|
\small
|
||||||
|
**Problème :** Il y a beaucoup de `NA` (des données manquantes), cela peut-être dûe à une
|
||||||
|
mauvaise extraction, à de mauvaises correspondances quand j'ai croisé les
|
||||||
|
sources.
|
||||||
|
:::
|
||||||
|
|
||||||
|
```{r}
|
||||||
|
getPalette <- colorRampPalette(colors = palette_okabe_ito())
|
||||||
|
plot_prop_cluster <- function(orig_data, eff, ...) {
|
||||||
|
data <- orig_data
|
||||||
|
|
||||||
|
colorCount <- length(unique(data[["uc"]]))
|
||||||
|
levels(data$cluster) <- paste0(levels(data$cluster), " (N=", eff, ")")
|
||||||
|
p <- ggplot(data, ...) +
|
||||||
|
aes(x = "", y = nb, fill = uc, label = nb) +
|
||||||
|
geom_bar(position = "fill", stat = "identity") +
|
||||||
|
theme_bw() +
|
||||||
|
xlab("Cluster") +
|
||||||
|
ylab("Proportion dans le cluster") +
|
||||||
|
labs(fill = "Choix") +
|
||||||
|
theme(axis.title.y = element_text(angle = 90, vjust = .5, hjust = 1), aspect.ratio = 1) +
|
||||||
|
theme(legend.position = "bottom", text=element_text(size=20)) +
|
||||||
|
guides(fill = guide_legend(ncol = 2, byrow = TRUE)) +
|
||||||
|
scale_fill_manual(values = getPalette(colorCount), ) +
|
||||||
|
# coord_flip() +
|
||||||
|
scale_x_discrete() +
|
||||||
|
# coord_polar("y", start=0) +
|
||||||
|
facet_wrap(vars(data[["cluster"]]))
|
||||||
|
|
||||||
|
return(p)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
# Extraits de résultats
|
||||||
|
|
||||||
|
```{r parcours_domaine}
|
||||||
|
#| layout-ncol: 2
|
||||||
|
#| fig-cap: "Résultats pour les parcours et les domaines"
|
||||||
|
#| fig-subcap: ""
|
||||||
|
vec_sequences <- c("parcours", "domaine2A")#, "2A-UEchoix-S1-UC1")
|
||||||
|
ac <- NULL
|
||||||
|
for (sequence in vec_sequences){
|
||||||
|
ac <- as.data.frame(table(data[["cluster"]], data[[sequence]], useNA = "ifany"))
|
||||||
|
colnames(ac) <- c("cluster", "uc", "nb")
|
||||||
|
ac <- ac %>%
|
||||||
|
group_by(cluster) %>%
|
||||||
|
mutate(Prop = nb / sum(nb), uc = str_wrap(uc, 32))
|
||||||
|
p <- ac %>% plot_prop_cluster(eff = effectif_cluster) + ggtitle(str_wrap(paste("Proportion pour", sequence), 20))
|
||||||
|
print(p)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
```{r domaine_uc1}
|
||||||
|
#| layout-ncol: 2
|
||||||
|
#| fig-cap: "Résultats pour les domaines et les UC1"
|
||||||
|
#| fig-subcap: ""
|
||||||
|
vec_sequences <- c("domaine2A", "2A-UEchoix-S1-UC1")#, "2A-UEchoix-S1-UC1")
|
||||||
|
ac <- NULL
|
||||||
|
for (sequence in vec_sequences){
|
||||||
|
ac <- as.data.frame(table(data[["cluster"]], data[[sequence]], useNA = "ifany"))
|
||||||
|
colnames(ac) <- c("cluster", "uc", "nb")
|
||||||
|
ac <- ac %>%
|
||||||
|
group_by(cluster) %>%
|
||||||
|
mutate(Prop = nb / sum(nb), uc = str_wrap(uc, 32))
|
||||||
|
p <- ac %>% plot_prop_cluster(eff = effectif_cluster) + ggtitle(str_wrap(paste("Proportion pour", sequence), 20))
|
||||||
|
print(p)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
# En bref
|
||||||
|
## Disponible dès maintenant
|
||||||
|
|
||||||
|
- Accès au détails pour chaque UCs à choix.
|
||||||
|
- Toutes les données vous seront communiquées afin que vous puissiez vous en servir.
|
||||||
|
- Nous avons accès à ces données par dominante également[^1].
|
||||||
|
|
||||||
|
## A améliorer pour pérenniser
|
||||||
|
|
||||||
|
- Avec de **meilleures données** (moins de `NA`, des noms de matières à jour avec Synapses) c'est une analyse très simple et rapide.
|
||||||
|
- Avec **plus de données** (plusieurs années et promos) possible de dégager des tendances[^longnote].
|
||||||
|
- Donc facilement automatisable et *peut aider à comprendre les choix des étudiants*.
|
||||||
|
|
||||||
|
[^1]: Pour les dominantes avec au moins 20 étudiants.
|
||||||
|
[^longnote]: Ici l'analyse a été faite uniquement sur la promo diplomée cet avril 2024.
|
||||||
BIN
slides_files/figure-beamer/domaine_uc1-1.pdf
Normal file
BIN
slides_files/figure-beamer/domaine_uc1-1.pdf
Normal file
Binary file not shown.
BIN
slides_files/figure-beamer/domaine_uc1-2.pdf
Normal file
BIN
slides_files/figure-beamer/domaine_uc1-2.pdf
Normal file
Binary file not shown.
BIN
slides_files/figure-beamer/parcours_domaine-1.pdf
Normal file
BIN
slides_files/figure-beamer/parcours_domaine-1.pdf
Normal file
Binary file not shown.
BIN
slides_files/figure-beamer/parcours_domaine-2.pdf
Normal file
BIN
slides_files/figure-beamer/parcours_domaine-2.pdf
Normal file
Binary file not shown.
BIN
slides_files/figure-beamer/parcours_domaine_uc1-1.pdf
Normal file
BIN
slides_files/figure-beamer/parcours_domaine_uc1-1.pdf
Normal file
Binary file not shown.
BIN
slides_files/figure-beamer/parcours_domaine_uc1-2.pdf
Normal file
BIN
slides_files/figure-beamer/parcours_domaine_uc1-2.pdf
Normal file
Binary file not shown.
BIN
slides_files/figure-beamer/parcours_uc1-1.pdf
Normal file
BIN
slides_files/figure-beamer/parcours_uc1-1.pdf
Normal file
Binary file not shown.
BIN
slides_files/figure-beamer/parcours_uc1-2.pdf
Normal file
BIN
slides_files/figure-beamer/parcours_uc1-2.pdf
Normal file
Binary file not shown.
134
tmp-pdfcrop-72848.tex
Normal file
134
tmp-pdfcrop-72848.tex
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
\catcode37 14 % percent
|
||||||
|
\catcode33 12 % exclam
|
||||||
|
\catcode34 12 % quote
|
||||||
|
\catcode35 6 % hash
|
||||||
|
\catcode39 12 % apostrophe
|
||||||
|
\catcode40 12 % left parenthesis
|
||||||
|
\catcode41 12 % right parenthesis
|
||||||
|
\catcode45 12 % minus
|
||||||
|
\catcode46 12 % period
|
||||||
|
\catcode60 12 % less
|
||||||
|
\catcode61 12 % equals
|
||||||
|
\catcode62 12 % greater
|
||||||
|
\catcode64 12 % at
|
||||||
|
\catcode91 12 % left square
|
||||||
|
\catcode93 12 % right square
|
||||||
|
\catcode96 12 % back tick
|
||||||
|
\catcode123 1 % left curly brace
|
||||||
|
\catcode125 2 % right curly brace
|
||||||
|
\catcode126 12 % tilde
|
||||||
|
\catcode`\#=6 %
|
||||||
|
\escapechar=92 %
|
||||||
|
\def\IfUndefined#1#2#3{%
|
||||||
|
\begingroup\expandafter\expandafter\expandafter\endgroup
|
||||||
|
\expandafter\ifx\csname#1\endcsname\relax
|
||||||
|
#2%
|
||||||
|
\else
|
||||||
|
#3%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\def\pdffilehex{736C696465735F66696C65732F6669677572652D6265616D65722F646F6D61696E655F7563312D312E706466}
|
||||||
|
\IfUndefined{pdfunescapehex}{%
|
||||||
|
\begingroup
|
||||||
|
\gdef\pdffile{}%
|
||||||
|
\def\do#1#2{%
|
||||||
|
\ifx\relax#2\relax
|
||||||
|
\ifx\relax#1\relax
|
||||||
|
\else
|
||||||
|
\errmessage{Invalid hex string, should not happen!}%
|
||||||
|
\fi
|
||||||
|
\else
|
||||||
|
\lccode`0="#1#2\relax
|
||||||
|
\lowercase{%
|
||||||
|
\xdef\pdffile{\pdffile0}%
|
||||||
|
}%
|
||||||
|
\expandafter\do
|
||||||
|
\fi
|
||||||
|
}%
|
||||||
|
\expandafter\do\pdffilehex\relax\relax
|
||||||
|
\endgroup
|
||||||
|
}{%
|
||||||
|
\edef\pdffile{\pdfunescapehex{\pdffilehex}}%
|
||||||
|
}
|
||||||
|
\immediate\write-1{Input file: \pdffile}
|
||||||
|
\pdfcompresslevel=9 \pdfoutput=1 %
|
||||||
|
\csname pdfmapfile\endcsname{}
|
||||||
|
\def\setpdfversion#1#2{%
|
||||||
|
\IfUndefined{pdfobjcompresslevel}{%
|
||||||
|
}{%
|
||||||
|
\ifnum#1=1 %
|
||||||
|
\ifnum#2<5
|
||||||
|
\pdfobjcompresslevel=0 %
|
||||||
|
\else
|
||||||
|
\pdfobjcompresslevel=2 %
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
}%
|
||||||
|
\IfUndefined{pdfminorversion}{%
|
||||||
|
\IfUndefined{pdfoptionpdfminorversion}{%
|
||||||
|
}{%
|
||||||
|
\pdfoptionpdfminorversion=#2\relax
|
||||||
|
}%
|
||||||
|
}{%
|
||||||
|
\pdfminorversion=#2\relax
|
||||||
|
\IfUndefined{pdfmajorversion}{%
|
||||||
|
\ifnum#2=0 \pdfminorversion=5\fi}
|
||||||
|
{\pdfmajorversion=#1\relax}%
|
||||||
|
}%
|
||||||
|
}
|
||||||
|
\def\page #1 [#2 #3 #4 #5]{%
|
||||||
|
\count0=#1\relax
|
||||||
|
\setbox0=\hbox{%
|
||||||
|
\pdfximage page #1 mediabox{\pdffile}%
|
||||||
|
\pdfrefximage\pdflastximage
|
||||||
|
}%
|
||||||
|
\pdfhorigin=-#2bp\relax
|
||||||
|
\pdfvorigin=#3bp\relax
|
||||||
|
\pdfpagewidth=#4bp\relax
|
||||||
|
\advance\pdfpagewidth by -#2bp\relax
|
||||||
|
\pdfpageheight=#5bp\relax
|
||||||
|
\advance\pdfpageheight by -#3bp\relax
|
||||||
|
\ht0=\pdfpageheight
|
||||||
|
\shipout\box0\relax
|
||||||
|
}
|
||||||
|
\def\pageclip #1 [#2 #3 #4 #5][#6 #7 #8 #9]{%
|
||||||
|
\count0=#1\relax
|
||||||
|
\dimen0=#4bp\relax \advance\dimen0 by -#2bp\relax
|
||||||
|
\edef\imagewidth{\the\dimen0}%
|
||||||
|
\dimen0=#5bp\relax \advance\dimen0 by -#3bp\relax
|
||||||
|
\edef\imageheight{\the\dimen0}%
|
||||||
|
\pdfximage page #1 mediabox{\pdffile}%
|
||||||
|
\setbox0=\hbox{%
|
||||||
|
\kern -#2bp\relax
|
||||||
|
\lower #3bp\hbox{\pdfrefximage\pdflastximage}%
|
||||||
|
}%
|
||||||
|
\wd0=\imagewidth\relax
|
||||||
|
\ht0=\imageheight\relax
|
||||||
|
\dp0=0pt\relax
|
||||||
|
\pdfhorigin=#6pt\relax
|
||||||
|
\pdfvorigin=#7bp\relax
|
||||||
|
\pdfpagewidth=\imagewidth
|
||||||
|
\advance\pdfpagewidth by #6bp\relax
|
||||||
|
\advance\pdfpagewidth by #8bp\relax
|
||||||
|
\pdfpageheight=\imageheight\relax
|
||||||
|
\advance\pdfpageheight by #7bp\relax
|
||||||
|
\advance\pdfpageheight by #9bp\relax
|
||||||
|
\pdfxform0\relax
|
||||||
|
\shipout\hbox{\pdfrefxform\pdflastxform}%
|
||||||
|
}%
|
||||||
|
\def\pageinclude#1{%
|
||||||
|
\pdfhorigin=0pt\relax
|
||||||
|
\pdfvorigin=0pt\relax
|
||||||
|
\pdfximage page #1 mediabox{\pdffile}%
|
||||||
|
\setbox0=\hbox{\pdfrefximage\pdflastximage}%
|
||||||
|
\pdfpagewidth=\wd0\relax
|
||||||
|
\pdfpageheight=\ht0\relax
|
||||||
|
\advance\pdfpageheight by \dp0\relax
|
||||||
|
\shipout\hbox{%
|
||||||
|
\raise\dp0\box0\relax
|
||||||
|
}%
|
||||||
|
}
|
||||||
|
\setpdfversion{1}{4}
|
||||||
|
\page 1 [43 9 684 715]
|
||||||
|
\csname @@end\endcsname
|
||||||
|
\end
|
||||||
Loading…
Add table
Reference in a new issue