Leading With Data· a Bicycle Guide
Guide highlights

Becoming empowered to answer their own questions about football using data. Gaining a significant edge in their fantasy football leagues and sports betting.

  • Learn to obtain and wrangle real NFL data using Python and R.
  • Master exploratory data analysis to visualize and understand key football metrics.
  • Apply regression models to create context-adjusted performance metrics like RYOE and CPOE.

Book profile

Football Analytics with Python R

One book, placed in its field — what Eric A. EagerRichard A. Erickson's book gets right, where it goes further than the rest, and what the rest of the field adds.

Edited by Mike West

Choose a reading path or an exercise

Suggested sections

Choose a starting point below. Each link opens a section of this guide.

Do this now — Situational Context

  1. Pull play-by-play with nflfastR (R) or nfl_data_py (Python) and list the pre-snap variables available: down, distance, yardline, score differential, time remaining, shotgun, and personnel.
  2. Add tracking-derived features from Big Data Bowl data where you can, such as defenders in the box, receiver separation, and pass-rush pressure.
  3. Exclude any variable measured after the player's action, such as air yards on a completion or yards after catch, so context stays independent of the result.
  4. Check each feature's distribution by team and season to confirm it does not simply proxy for the player's own skill.

Then continue in Situational Context.

Edition 1·Updated 2026-10-03·11 min read

Sources

About this book

An overview of the book, with source information for further reading.

Football Analytics with Python R

Eric A. EagerRichard A. Erickson

A practical guide to applying statistical modeling and data science techniques using Python and R to analyze American football data for purposes ranging from team analysis to sports betting and fantasy football.

More on this book

Are you a football fan wanting to gain a competitive edge in your fantasy league, interested in sports betting, or aspiring to become a professional analyst? 'Football Analytics with Python & R' provides a clear, hands-on introduction to using statistical models to analyze football data. Authors Eric Eager and Richard Erickson guide you through real-world case studies, teaching you how to obtain, visualize, and model NFL data using both Python and R. You'll learn to build metrics like Rushing Yards Over Expected (RYOE) and Completion Percentage Over Expected (CPOE), evaluate draft picks, and even apply data science to sports betting. This book is your starting place for transforming complex football data into accessible wisdom, whether your goal is to dominate your league or simply learn data science with fun, practical examples.

Movement I

Orient

In this part

What this book claims, and who wrote it.

  • — The book's one-line promise
  • — The author and where the book stands

A practical guide to applying statistical modeling and data science techniques using Python and R to analyze American football data for purposes ranging from team analysis to sports betting and fantasy football.

The need-to-know

Context is crucial in football analytics; raw stats can be misleading without adjusting for situational factors like down, distance, and field position. Statistical modeling (like linear and logistic regression) allows us to create 'over expected' metrics (e.g., RYOE, CPOE) that better isolate individual player skill from the situation. Not all statistics are equally predictive; stability analysis helps identify which metrics are 'signal' (repeatable skill) and which are 'noise' (random variance).

About this guide

The guide describes these challenges, steps and possible outcomes.

Who it is for

An aspiring football analyst, a savvy fantasy football player, or a curious sports fan who wants to go beyond surface-level statistics and use data to gain a deeper, more objective understanding of the game.

Challenges

  • In practice · They rely on traditional, often misleading, raw statistics (like total yards or completion percentage) which don't account for crucial game context, leading to flawed player evaluations and poor predictions.
  • For the reader · They feel frustrated and overwhelmed by the complexity of football analytics, and unsure how to start using programming and statistics to answer their own questions about the game.

Steps to consider

  1. 1Learn to obtain and wrangle real NFL data using Python and R.
  2. 2Master exploratory data analysis to visualize and understand key football metrics.
  3. 3Apply regression models to create context-adjusted performance metrics like RYOE and CPOE.
  4. 4Extend your skills to sports betting, draft analysis, and player attribute classification.
  5. 5Discover advanced tools and next steps to continue your analytics journey.

Risks

Continuing to rely on flawed, context-free stats and gut feelings. Falling behind in an increasingly quantitative sports landscape.

Intended result

Becoming empowered to answer their own questions about football using data. Gaining a significant edge in their fantasy football leagues and sports betting.

Set the record straight

What this book sets straight

The common beliefs this book pushes back on.

The myth

Raw statistics like completion percentage or yards per carry are the best way to evaluate player performance.

The reality

Player performance should be evaluated using context-adjusted metrics, such as Completion Percentage Over Expected (CPOE) or Rushing Yards Over Expected (RYOE), which account for situational factors.

The myth

The value of a running back is immense, and they are a cornerstone of a winning team.

The reality

The impact of an individual running back on rushing production is less significant than other factors like offensive line play, and passing is generally more efficient than running; therefore, investing heavily in the running back position may not be a wise use of resources.

The myth

Evaluating football is purely an art form based on watching the game and gut feeling.

The reality

Statistical analysis and data science provide scalable, objective tools to tell more accurate stories about the game, evaluate players, and inform decision-making.

Movement II

Map

The book's main ideas and how they connect.

In this part

Football Analytics with Python R's own model — and how it sits inside its field.

  • — 5 constructs the book works with
  • — Where it agrees with the field, exceeds it, or fills a gap
The Conditions1· the context you inherit
Situational Context
What You Do2· the behaviours that follow
Performance Over ExpectedActual Player Performance

The constructs

Situational Context

The set of game-state and play-specific variables that constrain or influence a player's opportunity for success, independent of their own skill. This context forms the baseline for expected performance.

Actual Player Performance

The raw, observed statistical output of a player's action on a given play or set of plays, such as yards gained, a pass completion, or a touchdown scored.

Performance Over Expected

A measure of a player's performance above or below a statistically established baseline, which accounts for the situational context of the play. It represents the value a player adds beyond what an average player would be expected to produce in the same circumstances.

Metric Stability and Predictivenessthe outcome

