From 475611836e09b6f2bdedee7b46f37ea1da704b13 Mon Sep 17 00:00:00 2001 From: aleattene Date: Wed, 2 Sep 2026 12:31:38 +0200 Subject: [PATCH 1/2] docs(readme): use HTML flag images for language switch and add author section --- README.md | 8 +++++++- it/README.md | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9a05e26..223f272 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Learning Retention Analytics 🇬🇧 [🇮🇹](it/README.md) +# Learning Retention Analytics English version Versione italiana [![Test & Coverage](https://github.com/aleattene/learning-retention-analytics/actions/workflows/test.yml/badge.svg)](https://github.com/aleattene/learning-retention-analytics/actions/workflows/test.yml) [![Code Quality](https://github.com/aleattene/learning-retention-analytics/actions/workflows/code_quality.yml/badge.svg)](https://github.com/aleattene/learning-retention-analytics/actions/workflows/code_quality.yml) @@ -257,6 +257,12 @@ and implementation cost.* --- +## Author + +[Alessandro Attene](https://www.linkedin.com/in/aleattene) + +--- + ## License This project is licensed under the [MIT License](LICENSE). diff --git a/it/README.md b/it/README.md index 088d62b..0fe2dfe 100644 --- a/it/README.md +++ b/it/README.md @@ -1,4 +1,4 @@ -# Analisi della Retention nell'Apprendimento 🇮🇹 [🇬🇧](../README.md) +# Analisi della Retention nell'Apprendimento Versione italiana English version [![Test & Coverage](https://github.com/aleattene/learning-retention-analytics/actions/workflows/test.yml/badge.svg)](https://github.com/aleattene/learning-retention-analytics/actions/workflows/test.yml) [![Code Quality](https://github.com/aleattene/learning-retention-analytics/actions/workflows/code_quality.yml/badge.svg)](https://github.com/aleattene/learning-retention-analytics/actions/workflows/code_quality.yml) @@ -258,6 +258,12 @@ e costo di implementazione.* --- +## Autore + +[Alessandro Attene](https://www.linkedin.com/in/aleattene) + +--- + ## Licenza Questo progetto è distribuito con [Licenza MIT](../LICENSE). From 66832cd363afe1a5f2faa55407f1845e6128553b Mon Sep 17 00:00:00 2001 From: aleattene Date: Wed, 2 Sep 2026 12:33:19 +0200 Subject: [PATCH 2/2] docs(report): add front matter, executive summary and plain-language statistics guide - Front matter as blockquotes: data source, author, analysis start, last revision, audience - Executive summary with five key numbers table and anchored footnote - How to Read the Numbers: p-value in plain language, Cohen's d and Cramer's V scales with worked examples verified against the pipeline statistical exports - Anchored footnotes for CI and VLE acronyms in tables, outcome binarization as bullet list --- reports/REPORT.md | 115 ++++++++++++++++++++++++++++++++++++++---- reports/it/REPORT.md | 116 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 211 insertions(+), 20 deletions(-) diff --git a/reports/REPORT.md b/reports/REPORT.md index f30cad2..05fee89 100644 --- a/reports/REPORT.md +++ b/reports/REPORT.md @@ -1,8 +1,44 @@ -# Student Retention Analysis: Executive Report +# Student Retention Analysis: Executive Report English version Versione italiana -> Open University Learning Analytics Dataset (OULAD) | 32,593 enrollments | 7 courses -> -> Audience: Head of Product | Observational analysis (associations, not causal claims) | No ML +> **Data-driven analysis of student retention and drop-out in online education** + +> **Data**: Open University Learning Analytics Dataset (OULAD), 32,593 enrollments, +> 7 courses. Historical dataset (2013–2014 cohorts), stable: no updates expected. + +> **Author**: [Alessandro Attene](https://www.linkedin.com/in/aleattene) + +> **Analysis started**: April 2026 + +> **Last revised**: September 2026 + +> **Audience**: Head of Product | Observational analysis (associations, not causal +> claims), no machine learning models + +--- + +## Executive Summary + +Roughly one in three enrollments ends in explicit withdrawal, and dropout is not +random: it clusters around course milestones. Behavioral signals from the first +28 days predict the outcome far more strongly than any demographic variable, and +they make it possible to identify at-risk students early with interventions that +require no demographic profiling. + +### The Five Key Numbers + +| Metric | Value | +|--------|-------| +| Enrollments analyzed | 32,593, across 7 courses (22 presentations) | +| Overall withdrawal rate | ~31%, ranging from 11.8% to 44.2% by module | +| Strongest predictor | Engagement decile in the first 28 days (Cohen's d\* = 0.97) | +| Behavior vs demographics gap | Best demographic predictor: education, Cramer's V\* = 0.15, outperformed by every major behavioral signal | +| Highest-risk segment | Ghost students: 5,555 enrollments (17.0%), 92.3% non-completion | + +\* Both effect size measures (Cohen's d and Cramer's V) are explained, with scale +and a worked example, in the [Methodology](#methodology) section. + +**Recommended actions** (details in BQ5): ghost-student activation by day 3, a +checkpoint before the first assessment deadline, and week-3 re-engagement. --- @@ -13,9 +49,13 @@ OULAD dataset: 32,593 student-course enrollments across 7 modules, with complete behavioral clickstream from the university's Virtual Learning Environment (VLE), assessment records, and demographic profiles. -**Outcome definition:** Each enrollment is classified as *Completed* (Pass or Distinction) -or *Not completed* (Fail or Withdrawn). This binary split is consistent with the OULAD -literature and enables clean retention analysis. +**Outcome definition:** Each enrollment is classified into one of two classes: + +- **Completed**: final result Pass or Distinction +- **Not completed**: final result Fail or Withdrawn + +This binary split is consistent with the OULAD literature and enables clean +retention analysis. **Statistical toolkit:** @@ -24,13 +64,44 @@ literature and enables clean retention analysis. | Welch's t-test | Continuous signals vs. outcome | t-statistic, p-value, Cohen's d | | Chi-square test | Categorical demographics vs. outcome | chi-square, p-value, Cramer's V | | Bonferroni + Benjamini-Hochberg | Multiple comparison correction | Adjusted p-values | -| Bootstrap CI | Extreme-rate groups (e.g., ghost students) | 95% confidence intervals | +| Bootstrap CI\* | Extreme-rate groups (e.g., ghost students) | 95% confidence intervals | + +\* CI = Confidence Interval: the range of values within which, with 95% confidence, +the true value lies. Here it is estimated via bootstrap, that is by resampling the +observed data many times. All tests use a significance threshold of alpha = 0.05. Effect size, not p-value, is the primary criterion for ranking predictors, because with ~32K observations even trivial differences reach statistical significance. No machine learning models are used. All findings are observational associations. +### How to Read the Numbers + +**p-value**: how unlikely it would be to observe a difference at least this large +if, in reality, there were no difference at all. Below the alpha = 0.05 threshold +the difference is called statistically significant. + +**Cohen's d** (for numeric variables): measures the distance between two groups in +units of typical variability (standard deviations). Reference scale: + +- d ≈ 0.2: small effect +- d ≈ 0.5: medium effect +- d ≥ 0.8: large effect + +*Worked example with the project's real data:* in the first 28 days, students who +eventually complete the course are active on average 12.8 days; those who do not, +6.5. The difference (6.33 days), divided by the pooled standard deviation of the +two groups (about 7.05 days), gives d = 6.33 / 7.05 ≈ 0.90: a large effect. + +**Cramer's V** (for categorical variables): measures the strength of association +between two variables on a scale from 0 (no association) to 1 (perfect +association). With a binary outcome, values around 0.1 indicate a weak +association, around 0.3 medium, 0.5 and above strong. + +*Worked example with the project's real data:* for education level the chi-square +test yields 737.2 on 32,593 enrollments; with a binary outcome the formula reduces +to V = square root of (737.2 / 32,593) ≈ 0.15: a weak association. + --- ## BQ1: Where and When Do Students Drop Out? @@ -222,7 +293,7 @@ not demographics. All definitions use first-28-day behavioral data. | Segment | Definition | Size | Non-completion rate | |---------|-----------|------|---------------------| -| **Ghost students** | ≤1 active day AND <10 clicks | **5,555** (17.0%) | **92.3%** | +| **Ghost students** | ≤1 active day and <10 clicks | **5,555** (17.0%) | **92.3%** | | **Assessment non-submitters** | No assessment submitted in first 28 days | **11,494** (35.3%) | **71.8%** | | **Early disengagers** | Activity in days 0–14, zero in days 15–28 | **2,213** (6.8%) | **77.8%** | @@ -234,12 +305,15 @@ Ghost students complete at just 7.7%, against a platform average of 47.2%. | | Ghost Activation | Assessment Checkpoint | Week 3 Re-engagement | |---|---|---|---| | **Priority** | 1: Quick win | 2: Build next | 3: Invest when ready | -| **Trigger** | Zero VLE activity by day 3 | 3 days before first deadline, not submitted | 3+ consecutive inactive days after initial activity | +| **Trigger** | Zero VLE\* activity by day 3 | 3 days before first deadline, not submitted | 3+ consecutive inactive days after initial activity | | **Action** | Email sequence: day-3 welcome + day-7 follow-up with first-step link | Reminder with assessment preview and time estimate | "We miss you" email with progress summary and peer comparison | | **Cost** | **Low** (email automation only) | **Medium** (deadline-aware triggers + course calendar) | **Medium-High** (real-time activity tracking + personalization) | | **Evidence** | BQ2: early engagement is strongest predictor; BQ3: behavior > demographics | BQ2: assessment submission is a key binary signal; BQ1: cliffs at deadlines | BQ1: mid-course dropout cliffs at weeks 3–4; BQ2: last-active-day predictor | | **Impact estimate** | Largest: widest gap between segment and platform rate | Medium: substantial submitter vs non-submitter gap | Medium: targets distinct failure mode from ghosts | +\* VLE = Virtual Learning Environment, the online platform where the course +content lives. + **Impact estimation approach:** For each intervention, we model conservative conversion scenarios (10–25% of targeted students change behavior). Converted ghost students are assumed to achieve the platform-average completion rate, not the active-student rate. @@ -282,3 +356,24 @@ The ghost–non-submitter overlap is substantial.* qualitative. Actual engineering effort depends on existing platform infrastructure. - **Ethical note.** All interventions target behavior, not demographics. Automated outreach should include opt-out mechanisms to respect student autonomy. + +--- + +## Chart Provenance + +All figures in this report are generated by the 7 analysis notebooks in +[`notebooks/`](../notebooks/): the numeric prefix of each image file matches the +notebook that produces it (for example `03_dropout_curves_overlaid.png` comes from +`03_bq1_dropout_timing.ipynb`). The notebooks read the CSV files exported by the +pipeline into `data/analysis/` (local folder, not versioned) and save the charts +into `reports/figures/`. + +To regenerate the figures from a repository clone: + +1. run the pipeline: `python -m run_pipeline` +2. run the notebooks in order (01 through 07): each notebook re-exports its own figures + +Full setup instructions are in the [README](../README.md), Quick Start section. +The numbers quoted in the text are verified against the same pipeline-exported +CSVs, in particular the statistical exports (`stats_*.csv`) for effect sizes and +confidence intervals. diff --git a/reports/it/REPORT.md b/reports/it/REPORT.md index 3ca9032..556be68 100644 --- a/reports/it/REPORT.md +++ b/reports/it/REPORT.md @@ -1,8 +1,45 @@ -# Analisi della Retention Studentesca: Report Esecutivo +# Analisi della Retention Studentesca: Report Esecutivo Versione italiana English version -> Open University Learning Analytics Dataset (OULAD) | 32.593 iscrizioni | 7 corsi -> -> Destinatario: Head of Product | Analisi osservazionale (associazioni, non relazioni causali) | No ML +> **Analisi data-driven della retention e dell'abbandono degli studenti nella formazione online** + +> **Dati**: Open University Learning Analytics Dataset (OULAD), 32.593 iscrizioni, +> 7 corsi. Dataset storico (coorti 2013–2014), stabile: nessun aggiornamento previsto. + +> **Autore**: [Alessandro Attene](https://www.linkedin.com/in/aleattene) + +> **Avvio dell'analisi**: aprile 2026 + +> **Ultima revisione**: settembre 2026 + +> **Destinatario**: Head of Product | Analisi osservazionale (associazioni, non +> relazioni causali), nessun modello di machine learning + +--- + +## Sintesi esecutiva + +Circa un'iscrizione su tre termina con il ritiro esplicito, e l'abbandono non è +casuale: si concentra intorno alle tappe del corso. I segnali comportamentali dei +primi 28 giorni predicono l'esito molto più fortemente di qualsiasi variabile +demografica, e permettono di individuare presto gli studenti a rischio con +interventi che non richiedono alcuna profilazione demografica. + +### I cinque numeri chiave + +| Metrica | Valore | +|---------|--------| +| Iscrizioni analizzate | 32.593, su 7 corsi (22 presentazioni) | +| Tasso di ritiro complessivo | ~31%, dall'11,8% al 44,2% a seconda del modulo | +| Predittore più forte | Decile di engagement nei primi 28 giorni (d di Cohen\* = 0,97) | +| Divario comportamento vs demografia | Miglior predittore demografico: istruzione, V di Cramér\* = 0,15, superato da tutti i principali segnali comportamentali | +| Segmento più a rischio | Studenti ghost: 5.555 iscrizioni (17,0%), non completamento al 92,3% | + +\* Le due misure di effect size (d di Cohen e V di Cramér) sono spiegate, con scala +ed esempio svolto, nella sezione [Metodologia](#metodologia). + +**Azioni raccomandate** (dettagli in BQ5): attivazione degli studenti ghost entro il +giorno 3, checkpoint prima della prima scadenza di valutazione, re-engagement alla +settimana 3. --- @@ -13,9 +50,13 @@ dataset OULAD: 32.593 iscrizioni studente-corso distribuite su 7 moduli, con cli comportamentale completo dal Virtual Learning Environment (VLE) dell'università, record delle valutazioni e profili demografici. -**Definizione dell'outcome:** Ogni iscrizione è classificata come *Completato* (Pass o -Distinction) o *Non completato* (Fail o Withdrawn). Questa suddivisione binaria è -coerente con la letteratura OULAD e consente un'analisi di retention pulita. +**Definizione dell'outcome:** Ogni iscrizione è classificata in una di due classi: + +- **Completato**: esito finale Pass o Distinction +- **Non completato**: esito finale Fail o Withdrawn + +Questa suddivisione binaria è coerente con la letteratura OULAD e consente +un'analisi di retention pulita. **Toolkit statistico:** @@ -24,13 +65,44 @@ coerente con la letteratura OULAD e consente un'analisi di retention pulita. | Welch's t-test | Segnali continui vs. outcome | t-statistic, p-value, d di Cohen | | Test chi-quadrato | Variabili demografiche categoriche vs. outcome | chi-quadrato, p-value, V di Cramér | | Bonferroni + Benjamini-Hochberg | Correzione per confronti multipli | p-value corretti | -| Bootstrap CI | Gruppi con tassi estremi (es. studenti ghost) | Intervalli di confidenza al 95% | +| Bootstrap CI\* | Gruppi con tassi estremi (es. studenti ghost) | Intervalli di confidenza al 95% | + +\* CI = Confidence Interval (intervallo di confidenza): la forbice di valori entro +cui, con il 95% di confidenza, cade il valore vero. Qui è stimata via bootstrap, +cioè ricampionando molte volte i dati osservati. Tutti i test utilizzano una soglia di significatività alfa = 0,05. L'effect size, non il p-value, è il criterio primario per classificare i predittori, perché con ~32K osservazioni anche differenze banali raggiungono la significatività statistica. Non vengono utilizzati modelli di machine learning. Tutti i risultati sono associazioni osservazionali. +### Come leggere i numeri + +**p-value**: indica quanto sarebbe improbabile osservare una differenza almeno così +grande se, nella realtà, non ci fosse alcuna differenza. Sotto la soglia alfa = 0,05 +la differenza si dice statisticamente significativa. + +**d di Cohen** (per variabili numeriche): misura la distanza tra due gruppi in unità +di variabilità tipica (deviazioni standard). Scala di riferimento: + +- d ≈ 0,2: effetto piccolo +- d ≈ 0,5: effetto medio +- d ≥ 0,8: effetto grande + +*Esempio svolto con i dati reali del progetto:* nei primi 28 giorni, chi poi completa +il corso è attivo in media 12,8 giorni; chi non completa, 6,5. La differenza (6,33 +giorni), rapportata alla deviazione standard aggregata dei due gruppi (circa 7,05 +giorni), dà d = 6,33 / 7,05 ≈ 0,90: un effetto grande. + +**V di Cramér** (per variabili categoriche): misura la forza dell'associazione tra +due variabili su una scala che va da 0 (nessuna associazione) a 1 (associazione +perfetta). Con un outcome binario, valori intorno a 0,1 indicano un'associazione +debole, intorno a 0,3 media, da 0,5 in su forte. + +*Esempio svolto con i dati reali del progetto:* per il livello di istruzione il test +chi-quadrato vale 737,2 su 32.593 iscrizioni; con outcome binario la formula si +riduce a V = radice quadrata di (737,2 / 32.593) ≈ 0,15: un'associazione debole. + --- ## BQ1: Dove e quando gli studenti abbandonano? @@ -235,7 +307,7 @@ primi 28 giorni. | Segmento | Definizione | Dimensione | Tasso di non completamento | |----------|------------|------------|---------------------------| -| **Studenti ghost** | ≤1 giorno attivo AND <10 click | **5.555** (17,0%) | **92,3%** | +| **Studenti ghost** | ≤1 giorno attivo e <10 click | **5.555** (17,0%) | **92,3%** | | **Non-submitter** | Nessuna valutazione consegnata nei primi 28 giorni | **11.494** (35,3%) | **71,8%** | | **Early disengager** | Attività nei giorni 0–14, zero nei giorni 15–28 | **2.213** (6,8%) | **77,8%** | @@ -248,12 +320,15 @@ una media di piattaforma del 47,2%. | | Attivazione Ghost | Checkpoint Valutazioni | Re-engagement Settimana 3 | |---|---|---|---| | **Priorità** | 1: Quick win | 2: Costruire dopo | 3: Investire quando pronti | -| **Trigger** | Zero attività VLE entro il giorno 3 | 3 giorni prima della prima scadenza, non consegnato | 3+ giorni consecutivi di inattività dopo attività iniziale | +| **Trigger** | Zero attività VLE\* entro il giorno 3 | 3 giorni prima della prima scadenza, non consegnato | 3+ giorni consecutivi di inattività dopo attività iniziale | | **Azione** | Sequenza email: benvenuto giorno 3 + follow-up giorno 7 con link al primo step | Promemoria con anteprima della valutazione e stima del tempo | Email "Ci manchi" con riepilogo progressi e confronto con i pari | | **Costo** | **Basso** (solo automazione email) | **Medio** (trigger consapevoli delle scadenze + calendario del corso) | **Medio-Alto** (tracciamento attività in tempo reale + personalizzazione) | | **Evidenza** | BQ2: l'engagement precoce è il predittore più forte; BQ3: comportamento > demografia | BQ2: la submission è un segnale binario chiave; BQ1: cliff alle scadenze | BQ1: cliff di abbandono a metà corso alle settimane 3–4; BQ2: predittore ultimo-giorno-attivo | | **Stima impatto** | Maggiore: divario più ampio tra segmento e tasso della piattaforma | Medio: divario sostanziale submitter vs non-submitter | Medio: targetizza un failure mode distinto dai ghost | +\* VLE = Virtual Learning Environment, la piattaforma online dove vivono i +contenuti del corso. + **Approccio alla stima dell'impatto:** Per ogni intervento, modelliamo scenari di conversione conservativi (10–25% degli studenti targetizzati cambiano comportamento). Gli studenti ghost convertiti si assumono raggiungere il tasso medio di completamento @@ -303,3 +378,24 @@ appartenenti a più segmenti. La sovrapposizione ghost–non-submitter è sostan - **Nota etica.** Tutti gli interventi targetizzano il comportamento, non la demografia. L'outreach automatizzato dovrebbe includere meccanismi di opt-out per rispettare l'autonomia degli studenti. + +--- + +## Provenienza dei grafici + +Tutte le figure di questo report sono generate dai 7 notebook di analisi in +[`notebooks/`](../../notebooks/): il prefisso numerico del file immagine corrisponde +al notebook che lo produce (per esempio `03_dropout_curves_overlaid.png` nasce da +`03_bq1_dropout_timing.ipynb`). I notebook leggono i CSV esportati dalla pipeline in +`data/analysis/` (cartella locale, non versionata) e salvano i grafici in +`reports/figures/`. + +Per rigenerare le figure da un clone del repository: + +1. eseguire la pipeline: `python -m run_pipeline` +2. eseguire i notebook in ordine (da 01 a 07): ogni notebook riesporta le proprie figure + +Le istruzioni complete di setup sono nel [README](../../it/README.md), sezione +Avvio Rapido. I numeri citati nel testo sono verificati sugli stessi CSV esportati +dalla pipeline, in particolare sugli export statistici (`stats_*.csv`) per effect +size e intervalli di confidenza.