NFL · Empirical Bayes

True-Talent Leaderboards

A raw single-season rate is a noisy guess at a player’s real ability, and the noise is worst for the smallest samples — so a naïve leaderboard is topped by whoever got lucky in the fewest tries. This one shrinks every rate toward its position-group prior by how much the sample can be trusted, and shows a 90% credible interval instead of a point. Toggle raw vs. shrunk to watch the flukes fall back to the pack.

EPA per rush · 2023

Mean EPA per carry. Blocking & scheme are large, un-controlled inputs.

Beats raw by
21.1%
lower out-of-sample error
RMSE raw → shrunk
0.16 → 0.13
odd vs. even weeks
Split-half reliability
0.17
how repeatable the raw stat is
Stabilizes at
143
carrys to trust the number
shrunkrawthe shrink90% CI
-0.2-0.10.00.10.2avg1De'Von AchaneMIA · 103+0.092Kyren WilliamsLA · 229+0.033Keaton MitchellBAL · 47+0.034Raheem MostertMIA · 209+0.025Christian McCaffr…SF · 272+0.016James ConnerARI · 210+0.007David MontgomeryDET · 220+0.008Jaleel McLaughlinDEN · 76-0.029D'Andre SwiftPHI · 229-0.0310Jordan MasonSF · 40-0.0311Aaron JonesGB · 142-0.0312Derrick HenryTEN · 280-0.0313Alvin KamaraNO · 182-0.0414Nick ChubbCLE · 28-0.0415Ty ChandlerMIN · 102-0.0416Isiah PachecoKC · 206-0.0517Justice HillBAL · 84-0.0518Khalil HerbertCHI · 133-0.0519Michael CarterARI · 30-0.0520James CookBUF · 237-0.0521Tyjae SpearsTEN · 100-0.0522Jahmyr GibbsDET · 182-0.0523Jaylen WarrenPIT · 149-0.0524Ameer AbdullahLV · 15-0.0625Damien HarrisBUF · 23-0.0626Tony JonesARI · 26-0.0627Kenneth Walker IIISEA · 219-0.0628Kareem HuntCLE · 135-0.0629Darrynton EvansMIA · 32-0.0630D'Onta ForemanCHI · 109-0.0631Jeff WilsonMIA · 41-0.0732Jerick McKinnonKC · 21-0.0733Ty JohnsonBUF · 30-0.0734Salvon AhmedMIA · 22-0.07

Each row is a player: the solid dot is the shrunk estimate, the hollow dot the raw rate, joined by the red pull of regression; the grey bar is the 90% credible interval. A hollow shrunk dot means the sample is below the stabilization line — the number is mostly the position prior. Switch to Raw rank and watch the small-sample names climb.

EPA per rush · 2023 · full board

