Forecast Validation & Calibration

Three accuracy upgrades to the cohort-survival enrollment forecast: backtest, multi-year share calibration, and open-enrollment adjustment. All recomputed from Iowa DOE BEDS, births, and certified open-enrollment data.

The model is accurate, but it can be tightened. The enrollment forecast projects ICCSD K-12 enrollment with a cohort-survival model. This page tests it three ways. How accurate has it been on held-out history. Is the kindergarten share calibrated on enough data. And how much of that share is open enrollment we can measure directly instead of leaving it in a black box. The model holds up (MAPE under 1.5%), but its confidence band was too narrow and its share a little too high.
Backtest accuracy (5-yr horizon)
±1.2%
MAPE on held-out years, about ±162 students
Recalibrated K-entry share
0.718
trailing 3-year, vs single-year 0.728
Recalibrated 2030 Baseline
13,414
was 13,479 (-65)

How accurate has the model been?

The honest test is to hold out recent history and re-run the model. For each origin year, fit the grade-progression ratios and K-entry share using only data available up to that year, then project forward and compare to what actually happened. Errors are the percent miss on total K-12 enrollment.

Mean absolute % error by forecast horizon (across 6 origin years)
0.0%0.5%1.0%1.5%2.0%1.15%1 yr out0.95%2 yr out0.81%3 yr out1.46%4 yr out1.21%5 yr out
Fit throughShare+1+2+3+4+5+6
20190.745+3.4+1.9+1.9+2.5+1.3+2.0
20200.748-1.2-1.3-0.6-1.8-1.1n/a
20210.736-0.1+0.6-0.6+0.1n/an/a
20220.728+0.5-0.8-0.1n/an/an/a
20230.719-1.0-0.1n/an/an/an/a
20240.718+0.8n/an/an/an/an/a
MAPE %n/a1.150.950.811.461.211.98
Mean bias %n/a+0.39+0.06+0.15+0.29+0.07+1.98

Two things stand out. First, accuracy is strong. MAPE stays under 1.5% through five years, in line with what professional demographers hit. Second, the big misses come from the 2019 origin (+1.3% to +3.4%). A model fit before COVID over-predicted, because it could not see the 2020 and 2021 enrollment dip coming. Origins from 2021 on, the post-COVID regime the live forecast actually uses, miss by well under 1%.

The scenario band is too narrow. The live forecast's High and Low scenarios span only about ±0.9% at 2030 (13,306 to 13,551). That is narrower than the model's own measured error. The honest band is the empirical one, about ±1.2% at five years. The scenario fan should widen to match what the model actually does on held-out data.

Calibrating the share on three years, not one

Kindergarten is the foot of the whole model. K equals Johnson County births from five years earlier, times the district share. The live model sets that share from a single year, the 2025 K count over 2020 births, which works out to 0.728. A single year can be noisy. The full series tells a steadier story.

K-entry share of county births, 2016 to 2025 (raw vs open-enrollment-adjusted)
0.680.700.720.740.7616171819202122232425pre-2023 0.738trailing-3yr 0.718raw shareOE-adjusted(residential)
K yearK enrollBirths (−5)Raw shareOE-adj
20161,1251,5480.727n/a
20171,1461,5520.7380.753
20181,1571,5230.7600.772
20191,1011,4950.7360.746
2020 COVID1,0271,4620.7020.712
2021 COVID1,0961,4380.7620.764
20221,0351,4210.7280.731
20239981,4070.7090.709
20249921,3850.7160.716
20259871,3560.7280.727

The pre-2023 average was 0.738. Since the 2023 trend break the share has settled at a trailing 3-year mean of 0.718, and it is very stable there (standard deviation 0.008). The single-year 0.728 anchor sits above the current level, because 2025 happened to be the high year of the last three. A trailing-mean calibration of 0.718 is the steadier Baseline.

Pulling open enrollment out of the share

The share bundles four things together. Boundary mismatch (the district is not the county), migration, private-school choice, and open enrollment. The last one we can measure directly. Net open enrollment for ICCSD swung from down 272 in 2017 to up 15 by 2025, a 287-student recovery. Take the per-grade open-enrollment slice out and you get a "residential" share driven only by resident births (the green dashed line above).

An open-enrollment recovery has been propping up the count. From 2017 to 2020, ICCSD was losing students to open enrollment, so its residential demand was actually higher than the enrolled counts showed (residential share about 0.75 vs raw about 0.74). As that bleed stopped, the enrolled counts got propped up by the recovery. So the raw share fell only 1.1 points from 2017 to 2025, while the residential share fell 2.6 points. That recovery was a one-time tailwind, and it is now spent. Net open enrollment is near zero, with little room to rise. Projecting forward on the raw 0.728 borrows from a cushion that will not repeat. The residential trailing-3-year share (0.717) lands right on the recalibrated 0.718, which confirms it as the right forward anchor.

The recalibrated forecast

Adopt the trailing-mean share (0.718) and the measured bands, and the Baseline moves down a little while the cone of uncertainty widens to its honest width.

Recalibrated Baseline (share 0.718) with empirical confidence band
13.0k13.4k13.8k14.2k14.6k1819202122232425262728293013,41413,57613,252
YearOld base (0.728)Recal. base (0.718)Empirical bandRange
202614,12414,111±1.15%13,949 to 14,273
202714,03014,004±0.95%13,872 to 14,136
202813,83713,798±0.81%13,686 to 13,910
202913,64913,597±1.46%13,398 to 13,796
203013,47913,414±1.21%13,252 to 13,576
The change is small, and that is the point. The recalibrated 2030 Baseline is 13,414, against the current 13,479. About 65 students lower, a 0.5% change. It stays small because the engine and the data are sound. What changes is the footing. The Baseline is now anchored on three years instead of one, the band reflects measured error instead of a guess, and the open-enrollment tailwind is no longer quietly holding the projection up. The decline is if anything a little steeper, which pushes the revenue headwind from about $6.7M to about $7.3M/year by 2030.

What would still help

The live enrollment forecast →
Full model methodology →
Enrollment to revenue bridge →

All figures recomputed by scripts/build_forecast_backtest.py from: Iowa DOE BEDS grade vectors 2016 to 2025. Johnson County births (CDC WONDER / Iowa Vital Statistics, lagged 5 years). Iowa DOE certified enrollment net open enrollment 2017 to 2025. Backtest uses origin years 2019 to 2024, with GPRs and share calibrated only on data available at each origin. Open enrollment is allocated to kindergarten pro-rata by enrollment, a measurable approximation, not a grade-level census.