Introduction

In this analysis, I aimed to evaluate the performance of NFL kickers, specifically focusing on their success in making field goals. Utilizing data from the 2022 NFL Big Data Bowl, I filtered the plays to concentrate solely on field goals, allowing for a targeted analysis of top-performing kickers. This approach incorporates key metrics, such as average kick length for both successful and unsuccessful attempts, facilitating a comprehensive comparison of kicker efficiency.

Description of Project

The data set comprises various attributes related to NFL plays, players, and game statistics. I initially loaded the data using the fread function from the data.table package and performed a series of left joins to merge relevant data sets, resulting in a consolidated data frame. I specifically filtered the data to focus on field goal plays, computing average kick lengths for both successful and failed attempts. This allowed me to identify the top 10 kickers based on their average successful kick length. The analysis emphasizes the importance of kick length as a critical performance metric in assessing kicker capabilities.

Data Visualization

The visualizations produced in this report provide insight into the performance of the top NFL kickers. The first visualization presents a horizontal bar chart showcasing the average kick lengths for successful kicks among the top 10 kickers. This chart effectively highlights the kickers’ strengths, allowing for an easy comparison of their performance. The second visualization, a trellis chart, contrasts the average kick lengths for both successful and failed attempts, revealing the consistency and reliability of each kicker.

Among the evaluated kickers, Casey Toohill stands out as the best performer, with an impressive average successful kick length of 56.09 yards and no failed kicks. This exceptional performance underscores his effectiveness in critical game situations and establishes him as a reliable asset for his team. Notably, most of the top kickers in the analysis exhibited similar patterns of reliability, with many achieving high average successful kick lengths while maintaining minimal to no failed attempts. This trend emphasizes the importance of consistency in the performance of top kickers, showcasing their ability to execute successfully under pressure.

# Load required libraries
library(ggplot2)
library(data.table)
library(dplyr)
library(scales)
library(tidytext)
library(RColorBrewer)
library(kableExtra)
library(tidyr)

setwd("C:/Users/jason/Desktop/F24 Classes/IS470")

plays <- fread("Data/NFLBDB2022/plays.csv")
players <- fread("Data/NFLBDB2022/players.csv")
pff <- fread("Data/NFLBDB2022/pffScoutingData.csv")
games <- fread("Data/NFLBDB2022/games.csv")

file1 <- "Data/NFLBDB2022/tracking2020.csv"
df <- fread(file1)

m1 <- left_join(df, plays, by = c("gameId", "playId"))
m2 <- left_join(m1, players, by = c("nflId", "displayName"))
m3 <- left_join(m2, games, by = c("gameId"))
m4 <- left_join(m3,  pff, by =c("gameId","playId"))

rm(df)
rm(m1)
rm(m2)
rm(m3)

# Filter for Field Goal plays
Field_Goal <- m4 %>%
  filter(specialTeamsPlayType == "Field Goal")

# Calculate average yards for successful and failed kicks
kick_stats <- Field_Goal %>%
  mutate(success = ifelse(specialTeamsResult == "Kick Attempt Good", 1, 0)) %>%
  group_by(displayName) %>%
  summarise(
    avg_success_kick_length = mean(kickLength[success == 1], na.rm = TRUE),
    avg_failed_kick_length = mean(kickLength[success == 0], na.rm = TRUE)
  ) %>%
  arrange(desc(avg_success_kick_length)) # Sort by successful kick length


top_kickers_successful <- kick_stats %>%
  arrange(desc(avg_success_kick_length)) %>%
  slice(1:10)
kable(top_kickers_successful, format = "html", caption = "Top 10 NFL Kickers by Average Kick Lengths") %>%
  kable_styling(full_width = F, position = "center") %>%
  column_spec(1, bold = TRUE) %>%  # Bold the kicker names
  row_spec(0, bold = TRUE)  