The degree to which a performance metric is repeatable over time (e.g., year-over-year) and therefore predictive of future performance. A more stable metric is considered a better indicator of true talent.

Talent Evaluation Accuracy

The ability of an analyst, scout, or team to correctly assess a player's true skill level and predict their future performance, leading to better decision-making in player acquisition and roster construction.

How they connect (5)
  • Situational Context → influences → Actual Player Performance
  • Actual Player Performance → influences → Performance Over Expected
  • Situational Context → predicts → Performance Over Expected
  • Performance Over Expected → influences → Metric Stability and Predictiveness
  • Metric Stability and Predictiveness → influences → Talent Evaluation Accuracy

Where this book diverges from the corpus

  • fills gap The name overlaps with Collective Situational Awareness, but that construct is a team's shared perception of the game, whereas the book means play-level game-state variables that constrain a player's opportunity, so the field has nothing equivalent.
  • fills gap The field has no construct for individual observed statistical output; it only mentions personal statistics as something to subordinate (Selflessness) and measures team outcomes (Sustained Winning Performance).
  • fills gap The book offers a context-adjusted way to isolate a player's value above an average baseline, and nothing in the field's leadership-and-culture model quantifies individual contribution.
  • fills gap The book's test of whether a metric is repeatable year over year and so reflects true talent is a measurement-validity concern that the field's constructs do not address.
  • fills gap The book addresses how well analysts and teams assess and predict player skill for acquisition and roster decisions, whereas the field concentrates on developing and leading players and does not cover evaluating them.

Movement III

Master

Explore the book's ideas, examples and practical tools.

In this part

How the author makes the case — section by section, with the book's own tools.

  • — 5 sections, in the book's order
  • — The book's frameworks, checklists, and worked cases
Situational Context
strong · 1 source
  • Football Analytics with Python R
In this section

This section defines the game-state and play-level variables that set the baseline for any football outcome. You get a working list of features to model and the rules for choosing them.

Situational Context

The set of game-state and play-specific variables that constrain or influence a player's opportunity for success, independent of their own skill. This context forms the baseline for expected performance.

Why it matters. If you omit or mis-specify context such as down, distance, field position, or defensive look, every later metric credits or blames players for circumstances they did not control.

Myth

Context means the scoreboard situation: down, distance, and field position are enough to describe what a play asked of the player.

Reality

Game-state variables capture only part of a play's difficulty. Pre-snap and tracking-level factors such as box count, defenders' separation, time to throw, and pressure often drive the outcome more than down and distance do, and which of them you can use depends on your data source.

Tools for this
  • Situational ContextFramework — How this mechanism is run, step by step, as the literature describes it.
  • Situational ContextCase study — Compare short and long passes in the book's play-by-play data.
The least you need to know
  • Define context as only what is knowable at or before the snap and outside the player's control.
  • Down, distance, and field position are a floor, not a full description; tracking features add the most explanatory power where they exist.
  • Audit every feature for leakage from the outcome or from the player's own skill before it enters a model.
Master this◆ Paid

The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Situational Baseline Worksheet” tool. Included when you buy this guide.

The rest of this section

the full written section · 4 how-to steps · 2 pitfalls to watch for · 2 tools for this section. Included when you buy this guide.

Grounded in: Football Analytics with Python R

Actual Player Performance
strong · 1 source
  • Football Analytics with Python R
In this section

This section covers the raw outputs you observe: yards, completions, touchdowns, and the plays behind them. It shows how to record them so they can be compared fairly with a baseline.

Actual Player Performance

The raw, observed statistical output of a player's action on a given play or set of plays, such as yards gained, a pass completion, or a touchdown scored.

Why it matters. Raw outcomes are the only ground truth you have, but taken at face value they reward players for good situations and sample luck, so mishandling them corrupts every downstream comparison.

Myth

Counting stats like yards and touchdowns directly show how good a player is, and the leaderboard is a ranking of talent.

Reality

Observed output is the sum of skill, context, and noise, and the leaderboard mostly sorts opportunity. Treat raw production as the measurement to be explained, not the conclusion.

Tools for this
The least you need to know
  • Keep raw output at the play level with attached opportunity counts so it can be adjusted later.
  • Volume totals measure usage as much as skill; pair them with per-play rates and sample sizes.
  • Observed results are the input to the evaluation, never the final judgment of a player.
Master this◆ Paid

The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Actual Performance Audit Sheet” tool. Included when you buy this guide.

The rest of this section

the full written section · 3 how-to steps · 2 pitfalls to watch for · 10 tools for this section. Included when you buy this guide.

Grounded in: Football Analytics with Python R

Performance Over Expected
strong · 1 source
  • Football Analytics with Python R
In this section

This section shows how to turn observed output and situational context into a single above-or-below-baseline measure, such as completion percentage over expected, rushing yards over expected, or EPA over expected. You will build the baseline model and compute the residual.

Performance Over Expected

A measure of a player's performance above or below a statistically established baseline, which accounts for the situational context of the play. It represents the value a player adds beyond what an average player would be expected to produce in the same circumstances.

Why it matters. A well-specified baseline isolates what a player added beyond his circumstances, while a poorly specified one just repackages volume or context as skill.

Myth

A positive over-expected number proves the player is better than average, because the model has already removed the context.

Reality

The residual is only as clean as the baseline. Anything the model leaves out, such as blocking quality or scheme, is credited to the player, and the baseline is itself estimated with error. Read the number as a noisy estimate of player effect.

The least you need to know
  • Over-expected measures are residuals, so their quality depends entirely on the baseline model.
  • Use out-of-fold expectations so no play predicts itself.
  • Report the over-expected value with its sample size and an uncertainty range, not as a bare ranking.
Master this◆ Paid

The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Over-Expected Metric Build Sheet” tool. Included when you buy this guide.

The rest of this section

