Constructing surplus value from scratch.
Analyzing the language of NFL.com draft prospect reports (2014-2023).
Analyzing how volatile individual QB seasons are with gini coefficients and a volatility over expected (VOLoe) GAM model.
Cornerback performance is hard to measure, but we can try.
We build a series of models to estimate team ability from EPA data
Coverage classification Using CNNs.
xgboost and R
A description of the nflfastR Expected Points (EP), Win Probability (WP), Completion Probability (CP) Expected Yards after Catch (xYAC), and Expected Pass (xPass) models.
Quantifying Quarterbacks' performance along the "game manager" and "gunslinger" dimensions.
Use Python and scikit-learn to model NFL game outcomes and build a pre-game win probability model.
Use nflfastR to calculate penalty EPA and understand the randomness of penalties to improve prediction accuracy of game outcomes
Multi-season analysis of league and team-specific home-field advantage in the NFL.
Use nflfastR to develop lagged rolling averages of EPA to best predict a game's outcome
The more you look into the numbers, the better it looks for Aaron Rodgers
Breaking down the receiving game by position using nflfastR data.
Using nflfastR play-by-play data to measure kicker performance.
This article shows how to use tidyModels to predict QB dropbacks and uses a multilevel model to show which teams are run/pass heavy after accounting for game script
Exonerating punters for long returns
Does incorporating actual rest time help us predict how a defense will do?
Use the nflfastR xYAC & CP models to calculate how many fantasy points an average receiver would expect to earn on each target.
Here, we'll look at how to scrape ESPN's and 538's pregame predictions and merge them into nflfastR data
Combining lessons from multiple posts to create faceted or animated heatmaps.
Methods for modeling density estimates and expected completion percentages across the football field for individual players.
Loading your nfl data at 10x speed!
Case study how to leverage Generalized Additive Mixed Models (GAMM) to estimate the individual probability of completion per Quarterback as a random effect.
Using nflfastR data to visualize where on the field running backs get their carries and how that translates to the Trivial Rush Attempt Percentage (TRAP) model.
Building expected interceptions and expected fumbles models to find QBs likely to increase or decrease their interceptions and/or turnovers per dropback from 2019 to 2020.
Collection of short answers to common questions.
How to get ESPN data and create interactive plots using the plotly ggplot2 library.
Looking at what metrics are important for predicting wins. Creating expected season win totals and comparing to reality.
Use 538's QB Elo value, a highly predictive measurement of QB impact, to compare QB careers across era
Game excitement calculation and a win probability figure.
Methods for visualizing NFL passing location data.
A look into Rodgers Efficiency Decline. Also some functions for plotting EPA/CPOE moving averages.
Using nflfastR data to show how much more efficient passing is than rushing at the team level
This article shows how to adjust a team's EPA per play for the strength of their opponent. The benefits of adjusted EPA will be demonstrated as well!
Showing how to contribute using Python code
Rebuilding player graphs when ID keys go missing or are corrupted.
Using Keras in R to build neural networks.
Do quarterbacks who get hit see their performance decline throughout the game?
This article looks at the percentage of snaps with win probability over an arbitralily chosen critical value and compares it with the true win percentage.
This article shows how to scrape football data from Pro Football Reference and how to plot the bad throw percentage data for quarterbacks.
If you see mistakes or want to suggest changes, please create an issue on the source repository.
Text and figures are licensed under Creative Commons Attribution CC BY-NC 4.0. Source code is available at https://github.com/nflverse/open-source-football, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
©2020 - Website creator Sebastian Carl (Twitter: @mrcaseb)