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 target · 2016

Mean EPA per target, shrunk within position.

Beats raw by
24.4%
lower out-of-sample error
RMSE raw → shrunk
0.38 → 0.29
odd vs. even weeks
Split-half reliability
0.13
how repeatable the raw stat is
Stabilizes at
327
targets to trust the number
shrunkrawthe shrink90% CI
0.00.10.20.30.4WR avg1Cole BeasleyDAL · 98+0.312Jordy NelsonGB · 152+0.293Adam ThielenMIN · 92+0.284Julio JonesATL · 130+0.285Doug BaldwinSEA · 126+0.286Brandin CooksNO · 117+0.287Pierre GarconWAS · 114+0.288A.J. GreenCIN · 100+0.279T.Y. HiltonIND · 157+0.2710Mike EvansTB · 175+0.2611Stefon DiggsMIN · 112+0.2612Taylor GabrielATL · 50+0.2613Marvin JonesDET · 103+0.2614Mohamed SanuATL · 82+0.2615Terrance WilliamsDAL · 61+0.2516Chris HoganNE · 58+0.2517Davante AdamsGB · 123+0.2518Steve SmithBAL · 104+0.2519Willie SneadNO · 104+0.2520Malcolm MitchellNE · 48+0.2521Danny AmendolaNE · 29+0.2422Antonio BrownPIT · 157+0.2423Eli RogersPIT · 66+0.2424DeSean JacksonWAS · 100+0.2425Aldrick RobinsonATL · 32+0.2426Geronimo AllisonGB · 22+0.2427Cobi HamiltonPIT · 28+0.2428Kenny BrittLA · 111+0.2329Randall CobbGB · 84+0.2330Justin HardyATL · 31+0.2331Rod StreaterSF · 27+0.2332Russell ShepardTB · 40+0.2333Marquess WilsonCHI · 16+0.2234Chris HarperSF · 21+0.2235Jarius WrightMIN · 14+0.22

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 target · 2016 · full board