the full written section · 4 how-to steps · 2 pitfalls to watch for. Included when you buy this guide.

Grounded in: Football Analytics with Python R

Metric Stability and Predictiveness
strong · 1 source
  • Football Analytics with Python R
In this section

This section gives you the tests for whether a metric reflects repeatable skill: year-over-year correlation, split-half reliability, and out-of-sample prediction. It tells you how to run them and how to read the results.

Metric Stability and Predictiveness

The degree to which a performance metric is repeatable over time (e.g., year-over-year) and therefore predictive of future performance. A more stable metric is considered a better indicator of true talent.

Why it matters. A metric that does not repeat will send you chasing last year's luck, so measuring stability before you rely on a number saves you from building decisions on noise.

Myth

A metric that is highly correlated with winning or with past results is a good one, regardless of whether it repeats.

Reality

Explaining past outcomes and predicting future ones are different jobs. Metrics like interception rate fit the past well but barely persist, while stable ones like pressure rate or target share carry forward, and stability varies by position and sample size.

Tools for this
The least you need to know
  • Test repeatability directly with year-over-year and split-half correlations before trusting any metric.
  • Low-stability metrics need heavy regression toward the mean, with the amount set by the measured reliability.
  • Stability depends on position and sample size, so report it separately for each group.
Master this◆ Paid

The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 5 failure modes, and the “Metric Stability Audit Sheet” tool. Included when you buy this guide.

The rest of this section

the full written section · 4 how-to steps · 2 pitfalls to watch for · 6 tools for this section. Included when you buy this guide.

Grounded in: Football Analytics with Python R

Talent Evaluation Accuracy
strong · 1 source
  • Football Analytics with Python R
In this section

This section turns stable metrics into evaluations you can check against what players actually do next. It covers how to measure whether your assessments of draft picks, free agents, and starters were right.

Talent Evaluation Accuracy

The ability of an analyst, scout, or team to correctly assess a player's true skill level and predict their future performance, leading to better decision-making in player acquisition and roster construction.

Why it matters. Roster and contract decisions are expensive and slow to reverse, so an evaluation process whose accuracy you never measure will keep repeating its errors.

Myth

Accurate evaluation comes from finding the single best metric, and once you have it the rankings can be trusted.

Reality

Accuracy comes from combining stable metrics with context, uncertainty, and a record of past predictions you can score. A single metric, however good, leaves out injury, role change, and age, and without back-testing you cannot know whether your calls beat a simple benchmark.

Tools for this
The least you need to know
  • Measure evaluation accuracy by out-of-sample prediction error against a naive benchmark, not by narrative.
  • Express forecasts with intervals so decisions reflect uncertainty, and judge them over many players, not single outcomes.
  • Treat misses as inputs: classify them by cause and fold what you learn back into the metrics and baselines.
Master this◆ Paid

The deep drill-down: 8 operational steps, a worked example from the source, 5 decision rules, 6 failure modes, and the “Player Metric Stability & Buy/Sell Evaluation Sheet” tool. Included when you buy this guide.

The rest of this section

the full written section · 4 how-to steps · 2 pitfalls to watch for · 2 tools for this section. Included when you buy this guide.

Grounded in: Football Analytics with Python R

Movement III · The run-it-now depth

The Playbook

Practical tools and examples from this guide.

Frameworks

Frameworkfree

Actual Player Performance

How this mechanism is run, step by step, as the literature describes it.

  1. 1Fix the unit of observation first. Actual performance is one row per play from play-by-play data (the book uses nflfastR in R or nfl_data_py in Python). Name the outcome you are recording: yards gained, pass completed, touchdown scored. Do not mix outcomes in one column.
  2. 2Record the raw output untouched. Keep yards gained, the completion flag, and the touchdown flag exactly as logged. Do not adjust, cap, or smooth them. This column is the 'actual' side of every later comparison.
  3. 3Attach the situation to every play without altering the output. At minimum keep down and ydstogo (yards left to a first down or score) for rushes, and air yards (distance from the line of scrimmage to the intended receiver) for passes. Raw output is uninterpretable without the conditions it was produced under.
  4. 4Aggregate by player and report the sample alongside the total. Sum or average the raw output (for example, yards per carry or yards per attempt) and always print the play count next to it. A rate with no denominator hides how little evidence sits behind it.
  5. 5Split passing output by type before you read it. Chapter 2 separates deep passes from short passes to partition a quarterback's production into stable and unstable parts. A single pooled passing number mixes the two.
  6. 6Treat the raw number as the numerator of a residual, not as a verdict. RYOE is actual rushing yards minus the model's expected yards. CPOE is actual completion outcome minus modeled completion probability. Compute the actual number cleanly, then compare it with what the situation predicted.
  7. 7Test whether the raw figure persists. Compare a player's actual output in one year with the next. The book's regression-to-the-mean example is a back with above-average yards per carry one year, who is statistically expected to drift back toward the league average. If the number does not persist, do not forecast with it.
  8. 8Report actual and residual side by side. State what happened (actual), what the situation predicted (expected), and the gap. The actual number alone cannot separate player skill from play context.
Framework◆ Paid

Metric Stability and Predictiveness

How this mechanism is run, step by step, as the literature describes it.

◆ The full 8-step framework — included with this guide purchase

Framework◆ Paid

Performance Over Expected

How this mechanism is run, step by step, as the literature describes it.

◆ The full 8-step framework — included with this guide purchase

Framework◆ Paid

Situational Context

How this mechanism is run, step by step, as the literature describes it.

◆ The full 8-step framework — included with this guide purchase

Framework◆ Paid

Talent Evaluation Accuracy

How this mechanism is run, step by step, as the literature describes it.

◆ The full 8-step framework — included with this guide purchase

Checklists

Checklistfree

