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

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
238
carrys to trust the number
shrunkrawthe shrink90% CI
-0.2-0.10.00.1avg1J.K. DobbinsBAL · 135+0.042Derrick HenryTEN · 380+0.043Gus EdwardsBAL · 144+0.024Chris CarsonSEA · 141+0.025Nick ChubbCLE · 190+0.016Dalvin CookMIN · 315+0.017Jonathan TaylorIND · 232+0.018Aaron JonesGB · 202+0.019AJ DillonGB · 46-0.0010Alvin KamaraNO · 187-0.0011Damien HarrisNE · 137-0.0112Antonio GibsonWAS · 170-0.0113Ronald JonesTB · 192-0.0114Sony MichelNE · 79-0.0215Latavius MurrayNO · 146-0.0216Jalen RichardLV · 22-0.0217Jamaal WilliamsGB · 121-0.0218Darrell HendersonLA · 138-0.0219Rex BurkheadNE · 67-0.0220Wayne GallmanNYG · 147-0.0221Christian McCaffr…CAR · 59-0.0222Kyle JuszczykSF · 17-0.0223Devontae BookerLV · 93-0.0224James ConnerPIT · 169-0.0225Miles SandersPHI · 168-0.0326Darrel WilliamsKC · 39-0.0327Rodney SmithCAR · 41-0.0328Carlos HydeSEA · 81-0.0329J.J. TaylorNE · 23-0.0330Ty JohnsonNYJ · 54-0.0331Alex CollinsSEA · 18-0.0332Josh AdamsNYJ · 29-0.0433Troymaine PopeLAC · 15-0.04

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