EPA per target leaderboard for the 2016 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPostargetsRawShrunk90% interval
1Cole Beasley◦ provisionalDALWR98+0.63+0.31+0.18+0.43
2Jordy Nelson◦ provisionalGBWR152+0.48+0.29+0.17+0.41
3Adam Thielen◦ provisionalMINWR92+0.55+0.28+0.15+0.41
4Julio Jones◦ provisionalATLWR130+0.47+0.28+0.16+0.41
5Doug Baldwin◦ provisionalSEAWR126+0.47+0.28+0.16+0.40
6Brandin Cooks◦ provisionalNOWR117+0.47+0.28+0.15+0.40
7Pierre Garcon◦ provisionalWASWR114+0.47+0.28+0.15+0.40
8A.J. Green◦ provisionalCINWR100+0.49+0.27+0.15+0.40
9T.Y. Hilton◦ provisionalINDWR157+0.38+0.27+0.15+0.39
10Mike Evans◦ provisionalTBWR175+0.37+0.26+0.15+0.38
11Stefon Diggs◦ provisionalMINWR112+0.41+0.26+0.13+0.39
12Taylor Gabriel◦ provisionalATLWR50+0.59+0.26+0.12+0.39
13Marvin Jones◦ provisionalDETWR103+0.42+0.26+0.13+0.39
14Mohamed Sanu◦ provisionalATLWR82+0.44+0.26+0.13+0.39
15Terrance Williams◦ provisionalDALWR61+0.48+0.25+0.12+0.39
16Chris Hogan◦ provisionalNEWR58+0.48+0.25+0.12+0.38
17Davante Adams◦ provisionalGBWR123+0.35+0.25+0.12+0.37
18Steve Smith◦ provisionalBALWR104+0.36+0.25+0.12+0.37
19Willie Snead◦ provisionalNOWR104+0.36+0.25+0.12+0.37
20Malcolm Mitchell◦ provisionalNEWR48+0.50+0.25+0.11+0.38
21Danny Amendola◦ provisionalNEWR29+0.62+0.24+0.10+0.38
22Antonio Brown◦ provisionalPITWR157+0.31+0.24+0.12+0.36
23Eli Rogers◦ provisionalPITWR66+0.39+0.24+0.11+0.37
24DeSean Jackson◦ provisionalWASWR100+0.33+0.24+0.11+0.36
25Aldrick Robinson◦ provisionalATLWR32+0.53+0.24+0.10+0.38
26Geronimo Allison◦ provisionalGBWR22+0.64+0.24+0.10+0.38
27Cobi Hamilton◦ provisionalPITWR28+0.55+0.24+0.10+0.38
28Kenny Britt◦ provisionalLAWR111+0.31+0.23+0.11+0.36
29Randall Cobb◦ provisionalGBWR84+0.32+0.23+0.10+0.36
30Justin Hardy◦ provisionalATLWR31+0.47+0.23+0.09+0.37
31Mike Wallace◦ provisionalBALWR117+0.29+0.23+0.11+0.36
32Jarvis Landry◦ provisionalMIAWR133+0.28+0.23+0.11+0.35
33Rod Streater◦ provisionalSFWR27+0.48+0.23+0.09+0.37
34Jamison Crowder◦ provisionalWASWR99+0.30+0.23+0.10+0.36
35Anquan Boldin◦ provisionalDETWR95+0.30+0.23+0.10+0.36
36Rishard Matthews◦ provisionalTENWR109+0.29+0.23+0.10+0.35
37Brandon LaFell◦ provisionalCINWR107+0.29+0.23+0.10+0.35
38Russell Shepard◦ provisionalTBWR40+0.38+0.23+0.09+0.36
39Michael Crabtree◦ provisionalLVWR147+0.26+0.23+0.10+0.35
40Terrelle Pryor◦ provisionalCLEWR142+0.26+0.23+0.10+0.35
41Dez Bryant◦ provisionalDALWR98+0.28+0.22+0.10+0.35
42Eddie Royal◦ provisionalCHIWR43+0.34+0.22+0.09+0.36
43Julian Edelman◦ provisionalNEWR160+0.25+0.22+0.10+0.34
44Dontrelle Inman◦ provisionalLACWR97+0.27+0.22+0.09+0.35
45Paul Richardson◦ provisionalSEAWR36+0.34+0.22+0.08+0.36
46Robert Woods◦ provisionalBUFWR76+0.28+0.22+0.09+0.35
47Marquess Wilson◦ provisionalCHIWR16+0.46+0.22+0.08+0.36
48Amari Cooper◦ provisionalLVWR135+0.25+0.22+0.10+0.34
49Cameron Meredith◦ provisionalCHIWR97+0.26+0.22+0.09+0.35
50Chris Harper◦ provisionalSFWR21+0.39+0.22+0.08+0.36
51Tyler Lockett◦ provisionalSEAWR66+0.27+0.22+0.09+0.35
52Deonte Thompson◦ provisionalCHIWR36+0.31+0.22+0.08+0.36
53Eric Decker◦ provisionalNYJWR21+0.36+0.22+0.08+0.36
54Bryan Walters◦ provisionalJAXWR34+0.30+0.22+0.08+0.36
55Jarius Wright◦ provisionalMINWR14+0.38+0.22+0.07+0.36
56Odell Beckham Jr.◦ provisionalNYGWR169+0.23+0.21+0.10+0.33
57J.J. Nelson◦ provisionalARIWR75+0.24+0.21+0.08+0.35
58Travis Benjamin◦ provisionalLACWR75+0.24+0.21+0.08+0.35
59Sammy Watkins◦ provisionalBUFWR52+0.25+0.21+0.08+0.35
60Paul Turner◦ provisionalPHIWR14+0.34+0.21+0.07+0.36
61Jordan Taylor◦ provisionalDENWR25+0.28+0.21+0.07+0.35
62Michael Thomas◦ provisionalNOWR121+0.23+0.21+0.09+0.34
63Brandon Coleman◦ provisionalNOWR38+0.25+0.21+0.08+0.35
64Andre Roberts◦ provisionalDETWR25+0.26+0.21+0.07+0.35
65DeMarcus Ayers◦ provisionalPITWR13+0.29+0.21+0.07+0.35
66DeVante Parker◦ provisionalMIAWR87+0.22+0.21+0.08+0.34
67Chris Conley◦ provisionalKCWR69+0.23+0.21+0.08+0.34
68Andrew Hawkins◦ provisionalCLEWR54+0.22+0.21+0.08+0.34
69Kendall Wright◦ provisionalTENWR43+0.22+0.21+0.07+0.35
70Tyreek Hill◦ provisionalKCWR83+0.21+0.21+0.08+0.34
71Larry Fitzgerald◦ provisionalARIWR150+0.20+0.21+0.09+0.33
72Sterling Shepard◦ provisionalNYGWR105+0.20+0.21+0.08+0.33
73Justin Hunter◦ provisionalBUFWR24+0.18+0.21+0.07+0.35
74Kamar Aiken◦ provisionalBALWR50+0.18+0.21+0.07+0.34
75Donte Moncrief◦ provisionalINDWR56+0.18+0.21+0.07+0.34
76Cody Latimer◦ provisionalDENWR15+0.12+0.20+0.06+0.35
77Josh Bellamy◦ provisionalCHIWR38+0.17+0.20+0.07+0.34
78Adam Humphries◦ provisionalTBWR84+0.18+0.20+0.07+0.33
79Kelvin Benjamin◦ provisionalCARWR118+0.19+0.20+0.08+0.33
80Golden Tate◦ provisionalDETWR136+0.18+0.20+0.08+0.32
81Victor Cruz◦ provisionalNYGWR72+0.17+0.20+0.07+0.33
82Ted Ginn◦ provisionalCARWR95+0.17+0.20+0.07+0.33
83Keith Mumphery◦ provisionalHOUWR12-0.02+0.20+0.06+0.34
84Andre Holmes◦ provisionalLVWR25+0.09+0.20+0.06+0.34
85Jeff Janis◦ provisionalGBWR19+0.05+0.20+0.06+0.34
86Kenny Stills◦ provisionalMIAWR81+0.16+0.20+0.07+0.33
87Bennie Fowler◦ provisionalDENWR24+0.07+0.20+0.06+0.34
88Dorial Green-Beckham◦ provisionalPHIWR74+0.16+0.20+0.07+0.33
89Demaryius Thomas◦ provisionalDENWR145+0.18+0.20+0.08+0.32
90Jaron Brown◦ provisionalARIWR23+0.06+0.20+0.06+0.34
91Tyrell Williams◦ provisionalLACWR119+0.17+0.20+0.07+0.32
92Maurice Harris◦ provisionalWASWR12-0.08+0.20+0.06+0.34
93James Wright◦ provisionalCINWR19+0.02+0.20+0.06+0.34
94Devin Funchess◦ provisionalCARWR59+0.14+0.20+0.06+0.33
95Brice Butler◦ provisionalDALWR32+0.07+0.20+0.06+0.34
96Brittan Golden◦ provisionalARIWR14-0.09+0.20+0.05+0.34
97Sammie Coates◦ provisionalPITWR49+0.11+0.20+0.06+0.33
98Cody Core◦ provisionalCINWR27+0.04+0.20+0.06+0.34
99Walt Powell◦ provisionalBUFWR25+0.03+0.20+0.06+0.34
100Aaron Burbridge◦ provisionalSFWR16-0.07+0.20+0.05+0.34
101Marqise Lee◦ provisionalJAXWR105+0.15+0.19+0.07+0.32
102T.J. Jones◦ provisionalDETWR15-0.13+0.19+0.05+0.34
103Josh Huff◦ provisionalTBWR23-0.02+0.19+0.05+0.33
104Rashard Higgins◦ provisionalCLEWR12-0.24+0.19+0.05+0.34
105Ricardo Louis◦ provisionalCLEWR36+0.05+0.19+0.06+0.33
106Ryan Grant◦ provisionalWASWR19-0.09+0.19+0.05+0.33
107Cecil Shorts◦ provisionalTBWR27-0.01+0.19+0.05+0.33
108Chester Rogers◦ provisionalINDWR34+0.03+0.19+0.05+0.33
109Bryce Treggs◦ provisionalPHIWR12-0.29+0.19+0.05+0.33
110Charles D. Johnson◦ provisionalMINWR37+0.03+0.19+0.05+0.33
111Phillip Dorsett◦ provisionalINDWR59+0.09+0.19+0.06+0.32
112Emmanuel Sanders◦ provisionalDENWR137+0.15+0.19+0.07+0.31
113Harry Douglas◦ provisionalTENWR22-0.10+0.19+0.05+0.33
114Andre Johnson◦ provisionalTENWR23-0.09+0.19+0.05+0.33
115Darrius Heyward-Bey◦ provisionalPITWR19-0.15+0.19+0.05+0.33
116Michael Floyd◦ provisionalNEWR77+0.09+0.19+0.06+0.32
117Ty Montgomery◦ provisionalGBWR56+0.05+0.19+0.05+0.32
118Charone Peake◦ provisionalNYJWR35-0.03+0.19+0.05+0.32
119Brian Quick◦ provisionalLAWR77+0.08+0.18+0.05+0.32
120Will Fuller◦ provisionalHOUWR92+0.09+0.18+0.05+0.31
121Quinton Patton◦ provisionalSFWR63+0.04+0.18+0.05+0.31
122Chris Moore◦ provisionalBALWR16-0.39+0.18+0.04+0.32
123Tajae Sharpe◦ provisionalTENWR83+0.07+0.18+0.05+0.31
124Tyler Boyd◦ provisionalCINWR81+0.07+0.18+0.05+0.31
125Jeremy Maclin◦ provisionalKCWR76+0.05+0.18+0.05+0.31
126Jalin Marshall◦ provisionalNYJWR23-0.24+0.18+0.04+0.32
127Corey Coleman◦ provisionalCLEWR73+0.04+0.18+0.05+0.31
128Marquise Goodwin◦ provisionalBUFWR68+0.03+0.18+0.05+0.31
129Roger Lewis◦ provisionalNYGWR19-0.39+0.18+0.03+0.32
130Jaelen Strong◦ provisionalHOUWR24-0.28+0.18+0.04+0.32
131Seth Roberts◦ provisionalLVWR79+0.03+0.17+0.04+0.30
132Quincy Enunwa◦ provisionalNYJWR105+0.05+0.17+0.04+0.30
133Vincent Jackson◦ provisionalTBWR34-0.21+0.17+0.03+0.31
134Jordan Norwood◦ provisionalDENWR35-0.21+0.17+0.03+0.31
135Corey Brown◦ provisionalCARWR54-0.08+0.17+0.03+0.30
136John Brown◦ provisionalARIWR73-0.03+0.17+0.03+0.30
137Breshad Perriman◦ provisionalBALWR66-0.06+0.16+0.03+0.30
138Albert Wilson◦ provisionalKCWR51-0.13+0.16+0.03+0.30
139Nelson Agholor◦ provisionalPHIWR70-0.06+0.16+0.03+0.29
140Braxton Miller◦ provisionalHOUWR28-0.39+0.16+0.02+0.30
141Kevin White◦ provisionalCHIWR36-0.28+0.16+0.02+0.30
142Alshon Jeffery◦ provisionalCHIWR94-0.04+0.15+0.03+0.28
143Brandon Marshall◦ provisionalNYJWR128-0.00+0.15+0.03+0.27
144Robbie Chosen◦ provisionalNYJWR78-0.11+0.15+0.02+0.28
145Torrey Smith◦ provisionalSFWR49-0.29+0.14+0.01+0.28
146Pharoh Cooper◦ provisionalLAWR20-0.98+0.14-0.00+0.28
147Allen Hurns◦ provisionalJAXWR76-0.16+0.14+0.01+0.27
148DeAndre Hopkins◦ provisionalHOUWR151-0.01+0.14+0.02+0.26
149Jermaine Kearse◦ provisionalSEAWR89-0.22+0.12-0.01+0.25
150Allen Robinson◦ provisionalJAXWR152-0.10+0.11-0.01+0.23
151Jeremy Kerley◦ provisionalSFWR115-0.20+0.10-0.02+0.23
152Tavon Austin◦ provisionalLAWR106-0.36+0.07-0.06+0.20

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