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.
Table of Contents
Related Topics
Quick Actions