Ajout slides

This commit is contained in:
Louis Lacoste 2024-05-14 23:02:36 +02:00
parent 8ffa0f5614
commit 5455281a42
13 changed files with 5957 additions and 15 deletions

5655
cah-analyse.html Normal file

File diff suppressed because one or more lines are too long

View file

@ -12,7 +12,6 @@ format:
---
## Description des données
```{r}
knitr::opts_chunk$set(echo = FALSE)
library(ggplot2)
@ -24,6 +23,7 @@ library(patchwork)
library(here)
library(knitr)
library(kableExtra)
library(dplyr)
library(tidyr)
@ -31,18 +31,19 @@ library(stringr)
library(DT)
data <- read.csv(file.path(here(), "data", "03_cah_results.csv"))
colnames(data)[6:ncol(data) - 1] <- c(
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 <- data %>%
mutate_if(sapply(data, is.character), as.factor)
```
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"))
@ -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 :
```{r}
#| width: 50%
kable(head(data[, -1], 3))
effectif_cluster <- table(data[["cluster"]])
#| output: asis
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}
@ -78,10 +83,10 @@ Nous avons nous même fixé ce nombre dans le fichier `03_CAH_clust.R`.
```{r}
nb_3A_min <- 0
nb_3A_min <- 10
data <- data %>%
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
@ -115,8 +120,6 @@ plot_prop_cluster <- function(orig_data, eff, ...) {
}
```
:::{.panel-tabset}
### Graphiques
```{r}
@ -137,9 +140,6 @@ htmltools::tagList(lapply(vec_sequences, function(sequence) {
```
:::
#  CAH par dominante
```{r}

BIN
slides.pdf Normal file

Binary file not shown.

153
slides.qmd Normal file
View 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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

134
tmp-pdfcrop-72848.tex Normal file
View 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