The SAWS supply covered 60 automatic weather stations across the Free State,
Gauteng, KwaZulu-Natal and the Eastern Cape. Twenty-eight exceeded the 10%
missingness threshold and were excluded, leaving 32 — 13 in the Eastern
Cape, 12 in KwaZulu-Natal, 5 in the Free State and 2 in Gauteng. Remaining gaps
were filled by inverse-distance weighting, which estimates a missing value as a
distance-weighted average of concurrent observations at neighbouring stations.
Four of the six recorded variables were modelled, excluding rainfall and wind
direction. Each variable was trained separately and univariately:
the input tensor was sliced per feature, so a model forecasting temperature sees
only temperature history. This differs from the continuous-time workstream, which
supplies all six variables as input while predicting one — a difference
worth holding in mind when comparing the two sets of numbers.
- Observations
- 87,672 hourly timesteps × 32 stations × 4 features = 11,222,016 observations
- Split
- chronological 60 / 20 / 20 — train 2016–2021, validate 2022–2023, test 2024–2025
- Normalisation
- z-score, mean and standard deviation from the training set only
- Seeds
- 3 — 2024, 2025, 2026
- Samples
- 8 per diffusion run, averaged for comparison with the deterministic baselines
- Training
- MAE objective, Adam; max 50 epochs for baselines, 300 for diffusion models; early stopping patience 15
- Tuning
- Tree-structured Parzen Estimator, 30 trials of 30 epochs; first 10 trials random, remaining 20 guided
- Hardware
- NVIDIA A100, UCT ICTS HPC
Metrics
MAE and RMSE are reported together because they weight the error distribution
differently — RMSE's sensitivity to large errors makes it the more
informative of the two when the question concerns extremes. CRPS
is added for the diffusion models: it scores the compatibility of a whole
predictive distribution with the observation, which MAE and RMSE cannot do
because they score only a point.