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