EPA per rush leaderboard for the 2020 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPoscarrysRawShrunk90% interval
1J.K. Dobbins◦ provisionalBALRB135+0.20+0.04-0.03+0.12
2Derrick HenryTENRB380+0.09+0.04-0.02+0.10
3Gus Edwards◦ provisionalBALRB144+0.12+0.02-0.06+0.10
4Chris Carson◦ provisionalSEARB141+0.12+0.02-0.06+0.10
5Nick Chubb◦ provisionalCLERB190+0.09+0.01-0.06+0.09
6Dalvin CookMINRB315+0.05+0.01-0.05+0.08
7Jonathan Taylor◦ provisionalINDRB232+0.06+0.01-0.06+0.08
8Aaron Jones◦ provisionalGBRB202+0.07+0.01-0.07+0.08
9AJ Dillon◦ provisionalGBRB46+0.21-0.00-0.09+0.09
10Alvin Kamara◦ provisionalNORB187+0.05-0.00-0.08+0.07
11Damien Harris◦ provisionalNERB137+0.04-0.01-0.09+0.07
12Antonio Gibson◦ provisionalWASRB170+0.03-0.01-0.09+0.06
13Ronald Jones◦ provisionalTBRB192+0.03-0.01-0.09+0.06
14Sony Michel◦ provisionalNERB79+0.07-0.02-0.10+0.07
15Latavius Murray◦ provisionalNORB146+0.02-0.02-0.10+0.06
16Jalen Richard◦ provisionalLVRB22+0.25-0.02-0.11+0.08
17Jamaal Williams◦ provisionalGBRB121+0.03-0.02-0.10+0.06
18Darrell Henderson◦ provisionalLARB138+0.02-0.02-0.10+0.06
19Rex Burkhead◦ provisionalNERB67+0.06-0.02-0.11+0.07
20Wayne Gallman◦ provisionalNYGRB147+0.02-0.02-0.10+0.06
21Christian McCaffrey◦ provisionalCARRB59+0.07-0.02-0.11+0.07
22Kyle Juszczyk◦ provisionalSFRB17+0.28-0.02-0.12+0.07
23Devontae Booker◦ provisionalLVRB93+0.03-0.02-0.11+0.06
24James Conner◦ provisionalPITRB169+0.01-0.02-0.10+0.05
25Miles Sanders◦ provisionalPHIRB168-0.01-0.03-0.10+0.05
26Darrel Williams◦ provisionalKCRB39+0.06-0.03-0.12+0.06
27Rodney Smith◦ provisionalCARRB41+0.05-0.03-0.12+0.06
28Carlos Hyde◦ provisionalSEARB81+0.01-0.03-0.12+0.05
29J.J. Taylor◦ provisionalNERB23+0.09-0.03-0.13+0.06
30Ty Johnson◦ provisionalNYJRB54+0.02-0.03-0.12+0.06
31Alex Collins◦ provisionalSEARB18+0.11-0.03-0.13+0.06
32Leonard Fournette◦ provisionalTBRB97-0.01-0.03-0.12+0.05
33Alfred Morris◦ provisionalNYGRB55+0.00-0.04-0.12+0.05
34David Johnson◦ provisionalHOURB147-0.02-0.04-0.11+0.04
35Kenyan DrakeARIRB239-0.03-0.04-0.11+0.03
36JaMycal Hasty◦ provisionalSFRB39+0.00-0.04-0.13+0.05
37Josh Adams◦ provisionalNYJRB29+0.01-0.04-0.13+0.06
38Samaje Perine◦ provisionalCINRB63-0.02-0.04-0.13+0.05
39Tony Pollard◦ provisionalDALRB101-0.03-0.04-0.12+0.04
40Troymaine Pope◦ provisionalLACRB15+0.05-0.04-0.13+0.06
41Royce Freeman◦ provisionalDENRB35-0.01-0.04-0.13+0.05
42David MontgomeryCHIRB248-0.04-0.04-0.11+0.03
43Ito Smith◦ provisionalATLRB63-0.03-0.04-0.13+0.05
44Salvon Ahmed◦ provisionalMIARB75-0.04-0.04-0.13+0.04
45Buddy Howell◦ provisionalHOURB16-0.03-0.04-0.14+0.05
46Justin Jackson◦ provisionalLACRB59-0.04-0.04-0.13+0.04
47Kalen Ballage◦ provisionalLACRB91-0.05-0.05-0.13+0.04
48D'Ernest Johnson◦ provisionalCLERB33-0.07-0.05-0.14+0.05
49Ke'Shawn Vaughn◦ provisionalTBRB26-0.07-0.05-0.14+0.05
50D'Andre Swift◦ provisionalDETRB114-0.05-0.05-0.13+0.03
51Clyde Edwards-Helaire◦ provisionalKCRB181-0.05-0.05-0.12+0.03
52Boston Scott◦ provisionalPHIRB80-0.06-0.05-0.13+0.04
53James RobinsonJAXRB241-0.05-0.05-0.12+0.02
54Peyton Barber◦ provisionalWASRB95-0.06-0.05-0.13+0.04
55Corey Clement◦ provisionalPHIRB21-0.12-0.05-0.15+0.04
56D'Onta Foreman◦ provisionalTENRB22-0.12-0.05-0.15+0.04
57Chase Edmonds◦ provisionalARIRB97-0.07-0.05-0.13+0.03
58Zack Moss◦ provisionalBUFRB112-0.07-0.05-0.13+0.03
59J.D. McKissic◦ provisionalWASRB85-0.07-0.05-0.14+0.03
60Mark Ingram◦ provisionalBALRB72-0.08-0.05-0.14+0.03
61Jeff Wilson◦ provisionalSFRB126-0.07-0.05-0.13+0.03
62Matt Breida◦ provisionalMIARB59-0.09-0.05-0.14+0.04
63Alexander Mattison◦ provisionalMINRB96-0.08-0.05-0.14+0.03
64Dion Lewis◦ provisionalNYGRB29-0.13-0.05-0.15+0.04
65Dare Ogunbowale◦ provisionalJAXRB32-0.12-0.05-0.15+0.04
66DeeJay Dallas◦ provisionalSEARB34-0.12-0.05-0.15+0.04
67Adrian Peterson◦ provisionalDETRB156-0.08-0.06-0.13+0.02
68Anthony McFarland◦ provisionalPITRB33-0.15-0.06-0.15+0.04
69Austin Ekeler◦ provisionalLACRB116-0.09-0.06-0.14+0.02
70Melvin Gordon◦ provisionalDENRB215-0.08-0.06-0.13+0.01
71Raheem Mostert◦ provisionalSFRB104-0.10-0.06-0.14+0.02
72Kareem Hunt◦ provisionalCLERB198-0.08-0.06-0.14+0.01
73Jeremy McNichols◦ provisionalTENRB47-0.15-0.06-0.15+0.03
74Devin Singletary◦ provisionalBUFRB156-0.09-0.06-0.14+0.01
75James White◦ provisionalNERB35-0.19-0.06-0.16+0.03
76Nyheim Hines◦ provisionalINDRB90-0.12-0.06-0.15+0.02
77Jordan Howard◦ provisionalPHIRB35-0.20-0.06-0.16+0.03
78Malcolm Brown◦ provisionalLARB101-0.11-0.06-0.15+0.02
79Cordarrelle Patterson◦ provisionalCHIRB64-0.14-0.06-0.15+0.02
80Jerick McKinnon◦ provisionalSFRB81-0.13-0.07-0.15+0.02
81Devonta Freeman◦ provisionalNYGRB54-0.17-0.07-0.16+0.02
82La'Mical Perine◦ provisionalNYJRB64-0.16-0.07-0.16+0.02
83DeAndre Washington◦ provisionalMIARB31-0.25-0.07-0.16+0.03
84Kerryon Johnson◦ provisionalDETRB52-0.19-0.07-0.16+0.02
85Todd Gurley◦ provisionalATLRB195-0.10-0.07-0.14+0.00
86Darwin Thompson◦ provisionalKCRB27-0.30-0.07-0.16+0.02
87Tevin Coleman◦ provisionalSFRB28-0.30-0.07-0.16+0.02
88Saquon Barkley◦ provisionalNYGRB19-0.43-0.07-0.17+0.02
89Brian Hill◦ provisionalATLRB100-0.14-0.07-0.16+0.01
90Mike Davis◦ provisionalCARRB165-0.12-0.07-0.15+0.00
91Travis Homer◦ provisionalSEARB25-0.40-0.08-0.17+0.02
92Ezekiel ElliottDALRB245-0.12-0.08-0.15-0.01
93Le'Veon Bell◦ provisionalKCRB82-0.19-0.08-0.17+0.00
94Phillip Lindsay◦ provisionalDENRB118-0.16-0.08-0.16-0.00
95Giovani Bernard◦ provisionalCINRB124-0.16-0.09-0.17-0.00
96Josh JacobsLVRB273-0.12-0.09-0.15-0.02
97Joe Mixon◦ provisionalCINRB119-0.18-0.09-0.17-0.01
98Myles Gaskin◦ provisionalMIARB142-0.17-0.09-0.17-0.01
99Trayveon Williams◦ provisionalCINRB26-0.56-0.09-0.19-0.00
100Jordan Wilkins◦ provisionalINDRB86-0.25-0.10-0.18-0.01
101Cam Akers◦ provisionalLARB145-0.22-0.11-0.19-0.03
102Duke Johnson◦ provisionalHOURB77-0.33-0.11-0.20-0.03
103Benny Snell◦ provisionalPITRB111-0.27-0.12-0.20-0.03
104Joshua Kelley◦ provisionalLACRB111-0.27-0.12-0.20-0.03
105Frank Gore◦ provisionalNYJRB187-0.22-0.12-0.20-0.05

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