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
121 TE · 327 WR
targets to trust the number
shrunkrawthe shrink90% CI
0.00.20.40.6TE avgWR avg1Travis KelceKC · 118+0.412Rob GronkowskiNE · 38+0.393Hunter HenryLAC · 54+0.354Martellus BennettNE · 73+0.345Erik SwoopeIND · 22+0.346Cameron BrateTB · 81+0.337Levine ToiloloATL · 19+0.328Tyler EifertCIN · 47+0.319Cole BeasleyDAL · 98+0.3110Dwayne AllenIND · 53+0.3011Jimmy GrahamSEA · 95+0.3012Jordy NelsonGB · 152+0.2913Austin HooperATL · 28+0.2914Eric EbronDET · 85+0.2915Adam ThielenMIN · 92+0.2816Julio JonesATL · 130+0.2817Doug BaldwinSEA · 126+0.2818Brandin CooksNO · 117+0.2819Gary BarnidgeCLE · 83+0.2820Pierre GarconWAS · 114+0.2821A.J. GreenCIN · 100+0.2722Jordan ReedWAS · 90+0.2723T.Y. HiltonIND · 157+0.2724Mike EvansTB · 175+0.2625Vance McDonaldSF · 45+0.2626Stefon DiggsMIN · 112+0.2627Taylor GabrielATL · 50+0.2628Marvin JonesDET · 103+0.2629MarQueis GrayMIA · 17+0.2630Zach MillerCHI · 64+0.2631Neal SterlingJAX · 16+0.2532Anthony FasanoTEN · 14+0.2533Terrance WilliamsDAL · 61+0.2534Chris HoganNE · 58+0.2535Malcolm MitchellNE · 48+0.2536Danny AmendolaNE · 29+0.2437Aldrick RobinsonATL · 32+0.2438Geronimo AllisonGB · 22+0.2439Cobi HamiltonPIT · 28+0.2440Justin HardyATL · 31+0.2341Rod StreaterSF · 27+0.23

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
1Travis Kelce◦ provisionalKCTE118+0.60+0.41+0.25+0.57
2Rob Gronkowski◦ provisionalNETE38+0.93+0.39+0.20+0.58
3Hunter Henry◦ provisionalLACTE54+0.64+0.35+0.17+0.54
4Martellus Bennett◦ provisionalNETE73+0.53+0.34+0.17+0.51
5Erik Swoope◦ provisionalINDTE22+0.96+0.34+0.14+0.54
6Cameron Brate◦ provisionalTBTE81+0.50+0.33+0.17+0.50
7Levine Toilolo◦ provisionalATLTE19+0.93+0.32+0.12+0.53
8Tyler Eifert◦ provisionalCINTE47+0.53+0.31+0.12+0.50
9Cole Beasley◦ provisionalDALWR98+0.63+0.31+0.18+0.43
10Dwayne Allen◦ provisionalINDTE53+0.47+0.30+0.12+0.48
11Jimmy Graham◦ provisionalSEATE95+0.39+0.30+0.13+0.46
12Jordy Nelson◦ provisionalGBWR152+0.48+0.29+0.17+0.41
13Austin Hooper◦ provisionalATLTE28+0.58+0.29+0.09+0.49
14Eric Ebron◦ provisionalDETTE85+0.39+0.29+0.12+0.46
15Adam Thielen◦ provisionalMINWR92+0.55+0.28+0.15+0.41
16Julio Jones◦ provisionalATLWR130+0.47+0.28+0.16+0.41
17Doug Baldwin◦ provisionalSEAWR126+0.47+0.28+0.16+0.40
18Brandin Cooks◦ provisionalNOWR117+0.47+0.28+0.15+0.40
19Gary Barnidge◦ provisionalCLETE83+0.35+0.28+0.11+0.45
20Pierre Garcon◦ provisionalWASWR114+0.47+0.28+0.15+0.40
21A.J. Green◦ provisionalCINWR100+0.49+0.27+0.15+0.40
22Jordan Reed◦ provisionalWASTE90+0.33+0.27+0.10+0.44
23T.Y. Hilton◦ provisionalINDWR157+0.38+0.27+0.15+0.39
24Mike Evans◦ provisionalTBWR175+0.37+0.26+0.15+0.38
25Vance McDonald◦ provisionalSFTE45+0.37+0.26+0.08+0.45
26Stefon Diggs◦ provisionalMINWR112+0.41+0.26+0.13+0.39
27Taylor Gabriel◦ provisionalATLWR50+0.59+0.26+0.12+0.39
28Marvin Jones◦ provisionalDETWR103+0.42+0.26+0.13+0.39
29MarQueis Gray◦ provisionalMIATE17+0.49+0.26+0.05+0.46
30Zach Miller◦ provisionalCHITE64+0.32+0.26+0.08+0.43
31Mohamed Sanu◦ provisionalATLWR82+0.44+0.26+0.13+0.39
32Neal Sterling◦ provisionalJAXTE16+0.47+0.25+0.05+0.46
33Anthony Fasano◦ provisionalTENTE14+0.49+0.25+0.05+0.46
34Terrance Williams◦ provisionalDALWR61+0.48+0.25+0.12+0.39
35Stephen Anderson◦ provisionalHOUTE16+0.46+0.25+0.05+0.46
36Chris Hogan◦ provisionalNEWR58+0.48+0.25+0.12+0.38
37Davante Adams◦ provisionalGBWR123+0.35+0.25+0.12+0.37
38Jared Cook◦ provisionalGBTE51+0.30+0.25+0.06+0.43
39Dion Sims◦ provisionalMIATE35+0.33+0.25+0.05+0.44
40Steve Smith◦ provisionalBALWR104+0.36+0.25+0.12+0.37
41Willie Snead◦ provisionalNOWR104+0.36+0.25+0.12+0.37
42Malcolm Mitchell◦ provisionalNEWR48+0.50+0.25+0.11+0.38
43Darren Fells◦ provisionalARITE18+0.38+0.25+0.04+0.45
44Nick O'Leary◦ provisionalBUFTE15+0.41+0.24+0.04+0.45
45Daniel Brown◦ provisionalCHITE20+0.36+0.24+0.04+0.45
46Danny Amendola◦ provisionalNEWR29+0.62+0.24+0.10+0.38
47Antonio Brown◦ provisionalPITWR157+0.31+0.24+0.12+0.36
48Seth DeValve◦ provisionalCLETE12+0.41+0.24+0.03+0.45
49Eli Rogers◦ provisionalPITWR66+0.39+0.24+0.11+0.37
50DeSean Jackson◦ provisionalWASWR100+0.33+0.24+0.11+0.36
51Aldrick Robinson◦ provisionalATLWR32+0.53+0.24+0.10+0.38
52Geronimo Allison◦ provisionalGBWR22+0.64+0.24+0.10+0.38
53Cobi Hamilton◦ provisionalPITWR28+0.55+0.24+0.10+0.38
54Zach Ertz◦ provisionalPHITE106+0.25+0.24+0.08+0.40
55Ben Koyack◦ provisionalJAXTE24+0.29+0.23+0.03+0.44
56Kenny Britt◦ provisionalLAWR111+0.31+0.23+0.11+0.36
57Jeff Heuerman◦ provisionalDENTE17+0.31+0.23+0.03+0.44
58Randall Cobb◦ provisionalGBWR84+0.32+0.23+0.10+0.36
59Justin Hardy◦ provisionalATLWR31+0.47+0.23+0.09+0.37
60Mike Wallace◦ provisionalBALWR117+0.29+0.23+0.11+0.36
61Jarvis Landry◦ provisionalMIAWR133+0.28+0.23+0.11+0.35
62Jason Witten◦ provisionalDALTE95+0.24+0.23+0.07+0.39
63Jordan Matthews◦ provisionalPHITE119+0.24+0.23+0.07+0.39
64Rod Streater◦ provisionalSFWR27+0.48+0.23+0.09+0.37
65Jamison Crowder◦ provisionalWASWR99+0.30+0.23+0.10+0.36
66Anquan Boldin◦ provisionalDETWR95+0.30+0.23+0.10+0.36
67Rishard Matthews◦ provisionalTENWR109+0.29+0.23+0.10+0.35
68Austin Seferian-Jenkins◦ provisionalNYJTE20+0.25+0.23+0.03+0.43
69Ladarius Green◦ provisionalPITTE35+0.24+0.23+0.04+0.42
70Brandon LaFell◦ provisionalCINWR107+0.29+0.23+0.10+0.35
71Kyle RudolphMINTE133+0.23+0.23+0.08+0.38
72Russell Shepard◦ provisionalTBWR40+0.38+0.23+0.09+0.36
73Mychal Rivera◦ provisionalLVTE25+0.24+0.23+0.03+0.43
74Delanie Walker◦ provisionalTENTE102+0.23+0.23+0.06+0.39
75Michael Crabtree◦ provisionalLVWR147+0.26+0.23+0.10+0.35
76Terrelle Pryor◦ provisionalCLEWR142+0.26+0.23+0.10+0.35
77Jerell Adams◦ provisionalNYGTE21+0.23+0.23+0.02+0.43
78Dez Bryant◦ provisionalDALWR98+0.28+0.22+0.10+0.35
79Virgil Green◦ provisionalDENTE37+0.22+0.22+0.03+0.42
80Eddie Royal◦ provisionalCHIWR43+0.34+0.22+0.09+0.36
81Julian Edelman◦ provisionalNEWR160+0.25+0.22+0.10+0.34
82Dontrelle Inman◦ provisionalLACWR97+0.27+0.22+0.09+0.35
83Brandon Myers◦ provisionalTBTE15+0.20+0.22+0.02+0.43
84Paul Richardson◦ provisionalSEAWR36+0.34+0.22+0.08+0.36
85Robert Woods◦ provisionalBUFWR76+0.28+0.22+0.09+0.35
86Jack Doyle◦ provisionalINDTE75+0.22+0.22+0.05+0.39
87Marquess Wilson◦ provisionalCHIWR16+0.46+0.22+0.08+0.36
88Amari Cooper◦ provisionalLVWR135+0.25+0.22+0.10+0.34
89A.J. Derby◦ provisionalDENTE20+0.19+0.22+0.02+0.42
90Cameron Meredith◦ provisionalCHIWR97+0.26+0.22+0.09+0.35
91Chris Harper◦ provisionalSFWR21+0.39+0.22+0.08+0.36
92Tyler Lockett◦ provisionalSEAWR66+0.27+0.22+0.09+0.35
93Luke Willson◦ provisionalSEATE21+0.19+0.22+0.02+0.42
94Deonte Thompson◦ provisionalCHIWR36+0.31+0.22+0.08+0.36
95Eric Decker◦ provisionalNYJWR21+0.36+0.22+0.08+0.36
96Bryan Walters◦ provisionalJAXWR34+0.30+0.22+0.08+0.36
97Jarius Wright◦ provisionalMINWR14+0.38+0.22+0.07+0.36
98Charles Clay◦ provisionalBUFTE87+0.20+0.22+0.05+0.38
99Vernon Davis◦ provisionalWASTE59+0.19+0.21+0.04+0.39
100Odell Beckham Jr.◦ provisionalNYGWR169+0.23+0.21+0.10+0.33
101J.J. Nelson◦ provisionalARIWR75+0.24+0.21+0.08+0.35
102Clive Walford◦ provisionalLVTE52+0.19+0.21+0.03+0.40
103Travis Benjamin◦ provisionalLACWR75+0.24+0.21+0.08+0.35
104Sammy Watkins◦ provisionalBUFWR52+0.25+0.21+0.08+0.35
105Paul Turner◦ provisionalPHIWR14+0.34+0.21+0.07+0.36
106Jordan Taylor◦ provisionalDENWR25+0.28+0.21+0.07+0.35
107Michael Thomas◦ provisionalNOWR121+0.23+0.21+0.09+0.34
108Brandon Coleman◦ provisionalNOWR38+0.25+0.21+0.08+0.35
109Andre Roberts◦ provisionalDETWR25+0.26+0.21+0.07+0.35
110DeMarcus Ayers◦ provisionalPITWR13+0.29+0.21+0.07+0.35
111DeVante Parker◦ provisionalMIAWR87+0.22+0.21+0.08+0.34
112Chris Conley◦ provisionalKCWR69+0.23+0.21+0.08+0.34
113Brent Celek◦ provisionalPHITE19+0.13+0.21+0.01+0.42
114Andrew Hawkins◦ provisionalCLEWR54+0.22+0.21+0.08+0.34
115Kendall Wright◦ provisionalTENWR43+0.22+0.21+0.07+0.35
116Tyler Kroft◦ provisionalCINTE12+0.05+0.21+0.00+0.42
117Josh Hill◦ provisionalNOTE22+0.12+0.21+0.01+0.41
118Tyreek Hill◦ provisionalKCWR83+0.21+0.21+0.08+0.34
119Larry Fitzgerald◦ provisionalARIWR150+0.20+0.21+0.09+0.33
120Sterling Shepard◦ provisionalNYGWR105+0.20+0.21+0.08+0.33
121Justin Hunter◦ provisionalBUFWR24+0.18+0.21+0.07+0.35
122Kamar Aiken◦ provisionalBALWR50+0.18+0.21+0.07+0.34
123Donte Moncrief◦ provisionalINDWR56+0.18+0.21+0.07+0.34
124Cody Latimer◦ provisionalDENWR15+0.12+0.20+0.06+0.35
125Josh Bellamy◦ provisionalCHIWR38+0.17+0.20+0.07+0.34
126Jacob Tamme◦ provisionalATLTE31+0.12+0.20+0.01+0.40
127Adam Humphries◦ provisionalTBWR84+0.18+0.20+0.07+0.33
128Kelvin Benjamin◦ provisionalCARWR118+0.19+0.20+0.08+0.33
129David Johnson◦ provisionalPITTE12-0.01+0.20-0.01+0.41
130Golden Tate◦ provisionalDETWR136+0.18+0.20+0.08+0.32
131Greg OlsenCARTE132+0.18+0.20+0.05+0.35
132Victor Cruz◦ provisionalNYGWR72+0.17+0.20+0.07+0.33
133John Phillips◦ provisionalNOTE15+0.01+0.20-0.01+0.41
134Ted Ginn◦ provisionalCARWR95+0.17+0.20+0.07+0.33
135Keith Mumphery◦ provisionalHOUWR12-0.02+0.20+0.06+0.34
136Andre Holmes◦ provisionalLVWR25+0.09+0.20+0.06+0.34
137Jeff Janis◦ provisionalGBWR19+0.05+0.20+0.06+0.34
138Jermaine Gresham◦ provisionalARITE61+0.15+0.20+0.02+0.38
139Kenny Stills◦ provisionalMIAWR81+0.16+0.20+0.07+0.33
140Bennie Fowler◦ provisionalDENWR24+0.07+0.20+0.06+0.34
141Dorial Green-Beckham◦ provisionalPHIWR74+0.16+0.20+0.07+0.33
142Demaryius Thomas◦ provisionalDENWR145+0.18+0.20+0.08+0.32
143Jaron Brown◦ provisionalARIWR23+0.06+0.20+0.06+0.34
144Tyrell Williams◦ provisionalLACWR119+0.17+0.20+0.07+0.32
145Maurice Harris◦ provisionalWASWR12-0.08+0.20+0.06+0.34
146Garrett Celek◦ provisionalSFTE50+0.13+0.20+0.01+0.38
147James Wright◦ provisionalCINWR19+0.02+0.20+0.06+0.34
148Devin Funchess◦ provisionalCARWR59+0.14+0.20+0.06+0.33
149Crockett Gillmore◦ provisionalBALTE14-0.03+0.20-0.01+0.41
150Brice Butler◦ provisionalDALWR32+0.07+0.20+0.06+0.34
151Brittan Golden◦ provisionalARIWR14-0.09+0.20+0.05+0.34
152Sammie Coates◦ provisionalPITWR49+0.11+0.20+0.06+0.33
153Cody Core◦ provisionalCINWR27+0.04+0.20+0.06+0.34
154Walt Powell◦ provisionalBUFWR25+0.03+0.20+0.06+0.34
155Aaron Burbridge◦ provisionalSFWR16-0.07+0.20+0.05+0.34
156Marqise Lee◦ provisionalJAXWR105+0.15+0.19+0.07+0.32
157T.J. Jones◦ provisionalDETWR15-0.13+0.19+0.05+0.34
158Josh Huff◦ provisionalTBWR23-0.02+0.19+0.05+0.33
159Richard Rodgers◦ provisionalGBTE47+0.11+0.19+0.01+0.38
160Rashard Higgins◦ provisionalCLEWR12-0.24+0.19+0.05+0.34
161Ricardo Louis◦ provisionalCLEWR36+0.05+0.19+0.06+0.33
162Ryan Grant◦ provisionalWASWR19-0.09+0.19+0.05+0.33
163Cecil Shorts◦ provisionalTBWR27-0.01+0.19+0.05+0.33
164Chester Rogers◦ provisionalINDWR34+0.03+0.19+0.05+0.33
165Bryce Treggs◦ provisionalPHIWR12-0.29+0.19+0.05+0.33
166Charles D. Johnson◦ provisionalMINWR37+0.03+0.19+0.05+0.33
167Phillip Dorsett◦ provisionalINDWR59+0.09+0.19+0.06+0.32
168Emmanuel Sanders◦ provisionalDENWR137+0.15+0.19+0.07+0.31
169Xavier Grimble◦ provisionalPITTE21-0.01+0.19-0.01+0.39
170Coby Fleener◦ provisionalNOTE82+0.14+0.19+0.02+0.36
171Harry Douglas◦ provisionalTENWR22-0.10+0.19+0.05+0.33
172Andre Johnson◦ provisionalTENWR23-0.09+0.19+0.05+0.33
173Darrius Heyward-Bey◦ provisionalPITWR19-0.15+0.19+0.05+0.33
174C.J. Uzomah◦ provisionalCINTE38+0.07+0.19-0.00+0.38
175C.J. Fiedorowicz◦ provisionalHOUTE89+0.14+0.19+0.02+0.35
176Michael Floyd◦ provisionalNEWR77+0.09+0.19+0.06+0.32
177Ty Montgomery◦ provisionalGBWR56+0.05+0.19+0.05+0.32
178Charone Peake◦ provisionalNYJWR35-0.03+0.19+0.05+0.32
179Brian Quick◦ provisionalLAWR77+0.08+0.18+0.05+0.32
180Will Fuller◦ provisionalHOUWR92+0.09+0.18+0.05+0.31
181Antonio Gates◦ provisionalLACTE94+0.13+0.18+0.02+0.35
182Quinton Patton◦ provisionalSFWR63+0.04+0.18+0.05+0.31
183Chris Moore◦ provisionalBALWR16-0.39+0.18+0.04+0.32
184Tajae Sharpe◦ provisionalTENWR83+0.07+0.18+0.05+0.31
185Tyler Boyd◦ provisionalCINWR81+0.07+0.18+0.05+0.31
186Jeremy Maclin◦ provisionalKCWR76+0.05+0.18+0.05+0.31
187Jalin Marshall◦ provisionalNYJWR23-0.24+0.18+0.04+0.32
188Corey Coleman◦ provisionalCLEWR73+0.04+0.18+0.05+0.31
189Marquise Goodwin◦ provisionalBUFWR68+0.03+0.18+0.05+0.31
190Marcedes Lewis◦ provisionalJAXTE30-0.01+0.18-0.02+0.37
191Roger Lewis◦ provisionalNYGWR19-0.39+0.18+0.03+0.32
192Jaelen Strong◦ provisionalHOUWR24-0.28+0.18+0.04+0.32
193Rhett Ellison◦ provisionalMINTE14-0.25+0.18-0.03+0.38
194Seth Roberts◦ provisionalLVWR79+0.03+0.17+0.04+0.30
195Ed Dickson◦ provisionalCARTE19-0.16+0.17-0.03+0.38
196Demetrius Harris◦ provisionalKCTE32-0.02+0.17-0.02+0.37
197Darren Waller◦ provisionalBALTE17-0.21+0.17-0.03+0.38
198Quincy Enunwa◦ provisionalNYJWR105+0.05+0.17+0.04+0.30
199Trey Burton◦ provisionalPHITE60+0.06+0.17-0.01+0.35
200Vincent Jackson◦ provisionalTBWR34-0.21+0.17+0.03+0.31
201Jordan Norwood◦ provisionalDENWR35-0.21+0.17+0.03+0.31
202Corey Brown◦ provisionalCARWR54-0.08+0.17+0.03+0.30
203Julius Thomas◦ provisionalJAXTE51+0.03+0.17-0.02+0.35
204John Brown◦ provisionalARIWR73-0.03+0.17+0.03+0.30
205Breshad Perriman◦ provisionalBALWR66-0.06+0.16+0.03+0.30
206Albert Wilson◦ provisionalKCWR51-0.13+0.16+0.03+0.30
207Nelson Agholor◦ provisionalPHIWR70-0.06+0.16+0.03+0.29
208Braxton Miller◦ provisionalHOUWR28-0.39+0.16+0.02+0.30
209Kevin White◦ provisionalCHIWR36-0.28+0.16+0.02+0.30
210Alshon Jeffery◦ provisionalCHIWR94-0.04+0.15+0.03+0.28
211Brandon Marshall◦ provisionalNYJWR128-0.00+0.15+0.03+0.27
212Robbie Chosen◦ provisionalNYJWR78-0.11+0.15+0.02+0.28
213Torrey Smith◦ provisionalSFWR49-0.29+0.14+0.01+0.28
214Pharoh Cooper◦ provisionalLAWR20-0.98+0.14-0.00+0.28
215Allen Hurns◦ provisionalJAXWR76-0.16+0.14+0.01+0.27
216DeAndre Hopkins◦ provisionalHOUWR151-0.01+0.14+0.02+0.26
217Ryan Griffin◦ provisionalHOUTE74-0.00+0.14-0.03+0.31
218Jesse James◦ provisionalPITTE61-0.06+0.13-0.05+0.31
219Jermaine Kearse◦ provisionalSEAWR89-0.22+0.12-0.01+0.25
220Allen Robinson◦ provisionalJAXWR152-0.10+0.11-0.01+0.23
221Jeremy Kerley◦ provisionalSFWR115-0.20+0.10-0.02+0.23
222Lance Kendricks◦ provisionalLATE87-0.11+0.08-0.08+0.25
223Larry Donnell◦ provisionalNYGTE22-0.71+0.08-0.12+0.28
224Will Tye◦ provisionalNYGTE70-0.17+0.08-0.10+0.25
225Tyler Higbee◦ provisionalLATE29-0.56+0.07-0.12+0.27
226Tavon Austin◦ provisionalLAWR106-0.36+0.07-0.06+0.20
227Dennis PittaBALTE121-0.13+0.04-0.11+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).