The city publishes its bike-counter data openly. We use it to test the city's public statements about cycling, and to measure how well cycling at an unmeasured location can be rebuilt from the counters that exist.
«In der Stadt Zürich hat sich der Veloverkehr von 2012 bis 2024 beinahe verdoppelt.»
Official cycling index: 2012 = 100, 2024 = 193.4, 2025 = 207.6. It averages daily traffic over all city counters active in each year, so the set of counters changes over time.
The city-style median over all counters reproduces the official 2024 value almost exactly. Holding the counters fixed tells a slightly lower story. The dashed line marks 180, our cut-off for "nearly doubled", fixed before any estimate was computed. The same-8 line is fitted over 2012–2025, so it reads 187 in 2024, slightly below the ×1.90 headline fitted on 2012–2024.
Each row is one way of treating the data. Blue marks draws at or above ×1.8, grey below. The share of blue is the confidence.
Andreasstrasse's daily traffic divided by the median counter's. In October 2019 a new device model went in after a 7-month outage, and the level jumped about ×1.5 relative to other counters. The direction split and daily profile did not change. The open data cannot tell a real local change from a measurement change.
Change is the effect on the same-8-counter 2012→2024 ratio (×1.90) when that anomaly is handled differently. Only group A moves the result across ×1.8.
Each dot is the 2012→2024 median ratio with one counter removed (orange dashes ×1.8, grey dots the official ×1.93). With only 11 counters in 2012, the median is a single counter. Removing one of the quieter 2012-only counters (Fischerweg, Kloster-Fahr-Weg) drops it furthest.
Leaving any one counter out gives ×1.79–×2.05. Without Andreasstrasse the estimate is ×1.79, just under the cut-off.
Did the device change at Andreasstrasse in October 2019 (ECO → Y2H) alter what is counted, or did cycling routes around Oerlikon change in 2019–20? If it was a measurement change, the confidence falls to about 0.24 and "up about three-quarters" is the honest phrasing. If it was real, about 0.72 and "nearly doubled" holds.
Rebuilding hourly passages at a held-out counter. Test year 2025, 24 city sites, 20 folds, with 29 cantonal stations as extra inputs.
Bars show pooled hourly MAE (passages per hour, lower is better). All rows are scored on identical site-hours. Validation is 2024 on separate hidden sites. Model and blend weights were chosen there, never on the test.
Each line runs from the city-only blend run (grey) to the run with cantonal inputs (blue). The dashed line on the coverage panel marks the nominal 90%.
Every model sees the counters through this network. The OSM ways where bicycles are allowed give cycling times at a flat 16 km/h. These are contracted into the model graph: counters plus 80 high-betweenness junctions. Each edge follows the roads of its least-cost route. Under the Velonetz-weighted cost, a minute on a Vorzugsroute counts as 0.8 and a minute off the planned network as 1.2. Click a city counter to hold it out and see which counters the model can still use.
X: cycling time from a held-out counter to the nearest counter the model can still see. Its own hold-out group is removed. Y: the blend's hourly WAPE at that site. Grey is city only and blue is with cantonal inputs, joined by a line per site. Points above 140% are pinned to the top edge.
Each line runs from the travel-time cost (grey) to the Velonetz-weighted cost (blue). Same models, folds and validation sites. The rank factors were fixed before the run (0.8 / 0.9 / 1.0 / 1.2), not tuned.
Sorted by change. Select a site to see its daily totals below.
MAE by condition. Peak hours carry about three times the error of off-peak hours, roughly in proportion to volume.
Adjusted daily totals with 2017 = 1. Descriptive only, with no causal claim. 2020–21 includes pandemic effects.