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.
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.
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.
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.
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.
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.
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.
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.
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.
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