How weather affects cycling

I presented this at the 2019 World Winter Cycling Congress here in Calgary; it’s a data-driven look at what weather factors have an impact on cycling volumes. Winter has enough of an effect on cycling that it makes sense to have a winter cycling event — I don’t think there’s a Spring Cycling Congress, for example — but it’s hard to say what of winter’s many elements (no pun intended) really has the impact on cycling.

We are lucky enough here in Calgary that the weather is less than perfectly correlated with the season — instead of winter being a constant -10°C and snowy, the high temperature can be +12°C like it was the weekend before last… or -25°C like it was yesterday. That means it’s easier to tease apart different weather factors, and to try to separate weather effects from seasonal effects.

The Data

I used some of the information in Micheal Jones’ Github page to help me pull the count data for two locations; the Peace Bridge on the north side of the downtown, and the 5th Street underpass on the south side. I got data from April 2014 through late November 2018; 1000 weekdays on the Peace Bridge and 750 on 5th Street (with a commensurate number of weekend days). I then linked it to the daily weather data from Environment Canada.

I then did a series of log-linear regression models; the methodology post has more gory details, but suffice it to say that it enables me to pull out what econometricians call elasticities for each component in the dataset. This just means the relationship between changes in the dependent (how much cycling happened) and independent (what the weather was like) parts of the data — for instance, if there’s an extra cm of snow on the ground, what is the percentage change we would see in cyclists independent of everything else.


Instead of looking at the full daily data, I pulled four segments out of the hourly count records; this means we can hopefully understand different types of cyclists. Three of the four segments are on weekdays, and the fourth is on weekends — holidays including the week between Christmas and New Year’s were excluded. Here’s the three weekend segments, as seen on an average September day:

Fig00 - Weekday

The “Peak” cyclists are only those travelling in the primary commuting direction in these hours; that is, into downtown between 7 and 9 AM, and out of downtown between 4 and 6 PM. Peak cyclists are primarily going to be commuting to and from work. “Midday” cyclists are those travelling in either direction between 11 AM and 3 PM. It’s hard to think of exactly who these cyclists are — couriers, errand running, some recreation, some commute. “Evening” cyclists are those travelling after 7 PM; these are going to be primarily leisure cyclists — both those where the leisure is cycling, and those going to and from other leisure activities, like restaurants and movies. And on weekends:

Fig00 - Weekend

The cyclists I pulled out for a “Weekend” segment are those travelling in the afternoon, from 1 PM to 7 PM. These are, like Evening cyclists, going to be largely leisure cyclists; I suspect relatively more of them are pure leisure — riding for the joy of it. (Note the two figures are shown without scales; in reality, the weekend peak is about half as high as the weekday peak.)

So now that we’ve met our segments, how does the weather affect them?



The first thing to look at is rain. Rainy conditions (ie days when any rain fell) had no direct effect on Peak and Midday cyclists, but had a reasonable reduction on both Evening and Weekend cyclists; all else being equal, on rainy days, expect to see about 15% less evening cyclists, and about 18% less weekend cyclists.

The amount it rained had a pretty similar effect on all four segments, though. This doesn’t seem like so much, until you realize this is per millimetre of rain. The combined effects are shown on the right, for a day with 4mm of rain, which is about average on a rainy day. (The median is about 2.5 mm.) In that case, the amount-of-rain effect is scaled up, and for Evening and Weekend, it stacks with the existence-of-rain effect. In this case, the combined effect would be about 10% reduction on Peak and Midday cyclists, and about 25% reduction on Evening and Weekend.



Snow is even more complicated, because snow has two different dimensions — the amount that falls, and the amount on the ground. You can have either on any day — days where there is snow on the ground but no more falling, as well as days where there is snow falling, but not accumulating (usually because a chinook has warmed the ground enough to melt it).

