[div align=\\\"center\\\"]
[/div]
[div align=\\\"center\\\"]How has passing evolved in the NSFL?[/div]
[div align=\\\"center\\\"]Using Unsupervised Machine Learning[/div]
So what a lot of people have noticed is that modern day quarterbacks in the NSFL do not throw for the ludicrous number of yards that they used to - the last 5000 yard season was in S14 by Micycle McCormick (casual humble brag hehe), and the last 4000 yard season was by Rose Jenkins in S20. Obviously, the change from 14 to 13 games played a difference, but even then there's a significant difference in yards per game.
Methodology
So what's going on? What changes happened in offensive game-planning, quarterback building, and defenses that caused this decrease in passing yardage? To answer this, I employed some simple machine learning techniques - Principal Component Analysis (PCA) and K-Means Clustering. I'll describe those as I get to them.
The first thing I did was load up my old project that scraped season statistics and attributes from the index (there's an easier way to do this, but I already had this built so screw it). From this dataframe, I eliminated all passers with less than 25 attempts, and then selected the passing statistics to use as my dimensions for analysis. This is where PCA comes in - what it essentially does is look for ways to reduce the number of dimensions you're studying in order to make it easier to find correlations and insight from the data. (You can read more about PCA here: https://towardsdatascience.com/a-one-stop-s...s-5582fb7e0a9c) I end up working with two principal components, which you can see plotted here:
[div align=\\\"center\\\"]
[/div]
Okay, cool. We have every qualified passing season plotted against two unknown components. What do we do now? Well, there is a process called K-Means clustering that will group the objects on this plot into clusters with similar properties. It is a method of unsupervised machine learning - where the machine is given data and expected to form it's own insights, unaided by human-provided answers. (You can read more about K-means clustering here: https://towardsdatascience.com/k-means-clus...s-aa03e644b48a) It's definitely a simple method to gain insights, but considering all I want out of this is to see how offensive gameplans have evolved, dividing these passing offenses into classes is probably a smart move.
Anyways, I decided to use 5 clusters, which can be seen here:
[div align=\\\"center\\\"]
[/div]
Analysis
Let's try to gain some insights from these classes. Here is a table of average statistics for each class:
[div align=\\\"center\\\"]
[/div]
Looking at the averages, we can start to come to some conclusions.
[div align=\\\"center\\\"]
[/div]
This fits exactly with our interpretation! We can see here that the clustering did a pretty good job at separating QBs by these two metrics, although obviously our PCA takes into account other statistics as well. Also, yes, I checked if the 13 vs 14 games made a difference and it did not.
Revisiting our example QBs - it sure seems like the Air-Raid QBs are from the distant past and the Game Managers are more recent. What's going on there? Let's take a look at the evolution of these classes and their prominence in the league:
[div align=\\\"center\\\"]
[/div]
The hunch from the beginning of this article appears to be true - Air Raid QBs are the prominent class from S5 through around S15, where they very quickly get pushed aside for the Game Manager class.
So what happened? Obviously the biggest factor might be the /r/NFL recruitment classes starting in S15 - filling in a lot of positions of need in the league. But did it truly effect the quality of players at different positions? Let's look at the overalls of players, starting with the QBs:
[div align=\\\"center\\\"]
[/div]
I think this image makes it pretty clear the quality of QB has not changed significantly since S6. These are always going to be your max-earning users, and so it's unsurprising that teams are trotting out 100 overalls regularly. Perhaps the difference comes at other offensive positions? How are the wide receivers doing?
[div align=\\\"center\\\"]
[/div]
Despite the common belief that the quality of WRs has decreased recently, it appears that on the whole they are consistent or even slightly improving over the previous air-raid era. Let's take a quick look at their running counterparts:
[div align=\\\"center\\\"]
[/div]
Running backs have seen substantial improvement in the two most recent seasons, though outside of that they've been relatively constant.
Quarterbacks obviously have to go up against defensive backs when throwing the ball. Is the difference there?
[div align=\\\"center\\\"]
[/div]
Here is where I think we see the most significant changes. In S17, right as the S15 recruitment class is gaining steam, we see a huge spike in DB overalls across the board, higher than any point in league history. This increase in DB quality is most likely a key factor in the substantial decrease in passing yardage - with the emphasis on high earning RBs being a lagging indicator of this switch in offensive philosophy. The front sevens of teams also showed slight improvement, but nothing significant enough to warrant showing their graphs here. (You can see them in my Jupyter notebook, which I will link at the bottom!)
Conclusions
I think there's a few things we can conclude from this study. First of all, the big /r/NFL recruitment of S15 (and the following ones and other major recruitments) have significantly changed the dynamics of the league. Having such large classes allowed teams to find high earning players at defensive positions, something that was much harder to come by in the Air Raid era. This was most notable at the DB positions, with lots of high earning CBs and Safeties appearing after the S15 recruitment. We also see a much more recent improvement in running backs as teams start to prioritize the running game to power their offense.
An interesting tidbit that many might not know is that the head of the snake is catching up to the tail here - many teams began to run 3-4 schemes regularly in their defensive strategy this season in response to the higher priority placed on running the ball. A lot of this might be due to there just being such a surplus of players now, but will we see GMs start to look for extra linebackers over DBs? Will this open up a new Air Raid era? Will there even ever be another Air Raid era? Only time will tell.
You can view the Jupyter notebook I used to code and generate these plots here: https://github.com/infinitempg/play_by_play...r/passing.ipynb
There's some things there that I didn't include in this article, such as the OVR progression of Front Seven players as well as the classifications of all the quarterbacks in my database.
This was a fun little activity for myself as I try to learn some machine learning techniques. I'll probably be back with more of these at some point in the future!
![[Image: PSTQtb3.png]](https://i.imgur.com/PSTQtb3.png)
[div align=\\\"center\\\"]How has passing evolved in the NSFL?[/div]
[div align=\\\"center\\\"]Using Unsupervised Machine Learning[/div]
So what a lot of people have noticed is that modern day quarterbacks in the NSFL do not throw for the ludicrous number of yards that they used to - the last 5000 yard season was in S14 by Micycle McCormick (casual humble brag hehe), and the last 4000 yard season was by Rose Jenkins in S20. Obviously, the change from 14 to 13 games played a difference, but even then there's a significant difference in yards per game.
Methodology
So what's going on? What changes happened in offensive game-planning, quarterback building, and defenses that caused this decrease in passing yardage? To answer this, I employed some simple machine learning techniques - Principal Component Analysis (PCA) and K-Means Clustering. I'll describe those as I get to them.
The first thing I did was load up my old project that scraped season statistics and attributes from the index (there's an easier way to do this, but I already had this built so screw it). From this dataframe, I eliminated all passers with less than 25 attempts, and then selected the passing statistics to use as my dimensions for analysis. This is where PCA comes in - what it essentially does is look for ways to reduce the number of dimensions you're studying in order to make it easier to find correlations and insight from the data. (You can read more about PCA here: https://towardsdatascience.com/a-one-stop-s...s-5582fb7e0a9c) I end up working with two principal components, which you can see plotted here:
[div align=\\\"center\\\"]
![[Image: PCA_init.png]](https://raw.githubusercontent.com/infinitempg/play_by_play/master/passing/PCA_init.png)
Okay, cool. We have every qualified passing season plotted against two unknown components. What do we do now? Well, there is a process called K-Means clustering that will group the objects on this plot into clusters with similar properties. It is a method of unsupervised machine learning - where the machine is given data and expected to form it's own insights, unaided by human-provided answers. (You can read more about K-means clustering here: https://towardsdatascience.com/k-means-clus...s-aa03e644b48a) It's definitely a simple method to gain insights, but considering all I want out of this is to see how offensive gameplans have evolved, dividing these passing offenses into classes is probably a smart move.
Anyways, I decided to use 5 clusters, which can be seen here:
[div align=\\\"center\\\"]
![[Image: clusters.png]](https://raw.githubusercontent.com/infinitempg/play_by_play/master/passing/clusters.png)
Analysis
Let's try to gain some insights from these classes. Here is a table of average statistics for each class:
[div align=\\\"center\\\"]
![[Image: table2.jpg]](https://raw.githubusercontent.com/infinitempg/play_by_play/master/passing/table2.jpg)
Looking at the averages, we can start to come to some conclusions.
- Class 0 seems to be the cream of the crop QB in terms of rating and passing yards. Averaging a 33-12 TD-INT ratio and over 4500 passing yards, this is truly an Air Raid QB. Good examples of this class are Mike Boss (7 times), Avon Blocksdale (6 times), and Borkus Maximus III (5 times).
- Class 2 is not far behind Class 0 in rating. They average significantly fewer yards but seem to be good at protecting the ball and not throwing interceptions. We can call them Game Manager QBs. Good examples of this class are Stan Francisco (6 times), Joliet Christ (6 times), and Wolfie McDummy (5 times).
- Class 3 is slightly behind Class 2 in rating, but throw for significantly more yards, as well as more TDs and INTs. I think it's fair to call them Gunslinger QBs. Good examples of this class are Matt Akselsen (4 times), Chris Orosz (4 times), and Easton Cole (4 times).
- Class 1 fall significantly behind the other 3 classes, with an average rating of 63.5. They throw for significantly less yards and touchdowns, and many more interceptions. These are Sub-Par QBs. Examples of this class include the GOAT Nick Pierno (4 times) as well as Dan Wright (3 times) - though it is worth mentioning Wright's two most recent seasons place him in the Game Manager class.
- Class 4 have similar ratings to Class 1, but lag significantly behind in terms of bulk statistics. These are Tank Commanders or Replacement QBs. Examples of this include Zach Vega (1 time) and Franky LaFleur (1 time).
[div align=\\\"center\\\"]
![[Image: Yards_vs_Rating_stat.png]](https://raw.githubusercontent.com/infinitempg/play_by_play/master/passing/Yards_vs_Rating_stat.png)
This fits exactly with our interpretation! We can see here that the clustering did a pretty good job at separating QBs by these two metrics, although obviously our PCA takes into account other statistics as well. Also, yes, I checked if the 13 vs 14 games made a difference and it did not.
Revisiting our example QBs - it sure seems like the Air-Raid QBs are from the distant past and the Game Managers are more recent. What's going on there? Let's take a look at the evolution of these classes and their prominence in the league:
[div align=\\\"center\\\"]
![[Image: season.png]](https://raw.githubusercontent.com/infinitempg/play_by_play/master/passing/season.png)
The hunch from the beginning of this article appears to be true - Air Raid QBs are the prominent class from S5 through around S15, where they very quickly get pushed aside for the Game Manager class.
So what happened? Obviously the biggest factor might be the /r/NFL recruitment classes starting in S15 - filling in a lot of positions of need in the league. But did it truly effect the quality of players at different positions? Let's look at the overalls of players, starting with the QBs:
[div align=\\\"center\\\"]
![[Image: QBs.png]](https://raw.githubusercontent.com/infinitempg/play_by_play/master/passing/QBs.png)
I think this image makes it pretty clear the quality of QB has not changed significantly since S6. These are always going to be your max-earning users, and so it's unsurprising that teams are trotting out 100 overalls regularly. Perhaps the difference comes at other offensive positions? How are the wide receivers doing?
[div align=\\\"center\\\"]
![[Image: WRs.png]](https://raw.githubusercontent.com/infinitempg/play_by_play/master/passing/WRs.png)
Despite the common belief that the quality of WRs has decreased recently, it appears that on the whole they are consistent or even slightly improving over the previous air-raid era. Let's take a quick look at their running counterparts:
[div align=\\\"center\\\"]
![[Image: RBs.png]](https://raw.githubusercontent.com/infinitempg/play_by_play/master/passing/RBs.png)
Running backs have seen substantial improvement in the two most recent seasons, though outside of that they've been relatively constant.
Quarterbacks obviously have to go up against defensive backs when throwing the ball. Is the difference there?
[div align=\\\"center\\\"]
![[Image: DBs.png]](https://raw.githubusercontent.com/infinitempg/play_by_play/master/passing/DBs.png)
Here is where I think we see the most significant changes. In S17, right as the S15 recruitment class is gaining steam, we see a huge spike in DB overalls across the board, higher than any point in league history. This increase in DB quality is most likely a key factor in the substantial decrease in passing yardage - with the emphasis on high earning RBs being a lagging indicator of this switch in offensive philosophy. The front sevens of teams also showed slight improvement, but nothing significant enough to warrant showing their graphs here. (You can see them in my Jupyter notebook, which I will link at the bottom!)
Conclusions
I think there's a few things we can conclude from this study. First of all, the big /r/NFL recruitment of S15 (and the following ones and other major recruitments) have significantly changed the dynamics of the league. Having such large classes allowed teams to find high earning players at defensive positions, something that was much harder to come by in the Air Raid era. This was most notable at the DB positions, with lots of high earning CBs and Safeties appearing after the S15 recruitment. We also see a much more recent improvement in running backs as teams start to prioritize the running game to power their offense.
An interesting tidbit that many might not know is that the head of the snake is catching up to the tail here - many teams began to run 3-4 schemes regularly in their defensive strategy this season in response to the higher priority placed on running the ball. A lot of this might be due to there just being such a surplus of players now, but will we see GMs start to look for extra linebackers over DBs? Will this open up a new Air Raid era? Will there even ever be another Air Raid era? Only time will tell.
You can view the Jupyter notebook I used to code and generate these plots here: https://github.com/infinitempg/play_by_play...r/passing.ipynb
There's some things there that I didn't include in this article, such as the OVR progression of Front Seven players as well as the classifications of all the quarterbacks in my database.
This was a fun little activity for myself as I try to learn some machine learning techniques. I'll probably be back with more of these at some point in the future!
Code:
1421 words
![[Image: 55457_s.gif]](https://signavatar.com/55457_s.gif)