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

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
201
targets to trust the number
shrunkrawthe shrink90% CI
0.00.20.4WR avg1JuJu Smith-Schust…PIT · 79+0.312Marvin JonesDET · 108+0.303Tyreek HillKC · 105+0.294Michael ThomasNO · 149+0.285Stefon DiggsMIN · 95+0.286Davante AdamsGB · 118+0.277Robert WoodsLA · 85+0.278Keenan AllenLAC · 159+0.279Julio JonesATL · 148+0.2610Danny AmendolaNE · 86+0.2611Cooper KuppLA · 94+0.2512Nelson AgholorPHI · 95+0.2513Doug BaldwinSEA · 117+0.2514Sammy WatkinsLA · 70+0.2415Brandin CooksNE · 115+0.2416Ted GinnNO · 70+0.2317Brice ButlerDAL · 24+0.2318Ryan GrantWAS · 65+0.2219Chris Godwin Jr.TB · 55+0.2220Sterling ShepardNYG · 84+0.2221Tyrell WilliamsLAC · 69+0.2222Albert WilsonKC · 62+0.2223Justin HardyATL · 29+0.2224Adam HumphriesTB · 83+0.2225Jeremy KerleyNYJ · 27+0.2226Paul RichardsonSEA · 81+0.2227Adam ThielenMIN · 142+0.2228Chris ConleyKC · 16+0.2229Devin FunchessCAR · 112+0.2230Allen HurnsJAX · 57+0.2131T.J. JonesDET · 50+0.2132Alex EricksonCIN · 16+0.2133Mack HollinsPHI · 22+0.2134Jarius WrightMIN · 25+0.2035Cody LatimerDEN · 32+0.2036Andre HolmesBUF · 23+0.1937Phillip DorsettNE · 18+0.19

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