Actual Player Performance — decision rules

  • If you are about to rank players on a raw total (yards, completions, touchdowns), then first record the play count and the situation fields, and only then rank.
  • If the output is a passing rate, then split it into deep and short passes before reading it. Treat the two parts as separate evidence.
  • If a player's raw rate is well above or below league average in a single year, then expect regression toward the average and do not project the full gap forward without a year-over-year check.
  • If you want to credit or blame the player rather than the situation, then subtract a modeled expectation (RYOE for rushing, CPOE for passing) and judge the residual, keeping the raw number as context.
  • If a metric does not help predict what you care about year after year, then do not build decisions on it, even if it looks decisive in high-leverage moments like third-down conversions.
Checklist◆ Paid

Metric Stability and Predictiveness — decision rules

◆ All 5 checkpoints — included with this guide purchase

Checklist◆ Paid

Performance Over Expected — decision rules

◆ All 5 checkpoints — included with this guide purchase

Checklist◆ Paid

Situational Context — decision rules

◆ All 5 checkpoints — included with this guide purchase

Checklist◆ Paid

Talent Evaluation Accuracy — decision rules

◆ All 5 checkpoints — included with this guide purchase

Case studies — including what didn't work

Case studyfree

Actual Player Performance

Context

Take Adrian Peterson's 2012 season, which the source describes as over 2,000 rushing yards while carrying an otherwise-bad Minnesota Vikings team to the playoffs. That is a clean actual-performance fact: a large season total of rushing yards, and it earned him the last nonquarterback MVP. Stopping there invites the conclusion that the back made the offense. The book's approach asks for more. Rushing is less efficient than passing on yards per play and EPA, and swapping one running back for another does not change rushing production the way swapping quarterbacks, receivers, or linemen does. So you keep the 2,000-plus yards as the actual number, then ask what a model using situation (such as ydstogo in the simple version, tracking data in the Big Data Bowl version) expected on those same carries. The gap, RYOE, is the part attributable to the rusher. You then check whether that gap holds from one season to the next, since an above-average yards-per-carry year is expected to regress. The same logic sits behind Saquon Barkley going second overall in 2018 and drawing criticism from analytics people. The raw production was visible; whether it was player-driven was the open question the book sets out to test in Chapters 3 and 4. The source does not give Peterson's expected-yards figure, so the comparison step stays a procedure, not a number.

Case study◆ Paid

Metric Stability and Predictiveness

Context

The source's anchor case is baseball. Walks, strikeouts and home runs, the 'three true outcomes', were the easiest to predict from one season to the next. What batted balls did once in play was noisier and drove most of the perceived year-to-year variance. The lesson is to buy the repeatable outcomes and discount the noisy ones. For football, the RYOE model works the same way. It fits rushing_yards ~ 1 + ydstogo, with an intercept of 3.2188 and a ydstogo slope of 0.1329, on about 92,425 rushing plays. A rush with 2 yards to go is expected to gain about 3.2188 + 0.1329×2 ≈ 3.5 yards (the book rounds the coefficients and writes 3.4). A back who gains 6 on that play has a residual of about +2.5. Summing or averaging those residuals by player gives RYOE. The model's R² is only 0.007, so this expectation is weak and the residual is mostly the raw yards minus a near-constant. That is why the test matters. You then compare each back's RYOE in season N with season N+1, and do the same with raw yards per carry. Whichever correlates better across seasons is the more stable metric. The passages pose this comparison but do not report the resulting stability numbers, so you must run it.

◆ What happened, and the outcome — included with this guide purchase

Case study◆ Paid

Performance Over Expected

Context

The source's motivating problem is that raw yards ignore context. A receiver gains 7 yards when 8 are needed for a first down or touchdown, and no first down results. Another player gains 5 yards when 5 are needed, and the drive continues. Raw yardage ranks the 7-yard gain higher, but the 5-yard gain did more for the offense. A model that conditions on distance to go captures this. The book builds that logic in three steps. Chapter 3 fits a simple linear regression for rushing yards. Chapter 4 adds down and distance to make RYOE. Chapter 5 fits a logistic regression for completion probability from situational factors such as air yards (the distance from the line of scrimmage to the intended receiver). For a pass, suppose the model gives a 0.65 completion probability (an illustrative number, not from the book). A completion yields a residual of +0.35 and an incompletion yields -0.65. Averaged over a quarterback's passes, this is CPOE. The final step is the stability test: check whether a quarterback's CPOE in one season predicts the next better than his plain completion percentage does. The authors call CPOE one of the most predictive quarterback metrics available.

◆ What happened, and the outcome — included with this guide purchase

Case study◆ Paid

Situational Context

Context

Compare short and long passes in the book's play-by-play data. Short passes: mean EPA 0.1196, standard deviation 1.43, 25th percentile -0.61, 75th percentile 0.96. Long passes: mean EPA 0.3826, standard deviation 2.19, 25th percentile -0.83, 75th percentile 2.14. Long passes carry a higher mean EPA but a much wider spread. The long-pass median EPA is -0.465, so the typical long attempt loses expected points while a few big hits lift the mean. Passing yards show the same pattern: the long-pass mean is 12.17, the median is 0, the 75th percentile is 26, and the maximum is 98. A quarterback who throws deep therefore faces a different baseline and more variance than one who throws short. Judging both on raw yards per attempt or completion percentage mixes skill with the situation. Modeling the situation first (as CPOE does) and then examining the residual separates the two.

◆ What happened, and the outcome — included with this guide purchase

Case study◆ Paid

Talent Evaluation Accuracy

Context

The drafting-skill test shows both the method and the humility it demands. Instead of asking whether a team's picks were good, the analysis measures DrAV_OE, a team's draft value over what its pick slots would predict, so a team that always picks late is not penalized. It builds a 95% confidence interval around each team's DrAV_OE. If the interval contains 0, the team is not distinguishable from average. If DrAV_OE sits above the interval, the team did statistically better than average. If it sits below, worse. Only four teams cleared the bar: the Steelers and Packers were significantly better, and the Raiders and Browns significantly worse. Most front offices cannot be separated from average. That matches the research that over a typical GM or coach tenure it is very hard to discern drafting talent. The Raiders' 2018 Khalil Mack trade shows the cost of a poor selection process: two first-round picks came back, but the best pick of the bunch was Josh Jacobs. More picks give more chances, but the hit rate still depends on evaluation accuracy.