Weekend cyclists are the standout group here; they are much more sensitive to the effects of snow falling (both the existence of snow falling and the per-cm amount), but the parameter for any snow on the ground was not statistically significant. The other three groups are more generally similar, although peak cyclists are overall the least sensitive to snow. To help clarify how these interactions might work, I calcuated the combined effect for four “scenarios”:


The first one, with light falling snow and no accumulation, is pretty common — the ground is warm from the sun, so the little that falls melts. The impact is relatively small, 10-25%, with peak cyclists least impacted and weekend the most. Although it’s important to note that the y-axis is very different from the rain figure above; the typical rain day with 4mm of rain produced pretty similar effects to this light snow day.

The next one is closer to the average of snowy conditions, with 2 cm falling and a total of 5 cm on the ground; this produces a fairly even reduction of 40% across the segments. This is similar to the effect from the third scenario, which is 15 cm of snow on the ground, but no snow falling. This helps compare a 2 cm snowfall to an extra 10 cm of accumulation. A heavy day of snowfall — not a historically heavy day, of the kind that gets talked about for years later, but maybe the third heaviest day on a typical year — leads to reductions in cycling ranging from 50% on Peak and Midday to the 60 to 70% range for the more leisure-focused groups. But all of this is independent of temperature; pretty well by definition, snowy days are cold days.



To fit the effects of temperature, I picked 10 °C (close to the average annual high) as the reference point, with a nonlinear temperature function; specifically, there were different nonlinear temperature parameters in both the positive and negative range, so that the response to heat and response to cold could be broadly independent. Note that the daily maximum temperature was used; I tested all three daily measures provided by Environment Canada (max, min and mean daily temperature) and max was the strongest performer (e.g. in terms of r-squared) for three of the four segments. Mean was a little better for peak cyclists, but not by a lot, so for simplicity’s sake, I kept with the daily maximum.

Starting with the cold temperature response, weekend cyclists are very shy when it comes to temperature; even 5 degrees matters a lot. Peak cyclists are a lot hardier; they don’t really start to dip a lot until the daytime high is below -5°C. Evening and weekday cyclists are in the middle. The trends at the extremes (daytime highs below -15°C or so) should be taken with a grain of salt, because there aren’t a ton of observations (about 50) of those in the dataset.


