reforme-enseignement/slides.qmd
2024-05-14 23:02:36 +02:00

153 lines
No EOL
4.8 KiB
Text

---
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.