College Football Analytics Overview

Beginner 10 min read 0 views Nov 27, 2025
# College Football Analytics Overview ## Introduction College Football analytics has evolved significantly in recent years, with advanced metrics and data-driven insights becoming crucial for team evaluation, recruiting, and game strategy. This guide introduces the fundamental concepts and tools for CFB analytics. ## Key Data Sources ### cfbfastR A comprehensive R package for accessing college football data: - Play-by-play data - Team statistics - Player statistics - Recruiting data - Betting lines and predictions ### Available Metrics - **Efficiency Metrics**: Success rate, EPA (Expected Points Added) - **Explosive Plays**: Plays gaining 10+ yards (rush) or 15+ yards (pass) - **Line Metrics**: Stuff rate, opportunity rate, line yards - **Win Probability**: Live win probability throughout games ## R Implementation with cfbfastR ```r # Install and load cfbfastR install.packages("cfbfastR") library(cfbfastR) library(dplyr) library(ggplot2) # Load play-by-play data for 2023 season pbp_2023 <- cfbd_pbp_data( year = 2023, season_type = "regular", week = 1:14 ) # Calculate team offensive efficiency (EPA per play) team_offense <- pbp_2023 %>% filter(!is.na(EPA)) %>% group_by(offense_play) %>% summarise( plays = n(), epa_per_play = mean(EPA, na.rm = TRUE), success_rate = mean(epa_success, na.rm = TRUE), explosive_rate = mean(yards_gained >= 10, na.rm = TRUE) ) %>% arrange(desc(epa_per_play)) print(head(team_offense, 10)) # Visualize offensive efficiency ggplot(team_offense, aes(x = success_rate, y = epa_per_play)) + geom_point(aes(size = plays), alpha = 0.6, color = "darkblue") + geom_hline(yintercept = mean(team_offense$epa_per_play), linetype = "dashed", color = "red") + geom_vline(xintercept = mean(team_offense$success_rate), linetype = "dashed", color = "red") + labs( title = "CFB Offensive Efficiency - 2023 Season", x = "Success Rate", y = "EPA per Play", size = "Total Plays" ) + theme_minimal() ``` ## Python Implementation ```python import pandas as pd import numpy as np import requests import matplotlib.pyplot as plt import seaborn as sns # Access College Football Data API def get_cfb_team_stats(year, season_type='regular'): """ Fetch team statistics from CFB Data API """ url = f"https://api.collegefootballdata.com/stats/season" params = { 'year': year, 'seasonType': season_type } response = requests.get(url, params=params) return pd.DataFrame(response.json()) # Get 2023 team statistics team_stats = get_cfb_team_stats(2023) # Calculate key efficiency metrics team_stats['yards_per_play'] = ( team_stats['totalYards'] / team_stats['plays'] ) team_stats['points_per_play'] = ( team_stats['totalYards'] / team_stats['plays'] ) # Top offensive teams by yards per play top_offense = team_stats.nlargest(25, 'yards_per_play')[ ['team', 'yards_per_play', 'totalYards', 'plays'] ] print("Top 25 Offenses by Yards per Play:") print(top_offense) # Visualize offensive efficiency distribution plt.figure(figsize=(12, 6)) sns.histplot(team_stats['yards_per_play'], bins=30, kde=True) plt.axvline(team_stats['yards_per_play'].median(), color='red', linestyle='--', label='Median') plt.title('Distribution of Offensive Efficiency (Yards per Play) - 2023') plt.xlabel('Yards per Play') plt.ylabel('Number of Teams') plt.legend() plt.tight_layout() plt.show() ``` ## Key Concepts ### Expected Points Added (EPA) - Measures the value of each play in terms of expected points - Accounts for down, distance, and field position - Positive EPA = offense gains advantage, Negative = defense wins ### Success Rate - Percentage of plays that increase EPA - 50% or more yards on 1st down, 70% on 2nd down, 100% on 3rd/4th - Better predictor of future success than yards per play ### Explosive Plays - Rushing plays: 10+ yards - Passing plays: 15+ yards - Strong correlation with scoring and winning ## Practical Applications 1. **Opponent Scouting**: Identify strengths and weaknesses 2. **Play Calling**: Determine optimal strategies by down/distance 3. **Recruiting Evaluation**: Project player impact using analytics 4. **Game Planning**: Exploit opponent tendencies revealed by data ## Resources - [College Football Data API](https://collegefootballdata.com/) - [cfbfastR Documentation](https://cfbfastr.sportsdataverse.org/) - [ESPN College Football Analytics](https://www.espn.com/college-football/fpi)

Discussion

Have questions or feedback? Join our community discussion on Discord or GitHub Discussions.