Philadelphia Public Transit vs COVID-19

We’re well past a month into the COVID-19 shutdown, and I noticed that fewer and fewer trains were running on Regional Rail each day. I knew that SEPTA had decreased their service due to less riders, but I wondered just how strict the service cuts were. I also wondered if more or perhaps less trains were running on time.

Fortunately, I have several years worth of train data due to running, so I could answer these questions myself!

I started off by firing up Splunk Lab then went for a walk while it took 15 minutes or so to load the data up. I came back, and decided to see where we were:

“That’s one big Twinkie.”

That’s well north of 60 million data points. While I could crunch that data as-is, it would take longer for me to run my subsequent queries as well as look for trends in the data. I ended up writing a couple of scripts to summarize that data on a daily basis, so that I can get a bucketed breakdown of late trains for the entire day. We’ll get back to that bucketing later, because I first want to talk about train volumes.

I figured that with the perceived dropoff in service, I could look at how many distinct trains (identified by train number) each day. Sure enough, there was a drop off in train service levels:

“Symmetrical book stacking… just like the Philadelphia mass turbulence of 1947!”

Things started to get serious the week of Monday, March 16th. In fact, that was the last day of “normal” service on Regional Rail. Starting on Tuesday the 17th, the number of trains per weekday went from nearly 500 to about 362, with the weekends unaffected.

This continued until Sunday March 29th, when SEPTA announced that they were switching from “reduced service” (the meaning of which is unclear) to “Sunday service” of approximately 144 trains per day. This stayed largely consistent through Wednesday, April 8th.

On April 9th, service levels were reduced even further to what SEPTA called “lifeline service”, running approximately 85 trains per day. Going off of SEPTA’s COVID-19 announcement, 6 lines are completely suspended leaving only 7 lines running. That’s an average of 12 trains per DAY on each line, or trains over 1.5 hours apart. For commute lines, this is unheard of.

But what about late trains? Were they affected? In order to better understand the data, I wanted to group the trains by degrees of lateness. Based on my experience riding Regional Rail to work, I broke down late trains as follows:

  • Less than 5 minutes late – A train less than 5 minutes late isn’t going to ruin my day or cause any perceivable issues in my schedule.
  • 5 to 15 minutes late – A train that is running late to the point of being a serious annoyance. This is the level at which you’re texting your boss to tell them you’ll be late to the 9 AM meeting.
  • Over 15 minutes late – All bets are off and this particular train might as well have not ran at all, because you’re not getting where you need to go anytime soon.

So let’s see how that looks, with the percentage of trains over 5 minutes late overlaid:

“Listen… do you smell something?”

Ah, a trip down memory lane that was. Do y’all remember the summer of 2016 when a third of SEPTA’s trains had structural issues? Yeah, that sucked. How about the summer of 2018 when I goofed up and lost a couple of weeks of data? I hated that too.

I think I’d like to take a closer look at 2020 however, so let’s do that:

“It just occurred to me we really haven’t had a completely successful test of this equipment.”

Now we have a nice breakdown of train lateness by day which is easier to see without squinting and there’s one pattern I noticed right away: less trains are late on weekends. This makes sense, there are less trains running on weekends, and the percentage line also shows that a smaller percentage of those trains are late. My guess is that less trains means less congestion on the tracks, so a single train with a mechanical issue doesn’t cause other trains on the same line to become backed up.

But once the shutdown is underway, what’s going on with that lateness percentage? Is it actually going UP? Let’s see about a graph of just that value, with the highest and lowest values labeled:

“Why worry? Each of us is wearing an unlicensed nuclear accelerator on his back.”

Well, that’s interesting. The single BEST day all year in terms of percentage of train lateness is March 22nd, where only 17.53% of trains are over 5 minutes late. That was the first Sunday of the shutdown.

It actually looks like after the first week of the shutdown that things got worse, but is that really the case? To answer this, I decided to do both a 7 day moving average of the percentage of late trains along with a weekly average of late trains. Let’s see how that looks:

“Back off man, I’m a Scientist.”

Turns out that during the majority of the shutdown, things were… mostly okay in that the percentage of trains late wasn’t a major departure from what we’ve seen the rest of the year. The weekly graph also shows that yes, the week of March 16th was the best week so far of 2020.

But it’s that last week that worries me.

The last 7 days are easily SEPTA’s worst week of 2020 for Regional Rail, with over half of the trains being late. Since service levels are lower than than even a Sunday schedule, it’s clearly not due to volume of trains. Instead, I suspect something else: a lack of staff.

Turns out that delaying this blog post by a few days was all it took to confirm that–SEPTA has had 5 employee deaths, and over 200 employees have tested positive for COVID-19. This article states that a third of their workforce is out and that service for busses, trolleys, and the Norristown high speed line has moved from a fixed schedule to “headway-based”.

It is unclear to me if Regional Rail is also “headway-based”, but it certainly appears to be affected by staffing issues. Time will tell if this is just an “off” week or if lateness persists, but I am pessimistic.

I think this just goes to show how dangerous COVID-19 is, and the risk that SEPTA personal are putting themselves in every day they go to work.

Please, if your job function isn’t essential, stay home. If you won’t do it for me, then do it for SEPTA.

(Mirror on Medium)