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
172 TE · 201 WR
targets to trust the number
shrunkrawthe shrink90% CI
0.00.20.4TE avgWR avg1Rob GronkowskiNE · 106+0.372JuJu Smith-Schust…PIT · 79+0.313Marvin JonesDET · 108+0.304Tyreek HillKC · 105+0.295Hunter HenryLAC · 62+0.286Michael ThomasNO · 149+0.287Stefon DiggsMIN · 95+0.288Travis KelceKC · 122+0.279Davante AdamsGB · 118+0.2710Robert WoodsLA · 85+0.2711Keenan AllenLAC · 159+0.2712Julio JonesATL · 148+0.2613Danny AmendolaNE · 86+0.2614Cooper KuppLA · 94+0.2515Nelson AgholorPHI · 95+0.2516Doug BaldwinSEA · 117+0.2517Sammy WatkinsLA · 70+0.2418Brandin CooksNE · 115+0.2419Trey BurtonPHI · 32+0.2320Ted GinnNO · 70+0.2321Brice ButlerDAL · 24+0.2322Coby FleenerNO · 30+0.2323Ryan GrantWAS · 65+0.2224Chris Godwin Jr.TB · 55+0.2225Sterling ShepardNYG · 84+0.2226Tyrell WilliamsLAC · 69+0.2227Albert WilsonKC · 62+0.2228Justin HardyATL · 29+0.2229Adam HumphriesTB · 83+0.2230Jeremy KerleyNYJ · 27+0.2231Chris ConleyKC · 16+0.2232Nick O'LearyBUF · 32+0.2133O.J. HowardTB · 39+0.2134Alex EricksonCIN · 16+0.2135Mack HollinsPHI · 22+0.2136Jarius WrightMIN · 25+0.2037David MorganMIN · 12+0.2038Levine ToiloloATL · 14+0.2039Adam ShaheenCHI · 14+0.20

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
1Rob Gronkowski◦ provisionalNETE106+0.70+0.37+0.22+0.52
2JuJu Smith-Schuster◦ provisionalPITWR79+0.67+0.31+0.15+0.47
3Marvin Jones◦ provisionalDETWR108+0.54+0.30+0.14+0.45
4Tyreek Hill◦ provisionalKCWR105+0.53+0.29+0.14+0.45
5Hunter Henry◦ provisionalLACTE62+0.63+0.28+0.12+0.45
6Michael Thomas◦ provisionalNOWR149+0.42+0.28+0.13+0.42
7Stefon Diggs◦ provisionalMINWR95+0.50+0.28+0.12+0.43
8Travis Kelce◦ provisionalKCTE122+0.43+0.27+0.13+0.42
9Davante Adams◦ provisionalGBWR118+0.44+0.27+0.12+0.42
10Robert Woods◦ provisionalLAWR85+0.50+0.27+0.11+0.43
11Keenan Allen◦ provisionalLACWR159+0.39+0.27+0.12+0.41
12Julio Jones◦ provisionalATLWR148+0.39+0.26+0.12+0.41
13Danny Amendola◦ provisionalNEWR86+0.47+0.26+0.10+0.42
14Cooper Kupp◦ provisionalLAWR94+0.44+0.25+0.10+0.41
15Nelson Agholor◦ provisionalPHIWR95+0.41+0.25+0.09+0.41
16Doug Baldwin◦ provisionalSEAWR117+0.38+0.25+0.09+0.40
17Sammy Watkins◦ provisionalLAWR70+0.43+0.24+0.07+0.40
18Brandin Cooks◦ provisionalNEWR115+0.35+0.24+0.08+0.39
19Trey Burton◦ provisionalPHITE32+0.62+0.23+0.06+0.41
20Ted Ginn◦ provisionalNOWR70+0.40+0.23+0.07+0.39
21Brice Butler◦ provisionalDALWR24+0.73+0.23+0.05+0.41
22Coby Fleener◦ provisionalNOTE30+0.61+0.23+0.05+0.40
23Ryan Grant◦ provisionalWASWR65+0.39+0.22+0.06+0.39
24Chris Godwin Jr.◦ provisionalTBWR55+0.42+0.22+0.06+0.39
25Sterling Shepard◦ provisionalNYGWR84+0.35+0.22+0.06+0.39
26Tyrell Williams◦ provisionalLACWR69+0.38+0.22+0.06+0.39
27Albert Wilson◦ provisionalKCWR62+0.39+0.22+0.06+0.39
28Justin Hardy◦ provisionalATLWR29+0.58+0.22+0.04+0.40
29Adam Humphries◦ provisionalTBWR83+0.34+0.22+0.06+0.38
30Jeremy Kerley◦ provisionalNYJWR27+0.59+0.22+0.04+0.40
31Paul Richardson◦ provisionalSEAWR81+0.34+0.22+0.06+0.38
32Adam Thielen◦ provisionalMINWR142+0.29+0.22+0.07+0.37
33Jared Cook◦ provisionalLVTE86+0.33+0.22+0.06+0.37
34Chris Conley◦ provisionalKCWR16+0.79+0.22+0.03+0.40
35Devin Funchess◦ provisionalCARWR112+0.30+0.22+0.06+0.37
36Nick O'Leary◦ provisionalBUFTE32+0.50+0.21+0.04+0.39
37Allen Hurns◦ provisionalJAXWR57+0.37+0.21+0.05+0.38
38O.J. Howard◦ provisionalTBTE39+0.44+0.21+0.04+0.38
39Marquise Goodwin◦ provisionalSFWR105+0.29+0.21+0.06+0.37
40Antonio Brown◦ provisionalPITWR165+0.26+0.21+0.07+0.35
41T.J. Jones◦ provisionalDETWR50+0.37+0.21+0.04+0.38
42Donte Moncrief◦ provisionalINDWR47+0.37+0.21+0.04+0.38
43Alex Erickson◦ provisionalCINWR16+0.67+0.21+0.02+0.39
44Mack Hollins◦ provisionalPHIWR22+0.53+0.21+0.02+0.39
45Kenny Golladay◦ provisionalDETWR49+0.35+0.20+0.03+0.38
46Alshon Jeffery◦ provisionalPHIWR123+0.26+0.20+0.05+0.35
47Mike Wallace◦ provisionalBALWR92+0.28+0.20+0.05+0.36
48Jarius Wright◦ provisionalMINWR25+0.46+0.20+0.02+0.38
49David Morgan◦ provisionalMINTE12+0.79+0.20+0.02+0.39
50Cameron Brate◦ provisionalTBTE77+0.29+0.20+0.04+0.36
51Levine Toilolo◦ provisionalATLTE14+0.69+0.20+0.02+0.38
52Jordan Matthews◦ provisionalBUFTE36+0.38+0.20+0.03+0.37
53Chris Hogan◦ provisionalNEWR59+0.30+0.20+0.03+0.37
54Ed Dickson◦ provisionalCARTE49+0.33+0.20+0.03+0.37
55Cody Latimer◦ provisionalDENWR32+0.38+0.20+0.02+0.38
56Adam Shaheen◦ provisionalCHITE14+0.66+0.20+0.02+0.38
57Rhett Ellison◦ provisionalNYGTE32+0.39+0.20+0.02+0.37
58Jermaine Kearse◦ provisionalNYJWR103+0.25+0.20+0.04+0.35
59Eric Decker◦ provisionalTENWR83+0.25+0.19+0.03+0.35
60Garrett Celek◦ provisionalSFTE33+0.36+0.19+0.02+0.37
61Zach Ertz◦ provisionalPHITE111+0.24+0.19+0.04+0.34
62Tyler Kroft◦ provisionalCINTE62+0.28+0.19+0.03+0.35
63Andre Holmes◦ provisionalBUFWR23+0.38+0.19+0.01+0.37
64Darren Fells◦ provisionalDETTE26+0.39+0.19+0.01+0.37
65DeAndre Hopkins◦ provisionalHOUWR175+0.21+0.19+0.05+0.33
66Phillip Dorsett◦ provisionalNEWR18+0.37+0.19+0.00+0.37
67Martavis Bryant◦ provisionalPITWR85+0.22+0.19+0.03+0.35
68Randall Cobb◦ provisionalGBWR93+0.22+0.18+0.03+0.34
69Will Fuller◦ provisionalHOUWR51+0.23+0.18+0.01+0.35
70Kelvin Benjamin◦ provisionalBUFWR77+0.21+0.18+0.02+0.34
71Nick Vannett◦ provisionalSEATE15+0.39+0.18-0.00+0.36
72Michael Campanaro◦ provisionalBALWR27+0.25+0.18-0.00+0.36
73Terrelle Pryor◦ provisionalWASWR37+0.23+0.18+0.00+0.35
74Kendrick Bourne◦ provisionalSFWR34+0.23+0.18+0.00+0.36
75Jakeem Grant◦ provisionalMIAWR22+0.26+0.18-0.00+0.36
76Kyle Rudolph◦ provisionalMINTE81+0.21+0.18+0.02+0.33
77George Kittle◦ provisionalSFTE63+0.22+0.18+0.02+0.34
78Josh Bellamy◦ provisionalCHIWR46+0.21+0.18+0.01+0.35
79Richard Rodgers◦ provisionalGBTE19+0.32+0.18-0.00+0.36
80Rishard Matthews◦ provisionalTENWR87+0.19+0.18+0.02+0.34
81James O'Shaughnessy◦ provisionalJAXTE24+0.29+0.18-0.00+0.35
82Dontrelle Inman◦ provisionalCHIWR44+0.20+0.18+0.00+0.35
83Travis Benjamin◦ provisionalLACWR65+0.19+0.18+0.01+0.34
84Mohamed Sanu◦ provisionalATLWR96+0.19+0.18+0.02+0.33
85Tyler Lockett◦ provisionalSEAWR71+0.19+0.17+0.01+0.34
86Trent Taylor◦ provisionalSFWR61+0.19+0.17+0.01+0.34
87Marcedes Lewis◦ provisionalJAXTE49+0.22+0.17+0.01+0.34
88Jason Witten◦ provisionalDALTE87+0.20+0.17+0.02+0.33
89Larry Fitzgerald◦ provisionalARIWR162+0.18+0.17+0.03+0.32
90Louis Murphy◦ provisionalSFWR17+0.21+0.17-0.01+0.36
91Robbie Chosen◦ provisionalNYJWR115+0.18+0.17+0.02+0.33
92Austin Traylor◦ provisionalDENTE13+0.33+0.17-0.01+0.36
93Jordan Reed◦ provisionalWASTE35+0.23+0.17+0.00+0.35
94Kendall Wright◦ provisionalCHIWR92+0.17+0.17+0.01+0.33
95Brandon Tate◦ provisionalBUFWR14+0.18+0.17-0.01+0.36
96Marqise Lee◦ provisionalJAXWR97+0.17+0.17+0.01+0.33
97Mike Evans◦ provisionalTBWR138+0.17+0.17+0.02+0.32
98Jesse James◦ provisionalPITTE63+0.19+0.17+0.01+0.33
99Tyler Boyd◦ provisionalCINWR32+0.15+0.17-0.01+0.35
100C.J. Uzomah◦ provisionalCINTE15+0.24+0.17-0.01+0.35
101Ryan Griffin◦ provisionalHOUTE27+0.20+0.17-0.01+0.34
102Tommylee Lewis◦ provisionalNOWR15+0.11+0.17-0.02+0.35
103Odell Beckham Jr.◦ provisionalNYGWR43+0.14+0.17-0.01+0.34
104Brandon Williams◦ provisionalINDTE17+0.20+0.16-0.02+0.35
105Amara Darboh◦ provisionalSEAWR13+0.07+0.16-0.02+0.35
106Daniel Brown◦ provisionalCHITE20+0.19+0.16-0.02+0.34
107Ty Montgomery◦ provisionalGBWR31+0.12+0.16-0.01+0.34
108Chad Hansen◦ provisionalNYJWR17+0.09+0.16-0.02+0.35
109Johnny Holton◦ provisionalLVWR18+0.09+0.16-0.02+0.35
110Russell Shepard◦ provisionalCARWR32+0.12+0.16-0.01+0.34
111Michael Crabtree◦ provisionalLVWR103+0.15+0.16+0.01+0.32
112Tavarres King◦ provisionalNYGWR37+0.12+0.16-0.01+0.34
113Josh Reynolds◦ provisionalLAWR24+0.09+0.16-0.02+0.34
114De'Anthony Thomas◦ provisionalKCWR16+0.03+0.16-0.02+0.34
115Virgil Green◦ provisionalDENTE22+0.15+0.16-0.02+0.34
116Deonte Thompson◦ provisionalBUFWR69+0.13+0.16-0.01+0.32
117Kenny Stills◦ provisionalMIAWR105+0.14+0.16+0.00+0.31
118Vernon Davis◦ provisionalWASTE69+0.15+0.16-0.00+0.32
119Demetrius Harris◦ provisionalKCTE36+0.15+0.16-0.01+0.33
120Chester Rogers◦ provisionalINDWR37+0.10+0.16-0.02+0.33
121Vance McDonald◦ provisionalPITTE24+0.14+0.16-0.02+0.34
122Brent Celek◦ provisionalPHITE24+0.12+0.16-0.02+0.33
123Pierre Garcon◦ provisionalSFWR67+0.12+0.16-0.01+0.32
124Ricky Seals-Jones◦ provisionalARITE28+0.13+0.16-0.02+0.33
125Josh Gordon◦ provisionalCLEWR42+0.09+0.16-0.02+0.33
126Taywan Taylor◦ provisionalTENWR28+0.04+0.15-0.02+0.33
127Benjamin Watson◦ provisionalBALTE80+0.14+0.15-0.00+0.31
128Jordan Taylor◦ provisionalDENWR20-0.00+0.15-0.03+0.34
129Jaron Brown◦ provisionalARIWR69+0.11+0.15-0.01+0.32
130Damiere Byrd◦ provisionalCARWR17-0.05+0.15-0.03+0.34
131ArDarius Stewart◦ provisionalNYJWR13-0.11+0.15-0.03+0.34
132Nick Boyle◦ provisionalBALTE38+0.12+0.15-0.02+0.33
133T.Y. Hilton◦ provisionalINDWR109+0.12+0.15-0.00+0.31
134Troy Niklas◦ provisionalARITE23+0.08+0.15-0.03+0.33
135Niles Paul◦ provisionalWASTE19+0.06+0.15-0.03+0.33
136Brenton Bersin◦ provisionalCARWR14-0.13+0.15-0.03+0.34
137Emmanuel Sanders◦ provisionalDENWR92+0.11+0.15-0.01+0.31
138Willie Snead◦ provisionalNOWR16-0.11+0.15-0.03+0.33
139Brandon Marshall◦ provisionalNYGWR33+0.02+0.15-0.03+0.33
140Braxton Miller◦ provisionalHOUWR29-0.00+0.15-0.03+0.33
141Charles Clay◦ provisionalBUFTE74+0.12+0.15-0.01+0.31
142Dede Westbrook◦ provisionalJAXWR51+0.06+0.15-0.02+0.32
143Golden Tate◦ provisionalDETWR120+0.10+0.15-0.01+0.30
144Kaelin Clay◦ provisionalCARWR20-0.10+0.15-0.04+0.33
145Tre McBride◦ provisionalCHIWR15-0.19+0.14-0.04+0.33
146Clive Walford◦ provisionalLVTE13-0.10+0.14-0.04+0.33
147Torrey Smith◦ provisionalPHIWR68+0.06+0.14-0.02+0.31
148Taylor Gabriel◦ provisionalATLWR51+0.03+0.14-0.03+0.31
149Eric Ebron◦ provisionalDETTE86+0.09+0.14-0.02+0.29
150Dwayne Allen◦ provisionalNETE22-0.05+0.14-0.04+0.32
151Antonio Gates◦ provisionalLACTE53+0.06+0.14-0.03+0.30
152Brandon Coleman◦ provisionalNOWR37-0.05+0.14-0.04+0.31
153Curtis Samuel◦ provisionalCARWR26-0.14+0.13-0.04+0.31
154DeSean Jackson◦ provisionalTBWR92+0.06+0.13-0.02+0.29
155Tyler Higbee◦ provisionalLATE45+0.03+0.13-0.04+0.30
156Austin Hooper◦ provisionalATLTE65+0.06+0.13-0.03+0.29
157Jermaine Gresham◦ provisionalARITE46+0.02+0.13-0.04+0.30
158David Njoku◦ provisionalCLETE60+0.05+0.13-0.03+0.30
159Josh Malone◦ provisionalCINWR17-0.32+0.13-0.05+0.32
160Leonte Carroo◦ provisionalMIAWR14-0.42+0.13-0.05+0.32
161Maxx Williams◦ provisionalBALTE18-0.16+0.13-0.05+0.31
162Brandon LaFell◦ provisionalCINWR89+0.04+0.13-0.03+0.29
163Demarcus Robinson◦ provisionalKCWR39-0.07+0.13-0.04+0.31
164Keelan Cole◦ provisionalJAXWR83+0.03+0.13-0.03+0.29
165Bruce Ellington◦ provisionalHOUWR58-0.01+0.13-0.04+0.30
166Martellus Bennett◦ provisionalNETE44+0.00+0.13-0.04+0.30
167Jeremy Maclin◦ provisionalBALWR72+0.01+0.13-0.04+0.29
168Gerald Everett◦ provisionalLATE32-0.05+0.13-0.05+0.30
169Markus Wheaton◦ provisionalCHIWR17-0.37+0.13-0.06+0.31
170Terrance Williams◦ provisionalDALWR80+0.02+0.13-0.03+0.29
171Bryce Treggs◦ provisionalCLEWR18-0.36+0.13-0.06+0.31
172Jeff Heuerman◦ provisionalDENTE18-0.21+0.13-0.05+0.31
173Seth Roberts◦ provisionalLVWR65-0.01+0.13-0.04+0.29
174Geronimo Allison◦ provisionalGBWR39-0.12+0.12-0.05+0.30
175Michael Floyd◦ provisionalMINWR17-0.44+0.12-0.06+0.31
176Luke Willson◦ provisionalSEATE22-0.20+0.12-0.06+0.30
177Chris Moore◦ provisionalBALWR38-0.14+0.12-0.05+0.30
178John Brown◦ provisionalARIWR56-0.06+0.12-0.05+0.29
179C.J. Fiedorowicz◦ provisionalHOUTE22-0.22+0.12-0.06+0.30
180Dion Sims◦ provisionalCHITE29-0.15+0.12-0.06+0.29
181A.J. Green◦ provisionalCINWR143+0.04+0.12-0.03+0.26
182Tavon Austin◦ provisionalLAWR22-0.38+0.12-0.07+0.30
183Travis Rudolph◦ provisionalNYGWR22-0.39+0.12-0.07+0.30
184Jonnu Smith◦ provisionalTENTE30-0.16+0.11-0.06+0.29
185Aldrick Robinson◦ provisionalSFWR48-0.12+0.11-0.06+0.29
186DeVante Parker◦ provisionalMIAWR97-0.01+0.11-0.04+0.27
187Zach Miller◦ provisionalCHITE35-0.13+0.11-0.06+0.28
188Evan Engram◦ provisionalNYGTE115+0.04+0.11-0.04+0.26
189Kasen Williams◦ provisionalCLEWR18-0.56+0.11-0.07+0.29
190Laquon Treadwell◦ provisionalMINWR35-0.24+0.11-0.07+0.29
191Jarvis Landry◦ provisionalMIAWR161+0.03+0.11-0.03+0.25
192Anthony Fasano◦ provisionalMIATE16-0.47+0.11-0.07+0.29
193Jack Doyle◦ provisionalINDTE109+0.02+0.11-0.04+0.26
194Ross Travis◦ provisionalINDTE17-0.45+0.11-0.07+0.29
195Pharoh Cooper◦ provisionalLAWR19-0.57+0.11-0.08+0.29
196Jimmy Graham◦ provisionalSEATE98+0.01+0.11-0.05+0.26
197Seth DeValve◦ provisionalCLETE58-0.06+0.10-0.06+0.27
198Delanie Walker◦ provisionalTENTE111+0.01+0.10-0.04+0.25
199Josh Doctson◦ provisionalWASWR78-0.07+0.10-0.06+0.27
200Amari Cooper◦ provisionalLVWR96-0.04+0.10-0.06+0.26
201Julius Thomas◦ provisionalMIATE62-0.07+0.10-0.06+0.26
202Michael Clark◦ provisionalGBWR14-0.91+0.10-0.09+0.28
203Jordy Nelson◦ provisionalGBWR89-0.06+0.10-0.06+0.26
204Eli Rogers◦ provisionalPITWR36-0.31+0.10-0.08+0.27
205Darrell Daniels◦ provisionalINDTE13-0.75+0.10-0.09+0.28
206Isaiah McKenzie◦ provisionalDENWR13-1.03+0.10-0.09+0.28
207Jamison Crowder◦ provisionalWASWR103-0.05+0.10-0.06+0.25
208A.J. Derby◦ provisionalMIATE40-0.18+0.10-0.07+0.27
209Greg Olsen◦ provisionalCARTE38-0.21+0.09-0.08+0.27
210Corey Coleman◦ provisionalCLEWR58-0.18+0.09-0.08+0.26
211Kenny Britt◦ provisionalNEWR43-0.28+0.09-0.08+0.26
212Mike Williams◦ provisionalLACWR23-0.62+0.09-0.09+0.27
213J.J. Nelson◦ provisionalARIWR61-0.19+0.09-0.08+0.25
214Bennie Fowler◦ provisionalDENWR56-0.22+0.09-0.08+0.26
215Roger Lewis◦ provisionalNYGWR72-0.15+0.09-0.08+0.25
216Austin Seferian-Jenkins◦ provisionalNYJTE74-0.10+0.08-0.08+0.24
217Stephen Anderson◦ provisionalHOUTE52-0.19+0.08-0.09+0.25
218Rashard Higgins◦ provisionalCLEWR50-0.32+0.07-0.10+0.24
219Josh Hill◦ provisionalNOTE22-0.63+0.07-0.11+0.25
220Zay Jones◦ provisionalBUFWR74-0.20+0.07-0.09+0.23
221Dez Bryant◦ provisionalDALWR132-0.08+0.07-0.08+0.22
222Ricardo Louis◦ provisionalCLEWR61-0.27+0.07-0.10+0.24
223Demaryius Thomas◦ provisionalDENWR142-0.08+0.06-0.08+0.21
224Cole Beasley◦ provisionalDALWR63-0.27+0.06-0.10+0.23
225Corey Davis◦ provisionalTENWR65-0.30+0.05-0.11+0.22
226Lance Kendricks◦ provisionalGBTE35-0.48+0.05-0.12+0.23
227Breshad Perriman◦ provisionalBALWR35-0.63+0.05-0.12+0.23
228Kamar 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).