Introduction

The NFL kicker, though often times the smallest player on the field, has one of the most influential, pressure packed jobs in the league. Despite their job being fairly straight forward, it can be difficult to assess talent at the position. A quality NFL kicker can shorten the field for teams if they can kick accurately from long distances. The following study analyzes each NFL kicker’s ability to accurately kick long field goals by assessing their average kick length and their field goals made percentage. The data and visualizations I put together effectively show which Kickers help to “shorten” the field for their teams.

Description of Project

I was able to create a data frame with data from four NFL data sets, games.csv, plays.csv, players.csv, and pffScoutingData.csv. In this data frame I was able to compile data pertaining to solely kickers and to get even more granular, field goals. I was able to place each individual kicker into their own container showing their their total number of kicks, total number of made kicks, their average made field goal distance and their field goals made percentage. The data I pulled from the four data sets allowed me to calculate what I deemed as the two most important statistics in determining a kicker’s effectiveness to “shrink” the field: average kick length and field goals made percentage.

Data Visualization

I created a scatter plot matrix placing kickers into tiers. The top right tier, tier 1, is the kickers with the greatest ability to consistently “shrink” the field with their ability to accurately and consistently hit longer field goals. The bottom right tier, tier 2, is full of kickers with high accuracy, but, perhaps due to other factors such as offensive efficiency, do not or are unfamiliar with taking longer field goals. Their reliability is solid, but their field goal max length would need to be taken into consideration before sending them out for longer attempts. The top left tier, tier 3 consists of kickers with greater power but less accuracy. They consistently hit longer field goals but miss far more often than those in tiers 1 and 2. The last tier in the bottom left, tier 4, are the kickers you want to stay away from. Sign them if your starter sustains an injury but adjust your game plan accordingly. They will likely have you sweating bullets with every kick attempt.

library(ggplot2)
library(data.table)
library(dplyr)
library(scales)
library(tidytext)
library(RColorBrewer)
library(kableExtra)
library(lubridate)
library(httr)
library(DescTools)

setwd("U:/")

my_df1 <- fread("Data/NFLBDB2022/plays.csv")
my_df2 <- fread("Data/NFLBDB2022/players.csv")
my_df3 <- fread("Data/NFLBDB2022/games.csv")
my_df4 <- fread("Data/NFLBDB2022/PFFScoutingData.csv")

df <- left_join(my_df1, my_df2, by = c("kickerId" = "nflId"))
df <- left_join(df,     my_df3, by = c("gameId"))
df <- left_join(df,     my_df4, by = c("gameId", "playId"))

rm(my_df1)
rm(my_df2)
rm(my_df3)
rm(my_df4)

total_kicks <- sum(df$specialTeamsPlayType == "Field Goal")
kicks_made <- sum(df$specialTeamsResult == "Kick Attempt Good")

# find and calculate field goals made
df1 <- df %>%
  
  select(displayName, specialTeamsPlayType, specialTeamsResult, kickLength) %>%
  
  filter(specialTeamsPlayType == "Field Goal", 
         !is.na(kickLength), 
         displayName != c("Jon Brown"),
         displayName != c("Johnny Hekker"),
         displayName != c("Elliott Fry"),
         displayName != c("Kaare Vedvik"),
         displayName != c("Taylor Russolino")) %>%
  
  arrange(displayName, kickLength) %>%
  
  group_by(displayName) %>%
  
  summarise(kicks_made = sum(specialTeamsResult == "Kick Attempt Good"),
            
            total_kicks = sum(specialTeamsPlayType == "Field Goal"),
            
            avg_kick_length = sum(kickLength) / total_kicks,
            
            fgm_rate = kicks_made / total_kicks) %>%
  
  filter(total_kicks >= mean(total_kicks)) %>%
  
  data.frame()

df1
##           displayName kicks_made total_kicks avg_kick_length  fgm_rate
## 1       Aldrick Rosas         45          52        36.21154 0.8653846
## 2     Brandon McManus         72          82        40.78049 0.8780488
## 3         Brett Maher         47          60        38.51667 0.7833333
## 4        Cairo Santos         41          50        37.48000 0.8200000
## 5       Chris Boswell         55          62        35.96774 0.8870968
## 6         Cody Parkey         44          53        37.45283 0.8301887
## 7          Dan Bailey         59          71        37.09859 0.8309859
## 8      Daniel Carlson         64          77        35.88312 0.8311688
## 9      Dustin Hopkins         73          85        39.07059 0.8588235
## 10      Greg Zuerlein         76          92        39.44565 0.8260870
## 11    Harrison Butker         77          84        35.91667 0.9166667
## 12       Jake Elliott         54          66        38.24242 0.8181818
## 13        Jason Myers         73          80        39.36250 0.9125000
## 14      Jason Sanders         71          83        39.13253 0.8554217
## 15          Joey Slye         42          53        40.58491 0.7924528
## 16         Josh Lambo         54          57        37.77193 0.9473684
## 17      Justin Tucker         87          92        37.96739 0.9456522
## 18   Ka'imi Fairbairn         81          96        38.01042 0.8437500
## 19       Mason Crosby         63          71        39.47887 0.8873239
## 20        Matt Prater         65          78        38.00000 0.8333333
## 21    Michael Badgley         49          61        38.49180 0.8032787
## 22      Randy Bullock         66          77        39.11688 0.8571429
## 23       Robbie Gould         66          77        36.94805 0.8571429
## 24        Ryan Succop         52          60        35.78333 0.8666667
## 25 Stephen Gostkowski         51          63        38.79365 0.8095238
## 26   Stephen Hauschka         43          54        39.77778 0.7962963
## 27           Wil Lutz         77          85        37.50588 0.9058824
## 28       Younghoe Koo         52          57        36.78947 0.9122807
## 29      Zane Gonzalez         50          62        38.25806 0.8064516

A scatter plot ranking kickers on their kick accuracy and power

# create a scatter plot
ggplot(data = df1, aes(x = fgm_rate, y = avg_kick_length)) +
  geom_point(size = 1) +
  geom_text(aes(label = displayName), vjust = -1) +
  labs(title = "Kickers in the NFL 2022", 
        x = "Field Goals Made %", 
        y = "Avg Kick Length" ) +
  geom_vline(xintercept = median(df1$fgm_rate)) + geom_hline(yintercept = median(df1$avg_kick_length)) +
  theme(plot.title = element_text(hjust = 0.50),
        axis.text.x = element_text(size = 12),
        axis.text.y = element_text(size = 15),
        axis.title = element_text(size = 18, face = "bold"))

Conclusion

There were a number of kickers who had remarkable seasons however a select few were of the upmost useful throughout the season. Kickers in tier 1 were the best at shrinking the field and thus the best at helping their offense score points. It is one thing to drive down into opponent territory, it is another thing to actually be able to capitalize off quality field position and his plot shows the kickers that were able to get that done.