Top 10 NFL Kickers by Average Kick Lengths
displayName avg_success_kick_length avg_failed_kick_length
Casey Toohill 56.09375 NaN
Solomon Thomas 56.00000 50.52381
Elandon Roberts 55.00000 NaN
Javelin Guidry 53.51200 NaN
Danny Johnson 53.00000 NaN
Tre’Vour Wallace-Simms 53.00000 NaN
Kenny Moore II 51.22047 48.00000
Sidney Jones 50.01429 NaN
Eli Ankou 50.00000 NaN
Jace Whittaker 50.00000 NaN

Visualization 1: A Horizontal Bar Chart That Shows the Top 10 NFL Kickers by Average Yards for Successful Kicks.

# Generate a color palette with enough colors for the top 10 kickers
color_palette <- brewer.pal(n = nrow(top_kickers_successful), name = "Set3")

# Visualization: Average Kick Length for Successful Kicks (Top 10 Kickers)
ggplot(top_kickers_successful, aes(x = reorder(displayName, avg_success_kick_length), y = avg_success_kick_length, fill = displayName)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = round(avg_success_kick_length, 1)), vjust = -0.3, size = 4, hjust = -0.1) +  # Adjusted vjust to ensure labels are visible
  coord_flip() +
  labs(title = "Top 10 NFL Kickers by Average Yards for Successful Kicks",
       x = "Kicker",
       y = "Average Yards for Successful Kicks") +
  scale_fill_manual(values = color_palette) +  # Use the color palette
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
        legend.title = element_blank(),  # Remove legend title for better appearance
        legend.position = "right",        # Place legend on the right
        legend.key.size = unit(0.5, "cm"))  # Adjust size of legend keys


Visualization 3: A Trellis Chart That Shows the Average Kick Lengths for Successful and Failed Kicks (Top 10 Kickers).

kick_stats_long <- top_kickers_successful %>%
  pivot_longer(cols = starts_with("avg_"), names_to = "kick_type", values_to = "avg_kick_length")

kick_stats_long$displayName <- factor(kick_stats_long$displayName, 
                                      levels = unique(kick_stats_long$displayName[order(kick_stats_long$avg_kick_length, 
                                                                                        decreasing = TRUE)]))
ggplot(kick_stats_long, aes(x = displayName, y = avg_kick_length, fill = kick_type)) +
  geom_bar(stat = "identity", position = position_dodge()) +
  geom_text(aes(label = round(avg_kick_length, 1)), 
            position = position_dodge(width = 0.9), 
            vjust = -0.3, size = 4, hjust = -0.1) + 
  facet_wrap(~ kick_type, scales = "free") +
  coord_flip() +
  labs(title = "Average Kick Lengths for Successful and Failed Kicks (Top 10 Kickers)",
       x = "Kicker",
       y = "Average Kick Length (yards)") +
  scale_fill_manual(values = c("avg_success_kick_length" = "blue", "avg_failed_kick_length" = "red")) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
        legend.title = element_blank(),
        legend.position = "right",
        legend.key.size = unit(0.5, "cm"))



Conclusion

Beyond merely identifying the best kicker, this project highlights the value of various performance metrics in evaluating kicker efficiency. By analyzing average kick lengths and success rates, we gain insight into the reliability and skill levels of different kickers. This type of analysis can inform coaching strategies, player development, and even team dynamics regarding special teams play.

Moreover, the project demonstrates the potential for deeper exploration of factors influencing kicker performance. For example, future analyses could incorporate variables such as weather conditions, kick distance, and game situations, providing a more nuanced understanding of the challenges kickers face during games. Analyzing these factors could reveal patterns that help teams make better decisions regarding roster selection and in-game strategies.

Exploring historical trends in kicker performance could uncover shifts in kicking styles or techniques over time, leading to a better appreciation of how the game has evolved. This could also pave the way for comparing current kickers with past legends of the game, creating engaging narratives for fans and analysts alike.

This project not only highlights Casey Toohill’s exceptional kicking ability but also sets the stage for future research that can enhance our understanding of what makes an effective kicker in the NFL. The insights derived from such analyses could significantly influence team performance and strategies in the highly competitive landscape of professional football.