Sampling planner
Where the E. coli samples behind SwimSignal's model are thin, and what a simulation found for simple ways of spending a sampling budget. A planning aid for a conversation with a sampler, not a sampling plan: nothing here has been tested in real water.
Where samples are thin
SwimSignal's E. coli model learns only from lab samples. All of them are the Environment Agency's, at the 38 inland bathing waters: 2,265 samples from 2023 to 2026.
- Most spots have none. 70 of SwimSignal's 109 spots (52 rivers and 18 lakes) have no lab samples here. One more has a local group's samples (Waterhead), which are not part of the model's data.
- Only May to September. No sample here was taken from October to April. May (365) and September (380) have fewer than June (516) and July (516).
- 6 bathing waters have one season. Sandy Lane, Chester; Swale above Richmond Falls; Falcon Meadow, River Waveney; Ham and Kingston, River Thames; Pangbourne Meadow, River Thames; and River Avon at Queen Elizabeth Gardens have only 2026 samples here, about 20 each.
- Few samples after rain. Of the 1,537 samples from 2024 to 2026 with archived rain, 327 (21%) came after more than 10 mm in 48 hours: 124 of 900 at rivers and 203 of 637 at lakes. The 6 bathing waters with no monitored overflow upstream have no rain figures here.
| Area | Spots | With EA samples | With none |
|---|---|---|---|
| Cumbria and the Lake District | 28 | 8 | 19 |
| East of England | 8 | 3 | 5 |
| Lancashire | 2 | 1 | 1 |
| London | 5 | 5 | 0 |
| Midlands | 3 | 3 | 0 |
| North East | 3 | 0 | 3 |
| Peak District and Sheffield | 8 | 0 | 8 |
| Severn and the Welsh borders | 8 | 4 | 4 |
| South West | 12 | 3 | 9 |
| South and South East | 8 | 3 | 5 |
| Thames Valley | 11 | 4 | 7 |
| Yorkshire | 13 | 4 | 9 |
| Bathing water | Kind | Samples | 2023 | 2024 | 2025 | 2026 | May | Jun | Jul | Aug | Sep | After rain |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Falcon Meadow, River Waveney | river | 20 | 0 | 0 | 0 | 20 | 2 | 5 | 5 | 4 | 4 | 2 of 17 |
| Ham and Kingston, River Thames | river | 20 | 0 | 0 | 0 | 20 | 2 | 5 | 5 | 5 | 3 | 2 of 18 |
| River Avon at Queen Elizabeth Gardens | river | 20 | 0 | 0 | 0 | 20 | 3 | 5 | 4 | 4 | 4 | 2 of 17 |
| Sandy Lane, Chester | river | 20 | 0 | 0 | 0 | 20 | 2 | 4 | 5 | 4 | 5 | 1 of 17 |
| Pangbourne Meadow, River Thames | river | 21 | 0 | 0 | 0 | 21 | 2 | 4 | 5 | 4 | 6 | 2 of 16 |
| Swale above Richmond Falls | river | 21 | 0 | 0 | 0 | 21 | 2 | 6 | 3 | 5 | 5 | 2 of 17 |
| Frensham Great Pond | lake | 55 | 20 | 15 | 10 | 10 | 9 | 13 | 12 | 13 | 8 | 2 of 34 |
| Cotswold Country Park and Beach | lake | 56 | 20 | 16 | 10 | 10 | 13 | 9 | 11 | 11 | 12 | – |
| Wharfe at Wilderness Carpark | river | 58 | 0 | 20 | 20 | 18 | 11 | 11 | 15 | 13 | 8 | 6 of 56 |
| Coniston Water, Boating Centre | lake | 60 | 0 | 20 | 20 | 20 | 9 | 15 | 15 | 12 | 9 | 30 of 57 |
| Coniston Water, Brown Howe | lake | 60 | 0 | 20 | 20 | 20 | 9 | 15 | 15 | 12 | 9 | 28 of 57 |
| Coniston Water, Monk Coniston | lake | 60 | 0 | 20 | 20 | 20 | 9 | 15 | 15 | 12 | 9 | 29 of 57 |
| Hampstead Heath (Mens Pond) | lake | 60 | 20 | 15 | 15 | 10 | 11 | 13 | 13 | 13 | 10 | – |
| Nidd at the Lido, Knaresborough | river | 60 | 0 | 20 | 20 | 20 | 11 | 12 | 14 | 13 | 10 | 7 of 57 |
| River Avon at Fordingbridge | river | 60 | 0 | 20 | 20 | 20 | 11 | 14 | 11 | 12 | 12 | 9 of 57 |
| River Frome at Farleigh Hungerford | river | 60 | 0 | 20 | 20 | 20 | 10 | 13 | 14 | 11 | 12 | 7 of 56 |
| River Ribble at Edisford Bridge | river | 60 | 0 | 20 | 20 | 20 | 10 | 15 | 16 | 14 | 5 | 22 of 59 |
| River Severn in Shrewsbury | river | 60 | 0 | 20 | 20 | 20 | 8 | 12 | 15 | 15 | 10 | 8 of 57 |
| Derwent Water at Crow Park | lake | 61 | 0 | 20 | 20 | 21 | 9 | 17 | 13 | 14 | 8 | 20 of 59 |
| River Severn at Ironbridge | river | 61 | 0 | 20 | 21 | 20 | 8 | 12 | 15 | 15 | 11 | 9 of 58 |
| River Teme in Ludlow | river | 61 | 0 | 21 | 20 | 20 | 8 | 13 | 15 | 15 | 10 | 7 of 58 |
| River Tone at French Weir Park | river | 61 | 0 | 21 | 20 | 20 | 10 | 14 | 14 | 14 | 9 | 6 of 58 |
| Sheep's Green, River Cam | river | 61 | 0 | 21 | 20 | 20 | 9 | 12 | 12 | 14 | 14 | 7 of 57 |
| Wallingford Beach, River Thames | river | 61 | 0 | 20 | 20 | 21 | 10 | 13 | 12 | 13 | 13 | 6 of 56 |
| Friars Meadow, River Stour | river | 62 | 0 | 21 | 20 | 21 | 9 | 15 | 13 | 12 | 13 | 3 of 58 |
| Colwick Country Park (West Lake) | lake | 69 | 20 | 15 | 15 | 19 | 12 | 13 | 17 | 15 | 12 | 8 of 45 |
| Hampstead Heath (Mixed Pond) | lake | 70 | 20 | 15 | 15 | 20 | 12 | 16 | 15 | 16 | 11 | – |
| Rutland Water Sykes Lane | lake | 70 | 20 | 20 | 20 | 10 | 12 | 16 | 15 | 14 | 13 | 7 of 48 |
| Rutland Water Whitwell Creek | lake | 76 | 21 | 20 | 20 | 15 | 13 | 17 | 16 | 16 | 14 | 8 of 52 |
| Henleaze Lake | lake | 79 | 20 | 19 | 20 | 20 | 12 | 18 | 17 | 18 | 14 | – |
| Hampstead Heath (Ladies Pond) | lake | 80 | 20 | 20 | 20 | 20 | 13 | 18 | 19 | 16 | 14 | – |
| Wharfe at Cromwheel, Ilkley | river | 80 | 20 | 20 | 20 | 20 | 15 | 17 | 19 | 17 | 12 | 10 of 57 |
| Windermere, Lakeside YMCA | lake | 80 | 20 | 20 | 20 | 20 | 13 | 21 | 19 | 17 | 10 | 19 of 57 |
| Windermere, Millerground Landing | lake | 80 | 20 | 20 | 20 | 20 | 13 | 21 | 19 | 17 | 10 | 18 of 57 |
| Windermere, Rayrigg Meadow | lake | 80 | 20 | 20 | 20 | 20 | 13 | 21 | 19 | 17 | 10 | 17 of 57 |
| Wolvercote Mill Stream | river | 80 | 20 | 20 | 19 | 21 | 14 | 17 | 15 | 17 | 17 | 6 of 54 |
| The Serpentine - Hyde Park | lake | 81 | 20 | 20 | 21 | 20 | 13 | 18 | 19 | 17 | 14 | – |
| Windermere, Fellfoot | lake | 81 | 20 | 20 | 20 | 21 | 13 | 21 | 20 | 17 | 10 | 17 of 57 |
Four ways to spend a budget, in a simulation
A simulation tried four ways of choosing where and when to take 60 extra samples in one season. Its world was made up: 40 made-up sites, 12 of them never sampled before; a 20-week season, at most 2 samples a day. The truth is a logistic model with normal site offsets, the same form the information score assumes. Nothing here has been tried on real water.
- Equal coverage
- Each week, the sites with the fewest samples so far, on a random weekday.
- Wettest, riskiest days
- Each week, the site-days with the highest predicted chance of a high count. Not a pure wet-day rule, which was not simulated, but in practice it picked the wettest days.
- Most informative
- Each week, the site-days whose result would teach the model most, by an information score (BALD).
- Random
- Each week, site-days drawn at random. A reference, not a proposal.
| Policy | Error | Lower than random | Error at sites never sampled before | High results, of 60 | Rain in the 48 hours before, mm |
|---|---|---|---|---|---|
| Equal coverage | 0.00303 | 11% | 0.00553 | 11.2 | 3.5 |
| Wettest, riskiest days | 0.00331 | 3% | 0.00671 | 48.6 | 15.5 |
| Most informative | 0.00284 | 16% | 0.00496 | 24.1 | 10.1 |
| Random | 0.00340 | – | 0.00679 | 11.4 | 3.5 |
The information policy failed its test. It needed lower error than equal coverage in at least 60% of the 200 worlds, and had it in 58.5%. Its mean gain over equal coverage was 0.000189 (95% interval 0.000077 to 0.000306), about 6% of equal coverage's error. Against random it had lower error in 73%. Nothing was adopted, and this page does not change that.
Almost all of the difference was at sites never sampled before. Equal coverage and the information policy both went mostly there; the information policy also chose wetter days. The wettest, riskiest days caught the most samples over the line, but taught the model little more than random did.
| Run | Samples | Lower error in | Mean gain | 95% interval |
|---|---|---|---|---|
| The test: 5 per new site | 60 | 58.5% | 0.000189 | 0.000077 to 0.000306 |
| Check: 5 per new site, sites truly alike | 60 | 66.0% | 0.000387 | 0.000190 to 0.000582 |
| Check: 10 per new site | 120 | 51.0% | 0.000060 | −0.000066 to 0.000179 |
With about 10 samples per new site, equal coverage caught up: the interval includes 0.
What a season would cost
Set the samples, the price of one sample and the sites to share them over. Starting values to change, not a quote: 60 samples over 12 sites is the simulation's season. £100 a sample is a round figure; a lab's price, travel and staff time are not counted.
Every policy here takes the same number of samples, so the lab bill is the same. What differs is which sites and which days.
Suggested priorities, not a plan
If a sampler asks where one more sample would add most, the rule of thumb recorded on 26 October 2026 is: the least-sampled sites, on wetter days. It comes from the simulation above, not from real water. On these files it points to:
- the 70 spots with no samples, most of them in Cumbria and the Lake District (19), South West (9), Yorkshire (9)
- the bathing waters with one season of samples: Sandy Lane, Chester; Swale above Richmond Falls; Falcon Meadow, River Waveney; Ham and Kingston, River Thames; Pangbourne Meadow, River Thames; and River Avon at Queen Elizabeth Gardens
- the rivers with fewest samples after rain: Sandy Lane, Chester (1 of 17); Falcon Meadow, River Waveney (2 of 17); Ham and Kingston, River Thames (2 of 18); Pangbourne Meadow, River Thames (2 of 16)
These are things to talk about. SwimSignal does not choose where or when anyone samples, and sends no list to a sampler. It has not shown that any of these choices teaches the model more than a fixed schedule.
What this rests on
- The simulation's world was made up to match the model's own form. Real counts, real differences between sites and real rain forecasts do not follow it, so a real test would be harder.
- No policy here has been tried in the field. Nobody has sampled to any of these rules and compared the result.
- The cost is the lab's price per sample only, and you set it. Travel between scattered sites, and staff on call to sample at short notice after rain, are not counted.
- "After rain" means more than 10 mm in the 48 hours before the sample, from archived forecast rain, not a rain gauge. Another line would give other counts.
- The samples are the Environment Agency's routine ones, on days it fixed in advance. They show where the model's data are thin, not where the water is worse.
What would show a policy works
Only a field study. A sampler with a budget would take samples by one rule in some weeks and by their usual schedule in others, with each week's rule drawn at random before the season. The models updated with each set of samples would then be scored on later samples that neither rule chose. The test, its pass rule and its size would be written down before the first sample. Until then, no policy here can be called more efficient. The study in full.
Sources
Environment Agency bathing water quality data, Open Government Licence v3.0.