The State of NFL Defenses in 2020

As the old adage says, “Defense wins championships”. As we look back on a supremely nontraditional season, let’s recap what the most successful defenses were doing to stop NFL offensive attacks in the 2020 season.

For a look at the dataset used in this article, including summary statistics, please see the Appendix.

Total Yards Allowed & Win Percentage

NFLDefense2020 <- read_excel("NFLDefense2020.xlsx")

ggplot(NFLDefense2020, aes(x = reorder(Team, desc(TotYds)), y = TotYds, fill = WinPercent)) +
  geom_bar(stat = "identity", position = position_stack(reverse = TRUE)) +
  coord_flip() +
  theme_fivethirtyeight() +
  theme(axis.title = element_text()) +
  labs(title = "Total Yards Allowed & Win Percentage", x="", y = "Yards", fill = "Win Percentage", caption = "Source: Pro Football Reference") +
  theme(plot.title = element_text(hjust = 0.5)) +
  scale_fill_gradient(low = "red", high = "green", breaks =c(0.30,0.70), labels = c("30%", "70%")) +
  scale_y_continuous(breaks = c(0, 2000, 4000, 6000),
                     labels = c("0", "2,000", "4,000", "6,000"))


If there’s one thing your defense most certainly should not be doing, it’s giving up yardage to the opposing offense. We can see the best teams give up the least amount of yardage. The early 2021 NFC favorite Los Angeles Rams lead the league in fewest yards allowed to opposing offenses. Interestingly enough, the Tennessee Titans gave up over 6,000 yards of offense and still managed to pull off an 11-5 2020 regular season record. The Titans are the exception, rather than the rule.

On the opposite end, the Washington Football Team managed to allow the second-fewest amount of yards, but with a sputtering offense in the early half of the season, the team only managed a 7-9 record.

Total Points Allowed & Win Percentage

ggplot(NFLDefense2020, aes(x = reorder(Team, desc(PointsAgainst)), y = PointsAgainst, fill = WinPercent)) +
  geom_bar(stat = "identity", position = position_stack(reverse = TRUE)) +
  coord_flip() +
  theme_fivethirtyeight() +
  theme(axis.title = element_text()) +
  labs(title = "Total Points Allowed & Win Percentage", x="", y = "Points", fill = "Win Percentage", caption = "Source: Pro Football Reference") +
  theme(plot.title = element_text(hjust = 0.5)) +
  scale_fill_gradient(low = "red", high = "green", breaks =c(0.30,0.70), labels = c("30%", "70%"))


A similar trend emerges with total points allowed and win percentage. The Tennessee Titans and Washington Football Team remain outliers once again, as their defensive ability seems out of line with their overall record.

What’s especially noteworthy here is just how many points the Detroit Lions managed to concede to their opponents. The Lions are the only NFL defense to give up over 500 points to their opponents, and the fact they managed to win 5 games is impressive in this light. With a defense as porous as Detroit, it’s no wonder the organization is undergoing major structural changes.

Penalties, Penalty Yards, & Win Percentage

ggplot(NFLDefense2020, aes(x = reorder(Team, YdsbyPenalty), y = YdsbyPenalty, fill = WinPercent)) +
  geom_bar(stat = "identity", position = position_stack(reverse = TRUE)) +
  coord_flip() +
  theme_fivethirtyeight() +
  theme(axis.title = element_text()) +
  labs(title = "This One Is On The Defense", subtitle = "Penalties, Penalty Yards, & Win Percentage", x="", y = "Penalty Yards", fill = "Win Percentage", caption = "Source: Pro Football Reference") +
  theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5)) +
  scale_fill_gradient(low = "red", high = "green", breaks =c(0.30,0.70), labels = c("30%", "70%")) +
  geom_line(inherit.aes = FALSE, data=NFLDefense2020, 
            aes(x = Team, y = Pen*12, colour = "Penalties", group=1), size=2) +
  scale_color_manual(NULL, values="grey") +
  scale_y_continuous(breaks = c(0, 500, 1000),
                     labels = c("0", "500", "1,000"),
                     sec.axis = sec_axis(~./12, name = "Penalties"))


