The two sources
Sightings come from GBIF, the global pool of biodiversity records — mostly eBird
checklists and iNaturalist photos here. Weather comes from Open-Meteo's ERA5
reanalysis, which gives a daily temperature for any coordinate back to 1940.
Neither needs a key. Nothing here has been combined before in this workspace: the join
is (box, day) — a sighting happened at a place on a date, and
that place had a temperature on that date.
Two free public datasets. One says where and when animals were seen.
The other says what the weather was there. This puts them side by side.
Dividing out the birdwatchers
Raw sighting counts are useless across years: this area logged 210 hummingbird
records in 2000 and 13,261 in 2024. That is a change in observers, not in birds.
So every count is divided by all bird records in the same box on the same day —
the same query with the species filter swapped for class Aves.
What is plotted is a detection frequency: of the birding done that day, what
share found this species.
Far more people report birds now than in 2000. If we counted raw
sightings, every species would look like it was exploding. Instead we ask: out of all
the birds people reported that day, how many were this one?
What counts as arriving
There is no single right answer, which is why it is a slider rather than a number. The
arrival date is the day the season's running total of effort-corrected sightings first
crosses your chosen share, interpolated between days. A low percentile tracks the first
scouts and is jumpy; a high one tracks the bulk of the population and is steadier.
A year is skipped when it holds fewer than 25 records in the window.
You pick how much of the flock has to show up before we call it
"arrived." Move the slider and every number on the page recomputes.
Measuring the spring
Spring warmth is the mean daily temperature over March and April at the box's
centre. The panel also carries growing degree days (accumulated warmth above
10 °C from 1 January), the measure plants actually respond to, and the day that
total first reaches 100 — a thermal spring date. Across these 25 years the degree-day
total ranges more than threefold.
"How warm was that spring" measured three ways — average temperature,
total accumulated warmth, and the date warmth arrived.
Why some migrants ignore a warm spring
The species that respond most here are the ones that winter closest. A
Tree Swallow winters along the Gulf and can read the same spring the trees are
reading. A Ruby-throated Hummingbird is in Central America in February, where a
mild March in Maryland is invisible; it leaves on daylength, which is identical
every year. So a flat line for a long-distance migrant is not the method failing —
it is the constraint that makes phenological mismatch a live worry, because the insects
those birds arrive to eat do track local warmth.
Birds that spend winter nearby can feel an early spring coming. Birds
wintering in the tropics can't — they leave on schedule no matter what. That gap is why
warming springs worry ecologists.
The control drift, and where it fires
The residents are not decoration — they are the instrument's zero. Their slope is
subtracted from every migrant's before the verdict is written, and when it strays past
0.4 days/°C the place is flagged instead of reported. That flag fires in
Boston, where both residents drift about +0.7 days/°C. Residents cannot
arrive, so that number is not migration; it is most likely warm springs changing when
and where people go birding. Washington and Atlanta come in near zero and can be read
at face value.
Two of the birds here never migrate, so any "arrival shift" they show
is pure measurement error. In Boston they show a big one — so Boston's numbers get a
warning label instead of a conclusion.
What it cannot tell you
This is a correlation across years, not a causal claim, and the sightings are
opportunistic — people bird where it is pleasant, and warm mornings pull them outdoors,
which the effort correction reduces but cannot erase. Records before roughly 2010 are
thin. Reanalysis is a model, not the thermometer down the road. And a shared key means
a join is possible, never that it is meaningful — the resident controls are
there precisely to test that.
This shows things moving together. It does not prove the warmth caused
the birds to move. The control species are the honesty check.
Where 2025 went
The window stops at 2024 on purpose. GBIF held only 422 hummingbird
records for this area in 2025 against 13,261 in 2024 — not an empty spring, but the
lag before eBird's annual export lands in GBIF. Plotted uncritically it would have
drawn a dramatic and entirely fictional early arrival. Incomplete years are excluded
rather than shown thin.
The most recent year's data hasn't finished loading into the database
yet, so including it would have invented a fake result. It's left out.