From 4d874e8d835d842d95f1c85903f407ed528789c6 Mon Sep 17 00:00:00 2001 From: aleattene Date: Mon, 31 Aug 2026 10:57:14 +0200 Subject: [PATCH 1/4] fix(report): align published statistics with pipeline CSV data - Cramer's V: education ~0.15, IMD band 0.13, others below 0.09 (was 'below 0.13 / below 0.11', values absent from NB05 and data) - BQ2 ranking: engagement decile (d=0.97) leads, then active days (d=0.90) and total clicks (d=0.63); submitter-only caveat added - pre-course withdrawals quantified: 26.6% (2,678 of 10,072) - ghost segment completion stated: 7.7% vs 47.2% platform average --- reports/REPORT.md | 19 +++++++++++-------- reports/REPORT_IT.md | 22 ++++++++++++++-------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/reports/REPORT.md b/reports/REPORT.md index 3f437ce..20a12f1 100644 --- a/reports/REPORT.md +++ b/reports/REPORT.md @@ -63,8 +63,8 @@ These are actionable: interventions can be timed to precede known cliff dates. *Cliff events detected via p95 threshold. The largest single-day dropout spikes correspond to course milestones.* -A measurable share of withdrawals occur **before the course even starts** (dropout -day < 0). These pre-course withdrawals represent pure registration churn — students +More than a quarter of explicit withdrawals (26.6%, 2,678 of 10,072) occur **before +the course even starts** (dropout day < 0). These pre-course withdrawals represent pure registration churn — students who enrolled but never experienced any content. This is an activation problem, not an academic one. @@ -81,8 +81,8 @@ Knowing *when* students leave raises the next question: can we see it coming? > **Key finding:** All 8 early engagement metrics tested are significantly associated > with dropout after multiple comparison correction (8/8 after both Bonferroni and -> Benjamini-Hochberg). The strongest predictors are engagement-volume metrics — -> active days and total clicks in the first 28 days. +> Benjamini-Hochberg). The strongest predictors are engagement-volume metrics: +> within-course engagement decile, active days, and total clicks in the first 28 days. Using only the first 28 days of enrollment data, we tested 8 behavioral signals for their association with eventual completion. Effect size (Cohen's d) — not p-value — is @@ -90,8 +90,10 @@ the primary ranking criterion, because with ~32K observations significance is ea achieve. The **forest plot** below ranks all signals by absolute effect size. Engagement-volume -metrics (active days, total clicks, within-course engagement decile) dominate the -ranking, followed by last active day and average click intensity. +metrics dominate the ranking: within-course engagement decile (d = 0.97), active days +(d = 0.90), and total clicks (d = 0.63), followed by last active day, first assessment +score, and average click intensity (d between 0.52 and 0.55; assessment-based signals +are computed on the submitter subpopulation only). ![Forest plot of effect sizes](figures/04_forest_plot_effect_sizes.png) @@ -140,8 +142,8 @@ We tested 6 categorical demographic features (gender, age band, education level, band, disability, region) and 2 numeric demographic features (previous attempts, studied credits) against completion outcome. All 8 are statistically significant after Benjamini-Hochberg correction — but their effect sizes are uniformly weak. The strongest -demographic predictor (highest education) has a Cramer's V below **0.13**; all others -fall below **0.11**. +demographic predictor (highest education) reaches a Cramer's V of approximately **0.15**; +the IMD band follows at **0.13**, and all other demographic variables fall below **0.09**. By contrast, behavioral features (active days, total clicks, assessment submission, click intensity) show effect sizes several times larger. The gap is stark: behavioral @@ -224,6 +226,7 @@ not demographics. All definitions use first-28-day behavioral data. | **Early disengagers** | Activity in days 0–14, zero in days 15–28 | **2,213** (6.8%) | **77.8%** | All three segments show non-completion rates far above the platform baseline (~53%). +Ghost students complete at just 7.7%, against a platform average of 47.2%. ### The Three Interventions diff --git a/reports/REPORT_IT.md b/reports/REPORT_IT.md index 0f55d18..f505f65 100644 --- a/reports/REPORT_IT.md +++ b/reports/REPORT_IT.md @@ -65,8 +65,9 @@ date dei cliff event. *Cliff event rilevati tramite soglia p95. I picchi di abbandono più grandi in un singolo giorno corrispondono a tappe del corso.* -Una quota misurabile di ritiri avviene **prima ancora dell'inizio del corso** (giorno di -dropout < 0). Questi ritiri pre-corso rappresentano puro churn di registrazione — studenti +Oltre un quarto dei ritiri espliciti (26,6%, 2.678 su 10.072) avviene **prima ancora +dell'inizio del corso** (giorno di dropout < 0). Questi ritiri pre-corso rappresentano +puro churn di registrazione — studenti che si sono iscritti ma non hanno mai fruito di alcun contenuto. Si tratta di un problema di attivazione, non accademico. @@ -84,7 +85,8 @@ Sapere *quando* gli studenti se ne vanno solleva la domanda successiva: possiamo > **Risultato chiave:** Tutte le 8 metriche di engagement precoce testate sono > significativamente associate all'abbandono dopo correzione per confronti multipli > (8/8 dopo Bonferroni e Benjamini-Hochberg). I predittori più forti sono le metriche -> di volume dell'engagement — giorni attivi e click totali nei primi 28 giorni. +> di volume dell'engagement: decile di engagement intra-corso, giorni attivi e click +> totali nei primi 28 giorni. Utilizzando solo i dati dei primi 28 giorni di iscrizione, abbiamo testato 8 segnali comportamentali per la loro associazione con il completamento finale. L'effect size @@ -92,9 +94,11 @@ comportamentali per la loro associazione con il completamento finale. L'effect s ~32K osservazioni la significatività è facile da raggiungere. Il **forest plot** sottostante classifica tutti i segnali per effect size assoluto. -Le metriche di volume dell'engagement (giorni attivi, click totali, decile di engagement -intra-corso) dominano la classifica, seguite dall'ultimo giorno attivo e dall'intensità -media dei click. +Le metriche di volume dell'engagement dominano la classifica: decile di engagement +intra-corso (d = 0,97), giorni attivi (d = 0,90) e click totali (d = 0,63), seguiti +dall'ultimo giorno attivo, dal punteggio della prima valutazione e dall'intensità media +dei click (d tra 0,52 e 0,55; i segnali basati sulle valutazioni sono calcolati sulla +sola sottopopolazione dei submitter). ![Forest plot degli effect size](figures/04_forest_plot_effect_sizes.png) @@ -145,7 +149,8 @@ istruzione, fascia IMD, disabilità, regione) e 2 variabili demografiche numeric (tentativi precedenti, crediti studiati) contro l'esito di completamento. Tutte le 8 sono statisticamente significative dopo correzione Benjamini-Hochberg — ma i loro effect size sono uniformemente deboli. Il predittore demografico più forte (livello di istruzione -più alto) ha una V di Cramér inferiore a **0,13**; tutti gli altri sono sotto **0,11**. +più alto) raggiunge una V di Cramér di circa **0,15**; segue la fascia IMD con **0,13**, +e tutte le altre variabili demografiche restano sotto **0,09**. Per contro, le variabili comportamentali (giorni attivi, click totali, submission valutazioni, intensità click) mostrano effect size diverse volte superiori. Il divario è @@ -233,7 +238,8 @@ primi 28 giorni. | **Early disengager** | Attività nei giorni 0–14, zero nei giorni 15–28 | **2.213** (6,8%) | **77,8%** | Tutti e tre i segmenti mostrano tassi di non completamento molto superiori al baseline -della piattaforma (~53%). +della piattaforma (~53%). Gli studenti ghost completano appena nel 7,7% dei casi, contro +una media di piattaforma del 47,2%. ### I tre interventi From 4be99d55bb4569016c3db784c9943b6ea92fdcf7 Mon Sep 17 00:00:00 2001 From: aleattene Date: Mon, 31 Aug 2026 10:58:59 +0200 Subject: [PATCH 2/4] fix(readme): correct students vs enrollments and BQ2 ranking - 32,593 enrollments by 28,785 distinct students, 7 modules and 22 presentations (was '~32,000 students, 7 course presentations') - BQ2 key finding aligned with verified effect-size ranking (IT + EN) --- README.md | 13 +++++++------ README_IT.md | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index d9add95..71e8890 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,9 @@ A **product analytics case study** that analyzes student retention and drop-out in online education using the -[Open University Learning Analytics Dataset (OULAD)](https://analyse.kmi.open.ac.uk/open_dataset), -~32,000 students, 7 courses, complete behavioral clickstream. +[Open University Learning Analytics Dataset (OULAD)](https://analyse.kmi.open.ac.uk/open_dataset): +32,593 enrollments by 28,785 distinct students, 7 courses, complete +behavioral clickstream. The project follows a **SQL - driven analytical pipeline**: DuckDB as a local-first analytical database, descriptive and inferential statistics, @@ -159,8 +160,8 @@ pytest tests/test_smoke.py -v ## Dataset The [Open University Learning Analytics Dataset (OULAD)](https://analyse.kmi.open.ac.uk/open_dataset) -contains data about ~32,000 students across 7 course presentations at -The Open University (UK). +contains 32,593 course enrollments by 28,785 distinct students across +7 modules (22 presentations) at The Open University (UK). | Table | Description | Key columns | |-------|-------------|-------------| @@ -190,8 +191,8 @@ In summary: - **BQ1**: roughly 1 in 3 enrollments ends in explicit withdrawal; dropout clusters around assessment deadlines and grade releases - **BQ2**: all 8 early behavioral signals (first 28 days) are significantly - associated with dropout; active days and total clicks dominate the effect - size ranking + associated with dropout; engagement volume (engagement decile, active days, + total clicks) dominates the effect size ranking - **BQ3**: behavior predicts outcome far more strongly than demographics; within every education level, high engagement beats low engagement - **BQ4**: completion rates range from 37% to 71% across the 7 modules; diff --git a/README_IT.md b/README_IT.md index 16cd17a..8b10158 100644 --- a/README_IT.md +++ b/README_IT.md @@ -13,8 +13,9 @@ Un **case study di product analytics** che analizza la retention e l'abbandono degli studenti nella formazione online, utilizzando -l'[Open University Learning Analytics Dataset (OULAD)](https://analyse.kmi.open.ac.uk/open_dataset), -~32.000 studenti, 7 corsi, clickstream comportamentale completo. +l'[Open University Learning Analytics Dataset (OULAD)](https://analyse.kmi.open.ac.uk/open_dataset): +32.593 iscrizioni di 28.785 studenti distinti, 7 corsi, clickstream +comportamentale completo. Il progetto segue una **pipeline analitica SQL-driven**: DuckDB come database analitico locale, statistica descrittiva e inferenziale, e una @@ -159,8 +160,8 @@ pytest tests/test_smoke.py -v ## Dataset L'[Open University Learning Analytics Dataset (OULAD)](https://analyse.kmi.open.ac.uk/open_dataset) -contiene dati su ~32.000 studenti distribuiti su 7 presentazioni di corsi -presso la Open University (UK). +contiene 32.593 iscrizioni ai corsi di 28.785 studenti distinti, distribuite +su 7 moduli (22 presentazioni) presso la Open University (UK). | Tabella | Descrizione | Colonne chiave | |---------|-------------|----------------| @@ -190,8 +191,8 @@ In sintesi: - **BQ1**: circa 1 iscrizione su 3 termina con il ritiro esplicito; il dropout si concentra intorno a scadenze di valutazione e rilascio voti - **BQ2**: tutti gli 8 segnali comportamentali precoci (primi 28 giorni) sono - significativamente associati all'abbandono; giorni attivi e click totali - dominano il ranking per effect size + significativamente associati all'abbandono; il volume di engagement (decile + di engagement, giorni attivi, click totali) domina il ranking per effect size - **BQ3**: il comportamento è un predittore molto più forte della demografia; in ogni livello di istruzione, l'engagement alto batte l'engagement basso - **BQ4**: i tassi di completamento variano dal 37% al 71% tra i 7 moduli; From 0e96575c7f0741a7d599b45cae4efac7bf809ae6 Mon Sep 17 00:00:00 2001 From: aleattene Date: Mon, 31 Aug 2026 12:28:32 +0200 Subject: [PATCH 3/4] style(docs): remove em dashes and arrows from public documents - em dashes replaced with colons, commas, parentheses, or periods across README and REPORT (EN + IT), including all BQ headings - BQ3 heading rephrased to avoid a double colon (IT + EN) - arrow replaced with words in the Documentation table (DuckDB to BigQuery); arrows inside code-block diagrams kept by convention - fix SQL-driven hyphenation in README overview --- README.md | 10 +++--- README_IT.md | 10 +++--- reports/REPORT.md | 80 ++++++++++++++++++++--------------------- reports/REPORT_IT.md | 86 ++++++++++++++++++++++---------------------- 4 files changed, 93 insertions(+), 93 deletions(-) diff --git a/README.md b/README.md index 71e8890..eecad16 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ drop-out in online education using the 32,593 enrollments by 28,785 distinct students, 7 courses, complete behavioral clickstream. -The project follows a **SQL - driven analytical pipeline**: DuckDB as a +The project follows a **SQL-driven analytical pipeline**: DuckDB as a local-first analytical database, descriptive and inferential statistics, and a Looker Studio dashboard. @@ -76,7 +76,7 @@ Every analytical pattern in this project is portable to other domains: ``` project_root/ -├── run_pipeline.py # Entrypoint — orchestrates ETL +├── run_pipeline.py # Entrypoint: orchestrates ETL ├── src/ │ ├── config.py # Paths, constants, env vars │ ├── db/connection.py # DB abstraction (DuckDB now, BQ later) @@ -173,8 +173,8 @@ contains 32,593 course enrollments by 28,785 distinct students across | vle | VLE resource metadata | activity_type | | courses | Course metadata | module_presentation_length | -**Target variable**: `final_result` ∈ {Pass, Distinction, Fail, Withdrawn} -— binarized as Completed (Pass + Distinction) vs Not completed (Fail + Withdrawn). +**Target variable**: `final_result` ∈ {Pass, Distinction, Fail, Withdrawn}, +binarized as Completed (Pass + Distinction) vs Not completed (Fail + Withdrawn). > **Citation**: Kuzilek, J., Hlosta, M., & Zdrahal, Z. (2017). > Open University Learning Analytics dataset. @@ -210,7 +210,7 @@ In summary: | [Executive Report](reports/REPORT.md) | Full BQ1–BQ5 analysis with figures and numbers | | [Methodology](docs/METHODOLOGY.md) | Statistical approach, design choices, trade-offs | | [Transferability](docs/TRANSFERABILITY.md) | Pattern portability to SaaS, subscriptions, fitness | -| [Cloud Migration](docs/MIGRATION.md) | DuckDB → BigQuery path, gaps and checklist | +| [Cloud Migration](docs/MIGRATION.md) | DuckDB to BigQuery path, gaps and checklist | | [ADR](docs/ADR.md) | 7 architectural decisions with rationale | | [Testing](docs/TESTING.md) | Test architecture, strategy, and decisions | diff --git a/README_IT.md b/README_IT.md index 8b10158..83a951b 100644 --- a/README_IT.md +++ b/README_IT.md @@ -62,7 +62,7 @@ Ogni pattern analitico di questo progetto è portabile ad altri domini: | Livello | Tecnologia | Motivazione | |---------|------------|-------------| | DB analitico | **DuckDB** (local-first) | Costo zero, SQL-first, percorso di migrazione a BigQuery | -| Dialetto SQL | Solo **ANSI SQL** | Nessuna sintassi DuckDB-specifica — portabile su cloud | +| Dialetto SQL | Solo **ANSI SQL** | Nessuna sintassi DuckDB-specifica, portabile su cloud | | Linguaggio | **Python 3.13+** | Orchestrazione pipeline, statistica, visualizzazione | | Statistica | **SciPy + statsmodels** | t-test, chi-quadrato, intervalli di confidenza, effect size | | Visualizzazione | **Matplotlib + Seaborn** | Grafici di qualità pubblicabile | @@ -76,7 +76,7 @@ Ogni pattern analitico di questo progetto è portabile ad altri domini: ``` project_root/ -├── run_pipeline.py # Entrypoint — orchestra l'ETL +├── run_pipeline.py # Entrypoint: orchestra l'ETL ├── src/ │ ├── config.py # Path, costanti, variabili d'ambiente │ ├── db/connection.py # Astrazione DB (DuckDB ora, BQ in futuro) @@ -173,8 +173,8 @@ su 7 moduli (22 presentazioni) presso la Open University (UK). | vle | Metadati risorse VLE | activity_type | | courses | Metadati dei corsi | module_presentation_length | -**Variabile target**: `final_result` ∈ {Pass, Distinction, Fail, Withdrawn} -— binarizzata come Completato (Pass + Distinction) vs Non completato (Fail + Withdrawn). +**Variabile target**: `final_result` ∈ {Pass, Distinction, Fail, Withdrawn}, +binarizzata come Completato (Pass + Distinction) vs Non completato (Fail + Withdrawn). > **Citazione**: Kuzilek, J., Hlosta, M., & Zdrahal, Z. (2017). > Open University Learning Analytics dataset. @@ -211,7 +211,7 @@ In sintesi: | [Report Esecutivo](reports/REPORT_IT.md) | Analisi completa BQ1–BQ5 con figure e numeri | | [Metodologia](docs/METHODOLOGY_IT.md) | Approccio statistico, scelte progettuali, trade-off | | [Trasferibilità](docs/TRANSFERABILITY_IT.md) | Portabilità dei pattern a SaaS, abbonamenti, fitness | -| [Migrazione Cloud](docs/MIGRATION_IT.md) | Percorso DuckDB → BigQuery, gap e checklist | +| [Migrazione Cloud](docs/MIGRATION_IT.md) | Percorso da DuckDB a BigQuery, gap e checklist | | [ADR](docs/ADR_IT.md) | 7 decisioni architetturali con razionale | | [Testing](docs/TESTING_IT.md) | Architettura di test, strategia e decisioni | diff --git a/reports/REPORT.md b/reports/REPORT.md index 20a12f1..b03873e 100644 --- a/reports/REPORT.md +++ b/reports/REPORT.md @@ -1,15 +1,15 @@ -# Student Retention Analysis — Executive Report +# Student Retention Analysis: Executive Report > Open University Learning Analytics Dataset (OULAD) | 32,593 enrollments | 7 courses > -> Audience: Head of Product | Observational analysis — associations, not causal claims | No ML +> Audience: Head of Product | Observational analysis (associations, not causal claims) | No ML --- ## Methodology This report synthesizes findings from a SQL-driven analytical pipeline applied to the -OULAD dataset — 32,593 student-course enrollments across 7 modules, with complete +OULAD dataset: 32,593 student-course enrollments across 7 modules, with complete behavioral clickstream, assessment records, and demographic profiles. **Outcome definition:** Each enrollment is classified as *Completed* (Pass or Distinction) @@ -25,37 +25,37 @@ literature and enables clean retention analysis. | Bonferroni + Benjamini-Hochberg | Multiple comparison correction | Adjusted p-values | | Bootstrap CI | Extreme-rate groups (e.g., ghost students) | 95% confidence intervals | -All tests use a significance threshold of alpha = 0.05. Effect size — not p-value — is the +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. --- -## BQ1 — Where and When Do Students Drop Out? +## BQ1: Where and When Do Students Drop Out? > **Key finding:** Approximately one in three enrollments ends in explicit withdrawal. -> Dropout is not random — it clusters around course milestones, and its temporal +> Dropout is not random: it clusters around course milestones, and its temporal > profile differs across modules. Across the 7 OULAD modules, withdrawal rates range from **11.8%** (module GGG) to **44.2%** (module CCC). The overall weighted withdrawal rate is approximately **31%** -of all enrollments — a substantial share of the student population that never reaches +of all enrollments: a substantial share of the student population that never reaches completion. Cumulative dropout curves reveal **distinct temporal profiles** per course. Some modules experience steep early attrition (an onboarding failure pattern), while others show more gradual mid-course decline. Within the same module, different presentations (cohorts) -follow broadly similar trajectories, suggesting that course design — not random cohort -variation — drives the dropout shape. +follow broadly similar trajectories, suggesting that course design, not random cohort +variation, drives the dropout shape. ![Cumulative dropout curves for all 7 courses](figures/03_dropout_curves_overlaid.png) *Cumulative dropout curves show distinct temporal profiles per course. Each line represents one course-presentation, colored by module.* -**Cliff events** — days with disproportionately large numbers of withdrawals (above the -95th percentile for that course) — align with assessment deadlines and grade releases. +**Cliff events**, days with disproportionately large numbers of withdrawals (above the +95th percentile for that course), align with assessment deadlines and grade releases. These are actionable: interventions can be timed to precede known cliff dates. ![Top dropout cliff events](figures/03_dropout_cliffs.png) @@ -64,8 +64,8 @@ These are actionable: interventions can be timed to precede known cliff dates. correspond to course milestones.* More than a quarter of explicit withdrawals (26.6%, 2,678 of 10,072) occur **before -the course even starts** (dropout day < 0). These pre-course withdrawals represent pure registration churn — students -who enrolled but never experienced any content. This is an activation problem, not an +the course even starts** (dropout day < 0). These pre-course withdrawals represent +pure registration churn: students who enrolled but never experienced any content. This is an activation problem, not an academic one. ![Pre-course withdrawals by module](figures/03_precourse_withdrawals.png) @@ -77,7 +77,7 @@ Knowing *when* students leave raises the next question: can we see it coming? --- -## BQ2 — Which Early Signals Predict Dropout? +## BQ2: Which Early Signals Predict Dropout? > **Key finding:** All 8 early engagement metrics tested are significantly associated > with dropout after multiple comparison correction (8/8 after both Bonferroni and @@ -85,7 +85,7 @@ Knowing *when* students leave raises the next question: can we see it coming? > within-course engagement decile, active days, and total clicks in the first 28 days. Using only the first 28 days of enrollment data, we tested 8 behavioral signals for -their association with eventual completion. Effect size (Cohen's d) — not p-value — is +their association with eventual completion. Effect size (Cohen's d), not p-value, is the primary ranking criterion, because with ~32K observations significance is easy to achieve. @@ -101,16 +101,16 @@ are computed on the submitter subpopulation only). Benjamini-Hochberg correction. Vertical reference lines mark small, medium, and large effect thresholds.* -The most dramatic contrast is between **ghost students** — those with zero VLE activity -in the first 28 days — and active students. Ghost students have a near-zero completion +The most dramatic contrast is between **ghost students** (those with zero VLE activity +in the first 28 days) and active students. Ghost students have a near-zero completion rate, while active students complete at a rate close to the platform average. The 95% bootstrap confidence intervals do not overlap. (Note: BQ5 broadens this definition to -include near-zero activity — ≤1 active day AND <10 clicks — to capture the full -at-risk segment for intervention targeting.) +include near-zero activity, that is at most 1 active day and fewer than 10 clicks, to +capture the full at-risk segment for intervention targeting.) ![Ghost vs active completion rate](figures/04_ghost_vs_active_completion.png) -*Ghost students — zero VLE activity in the first 28 days — have near-zero completion +*Ghost students (zero VLE activity in the first 28 days) have near-zero completion rates. Error bars show 95% bootstrap confidence intervals.* The dose-response relationship is **monotonic**: more engagement consistently predicts @@ -125,14 +125,14 @@ graded, not binary.* Two additional insights strengthen the signal portfolio. **Assessment submission** is a powerful binary predictor: students who submitted at least one assessment in the first 28 days complete at substantially higher rates than non-submitters. And **consistency -beats intensity** — regular daily logins predict completion more strongly than high +beats intensity**: regular daily logins predict completion more strongly than high click-per-session bursts. -These behavioral signals are strong — but are they merely proxies for demographics? +These behavioral signals are strong. But are they merely proxies for demographics? --- -## BQ3 — Demographics or Behavior: What Matters More? +## BQ3: What Matters More, Demographics or Behavior? > **Key finding:** Behavior dominates. Behavioral effect sizes are multiple times larger > than demographic effect sizes. Within every education level, high engagement @@ -141,7 +141,7 @@ These behavioral signals are strong — but are they merely proxies for demograp We tested 6 categorical demographic features (gender, age band, education level, IMD band, disability, region) and 2 numeric demographic features (previous attempts, studied credits) against completion outcome. All 8 are statistically significant after -Benjamini-Hochberg correction — but their effect sizes are uniformly weak. The strongest +Benjamini-Hochberg correction, but their effect sizes are uniformly weak. The strongest demographic predictor (highest education) reaches a Cramer's V of approximately **0.15**; the IMD band follows at **0.13**, and all other demographic variables fall below **0.09**. @@ -152,7 +152,7 @@ signals predict outcome far more strongly than any demographic variable. ![Demographics vs behavior comparison](figures/05_demographics_vs_behavior_comparison.png) *Direct comparison of demographic and behavioral effect sizes. The gap is -substantial — behavioral signals are consistently stronger.* +substantial: behavioral signals are consistently stronger.* The critical test: does engagement merely reflect demographics? The interaction plot below shows that within **every education level**, high-engagement students dramatically @@ -174,9 +174,9 @@ Does course design itself influence engagement levels? --- -## BQ4 — How Do Course Characteristics Affect Retention? +## BQ4: How Do Course Characteristics Affect Retention? -> **Key finding:** Completion rates vary substantially across the 7 modules — from +> **Key finding:** Completion rates vary substantially across the 7 modules: from > **37.4%** (CCC) to **70.9%** (AAA), a **33.5 percentage point** gap. Suggestive > patterns emerge around assessment density and course length, but with only 7 data > points no inferential conclusions are possible. @@ -190,7 +190,7 @@ of its students; module CCC loses almost two-thirds. Exploratory scatter plots reveal suggestive patterns between course design features (assessment density, course length) and completion rates. However, with n = 7, any -correlation is descriptive, not inferential — Spearman rank correlation requires +correlation is descriptive, not inferential: Spearman rank correlation requires `|rho| > 0.79` for significance at this sample size. ![Course design vs completion](figures/06_course_design_vs_completion.png) @@ -199,16 +199,16 @@ correlation is descriptive, not inferential — Spearman rank correlation requir Each point is one module (averaged across its presentations).* **Critical caveats:** These patterns are confounded by at least three factors: (1) subject -difficulty — some modules teach inherently harder material; (2) student self-selection — -more motivated students may choose certain courses; (3) institutional investment — -resource allocation varies across departments. Course design is a lever worth studying, +difficulty, since some modules teach inherently harder material; (2) student +self-selection, since more motivated students may choose certain courses; (3) +institutional investment, since resource allocation varies across departments. Course design is a lever worth studying, but it requires more data (more courses, or experimental variation) to draw conclusions. Drawing from all four analyses above, we now propose three concrete interventions. --- -## BQ5 — Top 3 Recommended Interventions +## BQ5: Top 3 Recommended Interventions > **Key finding:** Three behavior-based interventions, ordered by impact-to-cost ratio, > together address the majority of at-risk students. Because segments overlap @@ -216,7 +216,7 @@ Drawing from all four analyses above, we now propose three concrete intervention ### Target Segments -The BQ5 query sizes three student segments defined by observable, actionable criteria — +The BQ5 query sizes three student segments defined by observable, actionable criteria, not demographics. All definitions use first-28-day behavioral data. | Segment | Definition | Size | Non-completion rate | @@ -232,25 +232,25 @@ 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 | +| **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 | | **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 | +| **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 | +| **Impact estimate** | Largest: widest gap between segment and platform rate | Medium: substantial submitter vs non-submitter gap | Medium: targets distinct failure mode from ghosts | **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. +assumed to achieve the platform-average completion rate, not the active-student rate. Re-engaged students are assumed to reach a rate halfway between disengaged and sustained. These are deliberately conservative assumptions. ### Segment Overlap -Ghost students and assessment non-submitters **overlap heavily** — a student with zero +Ghost students and assessment non-submitters **overlap heavily**: a student with zero VLE access cannot submit an assessment. This means interventions 1 and 2 largely target the same population from different angles; their impact should not be summed naively. -Early disengagers, by definition, had initial activity — they overlap less with ghosts, +Early disengagers, by definition, had initial activity: they overlap less with ghosts, making intervention 3 an independent lever targeting a different failure mode. ![Priority matrix](figures/07_priority_matrix.png) @@ -269,7 +269,7 @@ The ghost–non-submitter overlap is substantial.* - **Observational data only.** All effect sizes and completion rate differences are associations, not causal relationships. Engaged students may be inherently more - motivated — engagement could be a proxy, not a cause. + motivated: engagement could be a proxy, not a cause. - **Historical data.** OULAD covers 2013–2014 cohorts at the UK Open University. Student behavior and online learning platforms have evolved significantly since then. - **BQ4 limited by n = 7.** With only 7 modules, no inferential statistics are possible diff --git a/reports/REPORT_IT.md b/reports/REPORT_IT.md index f505f65..76f3255 100644 --- a/reports/REPORT_IT.md +++ b/reports/REPORT_IT.md @@ -1,15 +1,15 @@ -# Analisi della Retention Studentesca — Report Esecutivo +# Analisi della Retention Studentesca: Report Esecutivo > Open University Learning Analytics Dataset (OULAD) | 32.593 iscrizioni | 7 corsi > -> Destinatario: Head of Product | Analisi osservazionale — associazioni, non relazioni causali | No ML +> Destinatario: Head of Product | Analisi osservazionale (associazioni, non relazioni causali) | No ML --- ## Metodologia Questo report sintetizza i risultati di una pipeline analitica SQL-driven applicata al -dataset OULAD — 32.593 iscrizioni studente-corso distribuite su 7 moduli, con clickstream +dataset OULAD: 32.593 iscrizioni studente-corso distribuite su 7 moduli, con clickstream comportamentale completo, record delle valutazioni e profili demografici. **Definizione dell'outcome:** Ogni iscrizione è classificata come *Completato* (Pass o @@ -25,38 +25,38 @@ coerente con la letteratura OULAD e consente un'analisi di retention pulita. | Bonferroni + Benjamini-Hochberg | Correzione per confronti multipli | p-value corretti | | Bootstrap CI | Gruppi con tassi estremi (es. studenti ghost) | Intervalli di confidenza al 95% | -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 +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. --- -## BQ1 — Dove e quando gli studenti abbandonano? +## BQ1: Dove e quando gli studenti abbandonano? > **Risultato chiave:** Circa un'iscrizione su tre termina con il ritiro esplicito. -> L'abbandono non è casuale — si concentra intorno a tappe del corso, e il suo +> L'abbandono non è casuale: si concentra intorno a tappe del corso, e il suo > profilo temporale varia tra i moduli. Tra i 7 moduli OULAD, i tassi di ritiro vanno dall'**11,8%** (modulo GGG) al **44,2%** (modulo CCC). Il tasso di ritiro complessivo ponderato è circa il **31%** -di tutte le iscrizioni — una quota significativa della popolazione studentesca che non +di tutte le iscrizioni: una quota significativa della popolazione studentesca che non raggiunge mai il completamento. Le curve cumulative di abbandono rivelano **profili temporali distinti** per corso. Alcuni moduli mostrano un'attrizione precoce ripida (pattern di fallimento dell'onboarding), mentre altri presentano un declino più graduale a metà corso. All'interno dello stesso modulo, presentazioni (coorti) diverse seguono traiettorie sostanzialmente simili, -suggerendo che il design del corso — non la variazione casuale della coorte — determina -la forma dell'abbandono. +suggerendo che è il design del corso, non la variazione casuale della coorte, a +determinare la forma dell'abbandono. ![Curve cumulative di abbandono per tutti i 7 corsi](figures/03_dropout_curves_overlaid.png) *Le curve cumulative di abbandono mostrano profili temporali distinti per corso. Ogni linea rappresenta una presentazione del corso, colorata per modulo.* -I **cliff event** — giorni con un numero sproporzionatamente alto di ritiri (sopra il -95° percentile per quel corso) — coincidono con le scadenze delle valutazioni e il rilascio +I **cliff event**, giorni con un numero sproporzionatamente alto di ritiri (sopra il +95° percentile per quel corso), coincidono con le scadenze delle valutazioni e il rilascio dei voti. Questi sono azionabili: gli interventi possono essere programmati prima delle date dei cliff event. @@ -67,8 +67,8 @@ giorno corrispondono a tappe del corso.* Oltre un quarto dei ritiri espliciti (26,6%, 2.678 su 10.072) avviene **prima ancora dell'inizio del corso** (giorno di dropout < 0). Questi ritiri pre-corso rappresentano -puro churn di registrazione — studenti -che si sono iscritti ma non hanno mai fruito di alcun contenuto. Si tratta di un problema +puro churn di registrazione: studenti che si sono iscritti ma non hanno mai fruito +di alcun contenuto. Si tratta di un problema di attivazione, non accademico. ![Ritiri pre-corso per modulo](figures/03_precourse_withdrawals.png) @@ -80,7 +80,7 @@ Sapere *quando* gli studenti se ne vanno solleva la domanda successiva: possiamo --- -## BQ2 — Quali segnali precoci predicono l'abbandono? +## BQ2: Quali segnali precoci predicono l'abbandono? > **Risultato chiave:** Tutte le 8 metriche di engagement precoce testate sono > significativamente associate all'abbandono dopo correzione per confronti multipli @@ -90,7 +90,7 @@ Sapere *quando* gli studenti se ne vanno solleva la domanda successiva: possiamo Utilizzando solo i dati dei primi 28 giorni di iscrizione, abbiamo testato 8 segnali comportamentali per la loro associazione con il completamento finale. L'effect size -(d di Cohen) — non il p-value — è il criterio primario di classificazione, perché con +(d di Cohen), non il p-value, è il criterio primario di classificazione, perché con ~32K osservazioni la significatività è facile da raggiungere. Il **forest plot** sottostante classifica tutti i segnali per effect size assoluto. @@ -106,17 +106,17 @@ sola sottopopolazione dei submitter). dopo correzione Benjamini-Hochberg. Le linee di riferimento verticali segnano le soglie di effect size piccolo, medio e grande.* -Il contrasto più drammatico è tra gli **studenti ghost** — quelli con zero attività VLE -nei primi 28 giorni — e gli studenti attivi. Gli studenti ghost hanno un tasso di +Il contrasto più drammatico è tra gli **studenti ghost** (quelli con zero attività VLE +nei primi 28 giorni) e gli studenti attivi. Gli studenti ghost hanno un tasso di completamento prossimo allo zero, mentre gli studenti attivi completano a un tasso vicino alla media della piattaforma. Gli intervalli di confidenza bootstrap al 95% non si -sovrappongono. (Nota: BQ5 amplia questa definizione per includere attività quasi nulla — -≤1 giorno attivo AND <10 click — per catturare l'intero segmento a rischio ai fini del -targeting degli interventi.) +sovrappongono. (Nota: BQ5 amplia questa definizione per includere attività quasi nulla, +cioè al massimo 1 giorno attivo e meno di 10 click, per catturare l'intero segmento a +rischio ai fini del targeting degli interventi.) ![Tasso di completamento ghost vs attivi](figures/04_ghost_vs_active_completion.png) -*Gli studenti ghost — zero attività VLE nei primi 28 giorni — hanno tassi di completamento +*Gli studenti ghost (zero attività VLE nei primi 28 giorni) hanno tassi di completamento prossimi allo zero. Le barre di errore mostrano intervalli di confidenza bootstrap al 95%.* La relazione dose-risposta è **monotonica**: più engagement predice costantemente un @@ -131,14 +131,14 @@ relazione è graduata, non binaria.* Due insight aggiuntivi rafforzano il portafoglio di segnali. La **submission delle valutazioni** è un potente predittore binario: gli studenti che hanno consegnato almeno una valutazione nei primi 28 giorni completano a tassi sostanzialmente più alti dei -non-submitter. E la **costanza batte l'intensità** — login giornalieri regolari predicono +non-submitter. E la **costanza batte l'intensità**: login giornalieri regolari predicono il completamento più fortemente di burst ad alto numero di click per sessione. -Questi segnali comportamentali sono forti — ma sono semplicemente proxy della demografia? +Questi segnali comportamentali sono forti. Ma sono semplicemente proxy della demografia? --- -## BQ3 — Demografia o comportamento: cosa conta di più? +## BQ3: Cosa conta di più, demografia o comportamento? > **Risultato chiave:** Il comportamento domina. Gli effect size comportamentali sono > multipli rispetto a quelli demografici. All'interno di ogni livello di istruzione, @@ -147,7 +147,7 @@ Questi segnali comportamentali sono forti — ma sono semplicemente proxy della Abbiamo testato 6 variabili demografiche categoriche (genere, fascia d'età, livello di istruzione, fascia IMD, disabilità, regione) e 2 variabili demografiche numeriche (tentativi precedenti, crediti studiati) contro l'esito di completamento. Tutte le 8 sono -statisticamente significative dopo correzione Benjamini-Hochberg — ma i loro effect size +statisticamente significative dopo correzione Benjamini-Hochberg, ma i loro effect size sono uniformemente deboli. Il predittore demografico più forte (livello di istruzione più alto) raggiunge una V di Cramér di circa **0,15**; segue la fascia IMD con **0,13**, e tutte le altre variabili demografiche restano sotto **0,09**. @@ -160,7 +160,7 @@ variabile demografica. ![Confronto demografia vs comportamento](figures/05_demographics_vs_behavior_comparison.png) *Confronto diretto degli effect size demografici e comportamentali. Il divario è -sostanziale — i segnali comportamentali sono costantemente più forti.* +sostanziale: i segnali comportamentali sono costantemente più forti.* Il test critico: l'engagement riflette semplicemente la demografia? Il grafico di interazione sottostante mostra che all'interno di **ogni livello di istruzione**, gli @@ -183,9 +183,9 @@ Il design del corso stesso influenza i livelli di engagement? --- -## BQ4 — Come le caratteristiche dei corsi influenzano la retention? +## BQ4: Come le caratteristiche dei corsi influenzano la retention? -> **Risultato chiave:** I tassi di completamento variano sostanzialmente tra i 7 moduli — +> **Risultato chiave:** I tassi di completamento variano sostanzialmente tra i 7 moduli: > dal **37,4%** (CCC) al **70,9%** (AAA), un gap di **33,5 punti percentuali**. Pattern > suggestivi emergono intorno alla densità delle valutazioni e alla durata del corso, ma > con soli 7 punti dati non è possibile alcuna conclusione inferenziale. @@ -199,7 +199,7 @@ quasi tre quarti dei suoi studenti; il modulo CCC ne perde quasi due terzi. Gli scatter plot esplorativi rivelano pattern suggestivi tra le caratteristiche del design del corso (densità valutazioni, durata) e i tassi di completamento. Tuttavia, con n = 7, -qualsiasi correlazione è descrittiva, non inferenziale — la correlazione di Spearman +qualsiasi correlazione è descrittiva, non inferenziale: la correlazione di Spearman richiede |rho| > 0,79 per la significatività a questa dimensione campionaria. ![Design del corso vs completamento](figures/06_course_design_vs_completion.png) @@ -208,17 +208,17 @@ richiede |rho| > 0,79 per la significatività a questa dimensione campionaria. il completamento. Ogni punto è un modulo (mediato sulle sue presentazioni).* **Avvertenze critiche:** Questi pattern sono confusi da almeno tre fattori: (1) difficoltà -della materia — alcuni moduli insegnano contenuti intrinsecamente più difficili; (2) -auto-selezione degli studenti — studenti più motivati potrebbero scegliere determinati -corsi; (3) investimento istituzionale — l'allocazione delle risorse varia tra i -dipartimenti. Il design del corso è una leva che vale la pena studiare, ma richiede più +della materia, perché alcuni moduli insegnano contenuti intrinsecamente più difficili; (2) +auto-selezione degli studenti, perché studenti più motivati potrebbero scegliere +determinati corsi; (3) investimento istituzionale, perché l'allocazione delle risorse +varia tra i dipartimenti. Il design del corso è una leva che vale la pena studiare, ma richiede più dati (più corsi, o variazione sperimentale) per trarre conclusioni. Attingendo da tutte e quattro le analisi precedenti, proponiamo ora tre interventi concreti. --- -## BQ5 — Top 3 interventi raccomandati +## BQ5: Top 3 interventi raccomandati > **Risultato chiave:** Tre interventi basati sul comportamento, ordinati per rapporto > impatto/costo, coprono insieme la maggioranza degli studenti a rischio. Poiché i @@ -228,7 +228,7 @@ Attingendo da tutte e quattro le analisi precedenti, proponiamo ora tre interven ### Segmenti target La query BQ5 dimensiona tre segmenti studenteschi definiti da criteri osservabili e -azionabili — non demografici. Tutte le definizioni utilizzano dati comportamentali dei +azionabili, non demografici. Tutte le definizioni utilizzano dati comportamentali dei primi 28 giorni. | Segmento | Definizione | Dimensione | Tasso di non completamento | @@ -245,27 +245,27 @@ 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 | +| **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 | | **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 | +| **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 | +| **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 | **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 -della piattaforma — non quello degli studenti attivi. Gli studenti re-ingaggiati si +della piattaforma, non quello degli studenti attivi. Gli studenti re-ingaggiati si assumono raggiungere un tasso a metà tra disimpegnati e costanti. Queste sono assunzioni deliberatamente conservative. ### Sovrapposizione dei segmenti -Gli studenti ghost e i non-submitter si **sovrappongono fortemente** — uno studente con +Gli studenti ghost e i non-submitter si **sovrappongono fortemente**: uno studente con zero accesso VLE non può consegnare una valutazione. Questo significa che gli interventi 1 e 2 targetizzano in larga misura la stessa popolazione da angolazioni diverse; il loro impatto non va sommato ingenuamente. Gli early disengager, per definizione, hanno avuto -attività iniziale — si sovrappongono meno con i ghost, rendendo l'intervento 3 una leva +attività iniziale: si sovrappongono meno con i ghost, rendendo l'intervento 3 una leva indipendente che targetizza un failure mode diverso. ![Matrice delle priorità](figures/07_priority_matrix.png) @@ -284,7 +284,7 @@ appartenenti a più segmenti. La sovrapposizione ghost–non-submitter è sostan - **Solo dati osservazionali.** Tutti gli effect size e le differenze nei tassi di completamento sono associazioni, non relazioni causali. Gli studenti più attivi - potrebbero essere intrinsecamente più motivati — l'engagement potrebbe essere un + potrebbero essere intrinsecamente più motivati: l'engagement potrebbe essere un proxy, non una causa. - **Dati storici.** OULAD copre le coorti 2013–2014 della Open University (UK). I comportamenti degli studenti e le piattaforme di apprendimento online sono From 7f24bb32914eecb04dac221a0275b45edf42f745 Mon Sep 17 00:00:00 2001 From: aleattene Date: Mon, 31 Aug 2026 12:55:34 +0200 Subject: [PATCH 4/4] chore: add md-files to ignore list --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index df39722..23cfe68 100644 --- a/.gitignore +++ b/.gitignore @@ -225,6 +225,8 @@ CLAUDE*.md PROJECT_SPEC.md TODO*.md SKILLS*.md +HANDOFF_PROMPT.md +ROADMAP.md ADR*.md docs/ *.parquet \ No newline at end of file