While defensive penalties are an easy way to surrender yardage to an opposing offense, the connection between defensive penalties and win percentage is not as obvious as it is with yardage or points. Despite their late season success and eventual Super Bowl win, the Tampa Bay Buccaneers were the second-highest penalized defense in the regular season. Also worth mentioning here are the 12-4 Pittsburgh Steelers, who managed to amass 980 defensive penalty yards, the third-highest in the league.

The Houston Texans achieved the fifth-fewest defensive penalty yards in the 2020 season, though the team only managed to win four games. The Texans may have displayed discipline by not forfeiting unnecessary yards to the opponent, but their lackluster offense prevented them from being a real divisional contender.

Yards Per Pass and Run Attempt, with Win Percentage

ggplot(NFLDefense2020, aes(x=PassYds/Att, y=RushYds/RushAtt, color=WinPercent)) +
  geom_point(shape=16, size=4) +
  geom_label_repel(aes(label = ifelse(PassYds/Att>7.8 | PassYds/Att<5.7 | RushYds/RushAtt<3.8 | RushYds/RushAtt>4.8,(Team),'')),
                   box.padding   = 1, 
                   point.padding = 0.3,
                   segment.color = 'grey50') +
  theme_fivethirtyeight() +
  theme(axis.title = element_text()) +
  labs(title = "One Play at a Time", subtitle = "Yards Per Pass and Run Attempt, with Win Percentage", x="Yards Per Pass Attempt", y = "Yards Per Run Attempt", color = "Win Percentage", caption = "Source: Pro Football Reference") +
  theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5)) +
  scale_color_gradient(low = "red", high = "green", breaks =c(0.30,0.70), labels = c("30%", "70%"))


Returning to yardage gained by traditional running and passing plays, we can see that many teams with a solid pass defense also have a solid run defense, and vice versa. Breaking down raw aggregate yardage conceded via running and passing into per-attempt metrics aids teams with subpar offenses who fail to retain possession of the ball and force their defenses onto the field for more drives per game.

However, noticeable trends in prior graphics continue to appear here, too. The Rams and Buccaneers are among the league leaders in allowing both the fewest running yards per attempt and the fewest passing yards per attempt. The running defense for the Buccaneers proved especially stout, yielding only 3.6 yards per rushing attempt.

Conversely, we can see teams like the Cowboys, Bengals, Texans, Jaguars, and Lions all concede significantly more yardage per rush attempt and per pass attempt than their competitors. All have losing records.

Yards After Catch Allowed & Missed Tackles

ggplot(NFLDefense2020, aes(x=MTkl, y=YAC, color=WinPercent)) +
  geom_point(shape=16, size=4) +
  geom_label_repel(aes(label = ifelse(YAC>2100 | MTkl>130 | MTkl<80 | YAC<1500,(Team),'')),
                   box.padding   = 1, 
                   point.padding = 0.3,
                   segment.color = 'grey50') +
  theme_fivethirtyeight() +
  labs(title = "Yards After Catch Allowed & Missed Tackles", x="Missed Tackles", y = "Yards After Catch Allowed", color = "Win Percentage", caption = "Source: Pro Football Reference") +
  theme(axis.title = element_text()) +
  theme(plot.title = element_text(hjust = 0.5)) +
  scale_color_gradient(low = "red", high = "green", breaks =c(0.30,0.70), labels = c("30%", "70%")) +
  scale_y_continuous(breaks = c(1500, 1750, 2000, 2250),
                     labels = c("1,500", "1,750", "2,000", "2,250"))


The distinction between strong and weak defenses continues when examining missed tackles and total yards after catch allowed. A casual observer of an NFL game can often see a cornerback missing a tackle and allowing a wide receiver to rack up a few dozen extra yards. The following graph supports this observation by showing a positive relationship between missed tackles and total yards after catch allowed.

Once again, we have the familiar Rams occupying a prominent position in the lower left quadrant of the graph, missing less than 80 tackles in the entire season. The Pittsburgh Steelers occupy an interesting place here, having only conceded a league-low 1,382 yards after catch on the season.

The Indianapolis Colts had the second-lowest amount of missed tackles in 2020, but had a middling amount of yards after catch allowed when compared with the rest of the league. In the previous graph, the Colts also had a top-three run defense, but a relatively middle-of-the-road passing defense.

