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

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
120 TE · 109 WR
targets to trust the number
shrunkrawthe shrink90% CI
-0.20.00.20.40.60.8TE avgWR avg1Tyler LockettSEA · 71+0.572Tyler BoydCIN · 108+0.463Tyreek HillKC · 137+0.444Michael ThomasNO · 148+0.435Mike WilliamsLAC · 68+0.436Robert FosterBUF · 44+0.427T.Y. HiltonIND · 120+0.408Mark AndrewsBAL · 50+0.399Davante AdamsGB · 170+0.3910Cooper KuppLA · 55+0.3811Will FullerHOU · 45+0.3812DeAndre HopkinsHOU · 163+0.3813Brandin CooksLA · 117+0.3714Cole BeasleyDAL · 87+0.3715Robert WoodsLA · 130+0.3716Alshon JefferyPHI · 92+0.3717George KittleSF · 138+0.3618Travis KelceKC · 151+0.3619Mohamed SanuATL · 96+0.3620Sammy WatkinsKC · 55+0.3621Mike EvansTB · 139+0.3522Doug BaldwinSEA · 73+0.3523Jaron BrownSEA · 19+0.3524Rashard HigginsCLE · 53+0.3525Keenan AllenLAC · 137+0.3526Josh GordonNE · 71+0.3527Breshad PerrimanCLE · 25+0.3528Dontrelle InmanIND · 39+0.3529Julio JonesATL · 170+0.3530Kenny GolladayDET · 122+0.3331Tre'Quan SmithNO · 44+0.3332Levine ToiloloDET · 24+0.3333Anthony FirkserTEN · 20+0.3334Geronimo AllisonGB · 30+0.3235Ed DicksonSEA · 13+0.3236O.J. HowardTB · 48+0.3237Jesse JamesPIT · 40+0.3238Greg OlsenCAR · 38+0.3139Cody LatimerNYG · 16+0.3140Jordan MatthewsPHI · 28+0.3141Tyler HigbeeLA · 34+0.3042Darren FellsCLE · 12+0.3043Brandon LaFellLV · 16+0.3044Maxx WilliamsBAL · 17+0.2945Luke StockerTEN · 21+0.2946Will DisslySEA · 14+0.27

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

