Week 1 Recap
The first week of the NFL season was full of surprises. Beginning with a shocking Patriots defeat at the hands of resurgent Alex Smith and finishing up with the Saints struggling to put up points against the Vikings, not much played out as expected. Quarterback play, in particular, seemed especially suspect. A short list of high-profile passers who had statistically disappointing Week 1’s includes Cam Newton, Tom Brady, and Russell Wilson, who threw a combined two touchdowns and recorded only one win between them.
Certainly, some quarterbacks played about as we could expect, and still others had particularly good performances (we’re looking at you Sam Bradford and Alex Smith). But watching one slow game after another, I wanted to dig into the numbers and see if the data bore out what I was thinking - was Week 1 of the 2017 season a particularly bad week for quarterback play?
To build an appropriate dataset for this question, I turned to Pro Football Reference, which maintains a huge database of NFL statistics. I created a query which grabbed each passing performance recorded in Week 1 of an NFL season since 2007, and filtered by players registered as Quarterbacks (to cut out the odd Wide Receiver or Punter) and players attempting more than one pass attempt. Once the results came through, I dumped them into an Excel file and fired up RStudio to do my analysis.
Importing the Data
First, I imported my data set into RStudio and imported the Tidyverse and Lubridate packages.
library("tidyverse") library("lubridate") library(readxl) passing <- read_excel("YOUR_PATH/NFL Week 1 Passing Statistics 2007-2017.xlsx") View(passing)
Refining the Passing Dataframe
With all of the statistics now loaded into an R dataframe called “passing”, I did a little manipulation of the data set to create a column for “Year” and filter by quarterbacks attempting more than 10 passes.
passing <- mutate(passing, Year = lubridate::year(Date)) passing$Year <- as.factor(passing$Year) passing <- filter(passing, Att >= 10)
Grouping Statistics by Year
To analyze Week 1 quarterback performance as a whole from year to year across the league, I needed to condense each week into a single set of statistics. To do this, I used R’s “group_by” and “summarise” functions, which return
g_year <- passing %>% group_by(Year) %>% summarise(tds = sum(TD), ints = sum(Int), cmps = sum(Cmp), atts = sum(Att), yds = sum(Yds), count = n(), rating = mean(Rate, na.rm = TRUE), ya = mean(Yds_Att, na.rm = TRUE), aya = mean(Adj_Yds_Att, na.rm = TRUE)) View(g_year)
Plotting QB Performance Over Time
It’s interesting to see that the plots of each statistic are almost identical - Passer Rating has come under a lot of fire recently, but we see it returning similar results to Adjusted Yards per Attempt, a more modern passing statistic. In either case, it’s clear that this season’s Week 1 passing performance has taken a significant nosedive versus the average quarterback performance over the past six years. Indeed, 2017’s average passer rating of 86.09 has much more in common with the three year average from 2007-2009, where quarterbacks scored and average rating of 84.33.
So Should We Panic?
Long story short - I don’t think so. Some of the worst performances of the week were by quarterbacks filling in for injury, such as Scott Tolzien. Andrew Luck returning to the field and proven quarterbacks such as Cam Newton and Joe Flacco continuing to get healthier will nudge the numbers back upwards. Furthermore, it’s tough to read too much into disappointing games from Brees and Brady, who seem just as likely to throw for 4 touchdowns each next game as have a disappointing Week 2.
What we may see, however, is that the passing “boom” from 2011-2016 is slowing down as defenses adapt and the quarterbacks from that era begin to age of of the league. It wouldn’t shock me if offensive production returns to a level more on the order of the mid-2000s as opposed to the early-2010s. Indeed, the scatter plot shows that while passer rating may have been on the decline in Week 1 versus the past few years, it is still well within the standard band of production.
plot_rating_box <- ggplot(passing, aes(x = Year, y = Rate)) + geom_boxplot(fill = dodgerblue4, color = grey22, alpha = 0.7) + scale_x_discrete(name = "Year") + scale_y_continuous(name = "Passer Rating", breaks = seq(0, 175, 25), limits=c(0, 175)) + ggtitle("Boxplot of Mean Week 1 Passer Rating in the NFL (2017)") + theme_bw() plot_rating_box
All told, Week 1 did show some interesting signs that quarterback play across the NFL may be primed to slip this season. With that said, I’m still betting that play improves over the course of next week as injured quarterbacks heal up and proven commodities return to their career performance baselines. The lofty heights of 2011-2013, where Drew Brees and Peyton Manning dominated the league through the air may be gone, but today’s passers are still no joke - let’s hope they bounce back.