Wednesday, January 11, 2017

On Players Evaluation - Part VI (Skater's [and Goaltender non-SVP] Elo)



The most important conclusion of the last chapter that dealt with goalies' Elos is that it is defined by actual performance of a goaltender versus the expected performance of the team he is facing. That is the approach we are going to inherit for evaluating skaters.

For the start we compute the average stats of a league for each season. We do that for most of the stats that are measured, from goals and assists to faceoffs taken, up to the time on ice for the goaltenders. This is a trivial calculation. Thus we obtain season stat averages Savg.

Now we can begin to work with the skaters. We assign them a rating of 2000 in each stat. The first and the most difficult step is to coerce the actual performance of a skater in each stat to a chess-like result, on the scale from 0 to 1. This is a real problem, since the result distribution for the number of players looks something like one of these chi-squares:


Therefore we need to rebalance it somehow while preserving the following rules:
  • They should be more or less distributive, i.e. scoring 1 goal thrice in a row in a game should produce approximately the same performance as scoring a hat trick in one game and going scoreless in the other two.
  • They should still have the same shape as the original one.
  • The average rating of the league in each stat should remain 2000 at the end of the season.

So first, we do not apply rating changes after a single game. We take a committing period, for example, five games, and average players' performance in every rated stat over that period. Second, we apply the following transformation to the performance:

P'player = (Pplayer - Savg) / Savg

where Savg is the season average on that stat. It could be more precise to compute against the averages against of the teams played (see the first paragraph), but we decided to go via a simpler route at this stage.

Then we scale the performance by the Adjustment Factor A:

P'playeradj = P'player / A

The adjustment factor sets the result between -0.5 and 0.5. More or less. There still are outliers, but they are very infrequently beyond 0.5 . The A factor depends on the rarity of the scoring in the stat and varies from 6 (Shot on Goal) to 90 (Shorthanded goal). The adjustment for goals, is, for example, 9. The adjustment for faceoffs won is 20. The latter one might look a bit surprising, but remember that many players do not ever take faceoffs, e.g. defensemen. Naturally, only skaters stats are computed for skaters, only goalie stats for goaltenders.

The final Result Rplayer is then:
Rplayer = P'playeradj + 0.5

So for the rare events we have a lot of results in the 0.48-0.5 area and a few going to 1. For the frequent events (shots, blocks, hits), the distribution is more even.

Now that we got the player's "result" R, we can compute the elo change through the familiar formula:

ΔElo = K * (R - (1/(1+10(2000 - Eloplayer)/400)))

where K is the volatility coefficient which we define as:

16 * √(A) * √(4 / (C + 1))

A is the aforementioned Adjustment Factor and C is the Career Year for the rookies (1) and the sophomores (2), and 3 for all other players.

'What is 2000', an attentive reader would ask? 2000 is the average rating of the league in each stat. We use, because the "result" of the player was "against" the league average. If we used team averages, we would put the average "Elo against" of the teams faced instead.

After we have the ΔElo, the new Elo' of a player in a specific stat becomes:

Elo' = Elo + ΔElo

And from that we can derive the expected average performance of a player in each stat, per game:

Rexp = 1/(1+10(2000-Elo')/400)
Pexp = (Rexp - 0.5) * A * Savg + Savg

which is an "unwinding" of the calculations that brought us from the actual performance to the new rating.

The calculation differs for the three following stats:

  1. SVP - processed as described in Part V.
  2. Win/Loss - processed as a chess game against a 2000 opponent, where the result is:
Rw = Pw/(Pw+Pl), Rl = Pl(Pw+Pl)
over the committing period.
The only subtlety here is that sometimes a hockey game may result in goalie win without a goalie loss.
  1. PlusMinus -
R+/- = 0.5 * (P+/- - Savg+/-) / 10 (10 skaters on ice on average)

Then, via the regular route we get the Elo' and the expected "result" Rexp, and the expected performance is:
Pexp+/- = (Rexp+/- - 0.5) * 10 + Savg+/-

Please note that we do not compute "derived" stats, i.e. the number of points (or SHP, or PPP), or the GAA, given the GA and TOI, or GA, given SA and SV.

An example of the computed expected performances that lists expectations of top 30 Centers in Assists (Adjustment Factor 9) can be seen below:

# Player Pos Team Games A a/g Avg. g. Avg.a  E a/g  E a/fs
1 CONNOR MCDAVID C EDM 43 34 0.791 44.00 33.00 0.706 61.54
2 JOE THORNTON C SJS 41 24 0.585 74.11 52.00 0.665 51.27
3 NICKLAS BACKSTROM C WSH 40 24 0.600 69.20 50.10 0.663 51.85
4 EVGENI MALKIN C PIT 39 27 0.692 62.09 44.73 0.659 55.33
5 SIDNEY CROSBY C PIT 33 18 0.545 61.67 51.50 0.655 46.15
6 RYAN GETZLAF C ANA 36 25 0.694 68.58 45.42 0.648 50.26
7 EVGENY KUZNETSOV C WSH 40 22 0.550 54.75 27.75 0.605 47.43
8 ANZE KOPITAR C LAK 36 16 0.444 72.73 41.55 0.594 40.33
9 ALEXANDER WENNBERG C CBJ 40 28 0.700 59.00 25.67 0.583 52.50
10 CLAUDE GIROUX C PHI 43 25 0.581 61.70 37.60 0.579 47.56
11 TYLER SEGUIN C DAL 42 26 0.619 66.86 31.14 0.566 48.65
12 RYAN O'REILLY C BUF 30 16 0.533 66.00 26.38 0.553 39.23
13 DAVID KREJCI C BOS 44 18 0.409 60.64 32.36 0.528 38.05
14 RYAN JOHANSEN C NSH 41 22 0.537 65.33 27.00 0.523 43.43
15 JOE PAVELSKI C SJS 41 23 0.561 69.64 29.09 0.517 44.21
16 HENRIK SEDIN C VAN 43 17 0.395 75.56 47.81 0.517 37.17
17 DEREK STEPAN C NYR 42 22 0.524 68.00 30.86 0.508 42.31
18 VICTOR RASK C CAR 41 19 0.463 67.00 22.67 0.497 39.37
19 MARK SCHEIFELE C WPG 40 20 0.500 44.50 17.83 0.493 39.23
20 JASON SPEZZA C DAL 35 18 0.514 62.71 37.79 0.490 37.60
21 JOHN TAVARES C NYI 38 16 0.421 68.50 35.00 0.488 37.46
22 MITCHELL MARNER C TOR 39 21 0.538 39.00 21.00 0.484 41.82
23 STEVEN STAMKOS C TBL 17 11 0.647 65.11 29.00 0.474 29.97
24 ALEKSANDER BARKOV C FLA 36 18 0.500 56.75 21.00 0.463 36.51
25 MIKAEL GRANLUND C MIN 39 21 0.538 55.80 24.40 0.460 40.80
26 PAUL STASTNY C STL 40 13 0.325 65.09 34.55 0.457 31.74
27 JEFF CARTER C LAK 41 15 0.366 69.67 24.33 0.448 33.35
28 MIKE RIBEIRO C NSH 41 18 0.439 62.88 33.06 0.447 36.32
29 MIKKO KOIVU C MIN 39 16 0.410 66.83 34.25 0.445 35.14
30 ERIC STAAL C MIN 39 22 0.564 74.46 36.77 0.442 40.99

You can see more of such expectation evaluations on our website, http://morehockeystats.com/fantasy/evaluation .

Now, we ask ourselves, how can we use these stats evaluations to produce an overall evaluation of a player?


To be concluded...

No comments:

Post a Comment