Pick routes, two stretches of weeks and a time of day. The tracker compares them, and, if you name a comparison group, nets out what happened to every other bus over the same weeks.
Only comparable weeks count: the collector caught every hour often enough, and the route ran on enough days. Each route is compared with itself, using only routes present in both periods, so a route that starts or stops running doesn’t move the average.
The link at the bottom of the result reproduces it exactly.
Change is the average of each route’s own change from period A to period B. A route’s value in a period is the mean of its comparable weeks there.
Against the comparison group subtracts the comparison group’s change over the same weeks. If every bus in the city sped up 0.2 mph because school let out, the chosen routes’ own 0.3 mph gain shrinks to 0.1 against the rest. This is the usual way to read a before-and-after on routes that got a treatment (a bus lane, free fares) when others did not.
The range is a 95% interval from how much routes differ from one another. It does not capture everything: events that hit both periods unevenly, a change in how the MTA reports positions, or a holiday week can all move a result. The event marks on the chart show the ones the tracker knows about.
Speeds are the tracker’s own estimates from GPS positions, not official MTA figures. The method is in the data dictionary on the main page.