EPA per target leaderboard for the 2018 NFL season, shrunk by empirical Bayes with 90% credible intervals, ranked by the shrunk estimate.
#PlayerTeamPostargetsRawShrunk90% interval
1Tyler Lockett◦ provisionalSEAWR71+1.05+0.57+0.37+0.77
2Tyler Boyd◦ provisionalCINWR108+0.68+0.46+0.28+0.64
3Tyreek HillKCWR137+0.60+0.44+0.27+0.61
4Michael ThomasNOWR148+0.57+0.43+0.27+0.60
5Mike Williams◦ provisionalLACWR68+0.71+0.43+0.23+0.63
6Robert Foster◦ provisionalBUFWR44+0.83+0.42+0.20+0.63
7T.Y. HiltonINDWR120+0.53+0.40+0.22+0.57
8Mark Andrews◦ provisionalBALTE50+0.78+0.39+0.19+0.59
9Davante AdamsGBWR170+0.48+0.39+0.23+0.55
10Cooper Kupp◦ provisionalLAWR55+0.65+0.38+0.18+0.59
11Will Fuller◦ provisionalHOUWR45+0.70+0.38+0.17+0.59
12DeAndre HopkinsHOUWR163+0.47+0.38+0.22+0.54
13Brandin CooksLAWR117+0.49+0.37+0.20+0.55
14Cole Beasley◦ provisionalDALWR87+0.52+0.37+0.18+0.56
15Robert WoodsLAWR130+0.47+0.37+0.20+0.54
16Alshon Jeffery◦ provisionalPHIWR92+0.50+0.37+0.18+0.55
17George KittleSFTE138+0.47+0.36+0.20+0.52
18Travis KelceKCTE151+0.46+0.36+0.20+0.52
19Mohamed Sanu◦ provisionalATLWR96+0.48+0.36+0.17+0.54
20Sammy Watkins◦ provisionalKCWR55+0.57+0.36+0.15+0.56
21Mike EvansTBWR139+0.43+0.35+0.18+0.52
22Doug Baldwin◦ provisionalSEAWR73+0.50+0.35+0.15+0.55
23Jaron Brown◦ provisionalSEAWR19+0.92+0.35+0.12+0.58
24Rashard Higgins◦ provisionalCLEWR53+0.55+0.35+0.14+0.56
25Keenan AllenLACWR137+0.43+0.35+0.18+0.52
26Josh Gordon◦ provisionalNEWR71+0.50+0.35+0.15+0.55
27Breshad Perriman◦ provisionalCLEWR25+0.77+0.35+0.12+0.58
28Dontrelle Inman◦ provisionalINDWR39+0.61+0.35+0.13+0.56
29Julio JonesATLWR170+0.41+0.35+0.19+0.50
30Kenny GolladayDETWR122+0.41+0.33+0.16+0.51
31Tre'Quan Smith◦ provisionalNOWR44+0.54+0.33+0.12+0.55
32Levine Toilolo◦ provisionalDETTE24+0.83+0.33+0.12+0.55
33Anthony Firkser◦ provisionalTENTE20+0.92+0.33+0.11+0.55
34Kenny Stills◦ provisionalMIAWR65+0.44+0.32+0.12+0.52
35Geronimo Allison◦ provisionalGBWR30+0.58+0.32+0.10+0.55
36Adam ThielenMINWR154+0.37+0.32+0.16+0.48
37Ed Dickson◦ provisionalSEATE13+1.11+0.32+0.10+0.54
38O.J. Howard◦ provisionalTBTE48+0.53+0.32+0.12+0.52
39Jesse James◦ provisionalPITTE40+0.56+0.32+0.11+0.52
40Greg Olsen◦ provisionalCARTE38+0.57+0.31+0.11+0.52
41Calvin Ridley◦ provisionalATLWR92+0.39+0.31+0.13+0.50
42Cody Latimer◦ provisionalNYGWR16+0.70+0.31+0.07+0.55
43Adam Humphries◦ provisionalTBWR106+0.37+0.31+0.13+0.49
44Jordan Matthews◦ provisionalPHITE28+0.63+0.31+0.10+0.52
45Anthony Miller◦ provisionalCHIWR54+0.42+0.31+0.10+0.51
46Rob Gronkowski◦ provisionalNETE72+0.43+0.31+0.12+0.49
47Tyler Higbee◦ provisionalLATE34+0.55+0.30+0.10+0.51
48Seth Roberts◦ provisionalLVWR64+0.39+0.30+0.10+0.50
49A.J. Green◦ provisionalCINWR78+0.37+0.30+0.11+0.49
50Vernon Davis◦ provisionalWASTE37+0.51+0.30+0.09+0.50
51Chris Godwin Jr.◦ provisionalTBWR97+0.35+0.30+0.11+0.48
52Darren Fells◦ provisionalCLETE12+0.94+0.30+0.07+0.52
53Tyrell Williams◦ provisionalLACWR65+0.37+0.30+0.10+0.50
54Chris Hogan◦ provisionalNEWR55+0.39+0.30+0.09+0.50
55Brandon LaFell◦ provisionalLVWR16+0.60+0.30+0.06+0.53
56Keith Kirkwood◦ provisionalNOWR21+0.52+0.30+0.06+0.53
57Benjamin Watson◦ provisionalNOTE46+0.45+0.29+0.09+0.49
58Dante Pettis◦ provisionalSFWR45+0.39+0.29+0.08+0.51
59Sterling Shepard◦ provisionalNYGWR108+0.33+0.29+0.11+0.47
60Blake Jarwin◦ provisionalDALTE36+0.48+0.29+0.08+0.50
61Maxx Williams◦ provisionalBALTE17+0.69+0.29+0.07+0.51
62Vance McDonald◦ provisionalPITTE72+0.38+0.29+0.10+0.47
63Luke Stocker◦ provisionalTENTE21+0.61+0.29+0.07+0.51
64JuJu Smith-SchusterPITWR167+0.31+0.29+0.13+0.45
65Nelson Agholor◦ provisionalPHIWR97+0.32+0.29+0.10+0.47
66Bennie Fowler◦ provisionalNYGWR27+0.41+0.28+0.06+0.51
67Allen Hurns◦ provisionalDALWR35+0.38+0.28+0.06+0.50
68T.J. Jones◦ provisionalDETWR27+0.39+0.28+0.05+0.51
69Austin Carr◦ provisionalNOWR14+0.50+0.28+0.04+0.52
70Austin Hooper◦ provisionalATLTE90+0.34+0.28+0.10+0.46
71Demaryius Thomas◦ provisionalHOUWR90+0.31+0.28+0.09+0.47
72Jordan Akins◦ provisionalHOUTE25+0.49+0.28+0.06+0.49
73Chris Moore◦ provisionalBALWR25+0.36+0.27+0.04+0.50
74Tyler Eifert◦ provisionalCINTE19+0.52+0.27+0.05+0.49
75Jakeem Grant◦ provisionalMIAWR34+0.33+0.27+0.05+0.49
76Eric Ebron◦ provisionalINDTE110+0.31+0.27+0.10+0.44
77Will Dissly◦ provisionalSEATE14+0.59+0.27+0.05+0.49
78Deontay Burnett◦ provisionalNYJWR15+0.40+0.27+0.03+0.51
79Taylor Gabriel◦ provisionalCHIWR93+0.29+0.27+0.08+0.45
80Rhett Ellison◦ provisionalNYGTE35+0.39+0.27+0.06+0.47
81Russell Shepard◦ provisionalNYGWR19+0.36+0.27+0.03+0.50
82Albert Wilson◦ provisionalMIAWR35+0.31+0.27+0.04+0.49
83Evan Engram◦ provisionalNYGTE65+0.32+0.26+0.07+0.45
84Demarcus Robinson◦ provisionalKCWR33+0.30+0.26+0.04+0.48
85Marvin Jones◦ provisionalDETWR62+0.28+0.26+0.06+0.46
86Virgil Green◦ provisionalLACTE27+0.38+0.26+0.05+0.47
87Corey DavisTENWR112+0.27+0.26+0.08+0.44
88Equanimeous St. Brown◦ provisionalGBWR36+0.29+0.26+0.04+0.48
89DeAndre Carter◦ provisionalHOUWR25+0.29+0.26+0.03+0.49
90Amari Cooper◦ provisionalDALWR107+0.27+0.26+0.08+0.44
91Kyle Rudolph◦ provisionalMINTE84+0.29+0.26+0.08+0.44
92Aldrick Robinson◦ provisionalMINWR35+0.26+0.25+0.03+0.47
93Jared Cook◦ provisionalLVTE101+0.27+0.25+0.08+0.42
94Odell Beckham Jr.NYGWR125+0.25+0.25+0.08+0.42
95Brandon Powell◦ provisionalDETWR17+0.23+0.25+0.01+0.48
96Tavon Austin◦ provisionalDALWR13+0.21+0.25+0.01+0.49
97Torrey Smith◦ provisionalCARWR32+0.23+0.25+0.02+0.47
98Julian Edelman◦ provisionalNEWR108+0.24+0.25+0.07+0.43
99Paul Richardson◦ provisionalWASWR35+0.22+0.24+0.02+0.47
100Jamison Crowder◦ provisionalWASWR49+0.23+0.24+0.03+0.45
101Lance Kendricks◦ provisionalGBTE25+0.30+0.24+0.03+0.46
102C.J. Uzomah◦ provisionalCINTE64+0.26+0.24+0.05+0.43
103Dallas Goedert◦ provisionalPHITE44+0.27+0.24+0.04+0.44
104Trent Sherfield◦ provisionalARIWR28+0.21+0.24+0.02+0.47
105David Moore◦ provisionalSEAWR53+0.22+0.24+0.03+0.45
106Marquise Goodwin◦ provisionalSFWR44+0.22+0.24+0.03+0.46
107Jordy Nelson◦ provisionalLVWR89+0.23+0.24+0.05+0.43
108Allen Robinson◦ provisionalCHIWR95+0.22+0.24+0.05+0.42
109Chris Herndon◦ provisionalNYJTE56+0.25+0.24+0.04+0.43
110Chris Conley◦ provisionalKCWR52+0.21+0.24+0.03+0.45
111Nick Vannett◦ provisionalSEATE43+0.25+0.24+0.03+0.44
112Josh Hill◦ provisionalNOTE24+0.25+0.24+0.02+0.45
113Gerald Everett◦ provisionalLATE51+0.23+0.23+0.04+0.43
114Dede Westbrook◦ provisionalJAXWR103+0.21+0.23+0.05+0.42
115Ryan Grant◦ provisionalINDWR52+0.19+0.23+0.02+0.44
116Jermaine Gresham◦ provisionalARITE12+0.22+0.23+0.01+0.46
117Mo Alie-Cox◦ provisionalINDTE13+0.22+0.23+0.01+0.45
118Dalton Schultz◦ provisionalDALTE17+0.22+0.23+0.01+0.45
119Matt LaCosse◦ provisionalDENTE37+0.22+0.23+0.02+0.44
120Eli Rogers◦ provisionalPITWR15+0.08+0.23-0.01+0.47
121DJ Moore◦ provisionalCARWR82+0.20+0.23+0.04+0.42
122Jonnu Smith◦ provisionalTENTE30+0.21+0.23+0.02+0.44
123Jarius Wright◦ provisionalCARWR61+0.19+0.23+0.03+0.43
124DeSean Jackson◦ provisionalTBWR74+0.19+0.23+0.03+0.42
125Niles Paul◦ provisionalJAXTE13+0.15+0.22+0.00+0.45
126Terrelle Pryor◦ provisionalBUFWR31+0.13+0.22+0.00+0.45
127Hayden Hurst◦ provisionalBALTE23+0.17+0.22+0.01+0.44
128Emmanuel Sanders◦ provisionalDENWR98+0.19+0.22+0.04+0.41
129Geoff Swaim◦ provisionalDALTE32+0.18+0.22+0.01+0.43
130Ryan Switzer◦ provisionalPITWR44+0.14+0.22+0.01+0.43
131Logan Thomas◦ provisionalBUFTE17+0.12+0.22-0.00+0.44
132Jordan Leggett◦ provisionalNYJTE25+0.15+0.22+0.00+0.43
133DaeSean Hamilton◦ provisionalDENWR46+0.14+0.22+0.00+0.43
134Chester Rogers◦ provisionalINDWR74+0.17+0.22+0.02+0.41
135Marvin Hall◦ provisionalATLWR20+0.03+0.22-0.02+0.45
136Trey Burton◦ provisionalCHITE77+0.19+0.22+0.03+0.40
137Cody Core◦ provisionalCINWR29+0.08+0.21-0.01+0.44
138Andre Holmes◦ provisionalDENWR24+0.05+0.21-0.02+0.44
139Damion Ratley◦ provisionalCLEWR21+0.02+0.21-0.02+0.45
140John Brown◦ provisionalBALWR98+0.17+0.21+0.03+0.40
141Phillip Dorsett◦ provisionalNEWR42+0.10+0.21-0.01+0.43
142Alex Erickson◦ provisionalCINWR29+0.05+0.21-0.02+0.43
143Justin Hardy◦ provisionalATLWR22-0.01+0.21-0.02+0.44
144Josh Reynolds◦ provisionalLAWR53+0.12+0.21-0.00+0.41
145James Washington◦ provisionalPITWR38+0.08+0.21-0.01+0.43
146Tajae Sharpe◦ provisionalTENWR47+0.10+0.21-0.01+0.42
147Courtland Sutton◦ provisionalDENWR85+0.15+0.21+0.02+0.40
148Pierre Garcon◦ provisionalSFWR47+0.10+0.21-0.01+0.42
149Darius Jennings◦ provisionalTENWR15-0.12+0.21-0.03+0.44
150Martavis Bryant◦ provisionalLVWR27+0.02+0.21-0.02+0.43
151Christian Kirk◦ provisionalARIWR69+0.13+0.21+0.01+0.40
152Curtis Samuel◦ provisionalCARWR65+0.13+0.21+0.00+0.41
153Tim Patrick◦ provisionalDENWR41+0.08+0.20-0.01+0.42
154Michael Gallup◦ provisionalDALWR69+0.13+0.20+0.00+0.40
155Isaiah McKenzie◦ provisionalBUFWR30+0.02+0.20-0.02+0.43
156Antonio Gates◦ provisionalLACTE48+0.12+0.20+0.00+0.40
157Jimmy Graham◦ provisionalGBTE89+0.16+0.20+0.02+0.38
158Demetrius Harris◦ provisionalKCTE25+0.03+0.20-0.01+0.41
159Derek Carrier◦ provisionalLVTE12-0.15+0.20-0.03+0.42
160Keke Coutee◦ provisionalHOUWR41+0.05+0.20-0.02+0.41
161Dan Arnold◦ provisionalNOTE19-0.03+0.20-0.02+0.42
162Cameron Brate◦ provisionalTBTE49+0.10+0.19-0.00+0.39
163Kendrick Bourne◦ provisionalSFWR67+0.10+0.19-0.01+0.39
164Justin Hunter◦ provisionalPITWR13-0.30+0.19-0.05+0.43
165Antonio BrownPITWR168+0.15+0.19+0.03+0.35
166Golden TatePHIWR114+0.13+0.19+0.01+0.37
167Marquez Valdes-Scantling◦ provisionalGBWR74+0.10+0.19-0.01+0.39
168Brandon Marshall◦ provisionalSEAWR23-0.11+0.19-0.04+0.42
169Austin Seferian-Jenkins◦ provisionalJAXTE19-0.10+0.19-0.03+0.41
170Ted Ginn◦ provisionalNOWR31-0.03+0.19-0.04+0.41
171Jack Doyle◦ provisionalINDTE33+0.02+0.19-0.02+0.40
172Bruce Ellington◦ provisionalDETWR42+0.02+0.19-0.03+0.40
173Travis Benjamin◦ provisionalLACWR24-0.11+0.19-0.04+0.42
174Richie James◦ provisionalSFWR14-0.34+0.18-0.05+0.42
175Marcell Ateman◦ provisionalLVWR31-0.05+0.18-0.04+0.41
176DeVante Parker◦ provisionalMIAWR47+0.03+0.18-0.03+0.40
177Donte Moncrief◦ provisionalJAXWR89+0.10+0.18-0.01+0.37
178Michael Floyd◦ provisionalWASWR25-0.13+0.18-0.05+0.41
179Robbie Chosen◦ provisionalNYJWR94+0.09+0.18-0.01+0.36
180Andy Jones◦ provisionalDETWR24-0.15+0.18-0.05+0.41
181Ryan Griffin◦ provisionalHOUTE43+0.02+0.18-0.03+0.38
182Randall Cobb◦ provisionalGBWR61+0.03+0.17-0.03+0.38
183Zach ErtzPHITE156+0.12+0.17+0.02+0.33
184Auden Tate◦ provisionalCINWR12-0.57+0.17-0.07+0.41
185Taywan Taylor◦ provisionalTENWR57+0.01+0.17-0.04+0.37
186Andre Roberts◦ provisionalNYJWR18-0.36+0.16-0.07+0.40
187Willie Snead◦ provisionalBALWR95+0.05+0.16-0.03+0.35
188Ian Thomas◦ provisionalCARTE49-0.02+0.16-0.04+0.36
189Deonte Thompson◦ provisionalBUFWR30-0.20+0.15-0.07+0.38
190Devin Funchess◦ provisionalCARWR79+0.02+0.15-0.04+0.35
191James O'Shaughnessy◦ provisionalJAXTE38-0.11+0.15-0.05+0.36
192Jake Butt◦ provisionalDENTE13-0.60+0.15-0.07+0.37
193David Njoku◦ provisionalCLETE88+0.04+0.15-0.03+0.33
194Eric Tomlinson◦ provisionalNYJTE14-0.56+0.15-0.07+0.37
195Nick Boyle◦ provisionalBALTE37-0.13+0.15-0.06+0.35
196Josh Doctson◦ provisionalWASWR78+0.00+0.15-0.05+0.34
197Ty Montgomery◦ provisionalBALWR40-0.14+0.15-0.07+0.36
198Zach Pascal◦ provisionalINDWR46-0.10+0.15-0.07+0.36
199Luke Willson◦ provisionalDETTE19-0.42+0.14-0.07+0.36
200Trent Taylor◦ provisionalSFWR41-0.16+0.14-0.08+0.36
201Josh Bellamy◦ provisionalCHIWR26-0.33+0.14-0.09+0.37
202Stefon DiggsMINWR150+0.06+0.14-0.03+0.30
203Jeff Heuerman◦ provisionalDENTE48-0.10+0.14-0.06+0.34
204Quincy Enunwa◦ provisionalNYJWR69-0.04+0.14-0.06+0.34
205Scott Simonson◦ provisionalNYGTE14-0.71+0.14-0.09+0.36
206Mike Gesicki◦ provisionalMIATE32-0.24+0.13-0.08+0.34
207Zay Jones◦ provisionalBUFWR103+0.00+0.13-0.05+0.31
208Jordan Reed◦ provisionalWASTE84-0.01+0.13-0.05+0.31
209Danny Amendola◦ provisionalMIAWR79-0.03+0.13-0.06+0.32
210Larry FitzgeraldARIWR113+0.01+0.13-0.05+0.31
211Michael Roberts◦ provisionalDETTE20-0.49+0.13-0.09+0.35
212Keelan Cole◦ provisionalJAXWR70-0.07+0.13-0.07+0.33
213Maurice Harris◦ provisionalWASWR47-0.19+0.12-0.09+0.33
214J.J. Nelson◦ provisionalARIWR19-0.65+0.12-0.12+0.35
215Michael Crabtree◦ provisionalBALWR100-0.04+0.11-0.07+0.30
216Jermaine Kearse◦ provisionalNYJWR76-0.09+0.11-0.08+0.31
217DJ Chark◦ provisionalJAXWR32-0.39+0.11-0.12+0.33
218Jarvis LandryCLEWR150-0.00+0.10-0.06+0.27
219Laquon Treadwell◦ provisionalMINWR53-0.22+0.10-0.11+0.31
220Charles Clay◦ provisionalBUFTE36-0.43+0.08-0.12+0.29
221Antonio Callaway◦ provisionalCLEWR82-0.17+0.07-0.12+0.26
222Chad Williams◦ provisionalARIWR46-0.38+0.06-0.15+0.28
223Jason Croom◦ provisionalBUFTE35-0.53+0.06-0.14+0.27
224John Ross◦ provisionalCINWR58-0.37+0.04-0.17+0.24
225Ricky Seals-Jones◦ provisionalARITE69-0.38+0.01-0.18+0.20
226Kelvin Benjamin◦ provisionalKCWR67-0.46-0.02-0.22+0.18

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