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 · 2019

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
859
carrys to trust the number
shrunkrawthe shrink90% CI
-0.1-0.1-0.10.0avg1Mark IngramBAL · 204-0.052Dalvin CookMIN · 250-0.063Marlon MackIND · 248-0.064Gus EdwardsBAL · 133-0.065Raheem MostertSF · 137-0.066Derrick HenryTEN · 303-0.067Ezekiel ElliottDAL · 301-0.078Aaron JonesGB · 236-0.079Kenyan DrakeARI · 170-0.0710Devin SingletaryBUF · 151-0.0711Jordan WilkinsIND · 51-0.0712Rashaad PennySEA · 65-0.0713Jordan HowardPHI · 119-0.0714Josh JacobsLV · 242-0.0715Justin JacksonLAC · 29-0.0716Chase EdmondsARI · 60-0.0717Christian McCaffr…CAR · 288-0.0718Latavius MurrayNO · 146-0.0719Jonathan WilliamsIND · 49-0.0720Derrius GuiceWAS · 42-0.0721Rex BurkheadNE · 65-0.0722Tony PollardDAL · 87-0.0823Phillip LindsayDEN · 225-0.0824Ito SmithATL · 22-0.0825Carlos HydeHOU · 245-0.0826Mike BooneMIN · 49-0.0827Nyheim HinesIND · 52-0.0828Travis HomerSEA · 18-0.0829Brandon BoldenNE · 15-0.0830Reggie BonnafonCAR · 16-0.0831Jeff WilsonSF · 27-0.0832Kerrith WhytePIT · 24-0.0833Qadree OllisonATL · 22-0.0834Cordarrelle Patte…CHI · 17-0.08

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 · 2019 · full board

