Show bunching & gapping
Bunching is when headways are much less than the average/intended (say <0.75x intended headway). Gapping is when headways are much more than the average/intended (say >1.5x intended headway). Show that in the UI somewhere, and slice & dice it by:
- time of day
- day of week
- week of year
- stop
This is probably easier to implement than on-time percentages.
Now unblocked by #481, with one of the long term goals being replacing the "long wait %" with some simple or complicated combination of bunching/gapping stats and on-time performance.
The immediate next step is make some of the new stats visible on the "stop to stop" page, either on the summary cards and/or on their own tab(s), and then look at updating stop to stop scoring.
The dashboard stat SFMTA uses for bunching and gapping is defined here:
https://www.sfmta.com/reports/percentage-transit-trips-bunching-or-gaps
Basically it is the percentage of arrivals that are bunched or gapped, where a bunch is less than 2 minutes apart (or 1 minute for scheduled headways of 5 min or less), and a gap is an arrival 5 minutes later than scheduled.
On-time performance is defined here:
https://www.sfmta.com/reports/muni-time-performance
It is the number of on-time arrivals divided by the total number of departures. It is usually shown as a stacked bar chart (on time, early, late), and as a time series of stacked bars.
The GraphQL API provides the headwayScheduleDeltas field, which contains metrics for the difference between the actual headway and the scheduled headway (in minutes). It would be interesting to see a histogram of these values, as well as the percentage of headways where the difference from the scheduled headway exceeds a certain threshold.