The Baltimore Ravens are somewhat of an outlier, having missed the second-highest amount of tackles in the league (134). The team managed to hold opponents to an average amount of yards after the catch, though this number may have been lower if the Ravens missed fewer tackles overall.

Rounding out the teams allowing the most yards after catch and missing the most tackles are the Lions, Texans, Raiders, and Jets.

Win Percentage, Blitz Plays, & Pressures

ggplot(NFLDefense2020, aes(x = reorder(Team, WinPercent), y = WinPercent)) +
  geom_bar(stat = "identity", position = position_stack(reverse = TRUE), fill = "grey") +
  coord_flip() +
  theme_fivethirtyeight() +
  labs(title = "Win Percentage, Blitz Plays, & Pressures", subtitle = "Does More Blitz Equal More QB Pressure?", x="Win Percetnage", y = "", color = "", caption = "Source: Pro Football Reference") +
  theme(axis.title = element_text()) +
  theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5)) +
  geom_line(inherit.aes = TRUE, data=NFLDefense2020, 
            aes(x = Team, y = BltzPercent, colour = "% Blitz Plays", group=1), size=2) +
  geom_line(inherit.aes = TRUE, data=NFLDefense2020, 
            aes(x = Team, y = PrssPercent, colour = "% QB Pressures (Hurries, Knockdowns, & Sacks)", group=1), size=2) +
  scale_y_continuous(breaks = c(0, 0.25, 0.50, 0.75, 1),
                     labels = c("0%", "25%", "50%", "75%", "100%" ))


One of the most exciting defensive plays to watch in the sport is a blitz by the defense, where the defense rushes extra players forward to sack the quarterback at the expensive of additional players in pass coverage. It’s a risky strategy, but one that pays off in the form of a sack, where the quarterback is tackled for a loss behind the line of scrimmage, a hurry, where the quarterback releases the ball earlier than intended or is chased out of the passing pocket, or a knockdown, where the quarterback hits the ground after a throw. A play, regardless of whether it is a blitz or not, that results in a quarterback sack, a hurry, or a knockdown, is termed as “pressure” for the defense.

One might assume that teams who blitz with greater frequency pressure the quarterback on more occasions than their counterparts. This is partially correct for teams like the Pittsburgh Steelers and the Tampa Bay Buccaneers, but blitzing is not the only way for teams to pressure opposing quarterbacks. Teams like the Philadelphia Eagles actually pressure quarterbacks at a higher percentage than they blitz, which suggests their defensive line is talented enough to pressure the quarterback without the help of additional linebackers or cornerbacks blitzing. Teams like the Baltimore Ravens blitz with significant frequency, but only pressure the quarterback slightly more than average. Perhaps opposing offenses anticipate the blitz for the Ravens, and allocate more offensive linemen to stop it.

The success of blitzing in regard to pressure seems ambiguous at best, but one place where blitzing frequency definitely does not seem to have a positive effect on pressure is for the five worst football teams in the league: the Bengals, Texans, Falcons, Jets, and Jaguars. While these teams blitz at a high rate, the amount of pressure they are putting on the quarterback is lower than average when compared with their peers.

Scores, Turnovers, & Blitzes

ggplot(NFLDefense2020, aes(x=ScPercent, y=TOPercent, color=BltzPercent)) +
  geom_point(shape=16, size=4) +
  geom_label_repel(aes(label = ifelse(BltzPercent>0.35,(Team),'')),
              box.padding   = 1, 
              point.padding = 0.3,
              segment.color = 'grey50') +
  theme_fivethirtyeight() +
  theme(axis.title = element_text()) +
  labs(title = "Scores, Turnovers, & Blitzes", subtitle = "Percent of Drives Ending in Scores and Turnovers, with Percent of Blitz Plays", x="Allowed Offensive Score", y = "Forced Offensive Turnover", color = "Blitzing Plays", caption = "Source: Pro Football Reference") +
  theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5)) +
  scale_color_gradient(low = "yellow", high = "red", breaks =c(0.25,0.35), labels = c("25%", "35%")) +
  scale_y_continuous(breaks = c(5, 7.5, 10.0, 12.5, 15),
                     labels = c("5%", "7.5%", "10%", "12.5%", "15%")) +
  scale_x_continuous(breaks = c(30, 35, 40, 45, 50),
                     labels = c("30%", "35%", "40%", "45%", "50%"))