EPA per rush leaderboard for the 2019 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPoscarrysRawShrunk90% interval
1Mark Ingram◦ provisionalBALRB204+0.08-0.05-0.10-0.00
2Dalvin Cook◦ provisionalMINRB250+0.02-0.06-0.10-0.01
3Marlon Mack◦ provisionalINDRB248+0.01-0.06-0.11-0.02
4Gus Edwards◦ provisionalBALRB133+0.06-0.06-0.11-0.01
5Raheem Mostert◦ provisionalSFRB137+0.05-0.06-0.11-0.02
6Derrick Henry◦ provisionalTENRB303-0.01-0.06-0.11-0.02
7Ezekiel Elliott◦ provisionalDALRB301-0.02-0.07-0.11-0.02
8Aaron Jones◦ provisionalGBRB236-0.01-0.07-0.11-0.02
9Kenyan Drake◦ provisionalARIRB170+0.01-0.07-0.11-0.02
10Devin Singletary◦ provisionalBUFRB151+0.02-0.07-0.11-0.02
11Jordan Wilkins◦ provisionalINDRB51+0.14-0.07-0.12-0.02
12Rashaad Penny◦ provisionalSEARB65+0.07-0.07-0.12-0.02
13Jordan Howard◦ provisionalPHIRB119-0.00-0.07-0.12-0.02
14Josh Jacobs◦ provisionalLVRB242-0.04-0.07-0.12-0.03
15Justin Jackson◦ provisionalLACRB29+0.18-0.07-0.12-0.02
16Chase Edmonds◦ provisionalARIRB60+0.04-0.07-0.12-0.02
17Christian McCaffrey◦ provisionalCARRB288-0.05-0.07-0.12-0.03
18Latavius Murray◦ provisionalNORB146-0.03-0.07-0.12-0.03
19Jonathan Williams◦ provisionalINDRB49+0.05-0.07-0.13-0.02
20Derrius Guice◦ provisionalWASRB42+0.07-0.07-0.13-0.02
21Rex Burkhead◦ provisionalNERB65+0.02-0.07-0.12-0.02
22Tony Pollard◦ provisionalDALRB87-0.01-0.08-0.12-0.03
23Phillip Lindsay◦ provisionalDENRB225-0.05-0.08-0.12-0.03
24Ito Smith◦ provisionalATLRB22+0.16-0.08-0.13-0.02
25Carlos Hyde◦ provisionalHOURB245-0.06-0.08-0.12-0.03
26Mike Boone◦ provisionalMINRB49+0.02-0.08-0.13-0.03
27Nyheim Hines◦ provisionalINDRB52+0.01-0.08-0.13-0.03
28Travis Homer◦ provisionalSEARB18+0.17-0.08-0.13-0.03
29Brandon Bolden◦ provisionalNERB15+0.22-0.08-0.13-0.03
30Reggie Bonnafon◦ provisionalCARRB16+0.15-0.08-0.13-0.03
31Jeff Wilson◦ provisionalSFRB27+0.04-0.08-0.13-0.03
32Kerrith Whyte◦ provisionalPITRB24+0.04-0.08-0.13-0.03
33Leonard Fournette◦ provisionalJAXRB266-0.07-0.08-0.12-0.03
34Jamaal Williams◦ provisionalGBRB107-0.06-0.08-0.13-0.03
35LeSean McCoy◦ provisionalKCRB101-0.06-0.08-0.13-0.03
36Qadree Ollison◦ provisionalATLRB22+0.01-0.08-0.13-0.03
37Cordarrelle Patterson◦ provisionalCHIRB17+0.02-0.08-0.13-0.03
38Nick Chubb◦ provisionalCLERB298-0.08-0.08-0.13-0.04
39Boston Scott◦ provisionalPHIRB61-0.07-0.08-0.13-0.03
40Darwin Thompson◦ provisionalKCRB37-0.06-0.08-0.13-0.03
41Miles Sanders◦ provisionalPHIRB180-0.08-0.08-0.13-0.03
42Joe Mixon◦ provisionalCINRB278-0.08-0.08-0.13-0.04
43Austin Ekeler◦ provisionalLACRB132-0.08-0.08-0.13-0.03
44Myles Gaskin◦ provisionalMIARB36-0.07-0.08-0.13-0.03
45Spencer Ware◦ provisionalKCRB17-0.07-0.08-0.13-0.03
46J.D. McKissic◦ provisionalDETRB38-0.08-0.08-0.13-0.03
47Brian Hill◦ provisionalATLRB78-0.09-0.08-0.13-0.03
48Saquon Barkley◦ provisionalNYGRB217-0.09-0.08-0.13-0.04
49Matt Breida◦ provisionalSFRB123-0.09-0.08-0.13-0.03
50Justice Hill◦ provisionalBALRB58-0.10-0.08-0.13-0.03
51Ameer Abdullah◦ provisionalMINRB23-0.16-0.08-0.13-0.03
52Chris Carson◦ provisionalSEARB278-0.09-0.08-0.13-0.04
53Darren Sproles◦ provisionalPHIRB18-0.21-0.08-0.14-0.03
54Kareem Hunt◦ provisionalCLERB43-0.14-0.08-0.14-0.03
55Melvin Gordon◦ provisionalLACRB162-0.10-0.08-0.13-0.04
56Sony Michel◦ provisionalNERB247-0.10-0.08-0.13-0.04
57Tarik Cohen◦ provisionalCHIRB64-0.13-0.09-0.14-0.04
58Ty Johnson◦ provisionalDETRB63-0.13-0.09-0.14-0.04
59Mark Walton◦ provisionalMIARB53-0.15-0.09-0.14-0.04
60Tevin Coleman◦ provisionalSFRB137-0.11-0.09-0.13-0.04
61T.J. Yeldon◦ provisionalBUFRB17-0.30-0.09-0.14-0.03
62Benny Snell◦ provisionalPITRB108-0.12-0.09-0.13-0.04
63Chris Thompson◦ provisionalWASRB37-0.20-0.09-0.14-0.04
64Damien Williams◦ provisionalKCRB111-0.12-0.09-0.14-0.04
65Alexander Mattison◦ provisionalMINRB100-0.13-0.09-0.14-0.04
66Malcolm Brown◦ provisionalLARB69-0.15-0.09-0.14-0.04
67Elijhaa Penny◦ provisionalNYGRB15-0.38-0.09-0.14-0.04
68Jalen Richard◦ provisionalLVRB39-0.20-0.09-0.14-0.04
69Alvin Kamara◦ provisionalNORB171-0.11-0.09-0.13-0.04
70Duke Johnson◦ provisionalHOURB83-0.14-0.09-0.14-0.04
71Bilal Powell◦ provisionalNYJRB59-0.17-0.09-0.14-0.04
72Tra Carson◦ provisionalDETRB18-0.35-0.09-0.14-0.04
73Trey Edmunds◦ provisionalPITRB22-0.30-0.09-0.14-0.04
74Bo Scarbrough◦ provisionalDETRB89-0.15-0.09-0.14-0.04
75C.J. Anderson◦ provisionalDETRB16-0.44-0.09-0.14-0.04
76David Johnson◦ provisionalARIRB94-0.15-0.09-0.14-0.04
77Wayne Gallman◦ provisionalNYGRB29-0.28-0.09-0.14-0.04
78Royce Freeman◦ provisionalDENRB132-0.13-0.09-0.14-0.04
79Wendell Smallwood◦ provisionalWASRB22-0.35-0.09-0.14-0.04
80Ryquell Armstead◦ provisionalJAXRB35-0.26-0.09-0.14-0.04
81Darrell Henderson◦ provisionalLARB39-0.25-0.09-0.14-0.04
82Darrel Williams◦ provisionalKCRB41-0.25-0.09-0.14-0.04
83Adrian Peterson◦ provisionalWASRB211-0.12-0.09-0.14-0.04
84C.J. Prosise◦ provisionalSEARB24-0.37-0.09-0.14-0.04
85DeAndre Washington◦ provisionalLVRB108-0.15-0.09-0.14-0.04
86Todd Gurley◦ provisionalLARB224-0.12-0.09-0.14-0.04
87Jon Hilliman◦ provisionalNYGRB30-0.34-0.09-0.14-0.04
88Dion Lewis◦ provisionalTENRB54-0.25-0.09-0.14-0.04
89Ronald Jones◦ provisionalTBRB172-0.14-0.09-0.14-0.04
90Jaylen Samuels◦ provisionalPITRB66-0.23-0.09-0.14-0.04
91James White◦ provisionalNERB69-0.23-0.09-0.14-0.04
92Kerryon Johnson◦ provisionalDETRB113-0.18-0.09-0.14-0.04
93Giovani Bernard◦ provisionalCINRB53-0.29-0.09-0.14-0.04
94James Conner◦ provisionalPITRB116-0.21-0.10-0.15-0.05
95Kalen Ballage◦ provisionalMIARB73-0.28-0.10-0.15-0.05
96Patrick Laird◦ provisionalMIARB62-0.35-0.10-0.15-0.05
97Frank Gore◦ provisionalBUFRB166-0.20-0.10-0.15-0.05
98David Montgomery◦ provisionalCHIRB242-0.17-0.10-0.15-0.06
99Peyton Barber◦ provisionalTBRB155-0.21-0.10-0.15-0.05
100Le'Veon Bell◦ provisionalNYJRB245-0.19-0.11-0.15-0.06
101Devonta Freeman◦ provisionalATLRB184-0.22-0.11-0.15-0.06

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).