Dear Chargers, Please stop throwing... or maybe I should say rushing away first downs and let Justin Herbert bring honor to the Pac-12.

By Laura Stickells | October 22, 2020


Justin Herbert was sensational in his first four NFL starts.

The No. 6 pick out of Oregon is currently the favorite to win Rookie of the Year, just ahead of Joe Burrow. He ranks third in the league in Completion Percentage Above Expectation at 5.9 behind only Russell Wilson and Derek Carr. (That means based on information including where receivers, defenders and pass rushers were at the time of the throw, he shouldn’t have been able to make 5.9% of the passes that he did.) And he ranks seventh in DVOA (Defense-adjusted Value Over Average) with 23.7%.

As a former Pac-12 Networks employee and student athlete of the conference, it’s nice to see Pac-12 alums succeed in the NFL. I think it reminds some people that yes, there is a fifth Power 5 Conference. And now that I’ve placed the weight of the Pac-12 on Herbert’s shoulders, let's continue.

Despite Herbert making some electric third-down conversions, the Chargers are 1-4 heading into Sunday’s game against Jacksonville. Herbert is winless. In their last game against New Orleans the Chargers blew a 20-3 lead.

The Chargers have the worst first down success rate in the league and the second worst first down EPA. The dashed line is the league average.

On second downs the Chargers are significantly better with an above average success rate and a close to average EPA. The dashed line is the league average.
The Chargers are one of the NFL's best third down teams. The dashed line is the league average.

The Chargers are awful on first down. They’re the second worst team in the league in first down expected points added (EPA) with -0.23 and worst in the league in success percentage, finishing with a positive EPA on only 31% of first downs. That means on 69% of their plays they’re basically handing away points. They’ve been rushing on first down 59% of the time – the fourth highest percentage in the league — despite the fact it’s been proven time and time again not to be an effective strategy for most offenses. This offense is not an exception.

Since week two, when Herbert stepped in for Tyrod Taylor, the Chargers’ go-to play on first and long (8-10 yards) has been a handoff to rookie Josh Kelley. They’ve gone to this on 25 first and longs but have only seen a success rate of 32% — that’s 11 percentage points below the league’s average.

But there’s hope! The Chargers’ most reliable play on first down this season is a pass to tight end Hunter Henry with a success rate of 50%. It’s a significantly better option but they’ve only utilized it 10 times. Maybe they should change that!

On second downs, the Chargers are significantly better. They rank 16th in second down EPA with 0.08 (love seeing that positive number) and 11th with a 48% second down success rate. Uncoincidentally, the plays Shane Steichen calls most frequently are also the plays the team is best at in second down situations. On second and long with Herbert at quarterback, their two most frequent plays are passes to Keenan Allen and Hunter Henry for a respective 60% and 80% success rate. Those are excellent numbers.

On third downs, they also rank highly – sixth with a .36 EPA and sixth with 53% success. And while it’s been thrilling watching Herbert ball out on third downs, it shouldn’t always have to come to that.

That’s all for my first blog. If you’ve made it this far thank you for reading and send along some constructive criticism!

And if you're curious, here is the R script I used for calculating and graphing team first down success. It's also in my github.

Down_Success_By_Team <- pbp20 %>%
  filter(rush == 1 | pass == 1, down == 3, !is.na(epa)) %>%
  select(down, desc, pass, qb_scramble, air_epa, sack, success, yards_gained, epa, posteam, incomplete_pass, air_epa, comp_air_epa, week, qtr) %>%
  group_by(posteam) %>%
  summarize(
    epa = mean(epa),
    avg_yards = mean(yards_gained),
    avg_success = mean(success),
    n_plays = n(),
    pct_pass = (mean(pass)-mean(qb_scramble)-mean(sack))
  ) %>%
  ungroup()

Down_Success_By_Team <- Down_Success_By_Team %>%
  left_join(teams_colors_logos, by = c('posteam' = 'team_abbr'))

asp_ratio <- 1.618

ggplot(Down_Success_By_Team, aes(x= avg_success, y=epa)) +
  geom_image(aes(image = team_logo_wikipedia), size = 0.035, by = "width", asp = asp_ratio) +
  scale_fill_identity(aesthetics = c("fill", "colour")) +
  theme_fivethirtyeight() +
  theme(
    axis.title = element_text(),
    aspect.ratio = 1/asp_ratio
  ) +
  geom_hline(yintercept = mean(Down_Success_By_Team$epa), color = "red", linetype = "dashed") +
  geom_vline(xintercept =  mean(Down_Success_By_Team$avg_success), color = "red", linetype = "dashed") +
  labs(
    x = "x axis",
    y = "y axis",
    title = "title",
    subtitle = "subtitle",
    caption = "Data: @nflfastR | Plot: @LauraStickells"
  )