Airline Delays and Cancellations in January 2016
Contributed by Michael Winfield He is currently in the NYC Data Science Academy 12 week full time Data Science Bootcamp program taking place between April 11th to July 1st, 2016. This post is based on his first class project - R visualization (due on the 2nd week of the program).
Why the Bureau of Transportation Statistics' On-Time Performance Database?
Honestly, I like vehicles. Trains, boats, tanks, helicopters, cars, airplanes, space shuttles. Any man-made mode of transport that moves quickly and possibly explodes is cool to me!
I initially downloaded only a month of data from the Bureau of Transportation Statistics' on-time performance database, thinking that I would discover how it worked, find interesting patterns, and then download a few more months, perhaps even several years, to visualize the same patterns using the same code. (For example, 'There are fewer flights at the end of the month than at the start of the month; this is true for every month in the past three years of data.') I had a vague notion that there might be some way to evaluate the comparative efficiency of different airlines, but no sophisticated plan as to how to visualize such data, or even a justified belief that the data supporting such an analysis would be present in the database.
Cleaning The Data
Luckily for me, this dataset was very clean, with well defined variables. Other than converting the airline identification numbers from integers to factors, to make using ggplot to visualize my findings easier, I had minimal problems cleaning this dataset.
Bear in mind that although this data only covered January 1st to Janury 31st in 2016, it encompassed 3.7 million unique airport ids, 12 unique airline ids, and 31 factors - one factor representing each date (3.7 million x 12 x 31 = 1,376,400,000!). I had to figure out how to compress the data that I was analyzing.
My Initial Questions
Initially, I wondered whether departure delays and arrival delays were associated, just upon visual inspection. While this may seem like an easy question to answer, the problem in this data set is that early flights are all coded as zeros.
I moved on to cancellations, reasoning that there might be an interesting pattern involving flight dates and flight cancellations per total flights. I discovered that there had been a blizzard that started on January 21st, spiked on January 23rd, and abated by the 26th of January - and this was mirrored in the flight cancellations data.
Once I had this unique event - a blizzard! - I decided to explore whether this pattern held for three large airlines - Southwest Airlines (19393), American Airlines (19805), and Delta Airlines (19790).
Given that all three large airlines experienced the same spike of flight cancellations during the blizzard days, I wondered if this 'blizzard pattern' held for smaller, regional airlines (presumably with a lower volume of flights and perhaps a different range of destinations). The pattern is more severe for the larger airlines than the smaller ones - Alaska Airlines (19930) and Hawaiian Airlines (19690) - with Alaska Airlines having a relative spike on the blizzard days.
Moving on to Geography:
Honestly, at this point, I suspected that I was cheating. It's kind of obvious that airlines cancel flights during blizzards and even more obvious that Hawaiian Airlines and Alaskan Airlines fly fewer flights than Delta, Southwest, and American Airlines. But what about that relative spike in Alaska Airlines' ratio visualization? It made me wonder whether Alaskan Airlines was in fact flying planes in the same regions as the larger airlines during the blizzard, so I decided to subset the database using the dplyr package in R and investigate those geographic flight patterns during the blizzard days.
The larger airlines are flying the highest proportion of their flights out of blizzard states (Texas, Georgia, Florida, etc.) during the blizzard days, if one excludes California.
The smaller, regional airlines are simply flying out of other states that are unaffected by the blizzard - but a sizable proportion of their flights are flying out of California as well.
After confirming that most of the flight cancellations were in blizzard states during the blizzard days (not shown here), I wondered whether the highest departure delay totals were in the same states. While it might seem intuitive that there will be delays in flights leaving airports hammered by a blizzard and cancellations of flights heading from blizzard states, to me it was not so obvious. It could have been the case that airlines cancel flights precisely because they want to avoid delaying flights for a long period of time - the delayed flights and cancelled flights might have been in different locations.
What's Going On With California?
As it turned out, the states with the worst departure delay times during the blizzard were also blizzard states (Texas, Georgia, Florida, etc.), except for California. California is the worst, according to this visualization.
But I still felt like I was cheating. So what? that flights on the ground in California are delayed longer during a blizzard that isn't affecting the state of California? I next thought, 'Perhaps some of those flights are headed to states affected by the blizzard, and that's why they're so delayed. If I really want to know if arrival delays and departure delays are associated, perhaps I should take a look at where those flights leaving California late landed as destinations and whether they arrived late!'
Within the subset of flights that left California during the blizzard days, the destination states where those flights arrived late in the greatest proportion were all states that experienced some of the highest snowfall measurements during the blizzard (https://en.wikipedia.org/wiki/January_2016_United_States_blizzard). The state with the highest total arrival delay time per total flights inbound from California during the blizzard was Kentucky.