Why might a team like the Baltimore Ravens continue blitzing if it isn’t resulting in quarterback pressures? The answer may lie in a secondary effect of blitzing: turnovers. Either the quarterback or running back fumbles during the blitz, or the quarterback is forced to release the ball hastily into defensive coverage in the secondary, which could lead to an interception. We can see very blitz-heavy teams like the Ravens, Steelers, and Dolphins force turnovers at a higher rate than their peers. These teams also surrender points at a lower rate. While blitzing may not necessarily result in more quarterback pressure, it does seem to have a correlation with low score rate and high turnover rate.

There is one very important caveat here. Just because you might dial up blitzes more than your opponents, this doesn’t necessarily mean you will have more turnovers and less scores conceded than the rest of the league. If you don’t have the personnel and you still want to blitz heavily, you might end up more like the Texans or the Jets than the Steelers, Dolphins, or Ravens.

Final Thoughts

As we eagerly await the 2021 NFL season, we can take solace knowing that no two seasons are the same, and player, coaching, and schematic changes make each year as unpredictable as the last. Teams can be merely a player or two away from emerging as the next defensive powerhouse, altering the NFL statistical landscape significantly.

Appendix

Bibliography:

Sports Reference LLC. “2020 NFL Opposition & Defensive Statistics.” Pro-Football-Reference.com - Pro Football Statistics and History. https://www.pro-football-reference.com/. 2/14/2021

Summary of Dataset:

summary(NFLDefense2020)
##      Team             WinPercent     PointsAgainst       TotYds    
##  Length:32          Min.   :0.0630   Min.   :296.0   Min.   :4511  
##  Class :character   1st Qu.:0.3130   1st Qu.:356.5   1st Qu.:5336  
##  Mode  :character   Median :0.4690   Median :382.5   Median :5734  
##                     Mean   :0.5002   Mean   :396.6   Mean   :5745  
##                     3rd Qu.:0.6880   3rd Qu.:440.8   3rd Qu.:6207  
##                     Max.   :0.8750   Max.   :519.0   Max.   :6716  
##  OffensivePlays     Yards/Play      Takeaways      FumblesLost    
##  Min.   : 974.0   Min.   :4.600   Min.   : 9.00   Min.   : 4.000  
##  1st Qu.: 997.8   1st Qu.:5.300   1st Qu.:18.75   1st Qu.: 6.750  
##  Median :1024.0   Median :5.500   Median :22.00   Median : 8.000  
##  Mean   :1029.5   Mean   :5.572   Mean   :20.78   Mean   : 8.438  
##  3rd Qu.:1054.0   3rd Qu.:5.900   3rd Qu.:23.00   3rd Qu.:10.000  
##  Max.   :1112.0   Max.   :6.300   Max.   :29.00   Max.   :15.000  
##       1stD            Cmp             Att           PassYds         PassTD     
##  Min.   :280.0   Min.   :298.0   Min.   :494.0   Min.   :3051   Min.   :17.00  
##  1st Qu.:330.5   1st Qu.:342.5   1st Qu.:540.0   1st Qu.:3573   1st Qu.:22.75  
##  Median :349.0   Median :367.0   Median :557.0   Median :3807   Median :28.00  
##  Mean   :347.1   Mean   :367.4   Mean   :563.1   Mean   :3842   Mean   :27.22  
##  3rd Qu.:366.2   3rd Qu.:380.8   3rd Qu.:581.2   3rd Qu.:4113   3rd Qu.:30.25  
##  Max.   :415.0   Max.   :450.0   Max.   :674.0   Max.   :4697   Max.   :38.00  
##       Int        NetYards/Attempt    Pass1stD        RushAtt     
##  Min.   : 3.00   Min.   :5.100    Min.   :161.0   Min.   :358.0  
##  1st Qu.:10.00   1st Qu.:6.050    1st Qu.:186.8   1st Qu.:405.2  
##  Median :12.00   Median :6.400    Median :205.0   Median :429.0  
##  Mean   :12.34   Mean   :6.428    Mean   :204.6   Mean   :431.0  
##  3rd Qu.:15.00   3rd Qu.:6.900    3rd Qu.:215.0   3rd Qu.:449.5  
##  Max.   :18.00   Max.   :7.800    Max.   :253.0   Max.   :517.0  
##     RushYds         RushTD      RushY/Attempt      Rush1stD     
##  Min.   :1289   Min.   :10.00   Min.   :3.600   Min.   : 78.00  
##  1st Qu.:1765   1st Qu.:13.00   1st Qu.:4.100   1st Qu.: 97.75  
##  Median :1888   Median :16.00   Median :4.500   Median :113.00  
##  Mean   :1902   Mean   :16.62   Mean   :4.388   Mean   :111.28  
##  3rd Qu.:2030   3rd Qu.:19.25   3rd Qu.:4.600   3rd Qu.:120.50  
##  Max.   :2564   Max.   :27.00   Max.   :5.200   Max.   :145.00  
##       Pen          YdsbyPenalty        1stDPy        ScPercent    
##  Min.   : 64.00   Min.   : 517.0   Min.   :19.00   Min.   :27.90  
##  1st Qu.: 82.75   1st Qu.: 708.8   1st Qu.:25.75   1st Qu.:35.85  
##  Median : 89.50   Median : 757.5   Median :30.50   Median :39.95  
##  Mean   : 89.88   Mean   : 778.6   Mean   :31.22   Mean   :39.94  
##  3rd Qu.: 97.50   3rd Qu.: 846.0   3rd Qu.:37.00   3rd Qu.:44.60  
##  Max.   :112.00   Max.   :1036.0   Max.   :50.00   Max.   :50.30  
##    TOPercent          EXP              DADOT          AirYards   
##  Min.   : 5.40   Min.   :-283.04   Min.   :6.900   Min.   :1505  
##  1st Qu.: 9.85   1st Qu.:-149.04   1st Qu.:7.700   1st Qu.:2137  
##  Median :12.05   Median :-101.25   Median :8.100   Median :2337  
##  Mean   :11.44   Mean   :-103.69   Mean   :8.159   Mean   :2322  
##  3rd Qu.:13.03   3rd Qu.: -60.21   3rd Qu.:8.625   3rd Qu.:2506  
##  Max.   :15.60   Max.   :  85.89   Max.   :9.500   Max.   :2959  
##       YAC            Bltz        BltzPercent          Hrry      
##  Min.   :1382   Min.   : 98.0   Min.   :0.1630   Min.   :39.00  
##  1st Qu.:1733   1st Qu.:145.8   1st Qu.:0.2392   1st Qu.:49.00  
##  Median :1859   Median :180.5   Median :0.2985   Median :56.50  
##  Mean   :1865   Mean   :186.8   Mean   :0.2973   Mean   :58.56  
##  3rd Qu.:2053   3rd Qu.:226.2   3rd Qu.:0.3573   3rd Qu.:69.25  
##  Max.   :2282   Max.   :290.0   Max.   :0.4410   Max.   :79.00  
##   HrryPercent           QBKD        QBKDPercent            Sk       
##  Min.   :0.06700   Min.   :35.00   Min.   :0.06000   Min.   :17.00  
##  1st Qu.:0.08075   1st Qu.:46.50   1st Qu.:0.08700   1st Qu.:28.50  
##  Median :0.09250   Median :54.50   Median :0.09650   Median :36.50  
##  Mean   :0.09372   Mean   :54.09   Mean   :0.09613   Mean   :35.47  
##  3rd Qu.:0.10450   3rd Qu.:61.25   3rd Qu.:0.10700   3rd Qu.:42.75  
##  Max.   :0.14300   Max.   :80.00   Max.   :0.15200   Max.   :56.00  
##       Prss        PrssPercent          MTkl      
##  Min.   :105.0   Min.   :0.1750   Min.   : 68.0  
##  1st Qu.:135.8   1st Qu.:0.2185   1st Qu.: 95.5  
##  Median :146.5   Median :0.2350   Median :109.5  
##  Mean   :148.1   Mean   :0.2366   Mean   :107.3  
##  3rd Qu.:163.5   3rd Qu.:0.2590   3rd Qu.:120.2  
##  Max.   :213.0   Max.   :0.3510   Max.   :145.0