◆ What happened, and the outcome — included with this guide purchase

Templates

Templatefree

Actual Performance Audit Sheet

Template◆ Paid

Metric Stability Audit Sheet

◆ The fillable template — included with this guide purchase

Template◆ Paid

Over-Expected Metric Build Sheet

◆ The fillable template — included with this guide purchase

Template◆ Paid

Situational Baseline Worksheet

◆ The fillable template — included with this guide purchase

Template◆ Paid

Player Metric Stability & Buy/Sell Evaluation Sheet

◆ The fillable template — included with this guide purchase

Items marked Paid are included when you buy this guide.

Movement IV

Reflect

Consider the book's evidence, limitations and how it compares with other sources.

In this part

How good is it — where the book stands against the field, what it leaves open, and when to trust it.

  • — Its positioning, its critique, its blind spots
  • — When to apply it — and when not
  • — The evidence behind the advice

Book profile · in the corpus

This book’s model, against the corpus

0 of 5 constructs align with the field · 5 the book adds · 0 where it diverges · the field spans 18 constructs across 4 books

this book's own emphasisthe corpus adds (other sources)

This book's own emphasis — where it's the authority

Situational ContextActual Player PerformancePerformance Over ExpectedMetric Stability and PredictivenessTalent Evaluation Accuracy

The corpus adds — from 3 other sources this book doesn't cover

The full field guide folds in ideas this book doesn’t reach — drawn from 3 further sources and cited in the full model.

This book’s place in the corpus

1 of 4
sources in this corpus
5
constructs contributed
5
unique to this book

Why the corpus guide, not just this book

The book stands on sports-analytics and sabermetric traditions of separating skill from context, and it is the authority on measuring individual performance, stability and talent evaluation. The reconciled field-guide still adds the human side the book leaves out (culture, trust, leadership, character, and collective awareness), which explains why talent turns into sustained winning.

This guide stands on the shoulders of this book and 3 other sources — every claim cited, the disagreements named.

Read the reconciled Coach A Winning Team guide →

Read it closely

The book, examined

Not a summary — a close analytical reading: how the book is built, what it leaves open, and where it falls short.

How it’s built — the argument in order

  1. 01
    Front matter, framing and purpose — Presents the book as a case-study-driven, hands-on route into football analytics with Python and R. It aims at fans, bettors, fantasy players and aspiring analysts, and endorsements stress both coding instruction and football storytelling.
  2. 02
    Analyst's mindset: scouting and statistics as the same process — Argues that statistical evaluation resembles scouting. Both need the right data to interrogate, the right production metrics, situational factors to control for, and information to discard. Skill comes from deliberate practice. Cites Tukey (a right-but-approximate answer beats a precise answer to the wrong question) and says statistics scale in a way scouting cannot.
  3. 03
    Getting and checking data (play-by-play) — Shows how to obtain and wrangle NFL play-by-play data in both languages. Builds grouped dataframes such as quarterback-season passing yards per attempt split by short and long air yards, and adds a lagged prior-season column. Models the habit of verifying code ('trust but verify', inspecting with info()/glimpse()) rather than assuming it is right.
  4. 04
    Stability analysis: signal versus noise — Introduces stability, meaning how much of a player's past performance transfers to another setting versus how much is variance. Compares a metric with its prior-season value (ypa vs. ypa_last) to tell repeatable skill from noise. Suggests buy-low candidates are players who do well on stable components and poorly on unstable ones.
  5. 05
    Simple regression and the running back question — Uses simple linear regression to ask whether running backs matter, supporting the claim that passing is more efficient than running and that individual running back contribution is smaller than commonly believed.
  6. 06
    Multiple regression: Rushing Yards Over Expected (Ch. 4) — Adds situational controls such as down and distance to build an expected-yards baseline, so RYOE isolates the runner from the situation. Closes with suggestions for extending the model (e.g., air_yards in the passing analogue) and with suggested readings on regression, writing about numbers, linear algebra and data journalism.
  7. 07
    Generalized linear models: Completion Percentage over Expected (Ch. 5) — Extends the 'over expected' logic from continuous outcomes to binary ones with logistic regression, building CPOE for quarterbacks.
  8. 08
    Applying models to betting markets — Turns probability and count models into estimates for player props and compares them with sportsbook odds to find value.
  9. 09
    Draft pick value and team drafting performance — Gets and evaluates draft data to value picks and assess how well teams draft, a talent-evaluation case study.
  10. 10
    Unsupervised learning: PCA and clustering of player attributes — Reduces the dimensionality of combine and athletic data and clusters players into archetypes, showing multivariate methods for classifying physical traits.

What it leaves unsolved

How much of a metric's year-to-year consistency reflects player skill, and how much reflects team, scheme, teammates or opportunity?

Stability is shown by comparing a player's metric with his own prior value, which cannot separate skill from stable context (offensive line, play-caller, receivers). The source passages do not say how to disentangle these.

Which situational variables belong in an 'over expected' model, and how complete does the expectation have to be?

The authors only suggest adding variables (e.g., air_yards beyond down and distance) and invite readers to experiment, so no standard for an adequate baseline is given. Residual credit assigned to a player depends on what the model omits.

Do running backs truly matter, or is their value just hard to measure with available data?

The takeaway is that individual running back contribution is smaller than traditionally believed. But this depends on the chosen model and data, and unmeasured blocking and scheme effects remain open.

Can a stable, repeatable statistical edge against sportsbook lines persist once markets adapt?

