A few weeks ago, I took a look at the distribution of shot rates on the team level, borrowing heavily from work by Micah McCurdy of HockeyViz.com. Generally speaking, understanding how a parameter is distributed across players or teams in the NHL can provide us with macro insights as to how the game is played, and also provide valuable insight into how that should affect team building.

With that in mind, I wanted to take a look at the distribution of another critical metric that is used for evaluation - individual scoring. Note that in this piece, I am defining scoring as Primary Points (Goals + First Assists) per 60 minutes of play. This is denoted by Prim P60. All figures are 5v5. The reason we use Primary Points per 60 as opposed to simply Points per 60 is because secondary assists have been shown to be mostly noise.

One of the most important parts of interpreting a player's scoring ability is contextualizing it within the rest of the league. Is a Prim P60 of 1.5 good? Is it replaceable? Off the top of your head, you probably don't know.

Tools like Domenic Galamini's (@MimicoHero) HERO charts make this easy. It immediately tells you where an individual's scoring places them among the league, like the example shown below:

We can see right off the bat that this player's scoring straddles the border between a 2nd line and 3rd line player. One thing that is obvious when looking at Galamini's visualization is that not all segments have equal width - this is because the variability between levels is not constant. There is a much larger difference between the best scorer and 90th best scorer in the league (shown by the length of the '1L' bar) than there is between the 91st best and 180th best scorers in the league.

I wanted to add context to this, and demonstrate it further. In order to do so, I created a histogram of all individual forward seasons with more than 400 5v5 minutes, from 2013/2014 to 2015/2016. From this, we can get a more complete idea of how scoring is distributed across the league. 400 minutes was chosen as the benchmark, as it yielded roughly 360 forwards each year, averaging out to a full forward set of 12 per team.

It should be fairly clear that this distribution is skewed to the right - that is, the right tail is longer than the left tail. This dovetails with what Galamini's HERO charts show. Now, let's take the next step and evaluate what the benchmarks would be for a 1st, 2nd, 3rd, and 4th liner.

The blue lines indicate the 25th, 50th, 75th, and 100th percentile of forwards in the selected sample, which can be loosely tied to expected point production from fourth, third, second, and first line players. I'm using a density function here as opposed to a histogram for a couple reasons:

1. It's easier to read, especially with the overlaid blue lines.

2. It's more accurate, as the shape of a histogram can be affected by the bin size. A density function can be thought of as a histogram with infinitesimally small bin size, so it is not subject to the same downfall.

Interpreting this, we again see that there is a HUGE range of scoring among first liners, a fairly robust range of scoring among 4th liners / replacement level players, and basically no difference in the middle six. To me, this suggests a few things:

1. Not all 1st liners are equal. There is a gigantic difference between the high-end first liners and everyone else. These are the guys who are providing insane marginal value relative to other players, and these are the guys who teams need to develop (or acquire when given the opportunity). It's somewhat similar to the idea that draft pick value drops off precipitously after the first few. Much like there isn't a huge difference between a low 1st round draft pick and a high 2nd round draft pick, there isn't much of a difference between a low-end 'first liner' and a high end 'second liner'.

2. Scoring in the middle six is highly clustered. The difference between a high end 2nd liner (1.4 Prim P60) and a mediocre 3rd liner (1.0 Prim P60) is pretty small. Over the course of a regular season (assuming 1000 ES minutes, which is 2nd line territory), the difference between those players would be just 6-7 primary points. Not to downplay 7 points (because they do matter), but that's not exactly a catastrophic drop. In the context of team-building, that means there may be efficiencies to be had. If the marginal cost of upgrading from a mediocre 3rd line scorer to an excellent 2nd line scorer (all else between the players equal*) is higher than the meager marginal benefit the higher scoring player provides, a team would be better off avoiding that upgrade. It may also mean that a 'stars and scrubs' strategy is a viable and efficient way to build a team's forward corps. Decent 25th - 50th percentile scorers are available every offseason for peanuts, and if a team has to sacrifice a little on them in order to create cap room to acquire high-end talent, that seems like it'd be a good tradeoff.

* Of course, all else may not be equal between the players - I'd like to look at the distribution for other important factors in player evaluation, like shot results. But this is simply a thought experiment for the time being.

3. Thinking of players as a X liner is overly simplistic. By bucketing players into rigid groups based on their scoring, we lose a lot of the surrounding context of what their level of scoring actually indicates. It overstates differences between certain buckets, and understates differences within certain buckets. When we say that player Y is a 2nd line scorer while player Z is a 3rd line scorer, we are drawing a line between them that significantly informs how people think about them. 2nd liners are thought of as high-end skill players who are core parts of a team. 3rd liners are often thought of as replaceable, fungible, and easily found. In reality, the difference in scoring between the two groups is fairly small. Instead, we need to think of players (in terms of scoring) as existing on a continuum, keeping in mind the distribution this quantity as a whole. This allows us to get a more complete picture of how a player's scoring actually fits into the overall scoring environment of the NHL.

Replicating my work

I'm a big believer in the idea that the results of a test should be replicable. So in the interest of transparency, here's the data and R code I used for this article:

Dataset (via Corsica.hockey): Link

R Code:

# read data

mydata = read.csv("FILE PATH")

# create variables for P160 (primary points per 60)

P160 = mydata$P160

# regular histogram

hist(P160, xlab = "Primary P60", breaks = 20, freq = FALSE, main = "Histogram of Primary Points per 60 minutes")

# density plots

plot(density(P160), main = "Density of Primary P60", xlab = "Prim P60", xlim = c(0, max(P160)))

# vertical overlay lines

abline(v = quantile(P160, 0.25), col = "blue", lwd = 2)

abline(v = quantile(P160, 0.5), col = "blue", lwd = 2)

abline(v = quantile(P160, 0.75), col = "blue", lwd = 2)

abline(v = max(P160), col = "blue", lwd = 2)