Chapter 23: Further Reading - Network Analysis in Football
Academic Papers
Network Science in Sports
-
"Passing Networks in Soccer" - Pena & Touchette - Foundation of sports network analysis - Centrality metrics interpretation - Team structure comparison
-
"Network Analysis of Basketball" - Clemente et al. - Multi-sport methodology - Temporal network analysis - Performance correlation
-
"Social Network Analysis in Sports" - Lusher et al. - Theoretical foundations - Team dynamics modeling - Communication networks
Football-Specific Research
-
"NFL Coaching Trees and Success" - MIT Sloan - Coaching network analysis - Success propagation - Hiring pattern prediction
-
"Recruiting Networks in College Football" - Journal of Sports Economics - Geographic patterns - Pipeline identification - Competitive analysis
Books
Network Science
-
"Network Science" - Albert-László Barabási - Comprehensive introduction - Free online: http://networksciencebook.com/ - Theory and applications
-
"Networks: An Introduction" - Mark Newman - Mathematical foundations - Algorithm details - Real-world examples
-
"Social Network Analysis" - Wasserman & Faust - Classic reference - Method details - Statistical approaches
Sports Analytics
-
"The Book: Playing the Percentages" - Tango et al. - Network concepts in baseball - Transferable methods - Data-driven analysis
-
"Football Analytics with Python" - (Hypothetical title) - Applied network methods - Code examples - Case studies
Online Resources
NetworkX Documentation
- NetworkX Official - Python library for networks - Comprehensive tutorials - https://networkx.org/
Network Visualization
-
Gephi - Interactive visualization - Large network support - https://gephi.org/
-
D3.js Network Layouts - Web-based visualization - Interactive features - https://d3js.org/
Sports Networks
-
StatsBomb Open Data - Soccer passing data - Transferable methods - https://github.com/statsbomb/open-data
-
nflverse - NFL play-by-play data - Network-ready data - https://nflverse.com/
Tools and Libraries
Python
-
networkx - Standard network library - All centrality metrics -
pip install networkx -
python-louvain - Community detection - Louvain algorithm -
pip install python-louvain -
graph-tool - High-performance - Visualization - https://graph-tool.skewed.de/
-
pyvis - Interactive HTML networks - Easy visualization -
pip install pyvis
R
-
igraph - R network library - Fast algorithms - CRAN package
-
ggraph - ggplot2 for networks - Beautiful visualizations
Data Sources
Play-by-Play Data
-
College Football Data API - Passing data available - https://collegefootballdata.com/
-
nfl_data_py - NFL play-by-play - Network-ready
Coaching Data
- Sports Reference - Coaching histories - Staff information - https://www.sports-reference.com/cfb/
Recruiting Data
-
247Sports - Recruit database - Commitment data - https://247sports.com/
-
Rivals - Recruiting rankings - https://rivals.com/
Advanced Topics
Community Detection
-
Louvain Algorithm - Original paper: Blondel et al. - Most common method - Fast and scalable
-
Label Propagation - Alternative algorithm - Semi-supervised approach
Temporal Networks
- Dynamic Network Analysis - Time-varying graphs - Evolution patterns - Snapshot methods
Link Prediction
- Predicting New Connections - Common neighbors - Jaccard coefficient - Adamic-Adar index
Suggested Learning Path
Week 1-2: Foundations
- Study graph theory basics
- Learn NetworkX fundamentals
- Build simple networks
Week 3-4: Centrality
- Calculate all centrality types
- Interpret in football context
- Compare players/teams
Week 5-6: Passing Networks
- Build from play-by-play
- Analyze target distributions
- Create visualizations
Week 7-8: Coaching Trees
- Construct from historical data
- Calculate influence metrics
- Trace scheme origins
Week 9-10: Recruiting
- Build pipeline networks
- Analyze geographic patterns
- Identify competition
Week 11-12: Advanced
- Community detection
- Temporal analysis
- Multi-layer networks
Practice Datasets
Synthetic Data Generation
# Generate sample passing data
import numpy as np
import pandas as pd
np.random.seed(42)
n_plays = 500
passes = pd.DataFrame({
'play_id': range(n_plays),
'passer': 'QB1',
'receiver': np.random.choice(
['WR1', 'WR2', 'RB1', 'TE1'], n_plays,
p=[0.35, 0.25, 0.20, 0.20]
),
'yards': np.random.randint(0, 30, n_plays),
'complete': np.random.choice([0, 1], n_plays, p=[0.35, 0.65])
})
Real Data Sources
- cfbd API for college
- nflverse for NFL
- Statsbomb for soccer (method transfer)