The book presents betting as an application of probability modeling to find value, but a model's apparent edge is not proof of long-run profit. How lines respond to widely known methods is not settled by the material.

How should one choose the right question and the right data when the question is vague?

Tukey's quote and the 'knack' for the right question are offered as the key skill, yet the authors say it comes only through years of deliberate practice, so no procedure is given.

How do analytical findings combine with traditional scouting in practice?

The authors say the two are not truly at odds because the process is essentially the same, but the passages give no framework for resolving disagreements between them.

Where it falls short — a fair critique

incomplete

Stability is illustrated with a small panel (317 quarterback-season-length rows built from a handful of seasons and mostly well-known starters), using a simple lag comparison. The passages show no uncertainty quantification, no adjustment for sample size per player-season, and no treatment of regression to the mean, so 'stable' versus 'noisy' can be overstated.

incomplete

'Over expected' metrics (RYOE, CPOE) are framed as better isolating individual skill, but the baseline models use a few observable covariates (down, distance, field position, perhaps air yards). Blocking quality, defensive alignment, receiver quality, and scheme are left in the residual, which is then credited to the player. The authors hint at this by urging extra variables, but the headline claim is stronger than the controls support.

illogical

Concluding that running backs contribute less than believed from a model that does not control for line play or box counts risks mistaking 'not detected in this model' for 'not present'. A low attributable share is compatible with omitted-variable explanations, so the causal reading goes further than the evidence.

misinformed

Treating scouting and statistics as 'essentially the same process' is a reasonable rhetorical bridge, but it glosses over real differences: scouts use film, character and projection to cover things missing from tracking and play-by-play data. The scalability advantage is asserted but not weighed against what is lost, so the position reads somewhat one-sided.

incomplete

Betting is offered as a data science application, yet the passages give little on bankroll management, vig, closing-line value, out-of-sample validation, or the risk that a profitable-looking backtest is overfit. For readers drawn by the betting promise, this may create overconfidence.

uninformed

The pedagogical design of mirroring all code in Python and R has costs: it doubles the code on the page, and the verification and output listings (info(), glimpse()) take space that could go to interpretation, so statistical depth (e.g., assumptions, diagnostics) may be thinner than the practical focus suggests.

incomplete

The unsupervised section (PCA, clustering of combine metrics) is presented as identifying 'distinct archetypes', but clustering results depend on choices (number of clusters, scaling, which metrics). Without a link showing archetypes predict on-field outcomes, the usefulness for talent evaluation is not established.

Before you apply it

Using it well

Where the method fits, who it’s for, and the honest case for and against — so you apply it where it works.

Is this book for you?

For you if

  • You are a football fan, fantasy player, or bettor who wants to move from opinions to data-backed reasoning
  • You aspire to a football analytics career and want portfolio-ready projects such as RYOE, CPOE, and draft analysis
  • You want to learn data science (regression, GLMs, PCA, clustering) through engaging sports examples
  • You work in either Python or R and want to see equivalent code in both

Skip it if

  • You want guaranteed betting or fantasy winning strategies rather than a modeling education
  • You already do advanced sports modeling (e.g., hierarchical or Bayesian models) and need cutting-edge methods
  • You have no interest in writing code and only want conclusions about players
  • You want analysis of sports other than American football

Need first

  • Basic familiarity with football rules and concepts (downs, distance, field position, passing vs rushing)
  • Some basic programming exposure in Python or R, or willingness to learn alongside the book
  • Comfort with introductory statistics ideas like averages, correlation, and variance
  • A working Python or R environment with the ability to install packages and pull NFL play-by-play data

When it applies — and when it doesn’t

Use it
  • Deciding which player metrics to trust for next-season projections, such as fantasy drafts or buy-low trades — stability analysis (year-over-year correlation, e.g., YPA by pass length) separates repeatable skill from noise
  • Learning to obtain and wrangle NFL play-by-play data in Python or R — the book gives parallel, hands-on code for both languages and a 'trust but verify' habit for checking your own code
  • Judging whether a running back or the offensive line drives rushing success — the RYOE approach shows individual RB contribution is smaller than traditionally believed, but it needs the right context variables
  • Evaluating draft picks and a team's drafting record — the book covers pick-value analysis and drafting performance, which suits front-office-style questions
  • Classifying athletes by combine measurables into archetypes — PCA and clustering reduce correlated attributes into distinct player types
