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:
- SVP - processed as described in Part V.
- 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.
- 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