Call of Kiuru

How well the model does

Every date on this site comes from a model, not from observations (why). This page shows how closely the model matches observed lilac bloom, how each city is graded, and where the evidence is thin.

The model was compared with observed first lilac bloom near each city, the median of the nearby observers each year. Nothing in the model was fitted to these observations.

Model against observed lilac bloom, 95% ranges below each figure
Germany Sweden
Springs checked 741951–2024 172008–2024
How closely early and late years matchcorrelation, 1 is perfect 0.920.89–0.95 0.720.54–0.87
The model's typical miss, in how early or late spring was 3.8 days3.2–4.3 3.9 days2.6–4.8
The same, guessing an average spring every year 8.9 days 5.6 days
Skill score1 is perfect, 0 no better than guessing an average spring every year 0.820.73–0.88 0.520.25–0.75

The ranges come from resampling whole springs. Cities share each year's weather, so the evidence is the number of springs, not of city-years.

In Germany the model's dates run early, by 2.8 days on average; in Sweden they are 0.1 days late. The model averages a lilac and two honeysuckles, and the honeysuckles bloom earlier, while the observations are lilac only. Its lilac part alone is 0.7 days off in Germany. The offset does not change the numbers on this site, because each city is compared with the model's own average for that city.

How each city is graded

Each city's track record comes from its own check: the model's skill score, at the cautious end of its 95% range, so that a few lucky springs can't make a city look better than it is.

A city is shown once it has at least 10 springs with nearby observations. The skill score is standard (Murphy, 1988): 1 is perfect, 0 is no better than guessing an average spring every year. The lines at 0 and 0.5 are this site's choice, not part of the standard.

The 95% range is a 95% confidence interval from bootstrap resampling: the springs checked are drawn again at random 10,000 times, the score is worked out each time, and the middle 95% of those scores is kept. It is approximate, and somewhat narrow for short records, so with Sweden's 16 or 17 springs a city near a line could fall on either side of it.

City by city

One chart per city: the observed date of first lilac bloom each spring checked, and the model's date. Higher on the chart means later in the year. The grades above measure how well the model's line follows the observed one up and down, including how far. Where the model's line sits lower overall, the model is early: that is the offset. It doesn't count against the grade, because each city is compared with the model's own average, where a steady offset cancels out.

Observed: median of nearby observersModel

Germany, 1951–2024

Freiburg 74 springs good
Munich 74 springs good
Stuttgart 74 springs good
Nuremberg 74 springs good
Frankfurt 74 springs good
Cologne 74 springs good
Dresden 74 springs good
Leipzig 74 springs good
Hanover 74 springs good
Berlin 74 springs good
Bremen 74 springs good
Hamburg 74 springs good
Rostock 74 springs good
Kiel 74 springs good

Sweden, 2008–2024

Malmö 17 springs not yet confirmed
Växjö 17 springs fair
Gothenburg 16 springs good
Jönköping 16 springs not yet confirmed
Örebro 16 springs fair
Stockholm 17 springs fair

Every value is in bloom_multiyear.csv

Limitations

The data and the code

The observations are based on data from Deutscher Wetterdienst (CC BY 4.0) and from SLU Naturens Kalender (CC0).

The code behind the model and this comparison was written with AI assistance. It is checked in two ways: it gives exactly the same days as USA-NPN's own code, and its results are compared with observed bloom, above. The code, its tests and each city's numbers are open on GitHub.

How it works · All cities