Machine Learning for Precipitation Nowcasting
Precipitation nowcasting is the problem of predicting rainfall up to ~2 hours ahead. It remains hard because of the chaotic nature of convective systems and the steep decay of predictability.
Formulation
Let be a radar reflectivity field at time . Nowcasting asks for the conditional distribution
over the next frames. Most production systems predict the conditional mean and call it a forecast.
Approaches
- Optical flow extrapolation — Lagrangian advection of the last observed field.
- ConvLSTM and successors — recurrent networks with convolutional state transitions.
- Generative models — GANs and diffusion models that sample realistic nowcasts calibrated on skill scores.
A simple optical flow baseline
import numpy as np
def extrapolate(sequence, velocity, lead_time):
"""Extrapolate radar frames along a constant velocity field."""
h, w = velocity.shape[:2]
out = np.empty_like(sequence[0])
for y in range(h):
for x in range(w):
sy = int(np.clip(y - velocity[y, x, 0] * lead_time, 0, h - 1))
sx = int(np.clip(x - velocity[y, x, 1] * lead_time, 0, w - 1))
out[y, x] = sequence[-1][sy, sx]
return out
The mean-squared error between the extrapolation and the observed frame drops sharply after 20–30 minutes, which motivates the current interest in learned, stochastic models.