EPA per rush leaderboard for the 2023 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPoscarrysRawShrunk90% interval
1De'Von Achane◦ provisionalMIARB103+0.32+0.09-0.00+0.18
2Kyren WilliamsLARB229+0.10+0.03-0.04+0.11
3Keaton Mitchell◦ provisionalBALRB47+0.37+0.03-0.07+0.14
4Raheem MostertMIARB209+0.08+0.02-0.06+0.10
5Christian McCaffreySFRB272+0.05+0.01-0.06+0.08
6James ConnerARIRB210+0.06+0.00-0.08+0.08
7David MontgomeryDETRB220+0.05+0.00-0.08+0.08
8Jaleel McLaughlin◦ provisionalDENRB76+0.08-0.02-0.12+0.07
9D'Andre SwiftPHIRB229+0.01-0.03-0.10+0.05
10Jordan Mason◦ provisionalSFRB40+0.14-0.03-0.14+0.08
11Aaron Jones◦ provisionalGBRB142+0.02-0.03-0.12+0.06
12Derrick HenryTENRB280-0.01-0.03-0.10+0.04
13Alvin KamaraNORB182-0.01-0.04-0.12+0.04
14Nick Chubb◦ provisionalCLERB28+0.15-0.04-0.15+0.07
15Ty Chandler◦ provisionalMINRB102+0.01-0.04-0.14+0.05
16Isiah PachecoKCRB206-0.02-0.05-0.12+0.03
17Justice Hill◦ provisionalBALRB84+0.01-0.05-0.14+0.05
18Khalil Herbert◦ provisionalCHIRB133-0.01-0.05-0.14+0.04
19Michael Carter◦ provisionalARIRB30+0.10-0.05-0.16+0.06
20James CookBUFRB237-0.03-0.05-0.12+0.03
21Tyjae Spears◦ provisionalTENRB100-0.01-0.05-0.14+0.04
22Jahmyr GibbsDETRB182-0.03-0.05-0.13+0.03
23Jaylen WarrenPITRB149-0.03-0.05-0.14+0.03
24Ameer Abdullah◦ provisionalLVRB15+0.17-0.06-0.17+0.06
25Damien Harris◦ provisionalBUFRB23+0.09-0.06-0.17+0.06
26Tony Jones◦ provisionalARIRB26+0.06-0.06-0.17+0.06
27Kenneth Walker IIISEARB219-0.04-0.06-0.13+0.02
28Kareem Hunt◦ provisionalCLERB135-0.04-0.06-0.15+0.03
29Darrynton Evans◦ provisionalMIARB32+0.02-0.06-0.17+0.05
30D'Onta Foreman◦ provisionalCHIRB109-0.04-0.06-0.15+0.03
31Latavius Murray◦ provisionalBUFRB79-0.03-0.06-0.16+0.04
32Jeff Wilson◦ provisionalMIARB41-0.02-0.07-0.17+0.04
33Gus EdwardsBALRB199-0.06-0.07-0.15+0.01
34Jonathan TaylorINDRB169-0.06-0.07-0.15+0.01
35Jerick McKinnon◦ provisionalKCRB21-0.00-0.07-0.18+0.05
36Ty Johnson◦ provisionalBUFRB30-0.02-0.07-0.18+0.04
37Trey Sermon◦ provisionalINDRB35-0.03-0.07-0.18+0.04
38Salvon Ahmed◦ provisionalMIARB22-0.01-0.07-0.18+0.04
39Tony PollardDALRB253-0.07-0.07-0.14+0.00
40Rico Dowdle◦ provisionalDALRB89-0.06-0.07-0.17+0.03
41Joe MixonCINRB257-0.07-0.07-0.15+0.00
42Zach Charbonnet◦ provisionalSEARB108-0.07-0.07-0.17+0.02
43Chris Rodriguez Jr.◦ provisionalWASRB51-0.07-0.08-0.18+0.03
44Devin SingletaryHOURB216-0.08-0.08-0.16-0.00
45Zack MossINDRB183-0.08-0.08-0.16+0.00
46Kendre Miller◦ provisionalNORB41-0.08-0.08-0.19+0.03
47Cam Akers◦ provisionalMINRB60-0.08-0.08-0.18+0.02
48Roschon Johnson◦ provisionalCHIRB81-0.08-0.08-0.18+0.02
49Rhamondre StevensonNERB156-0.08-0.08-0.17+0.00
50Royce Freeman◦ provisionalLARB77-0.08-0.08-0.18+0.02
51Emari Demercado◦ provisionalARIRB58-0.09-0.08-0.19+0.02
52La'Mical Perine◦ provisionalKCRB22-0.11-0.08-0.20+0.03
53Patrick Taylor◦ provisionalGBRB32-0.10-0.08-0.19+0.03
54Trayveon Williams◦ provisionalCINRB15-0.14-0.08-0.20+0.03
55Kevin Harris◦ provisionalNERB16-0.14-0.09-0.20+0.03
56Craig Reynolds◦ provisionalDETRB41-0.11-0.09-0.19+0.02
57Chuba HubbardCARRB238-0.09-0.09-0.16-0.01
58Israel Abanikanda◦ provisionalNYJRB22-0.13-0.09-0.20+0.03
59Antonio Gibson◦ provisionalWASRB65-0.10-0.09-0.19+0.02
60Breece HallNYJRB224-0.09-0.09-0.16-0.01
61Boston Scott◦ provisionalPHIRB20-0.16-0.09-0.20+0.03
62Ronnie Rivers◦ provisionalLARB32-0.14-0.09-0.20+0.02
63Chris Brooks◦ provisionalMIARB19-0.18-0.09-0.21+0.02
64Chase Edmonds◦ provisionalTBRB49-0.13-0.09-0.20+0.01
65Najee HarrisPITRB256-0.10-0.09-0.17-0.02
66Raheem Blackshear◦ provisionalCARRB15-0.23-0.09-0.21+0.02
67Cordarrelle Patterson◦ provisionalATLRB50-0.16-0.10-0.21+0.01
68Kenneth Gainwell◦ provisionalPHIRB85-0.14-0.10-0.20-0.00
69Brian RobinsonWASRB179-0.12-0.10-0.18-0.02
70Tyler AllgeierATLRB187-0.12-0.10-0.18-0.02
71Elijah Mitchell◦ provisionalSFRB75-0.15-0.10-0.20-0.00
72Samaje Perine◦ provisionalDENRB53-0.18-0.11-0.21-0.00
73Bijan RobinsonATLRB214-0.12-0.11-0.18-0.03
74Travis EtienneJAXRB269-0.12-0.11-0.18-0.03
75Pierre Strong◦ provisionalCLERB64-0.17-0.11-0.21-0.00
76AJ DillonGBRB178-0.13-0.11-0.19-0.03
77Chase Brown◦ provisionalCINRB44-0.20-0.11-0.22-0.00
78Melvin Gordon◦ provisionalBALRB26-0.27-0.11-0.22+0.00
79Sean Tucker◦ provisionalTBRB15-0.41-0.11-0.23+0.01
80Zamir White◦ provisionalLVRB104-0.17-0.12-0.21-0.02
81Ezekiel ElliottNERB184-0.15-0.12-0.20-0.04
82Eric Gray◦ provisionalNYGRB17-0.46-0.12-0.24-0.00
83Darrell Henderson◦ provisionalLARB46-0.26-0.12-0.23-0.02
84Tank Bigsby◦ provisionalJAXRB50-0.25-0.12-0.23-0.02
85Clyde Edwards-Helaire◦ provisionalKCRB70-0.21-0.12-0.22-0.02
86Matt Breida◦ provisionalNYGRB55-0.25-0.13-0.23-0.02
87Keaontay Ingram◦ provisionalARIRB35-0.32-0.13-0.24-0.02
88Alexander MattisonMINRB180-0.18-0.13-0.21-0.05
89D'Ernest Johnson◦ provisionalJAXRB41-0.32-0.13-0.24-0.03
90Ke'Shawn Vaughn◦ provisionalTBRB24-0.46-0.13-0.25-0.02
91Javonte WilliamsDENRB219-0.17-0.14-0.21-0.06
92Rachaad WhiteTBRB272-0.17-0.14-0.21-0.06
93Jerome FordCLERB206-0.18-0.14-0.21-0.06
94Isaiah Spiller◦ provisionalLACRB37-0.39-0.14-0.25-0.03
95Deuce Vaughn◦ provisionalDALRB23-0.56-0.15-0.26-0.03
96Josh JacobsLVRB233-0.19-0.15-0.22-0.07
97Joshua Kelley◦ provisionalLACRB107-0.24-0.15-0.24-0.06
98Jamaal Williams◦ provisionalNORB106-0.25-0.15-0.24-0.06
99Miles Sanders◦ provisionalCARRB129-0.24-0.15-0.24-0.06
100Saquon BarkleyNYGRB248-0.20-0.15-0.23-0.08
101Austin EkelerLACRB179-0.23-0.16-0.24-0.08
102Dalvin Cook◦ provisionalNYJRB67-0.37-0.17-0.27-0.07
103Dameon PierceHOURB145-0.28-0.18-0.27-0.09

How the shrinkage works

Two estimators

Rate stats (completion %, success rate, catch rate) use a beta-binomial model: a Beta(α, β) prior fit by marginal likelihood over each position group, then a Beta posterior per player. Per-play averages (EPA, CPOE, yards) use a normal-normal model with DerSimonian–Laird between-player variance. Both pull each player toward their group by exactly how thin their sample is.

Does it help? & the fine print

The trust panel’s numbers come from a leakage-free odd/even-week holdout: fit on odd weeks, predict even-week raw. Shrinkage lowers out-of-sample error for every stat. Priors are fit per season and per position (WR and TE separately), so a TE’s baseline isn’t a skill. Regular season only, 2016–2025. Rushing and receiving efficiency are heavily scheme-driven — read the wide bands as the honesty they are.

Source: nflverse play-by-play. Counted and computed deterministically — never modeled by a language model. Built by build_nfl_leaderboards.py (byte-reproducible).