Adapt it
  • Evaluating a quarterback or running back by raw box-score totals (yards, completion %) without adjusting for context — the book's core point is that down, distance, and air yards distort raw stats, so build 'over expected' metrics like CPOE and RYOE instead
  • Building a model to find value against sportsbook lines or player props — the book shows how to estimate probabilities against odds, but it is an introduction, and betting markets are efficient enough that a simple model rarely guarantees an edge
  • Treating a model's 'over expected' number as a pure measure of individual skill — the expectation is only as good as the variables included, and omitted factors such as blocking or receiver quality can leak into the player's number
  • Small samples (a few games, a rookie's first season, rare situations) — the stability lesson implies noise dominates here, so conclusions from limited data are shaky
Not here
  • Evaluating non-quantifiable aspects such as scheme fit, leadership, or injury recovery — the book's methods work on play-by-play and measurable data and do not capture these directly; pair them with scouting
  • Seeking a deep statistics or machine learning theory text — it is a case-study-driven practical guide that teaches data science through football, not a rigorous theoretical treatment

The honest case

Strongest case for

  • Raw stats mix player skill with situation, so adjusting for down, distance, and field position produces fairer comparisons of players
  • 'Over expected' metrics built from regression and logistic models make the adjustment explicit and reproducible
  • Stability analysis gives a principled way to separate signal from noise, which helps identify buy-low and sell-high candidates
  • Statistical methods scale to many players at once, which traditional scouting cannot
  • Parallel Python and R case studies and endorsements from NFL practitioners suggest the methods are usable in real football operations
  • The same modeling process mirrors the scout's process: choose the right question, controls, and information to discard

Strongest objection

  • An 'over expected' metric depends on the chosen model and covariates, so omitted factors like offensive line, receiver quality, or scheme can be misattributed to the player
  • Football has small samples (17 games a season) and heavy noise, so even 'stable' metrics may offer weak predictive power
  • Betting markets are already efficient, so simple public models are unlikely to find consistent value after the sportsbook's margin
  • Strong conclusions such as 'running backs matter less' can be oversimplified when applied to individual players or teams
  • Statistical models can miss unmeasured qualities that scouts see, so they work best as a complement rather than a replacement
Source notes

The model's constructs are drawn from the source element(s); load-bearing constructs are corroborated across the shelf, emerging ones are flagged.

Ideas covered by the source notes

  • Situational Context
  • Actual Player Performance
  • Performance Over Expected
  • Metric Stability and Predictiveness
  • Talent Evaluation Accuracy

Movement V

Measure

Use available assessments to reflect on what you have learned.

In this part

A way to gauge yourself against the book's model, and the instruments it gives you.

  • — A self-check built from the book
  • — Instruments and what you'd measure next

Learning curriculum

After this book, you can…

The book's learning objectives, classified by Bloom's taxonomy and ordered so each builds on the ones before it.

01Foundational — know & understand
  1. explain
    After this book you can explain why raw football statistics (yards, completions, touchdowns) can mislead without situational context, and identify the context variables (down, distance, field position, air yards) that shape a player's opportunity.
    Check: Short-answer or case questions: given a raw stat line for two players, identify which situational factors could explain the difference and argue why the raw comparison is misleading.
02Working — apply
  1. obtain and wrangle
    After this book you can obtain NFL play-by-play data and load, inspect, filter, and summarize it in both Python (pandas) and R (tidyverse), verifying that your code does what you intend.
    Check: Practical coding task: load a season of play-by-play data, filter to pass plays, compute per-player summaries, and use info()/glimpse() checks to confirm the output structure and correctness.
  2. visualize
    After this book you can perform exploratory data analysis and build clear visualizations of football data to understand distributions and relationships before modeling.
    Check: Produce and interpret histograms, scatterplots, and summary tables for a football dataset, and write a short note on what the EDA suggests for modeling.
  3. apply
    After this book you can apply unsupervised learning (PCA and clustering) to player athletic attributes such as combine measurements to reduce dimensionality and identify player archetypes.
    Check: Run PCA and clustering on combine data, interpret the components and clusters, and name and justify the archetypes found.
  4. build
    After this book you can build expected-value models (linear regression for yardage, logistic regression for completion probability) that use situational variables to set a baseline expectation for a play.
    Check: Fit a linear model of rushing yards and a logistic model of completion probability using down, distance, air yards, etc., in Python and R, and interpret the coefficients and predictions.
  5. calculate
    After this book you can calculate and interpret 'over expected' metrics such as Rushing Yards Over Expected (RYOE) and Completion Percentage Over Expected (CPOE) via residual analysis of actual versus expected performance.
    Check: Compute residuals from fitted models, aggregate to player level, rank players, and explain what a positive or negative value means for an individual player.
  6. compute
    After this book you can compute year-over-year stability of player metrics (e.g., passing yards per attempt by pass length) by lagging data and measuring correlations between consecutive seasons.
    Check: Given play-by-play data, build a player-season table with a lagged metric column and calculate the correlation between current and prior seasons for each split (e.g., short vs. long passes).
03Advanced — analyze & judge
  1. distinguish
    After this book you can distinguish signal from noise by interpreting stability results and deciding which metrics are repeatable skill and which are unstable variance.
    Check: Given stability correlations for several metrics, rank them by repeatability, justify which should be prioritized for forecasting, and identify potential buy-low or sell-high candidates.
  2. analyze
    After this book you can assess how much individual running backs contribute to rushing success compared with blocking and context, and critique claims about running back value, including the relative efficiency of passing versus running.
    Check: Using rushing data and expected-yards models, analyze the share of rushing outcomes attributable to the back versus context, and write an evidence-based argument on whether running backs matter.
04Mastery — synthesize & create
  1. construct
    After this book you can apply data science to sports betting by building models that estimate probabilities (e.g., for player props) and comparing them with sportsbook odds to identify value.
    Check: Build a model for a player prop, convert its predicted probability and sportsbook odds into implied probabilities, flag value bets, and critique the model's weaknesses.
  2. evaluate
    After this book you can evaluate NFL draft picks and team drafting performance by comparing the production of selected players to the expected value of their draft slot.
    Check: Fit a draft-value curve and compute player or team residuals relative to pick position, then judge which teams or picks over- or under-performed and discuss the limits of the conclusions.
  3. evaluate
    After this book you can evaluate whether 'over expected' metrics are better than raw statistics by testing their stability and predictiveness across seasons.
    Check: Compare year-over-year correlations of raw yards per carry versus RYOE per carry (or completion percentage versus CPOE) and write a justified recommendation of which metric to use.
  4. judge
    After this book you can frame a football question well, choosing the right data, metrics, and controls, and judge how accurately an analysis evaluates talent, following the principle that an approximate answer to the right question beats a precise answer to the wrong one.
    Check: Given a vague football question (e.g., 'Is this QB good?'), write an analysis plan that specifies the question, data, context controls, stable metrics, and validation, and critique a flawed alternative plan.

How to measure it

Turning each idea into a measure

For each construct: how to operationalize it, the observable signals to look for, and how well it holds up.

Situational Context

Measured using variables available in play-by-play data, such as down, distance to go for a first down, field position (yard line), score differential, run/pass location, and air yards of a pass. These variables serve as predictors in regression models.

Observable signals
  • Specific values for down (1-4)
  • distance to go (e.g., 10 yards)
  • score_differential (e.g., -7 points)
  • air_yards (e.g., 22 yards)
Scale

A mix of categorical (e.g., down, run_location) and continuous (e.g., air_yards, ydstogo) variables.

Actual Player Performance

Measured as the direct outcome recorded in play-by-play data for a specific action. Examples from the book include `rushing_yards` for a run play and `complete_pass` (coded as 1 for a completion, 0 for an incompletion) for a pass play.

Observable signals
  • A 5-yard rush.
  • An incomplete pass.
  • A passing touchdown.
Scale

Can be continuous (e.g., yards) or binary (e.g., complete/incomplete).

Performance Over Expected

Calculated as the residual (Actual Performance - Predicted Performance) from a regression model where Actual Player Performance (e.g., rushing yards, pass completion) is the dependent variable and Situational Context variables are the predictors. Examples in the book include Rushing Yards Over Expected (RYOE) and Completion Percentage Over Expected (CPOE).

Observable signals
  • A positive RYOE value on a given play.
  • A season-long positive CPOE percentage for a quarterback.
Scale

Typically a continuous variable centered around zero.

Metric Stability and Predictiveness

Operationalized as the Pearson's correlation coefficient of a given player-level metric (e.g., CPOE, RYOE, YPA) aggregated by season, comparing player values from one season to the next. A higher correlation coefficient indicates greater stability.

Observable signals
  • A year-over-year correlation of r=0.46 for CPOE, compared to r=0.44 for raw completion percentage.
  • A higher correlation for short passing YPA compared to deep passing YPA.
Scale

A correlation coefficient ranging from -1 to 1.

Talent Evaluation Accuracy

The outcome of applying stable and predictive metrics to decision-making processes. It can be measured by assessing the value generated from draft picks relative to their draft position (Draft Value Over Expected) or the success of player prop bets against the market.

Observable signals
  • A team consistently acquiring more Approximate Value from their draft picks than expected for their draft slots.
  • A positive return on investment from a betting model built on context-adjusted metrics.
Scale

Can be measured as a rate of return, a surplus value (e.g., DrAV over expected), or a classification accuracy.

Self-assessment

Where would you like to improve?

This is a structured self-diagnostic built from the model — a mirror for reflection, not a validated psychometric scale. For validated measurement, see the instruments below.

1 = Strongly Disagree · 7 = Strongly Agree

Capabilitythe practices and skills you deploy
  • When I evaluate a player, I routinely review the raw results of their plays, such as yards gained, completions, and touchdowns scored.
  • When I evaluate a player, I compare their results to a statistically established baseline for the same type of play, rather than relying on raw totals alone.
Alignmentthe outcomes you steer toward
  • Before I rely on a performance metric to project a player's future, I check how consistent that metric has been from one season to the next.
  • I regularly review my past player evaluations against what those players actually went on to do, and I use the results to improve my future assessments.
Supportthe conditions you shape
  • When I assess a player's production, I account for game-state factors such as down and distance, field position, and score that limited their opportunity to succeed.
0 of 5 answered

Proposed measures — starter instruments where no validated one was found

Situational Context Capture Index (Proposed)

proposed · not validated

Rated for your team or hiring process — not a personal self-check.

  1. Every play in the analytics dataset is tagged with game-state variables (e.g., down, distance, field position, score differential, time remaining) before any player evaluation is run.
  2. Play-specific variables outside the player's control (e.g., defensive alignment, pressure faced, blocking quality, weather) are recorded in a documented, consistently applied data schema.
  3. The process lists which situational variables are included in or excluded from player evaluations, and the list is reviewed and updated at least once per season.

Scale: 1–7 (Strongly Disagree → Strongly Agree), rated by an evaluator or the team. Average the items; treat ≤3 as a gap to close in the process.

Observed Performance Recording Index (Proposed)

proposed · not validated

Rated for your team or hiring process — not a personal self-check.

  1. Raw outcomes of each player action (e.g., yards gained, completion, touchdown) are logged for every play using written, standardized definitions.
  2. Observed statistics are audited against an independent source (e.g., official league data or film review), and discrepancies are documented and resolved.
  3. Raw performance outputs are reported as separate fields, kept distinct from adjusted or modeled values, and remain accessible to evaluators.

Scale: 1–7 (Strongly Disagree → Strongly Agree), rated by an evaluator or the team. Average the items; treat ≤3 as a gap to close in the process.

Performance Over Expected Modeling Index (Proposed)

proposed · not validated

Rated for your team or hiring process — not a personal self-check.

  1. The expected-outcome baseline is produced by a documented statistical model that takes situational context variables as inputs.
  2. The baseline model is checked for calibration and predictive accuracy on held-out plays, and the results are available to users.
  3. Each player evaluation reports the difference between actual and expected performance along with a measure of uncertainty or sample size.

Scale: 1–7 (Strongly Disagree → Strongly Agree), rated by an evaluator or the team. Average the items; treat ≤3 as a gap to close in the process.

Sources

  • Football Analytics with Python R — Eric A. EagerRichard A. Erickson · A practical guide to applying statistical modeling and data science techniques using Python and R to analyze American football data for purposes ranging from team analysis to sports betting and fantasy football.

The cheat sheet

Everything, on one page

One key takeaway from each section, with links to read more.

Publication details

Consult the sources listed in this guide for further reading. Edition 1 · Updated 2026-10-03.

Explore related books and profiles in the library.

Take it with you

The main guide above is free to read. This purchase includes 16 additional tools and examples — 4 frameworks, 4 checklists, 4 case studies and 4 templates — plus the full sections and the ebook itself: an epub and a PDF covering all 5 sections. Every format, yours to keep — permanently, including every future update. When this guide is deepened, you get the new edition at no cost.

One payment. The main guide stays free to read.

Get one letter a month: the new guides worth your time, and where the books disagree.

One letter a month from Leading With Data, plus a short welcome. Your address is used for this letter only. Unsubscribe any time.