Lab · Intermediate
Enrolled, attending, learning
Build one indicator from each of the three populations, on four files and six denominators, and then write the paragraph explaining why the three cannot be drawn as a funnel.
A district education adviser wants one slide: how many children are in school, how many turn up, and how many are learning. They expect three numbers that descend.
They will get three numbers on three different denominators, one of which is over 100%, and the honest slide says so.
The files
school-enrolment-2024.v1.csv — 2,471 enrolment records across 2023 and 2024,
with age, sex, disability, displacement, repetition and an end-of-year status.
school-age-population-2024.v1.csv — the projected denominator, by district and
single year of age.
learning-assessment-2024.v1.csv — 2,798 results across two rounds with
different instruments.
school-attendance-2024.v1.csv and school-roster-2024.v1.csv — 70,245 daily
marks over one term, from three earlier courses.
All synthetic, and they join on student_id.
Set up first
A project directory, all five files read-only, an outputs/ directory, and a
script that runs top to bottom from a clean kernel.
Part one: enrolment, and the ratio above 100%
Compute gross and net enrolment for primary. Before you do:
- range-check age — twenty-one rows hold an age above 20, because one school records in months. Correct rather than delete, and say which you did;
- deduplicate on student and year — twelve student-years appear twice after transfers were recorded as new enrolments.
Report both ratios with the same denominator stated, and add a sensitivity line: what the two ratios become if the population projection is 5% out in either direction. Then write one sentence explaining to the adviser why the gross ratio exceeding 100% is not an error.
Part two: two attendance numbers
From the attendance register, compute average daily attendance and the share of students attending at least 90% of their marked days.
Three things to handle. present has five values, not two — recode Y/N
rather than letting a boolean cast discard them. Two schools are missing fifteen
consecutive school days; find them, work out from the pattern what happened, and
build your denominator from days each school was open. And declare the minimum
number of marks a student needs to appear in the second figure.
Report both numbers and the threshold sensitivity curve from 75% to 95%.
Part three: retention, on a cohort
From the 2023 rows, compute promotion, repetition and dropout on a denominator that excludes transfers, and say why. Then:
- disaggregate dropout by over-age status, disability, displacement and sex, and say which of those cuts you would report and which you would not;
- compute the chained survival to the final grade two ways — counting repeaters as exits and as retained — and explain in three sentences why neither is a completion rate;
- compute the observed one-year transition from students who appear in both years, and say why it beats both chained figures.
One district’s repetition rate is out of line with its over-age share. Identify it and say what you would do before reporting either number.
Part four: learning, on the right subsample
The two assessment rounds used 40 and 50 items.
Report the change three ways: raw scores (and why you are not using them), proportion of items correct for all comers, and proportion of items for the students who sat both rounds. Quantify the selection — what the students who did not return scored at baseline — and state which estimate you would publish.
Then report the proficiency band distribution across rounds, and say why it is the only comparison whose scale survives the change of instrument.
Part five: the slide, and the paragraph
Produce the adviser’s slide: one enrolment number, one attendance number, one learning number, each with its denominator and n visible.
Then write the paragraph that has to go under it, explaining why the three cannot be drawn as a descending funnel. Four sentences.
Check your numbers
| Expected | |
|---|---|
| Gross enrolment ratio | about 109% |
| Net enrolment ratio | about 97% |
| Over-age share of primary | about 36% |
| Average daily attendance | about 88% |
| Students attending 90%+ | about 62% |
| Dropout, transfers excluded | about 10.5% |
| Dropout, over-age vs in-age | about 19.5% and 4.8% |
| Learning change, panel | about +6.9 points |
| Learning change, all comers | about +8.7 points |
If your net ratio exceeds your gross ratio, the numerators are the wrong way round. If average daily attendance comes out near 66% for two schools, the closure days are being counted as absences.
The questions to answer in prose
Three sentences each.
1. Your gross enrolment ratio is above 100%. Explain to the adviser what would have to be true for that to be an error, and why it is not one here.
2. Average daily attendance and the share attending 90%+ are more than twenty points apart. Say what each measures, and give an intervention that would move one and not the other.
3. The all-comers learning change is nearly two points larger than the panel change. Explain the mechanism, say which direction it always biases in, and give the sentence you would put beside the published figure.
What to hand in
A Python script or notebook producing:
- the denominator table, printed before any result
- both enrolment ratios with the projection sensitivity
- both attendance figures with the threshold curve and the closure handled
- the retention table, the two chained survival figures and the observed transition
- the three learning comparisons and the band distribution
- the slide and the four-sentence paragraph
- the three prose answers
How to know you are done
Delete outputs/, restart the kernel, run once, everything regenerates
identically. Every percentage you print carries its denominator and its n in the
same output — if a reader has to look in your code to find out what a number was
divided by, the lab is not finished.
What this lab is not
It is not an education sector assessment. Whether the schools are adequately staffed, whether the curriculum is appropriate, and whether children out of school are being reached are all questions these files cannot answer — the last one especially, because every denominator here counts children the system already has. This lab is the analyst’s part: three populations, six denominators, and a slide that does not lie about which is which.