EPA per target leaderboard for the 2017 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPostargetsRawShrunk90% interval
1JuJu Smith-Schuster◦ provisionalPITWR79+0.67+0.31+0.15+0.47
2Marvin Jones◦ provisionalDETWR108+0.54+0.30+0.14+0.45
3Tyreek Hill◦ provisionalKCWR105+0.53+0.29+0.14+0.45
4Michael Thomas◦ provisionalNOWR149+0.42+0.28+0.13+0.42
5Stefon Diggs◦ provisionalMINWR95+0.50+0.28+0.12+0.43
6Davante Adams◦ provisionalGBWR118+0.44+0.27+0.12+0.42
7Robert Woods◦ provisionalLAWR85+0.50+0.27+0.11+0.43
8Keenan Allen◦ provisionalLACWR159+0.39+0.27+0.12+0.41
9Julio Jones◦ provisionalATLWR148+0.39+0.26+0.12+0.41
10Danny Amendola◦ provisionalNEWR86+0.47+0.26+0.10+0.42
11Cooper Kupp◦ provisionalLAWR94+0.44+0.25+0.10+0.41
12Nelson Agholor◦ provisionalPHIWR95+0.41+0.25+0.09+0.41
13Doug Baldwin◦ provisionalSEAWR117+0.38+0.25+0.09+0.40
14Sammy Watkins◦ provisionalLAWR70+0.43+0.24+0.07+0.40
15Brandin Cooks◦ provisionalNEWR115+0.35+0.24+0.08+0.39
16Ted Ginn◦ provisionalNOWR70+0.40+0.23+0.07+0.39
17Brice Butler◦ provisionalDALWR24+0.73+0.23+0.05+0.41
18Ryan Grant◦ provisionalWASWR65+0.39+0.22+0.06+0.39
19Chris Godwin Jr.◦ provisionalTBWR55+0.42+0.22+0.06+0.39
20Sterling Shepard◦ provisionalNYGWR84+0.35+0.22+0.06+0.39
21Tyrell Williams◦ provisionalLACWR69+0.38+0.22+0.06+0.39
22Albert Wilson◦ provisionalKCWR62+0.39+0.22+0.06+0.39
23Justin Hardy◦ provisionalATLWR29+0.58+0.22+0.04+0.40
24Adam Humphries◦ provisionalTBWR83+0.34+0.22+0.06+0.38
25Jeremy Kerley◦ provisionalNYJWR27+0.59+0.22+0.04+0.40
26Paul Richardson◦ provisionalSEAWR81+0.34+0.22+0.06+0.38
27Adam Thielen◦ provisionalMINWR142+0.29+0.22+0.07+0.37
28Chris Conley◦ provisionalKCWR16+0.79+0.22+0.03+0.40
29Devin Funchess◦ provisionalCARWR112+0.30+0.22+0.06+0.37
30Allen Hurns◦ provisionalJAXWR57+0.37+0.21+0.05+0.38
31Marquise Goodwin◦ provisionalSFWR105+0.29+0.21+0.06+0.37
32Antonio Brown◦ provisionalPITWR165+0.26+0.21+0.07+0.35
33T.J. Jones◦ provisionalDETWR50+0.37+0.21+0.04+0.38
34Donte Moncrief◦ provisionalINDWR47+0.37+0.21+0.04+0.38
35Alex Erickson◦ provisionalCINWR16+0.67+0.21+0.02+0.39
36Mack Hollins◦ provisionalPHIWR22+0.53+0.21+0.02+0.39
37Kenny Golladay◦ provisionalDETWR49+0.35+0.20+0.03+0.38
38Alshon Jeffery◦ provisionalPHIWR123+0.26+0.20+0.05+0.35
39Mike Wallace◦ provisionalBALWR92+0.28+0.20+0.05+0.36
40Jarius Wright◦ provisionalMINWR25+0.46+0.20+0.02+0.38
41Chris Hogan◦ provisionalNEWR59+0.30+0.20+0.03+0.37
42Cody Latimer◦ provisionalDENWR32+0.38+0.20+0.02+0.38
43Jermaine Kearse◦ provisionalNYJWR103+0.25+0.20+0.04+0.35
44Eric Decker◦ provisionalTENWR83+0.25+0.19+0.03+0.35
45Andre Holmes◦ provisionalBUFWR23+0.38+0.19+0.01+0.37
46DeAndre Hopkins◦ provisionalHOUWR175+0.21+0.19+0.05+0.33
47Phillip Dorsett◦ provisionalNEWR18+0.37+0.19+0.00+0.37
48Martavis Bryant◦ provisionalPITWR85+0.22+0.19+0.03+0.35
49Randall Cobb◦ provisionalGBWR93+0.22+0.18+0.03+0.34
50Will Fuller◦ provisionalHOUWR51+0.23+0.18+0.01+0.35
51Kelvin Benjamin◦ provisionalBUFWR77+0.21+0.18+0.02+0.34
52Michael Campanaro◦ provisionalBALWR27+0.25+0.18-0.00+0.36
53Terrelle Pryor◦ provisionalWASWR37+0.23+0.18+0.00+0.35
54Kendrick Bourne◦ provisionalSFWR34+0.23+0.18+0.00+0.36
55Jakeem Grant◦ provisionalMIAWR22+0.26+0.18-0.00+0.36
56Josh Bellamy◦ provisionalCHIWR46+0.21+0.18+0.01+0.35
57Rishard Matthews◦ provisionalTENWR87+0.19+0.18+0.02+0.34
58Dontrelle Inman◦ provisionalCHIWR44+0.20+0.18+0.00+0.35
59Travis Benjamin◦ provisionalLACWR65+0.19+0.18+0.01+0.34
60Mohamed Sanu◦ provisionalATLWR96+0.19+0.18+0.02+0.33
61Tyler Lockett◦ provisionalSEAWR71+0.19+0.17+0.01+0.34
62Trent Taylor◦ provisionalSFWR61+0.19+0.17+0.01+0.34
63Larry Fitzgerald◦ provisionalARIWR162+0.18+0.17+0.03+0.32
64Louis Murphy◦ provisionalSFWR17+0.21+0.17-0.01+0.36
65Robbie Chosen◦ provisionalNYJWR115+0.18+0.17+0.02+0.33
66Kendall Wright◦ provisionalCHIWR92+0.17+0.17+0.01+0.33
67Brandon Tate◦ provisionalBUFWR14+0.18+0.17-0.01+0.36
68Marqise Lee◦ provisionalJAXWR97+0.17+0.17+0.01+0.33
69Mike Evans◦ provisionalTBWR138+0.17+0.17+0.02+0.32
70Tyler Boyd◦ provisionalCINWR32+0.15+0.17-0.01+0.35
71Tommylee Lewis◦ provisionalNOWR15+0.11+0.17-0.02+0.35
72Odell Beckham Jr.◦ provisionalNYGWR43+0.14+0.17-0.01+0.34
73Amara Darboh◦ provisionalSEAWR13+0.07+0.16-0.02+0.35
74Ty Montgomery◦ provisionalGBWR31+0.12+0.16-0.01+0.34
75Chad Hansen◦ provisionalNYJWR17+0.09+0.16-0.02+0.35
76Johnny Holton◦ provisionalLVWR18+0.09+0.16-0.02+0.35
77Russell Shepard◦ provisionalCARWR32+0.12+0.16-0.01+0.34
78Michael Crabtree◦ provisionalLVWR103+0.15+0.16+0.01+0.32
79Tavarres King◦ provisionalNYGWR37+0.12+0.16-0.01+0.34
80Josh Reynolds◦ provisionalLAWR24+0.09+0.16-0.02+0.34
81De'Anthony Thomas◦ provisionalKCWR16+0.03+0.16-0.02+0.34
82Deonte Thompson◦ provisionalBUFWR69+0.13+0.16-0.01+0.32
83Kenny Stills◦ provisionalMIAWR105+0.14+0.16+0.00+0.31
84Chester Rogers◦ provisionalINDWR37+0.10+0.16-0.02+0.33
85Pierre Garcon◦ provisionalSFWR67+0.12+0.16-0.01+0.32
86Josh Gordon◦ provisionalCLEWR42+0.09+0.16-0.02+0.33
87Taywan Taylor◦ provisionalTENWR28+0.04+0.15-0.02+0.33
88Jordan Taylor◦ provisionalDENWR20-0.00+0.15-0.03+0.34
89Jaron Brown◦ provisionalARIWR69+0.11+0.15-0.01+0.32
90Damiere Byrd◦ provisionalCARWR17-0.05+0.15-0.03+0.34
91ArDarius Stewart◦ provisionalNYJWR13-0.11+0.15-0.03+0.34
92T.Y. Hilton◦ provisionalINDWR109+0.12+0.15-0.00+0.31
93Brenton Bersin◦ provisionalCARWR14-0.13+0.15-0.03+0.34
94Emmanuel Sanders◦ provisionalDENWR92+0.11+0.15-0.01+0.31
95Willie Snead◦ provisionalNOWR16-0.11+0.15-0.03+0.33
96Brandon Marshall◦ provisionalNYGWR33+0.02+0.15-0.03+0.33
97Braxton Miller◦ provisionalHOUWR29-0.00+0.15-0.03+0.33
98Dede Westbrook◦ provisionalJAXWR51+0.06+0.15-0.02+0.32
99Golden Tate◦ provisionalDETWR120+0.10+0.15-0.01+0.30
100Kaelin Clay◦ provisionalCARWR20-0.10+0.15-0.04+0.33
101Tre McBride◦ provisionalCHIWR15-0.19+0.14-0.04+0.33
102Torrey Smith◦ provisionalPHIWR68+0.06+0.14-0.02+0.31
103Taylor Gabriel◦ provisionalATLWR51+0.03+0.14-0.03+0.31
104Brandon Coleman◦ provisionalNOWR37-0.05+0.14-0.04+0.31
105Curtis Samuel◦ provisionalCARWR26-0.14+0.13-0.04+0.31
106DeSean Jackson◦ provisionalTBWR92+0.06+0.13-0.02+0.29
107Josh Malone◦ provisionalCINWR17-0.32+0.13-0.05+0.32
108Leonte Carroo◦ provisionalMIAWR14-0.42+0.13-0.05+0.32
109Brandon LaFell◦ provisionalCINWR89+0.04+0.13-0.03+0.29
110Demarcus Robinson◦ provisionalKCWR39-0.07+0.13-0.04+0.31
111Keelan Cole◦ provisionalJAXWR83+0.03+0.13-0.03+0.29
112Bruce Ellington◦ provisionalHOUWR58-0.01+0.13-0.04+0.30
113Jeremy Maclin◦ provisionalBALWR72+0.01+0.13-0.04+0.29
114Markus Wheaton◦ provisionalCHIWR17-0.37+0.13-0.06+0.31
115Terrance Williams◦ provisionalDALWR80+0.02+0.13-0.03+0.29
116Bryce Treggs◦ provisionalCLEWR18-0.36+0.13-0.06+0.31
117Seth Roberts◦ provisionalLVWR65-0.01+0.13-0.04+0.29
118Geronimo Allison◦ provisionalGBWR39-0.12+0.12-0.05+0.30
119Michael Floyd◦ provisionalMINWR17-0.44+0.12-0.06+0.31
120Chris Moore◦ provisionalBALWR38-0.14+0.12-0.05+0.30
121John Brown◦ provisionalARIWR56-0.06+0.12-0.05+0.29
122A.J. Green◦ provisionalCINWR143+0.04+0.12-0.03+0.26
123Tavon Austin◦ provisionalLAWR22-0.38+0.12-0.07+0.30
124Travis Rudolph◦ provisionalNYGWR22-0.39+0.12-0.07+0.30
125Aldrick Robinson◦ provisionalSFWR48-0.12+0.11-0.06+0.29
126DeVante Parker◦ provisionalMIAWR97-0.01+0.11-0.04+0.27
127Kasen Williams◦ provisionalCLEWR18-0.56+0.11-0.07+0.29
128Laquon Treadwell◦ provisionalMINWR35-0.24+0.11-0.07+0.29
129Jarvis Landry◦ provisionalMIAWR161+0.03+0.11-0.03+0.25
130Pharoh Cooper◦ provisionalLAWR19-0.57+0.11-0.08+0.29
131Josh Doctson◦ provisionalWASWR78-0.07+0.10-0.06+0.27
132Amari Cooper◦ provisionalLVWR96-0.04+0.10-0.06+0.26
133Michael Clark◦ provisionalGBWR14-0.91+0.10-0.09+0.28
134Jordy Nelson◦ provisionalGBWR89-0.06+0.10-0.06+0.26
135Eli Rogers◦ provisionalPITWR36-0.31+0.10-0.08+0.27
136Isaiah McKenzie◦ provisionalDENWR13-1.03+0.10-0.09+0.28
137Jamison Crowder◦ provisionalWASWR103-0.05+0.10-0.06+0.25
138Corey Coleman◦ provisionalCLEWR58-0.18+0.09-0.08+0.26
139Kenny Britt◦ provisionalNEWR43-0.28+0.09-0.08+0.26
140Mike Williams◦ provisionalLACWR23-0.62+0.09-0.09+0.27
141J.J. Nelson◦ provisionalARIWR61-0.19+0.09-0.08+0.25
142Bennie Fowler◦ provisionalDENWR56-0.22+0.09-0.08+0.26
143Roger Lewis◦ provisionalNYGWR72-0.15+0.09-0.08+0.25
144Rashard Higgins◦ provisionalCLEWR50-0.32+0.07-0.10+0.24
145Zay Jones◦ provisionalBUFWR74-0.20+0.07-0.09+0.23
146Dez Bryant◦ provisionalDALWR132-0.08+0.07-0.08+0.22
147Ricardo Louis◦ provisionalCLEWR61-0.27+0.07-0.10+0.24
148Demaryius Thomas◦ provisionalDENWR142-0.08+0.06-0.08+0.21
149Cole Beasley◦ provisionalDALWR63-0.27+0.06-0.10+0.23
150Corey Davis◦ provisionalTENWR65-0.30+0.05-0.11+0.22
151Breshad Perriman◦ provisionalBALWR35-0.63+0.05-0.12+0.23
152Kamar Aiken◦ provisionalINDWR44-0.60+0.03-0.14+0.21

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