Analyzing Consistency Among NHL Forwards Performance
Introduction
In hockey like many other sports, consistency, the quality of being able to maintain high or low level performance, is the hallmark of athlete importance and investment. For example, we have two players, Player A and Player B who have played the same number of games through the same time span, and both players even put the same amount of points through that span of games. Which player would you like to have on your team?
Date | Goals | Assists | Pts |
---|---|---|---|
Oct 10 | 0 | 2 | 2 |
Oct 13 | 0 | 2 | 2 |
Oct 17 | 1 | 1 | 2 |
Oct 19 | 0 | 1 | 1 |
Oct 22 | 0 | 0 | 0 |
Oct 13 | 1 | 1 | 2 |
Oct 26 | 1 | 0 | 1 |
Oct 31 | 1 | 1 | 2 |
Total | 4 | 8 | 12 |
Date | Goals | Assists | Pts |
---|---|---|---|
Oct 10 | 3 | 3 | 6 |
Oct 13 | 2 | 4 | 6 |
Oct 17 | 0 | 0 | 0 |
Oct 19 | 0 | 0 | 0 |
Oct 22 | 0 | 0 | 0 |
Oct 13 | 0 | 0 | 0 |
Oct 26 | 0 | 0 | 0 |
Oct 31 | 0 | 0 | 0 |
Total | 5 | 7 | 12 |
The answer to this question depends on what a team in general values. In terms of consistency, Player A is more consistent than Player B. This is because Player A scores one goal in many games and earns at least one point in all games but one. Player B, on the other hand, scores and only earns points in two games. The idea of consistency is so important because it may allow teams to make well-informed decisions that eventually lead to team success. Now as a general manager, if you value consistency, a player who scores and earns points in many games is a better choice than a player who is unpredictable in scoring. In this project, our main goal is to measure the consistency among NHL forwards’ offensive performance and examine the value of consistency.
Data
For this project, we downloaded player performance data from the open-source hockey statistics website Hockey-Reference. We used player statistics from the past 8 seasons, 2016-2017 season to the 2023-2024 season.
The Hockey-Reference data contains a multitude of separate tables with basic statistics to shootout statistics. For our work, we were interested in the basic statistics, advanced statistics, TOI/shift statistics (time on ice), and miscellaneous statistics. All of these combined have 112 variables and about 8000 observations, one observation for each player and season. To ensure we have a sample of active players, we manipulate the dataset to include players who have participated in at least five seasons and played in a minimum of 20 games per season. Due to Covid, we adjust the games played to an 82-game regular season for the 2019-20 and 202-21 seasons.
We are only interested in 9 variables, but we also create several new variables within each metric, and even combine metrics to measure consistency. For the new variables we create, we take existing performance metrics and transform them into /60 minutes metrics. We do so by taking the metric, dividing it by the player’s total time on the ice, and multiplying it by 60. An example of this is taking a player’s total even strength assists, dividing it by their total time on the ice, and multiplying it by 60 to find the number of even strength assists a player would have for every 60 minutes of time on ice.
Exploratory Data Analysis
Metric Stickiness
In order to select the performance metrics we want to use for measuring consistency, we examine the correlation, “stickiness”, between the metric in one season compared to the next. These scatterplots below represent the correlation between the metric in one season compared to the next season. A significant correlation indicates that the metric is predictable and can be used reliably in analyses. After we examine the “stickiness” of the metrics in the raw data, we select even strength goals, even strength assists, and shooting percentage based on their higher predictability.
Response | Explanatory | R^2_{EVGoals} | R^2_{EVAssists} | R^2_{ShotPerc} |
---|---|---|---|---|
2023 | 2022 | 0.162 | 0.167 | 0.130 |
2022 | 2021 | 0.129 | 0.272 | 0.059 |
2021 | 2020 | 0.188 | 0.234 | 0.109 |
2020 | 2019 | 0.069 | 0.353 | 0.048 |
2019 | 2018 | 0.214 | 0.227 | 0.084 |
2018 | 2017 | 0.179 | 0.216 | 0.111 |
2017 | 2016 | 0.046 | 0.097 | 0.062 |
Methods
As we aim to measure the consistency of forwards offensive performance, we want to visualize how their offensive performance varies over the 8 seasons, and create directional clustering in terms of how well players play and their consistency.
Z-score Analysis
Since our selected performance metrics have different scales and units, we use z-scores to standardize the performance metrics thus allowing us to combine metrics effectively and perform unbiased comparisons across players and seasons. To compute the z-score for each player, we first calculate the mean and standard deviation of each performance metric, subtract the mean of the metric from an individual player’s statistic, and then divide by the standard deviation of that metric.
Z = \frac{X - \mu}{\sigma}
The z-score indicates how a player’s performance deviates from the population mean. A positive z-score represents above-average performance, while a negative z-score indicates below-average performance. After our standardization process of computing a z-score for each individual performance metric of each player, we want to create a combined z-score for each player ability by applying weights to individual z-scores.
Principal Component Analysis
To determine the weights applied to each individual z-scores, we perform principal component analysis to those individual z-scores of performance metrics, normalize the loading values generated from PCA, and apply the normalized loading values as appropriate weights for computing the combined z-scores.
Weighted Mean Change
We use weighted mean change for measuring the consistency as it calculates the difference of a metric from one season to the next, and weights it based on the number of games played for each season. We compute the weighted mean change of each individual offensive metric for each player to capture the variability of their performance over eight seasons, and also calculate the weighted mean change of each player’s combined z-scores over the eight seasons, which aggregates the individual metric changes into a single, composite change value that reflects the overall trend in a player’s offensive performance consistency.
\text{Weighted Mean Change} = \frac{(w_1 + w_2) \cdot \Delta x_{1,2} + (w_2 + w_3) \cdot \Delta x_{2,3} + (w_3 + w_4) \cdot \Delta x_{3,4} + \ldots + (w_{n-1} + w_n) \cdot \Delta x_{n-1, n}}{\sum_{i=1}^{n} w_i}
The weighted mean change of either a single metric or a player’s overall offensive performance is a good measure for clustering. We use the weighted mean change of each player’s combined z-scores over the eight seasons on one axis as consistency, and the average combined z-scores over the same period as performance output on the other for our clustering analyses.
Results
PCA weights and Weighted Mean Change
As shown below, we obtain the weights for each individual z-score resulting from principal component analysis. The only component we are interested in is the first component since it explains for the most variance. The results can be interpreted as we weight the even strength assists z-score by 0.227, even strength goals z-score by 0.389, and shooting percentage z-score by 0.384. Hence, to create a combined metric using all three z-scores, we will use the loadings to weight each metric as described above for every player and season.
Variable | Component 1 | Component 2 | Component 3 |
---|---|---|---|
EVA Z-Score | 0.227 | 0.630 | |
EVG Z-Score | 0.389 | -0.165 | -0.491 |
S% Z-Score | 0.384 | -0.205 | 0.481 |
Once the combined z-scores are calculated for every player and season, we find the mean combined z-score to represent each player’s performance. In addition, we measure the weighted mean change of those combined z-scores through all 8 seasons of data. Table 3 shows the top players with the highest performance and their respective weighted mean change. A weighted mean change closer to zero indicates that the player is very consistent and varies little from season to season, and a larger mean combined z-score indicates better performance.
Player | Mean_Total_zscore | Weighted_Mean_Change |
---|---|---|
Mark Scheifele | 1.2066578 | 0.0008275 |
Nikolaj Ehlers | 0.8895559 | 0.0009704 |
Brett Connolly | 0.8795580 | 0.0010505 |
Nikita Kucherov | 1.3859245 | 0.0012091 |
Leon Draisaitl | 1.3422992 | 0.0013208 |
Mark Stone | 0.8764098 | 0.0017772 |
Sebastian Aho | 0.8682306 | 0.0018033 |
Sidney Crosby | 1.0729822 | 0.0018781 |
Mikko Rantanen | 0.9907957 | 0.0018910 |
Mitch Marner | 0.6942425 | 0.0019240 |
Clustering
Using the mean combined z-score, we cluster both the player’s mean z-score and their weighted mean change of each metric and combined metrics. The clustering results show that players located in the bottom-right quadrant of the graph are consistent and high performing players. Players in the bottom-left quadrant are consistent but poor performing players. Players in the upper-right quadrant are inconsistent but high performing players. Players in the upper-left quadrant are inconsistent and poor performing players. The quadrants are created through the medians of the weighted mean change and the mean combined z-scores of each metric and combined metrics.
Performance, Consistency, and Salary
Finally, we were curious if there is currently value in consistency based on players’ salaries. Based on our results, there is a correlation between salary and player performance with an adjusted r-squared value of 0.344, while there might not be a correlation between salary and consistency with an adjusted r-squared value of 0.018.
Adjusted.R.Squared | Variable1 | Variable2 | |
---|---|---|---|
Cap_WMC | 0.0184667 | Cap Hit | Consistency |
Cap_Zscore | 0.3436713 | Cap Hit | Performance |
Player | Mean_Total_zscore | Weighted_Means_Change | Salary |
---|---|---|---|
Mark Scheifele | 1.2066578 | 0.0008275 | 8500000 |
Logan Couture | 0.4605859 | 0.0008584 | 8000000 |
Nikolaj Ehlers | 0.8895559 | 0.0009704 | 6000000 |
Brett Connolly | 0.8795580 | 0.0010505 | 3500000 |
Jonathan Huberdeau | 0.5746333 | 0.0011661 | 10500000 |
Discussion
Conclusion
Our project focuses on measuring consistency of player performance through the use of metric predictability, z-scores, principal component analysis, and weighted mean change. Each method provides useful numeric measures that allows us to identify how well players perform and how consistent their performance is through clustering.
Analyzing salary also gives us insights into the value of consistency. Players’ salaries are more subjective to performance than that of consistency, meaning teams might see more value in player performance than they do in consistency. Consistency seems to be a minor factor when it comes to determining players’ salaries, at least for forwards.
Limitations and Future Work
There are some limitations to our project though. First, we only examine season to season data, which might not be as accurate as game to game data. Second, there are only a few performance metrics for defensemen and goalies with predictability that we can use to measure consistency. In addition, we lack good quality performance data for measuring other abilities other than offense.
Some potential future work would be looking at measuring consistency on a game-to-game basis. This could involve looking if players are receiving consistent ice time each game or if they fluctuate up and down the roster. Additionally, we also want to consider examining consistency among defensemen and goalies since this project only covers forwards. Lastly, there is some potential modeling we could do to predict player consistency.
Acknowledgements
Special thanks to Katerina Wu, Caleb Pena, Luke Zulyak, Quang Nguyen, and CMU Stats Department for their guidance and feedback throughout the span of the project.
Contact Information
Zhongyang (Celine) Su, Wake Forest University, suz21@wfu.edu
Chisunta Chikwamu, Whitman College, chikwamm@whitman.edu
Cole Shegan Siniawski, Denison University, shegan_c1@denison.edu