Once we look at the highs, the same trends appear; the peak cyclists are the least sensitive to temperatures and weekend cyclists much more sensitive. If a location had 100 cyclists on a 20°C day in the Peak, this would suggest a 10°C day would have 70 cyclists and a 0°C day would have 56. On the other hand, if there were 100 cyclists on a 20°C day on the Weekend, there would be 37 at 10°C and only 13 at 0°C. This is pretty consistent with expectations; weekend cyclists are enjoying pleasant weather, peak cyclists are much more hardy. (“No such thing as bad weather; only bad clothing.”

As before, there aren’t a ton of observations on really warm days, so it’s hard to say to what degree the flattening of the curves at 25°C and above are actual (getting too hot is a thing) and to what degree they’re artifacts from not a lot of observations. Here’s the Peak figure, showing the uncertainty in the estimate:

Fig05b-Temp variance.png

The dark red line is the same as the one above; there’s a 2/3 chance the actual curve is between the solid pink lines, and a 95% chance it’s between the dotted lines.


Other effects


I looked at a number of other effects, and these are here as much to note the absence as presence of weather effects. The only daily measure of winds was maximum gust over 30 km/k, which was mildly important for the segments other than Peak, in particular for the leisure-focused Evening and Weekend. The impact is relatively minor; 50 km/h gusts only reducing cycling 5 to 15 percent. This is just as likely to be that the peak daily wind gust isn’t a great measure of windy conditions as it is that cyclists don’t care much about wind.

The daylight is also interesting; I tried a measure of the hours of daylight for all the segments where daylight was relevant (i.e. not the Midday). It didn’t have a significant effect on the Peak or Weekend segments; I suspect that Peak riders just get a light and carry on (the months where the sun sets before 6 PM are November to February, and whatever cyclists are still going in this time frame are already going to be the hardiest ones). Weekend cyclists have more flexibility to shift their hours; if it’s nice enough to ride but the sun sets at 5, you can leave at 4 to get an hour long ride in. Evening riders are by definition riding later in the day and don’t have the same flexibility.

Some parameters that didn’t make good visuals were:

  • Friday effects; on Fridays, there’s a 26% reduction in Peak and a 15% increase in Midday. This is presumably workers taking long weekends, or working half days (and coming home in the midday).
  • Peace Bridge construction: In 2018, there was a lot of construction in the Riverwalk area near the Peace Bridge, which produced detours and so on. There was a substantial reduction in Peace Bridge cycling; about 65% overall.
  • Growth effects: I put in a simple linear parameter to allow growth from year to year. Peak cyclist counts grew about 5.5% per year on both locations; the other three segments had no significant growth on the 5th Street location, but 8 to 11% growth on the Peace Bridge. Note that the 5th Street counter is part of the cycle track, so the counts only start from when the entire cycle track network was in place.

Monthly effects


So this is the final piece of the puzzle, and it’s complex. Basically, I wanted to see how much cyclists were responding to the actual weather on the day, and how much they were responding to the season – people may only think about weekend rides in June-August, for example. There were parameters for each month; the dots represent statistically significant parameters in the model.


If cyclists only responded to the weather, these would all be flat lines at 0%; instead, there’s stuff going on. The big trend is a drop in December (part of this could be people leaving town or taking holidays, although I excluded the week between Christmas and New Year’s), that lasts until March. I suspect this is a segment of cyclists putting their bikes away come winter weather, then taking them out again in the spring. You can see a similar effect in reverse in May to July, cyclists riding more than you would expect given the weather. This spike continues into September and October.

There seems to be a certain amount of inertia; a group of 8-month cyclists that take their bikes out in April or May and ride until October or November, putting their bikes away once the true winter weather comes.

There are some drops in the middle of summer, which I expect is more people heading on holidays and not being in Calgary; the weekend riders drop more in the fall as well — perhaps the people who would otherwise be weekend riders are early season skiiers?

In summary

So there’s a lot of stuff going on. The main trends are that Peak cyclists are the least weather impacted, with Weekend cyclists the most. This makes a ton of sense; commuters are hardiest. Specifically, snow affects everybody, while rain mostly impacts Evening and Weekend cyclists. Peak cyclists have the least temperature effect, while Weekend cyclists are the most affected.

This chart sort of provides a similar perspective:

Fig09 - summary


This sort of combines the main impacts, along with how common that weather actually is in Calgary. (Nightfall, and wind gusts don’t have enough of an impact to make this chart.)  Each of these rows independently would produce approximately a 40% reduction in cycling counts. For instance, if it rained 20 mm, I would expect a 40% reduction in Peak cycling; this is pretty unusual — maybe 4 times in a typical year (based on the 4 years I studied). On the other hand, if the daily high temperature was -10°C or lower, I’d also expect a 40% reduction in Peak cycling; this happens about 20 times a year. Big reductions are most likely due to cold, followed by falling snow; peak cyclists are the hardiest, weekend cyclists the most responsive to weather.


Final notes

I tested a number of models that didn’t make it to the Congress; much of what I found was not significant. Specifically, I looked at a number of lagged weather parameters over the previous day and previous week, to see if cyclists were responding to a recent string of bad weather. The only one that was significant was the number of freezing days (ie days with the high below 0°C) in the previous week; it was only significant for the peak segment, with a moderate effect, about a 5% reduction per day. I also looked at whether the temperature effect varied by different locations, and the Peace Bridge ridership was somewhat more sensitive to temperatures.


2 thoughts on “How weather affects cycling

  1. In the final chart, I assume the rainfall measurements should be in mm, not cm as currently displayed. 20cm of rainfall would be soggy indeed. 😉


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s