Winston-Salem Bird Station

Wednesday, August 26, 2026 — 08:39 PM

Raspberry Pi 4 · Ecowitt WittBoy 7-in-1 Weather Station · Cornell Lab BirdNET-Pi Acoustic Recognition

Questions or feedback: [email protected]

Dueling Models

Two competing statistical models, retrained nightly, racing to see which one better predicts bird activity.

Two Ways of Modeling "When Do Birds Sing?"

Both models see the same detections. They just assume a different shape for the daily pattern.

Model 1: Quadratic (Bayesian)

assumes one smooth rise-and-fall curve per species

log(detections) ~
  β₁·TimeOfDay + β₂·TimeOfDay²
  + Temp + Humidity + Pressure + Rain
  + (per-species baseline)
5am 8pm

one example species — sharp morning peak, long tail into evening

StrengthSmooth fitting of peak activity hours, even with limited data per species.
LimitationCan only represent one dominant peak. A species active at both dawn AND dusk gets averaged into a single, blurred hump — the second peak is suppressed.

Model 2: Categorical (Hour-by-Hour)

assumes nothing — estimates every hour independently, per species

log(detections) ~
  βhour[TimeOfDay]
  + Temp + Humidity + Pressure + Rain
  + (per-species baseline)
5am 8pm

same species — jagged, hour-to-hour — can show two separate peaks

StrengthCan represent multiple independent peaks (e.g. dawn AND dusk activity) — no assumption about a single shape.
LimitationRoughly double the parameters to estimate. Noisier — some of that jaggedness may just be sampling noise, not a real pattern.
Too close to call

The two models' fit quality is within statistical noise of each other tonight, on the exact same data.

How well does each model fit the data?

This tracks each model's expected log pointwise predictive density (ELPD) every night, divided by row count so nights with different amounts of data are comparable — a leave-one-out cross-validated, log-likelihood-scale score of how well each model predicts data it wasn't fit on. Think of it like a nightly report card: a model can't just "memorize" the data to win, it has to genuinely explain patterns that generalize. Because it's a log-scale score, the values are negative, and higher (closer to zero) is better — e.g. -0.594 is a better fit than -0.614.

Bayesian (quadratic curve) Categorical (hour-by-hour)

Shaded bands show statistical uncertainty (± 1 standard error). When the bands overlap, the two models are statistically indistinguishable that night — the higher line isn't necessarily "truly" better, just noisier.

Why two models at all?

The Bayesian model assumes each species' activity rises and falls smoothly across the day, like a single dawn peak that fades out. The categorical model makes no such assumption — it lets each hour be estimated independently, so it could in theory catch something the smooth model can't, like a species with both a dawn and a dusk peak. The trade-off: the categorical model has roughly double the moving parts, which raises real risk of just fitting noise rather than a genuine pattern. Racing them nightly is how we find out, honestly, whether that flexibility is actually paying off — or if the simpler model keeps winning.