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.
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.
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
# 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"))
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.