×
Jump to content
Play Pick'em Daily Read more... ×

Ducks Hockey Forum Coyotes Hockey Forum Bruins Hockey Forum Sabres Hockey Forum Flames Hockey Forum Hurricanes Hockey Forum Blackhawks Hockey Forum Avalanche Hockey Forum Blue Jackets Hockey Forum Stars Hockey Forum Red Wings Jackets Hockey Forum Oilers Hockey Forum Panthers Hockey Forum Kings Hockey Forum Wild Hockey Forum Canadiens Hockey Forum Predators Hockey Forum Devils Hockey Forum Islanders Hockey Forum Rangers Hockey Forum Senators Hockey Forum Flyers Hockey Forum Penguins Hockey Forum Sharks Hockey Forum Blues Hockey Forum Lightning Hockey Forum Maple Leafs Hockey Forum Canucks Hockey Forum Golden Knights Hockey Forum Capitals Hockey Forum Jets Hockey Forum

News Ticker
  • News Around the NHL
Sign in to follow this  
  • entries
    37
  • comments
    27
  • views
    1,359

About this blog

A mirror of my main blog, capitalizing on the suggestion of hf101.

 

You are welcome to comment either here, or on the blogspot site.

Follow me on Twitter, @morehockeystats.

Entries in this blog

 

NHLErrata launch

Ever since I started collecting the NHL data it was very important to me to validate the collected information. So I created a set of checks that finally formed a whole library to test both the NHL boxscore feeds and the HTML reports.

I managed to fish out quite a few errors and inconsistencies. Some where systemic, and could be fixed in software, some required a manual intervention, sometimes by editing the source file, sometimes by providing the correct value overriding what the parser would read. These interventions, classified into a variety of types, formed another library.

But I also wanted to share the errors that I found and the fixes I figured out with the analytics community. So I decided to create a website dedicated to it. It took a while, but finally a couple of days ago I was able to open NHLErrata.com. There you can find:
  An overview of data sources. Information on missing players and events Information of broken reports, players and events Systemic problems encountered with the reports
Both mentioned libraries, Test.pm and Errors.pm are part of my scrape-to-database package on CPAN.
 

New features for the 2018/19 season.

After a period of deep dormancy we welcome the 2018/19 on our website with three major changes:   1. MoreHockeyStats is now a network of sites: MoreHockeyStats.com - the unusual statistics from the NHL for the league, the teams, the players, the coaches and the draft. HockeyEloRatings.com - the Elo ratings for teams, coaches and players, in general and for particular stats and situations. NHLErrata.com - the errors we discovered while crawling and testing the NHL data.   2. All our data is now available through a sort of API. When a table is displayed, there is a set of links on how you can access the data:     JSON - receive the data displayed in the table as a JSON via direct link.  CSV - receive the data in a CSV table. Table - display the data as a pure HTML table with a direct link. Link - direct link to the results displayed. These links have a systemic structure and thus can be crawled by a bot.   3. Most of our tables now feature links to personal cards for teams, players, coaches and even the rinks. These cards display the visual changes to the stat displayed in the table for the particular team, player etc. We welcome ideas for the cards in the pages that do not have these cards yet. Here's a sample playercard:       Welcome, and have a great 2018/19 hockey season.    
 

Website A Page - A Day, Part VI - Warm Welcome

Website A Page - A Day, Part VI - Warm Welcome   Original post
Prologue
Part I
Part II
Part III
Part IV
Part V

With nothing else to do for about half an hour, why not to resume the series?

Have you wondered if it is your team, or your goalie, who always has the first career goal scored against them? Now you can check if your feeling is right. On the page 'Warm Welcome' of the League section on the website we present a look at the first goals scored against different teams and goalies.

With the two left items in the top menu you can select the span over which you want to see the statistics. Want one season only? Select the same season for the start and for the end. Then you can toggle the view by the team or the goalie the first goal is scored against.

For example, for the 2016/17 season, team view:
  # Team Goals Allowed 1 Dallas Stars 7 2 Carolina Hurricanes 7 3 New Jersey Devils 7 4 Tampa Bay Lightning 6 5 Ottawa Senators 6 6 Detroit Red Wings 5 7 Pittsburgh Penguins 5 8 New York Rangers 5 9 San Jose Sharks 5 10 Vancouver Canucks 5 11 Colorado Avalanche 5 12 Nashville Predators 4 13 Boston Bruins 4 14 Buffalo Sabres 4 15 Winnipeg Jets 4 16 Arizona Coyotes 3 17 Columbus Blue Jackets 3 18 Edmonton Oilers 3 19 Montreal Canadiens 3 20 Anaheim Ducks 3 21 St. Louis Blues 3 22 Los Angeles Kings 2 23 Washington Capitals 2 24 Calgary Flames 2 25 Minnesota Wild 2 26 New York Islanders 2 27 Toronto Maple Leafs 2 28 Chicago Blackhawks 2 29 Florida Panthers 2 30 Philadelphia Flyers 0
Take a look. You might be surprised. Or not.
 

A Lemma Research - Penalty Box and TOI - Part II

Original post.   Part I   After completing the first part of the lemma research - penalty box - the second part was shorter, easier, but just as useful. I decided to find out the share of time teams spend on average while at even strength, on power play/shorthanded and with empty net. Then given this number, and the number of goals scored in each such situation, I was able to calculate the frequency of EVG/PPG/SHG/ENG or the reverse of it which I called the difficult of such goal.   I scanned the database of all games between the 1999/00 season and today, and all the goals extracted from these games. Penalty shot goals were ignored, regardless if during the game itself, or in post-game shootout. The EN time was calculated as total game time minus goaltender TOI. PP/SH time was deducted from the recorded PP TOI of the players. The EV time would naturally become the total game time minus EN minus PP of both teams.   Then I calculated the difficulty of scoring a goal in each of these situations through the following formula:   DiffTYPE = ( GOALSEV /  GOALSTYPE ) x ( TOITYPE / TOIEV )   where the difficulty of the EV goal is considered "1". Here are the combined results of the difficulties in a table: Season EV PP SH EN 1999 1.000 0.502 3.506 0.162 2000 1.000 0.473 3.387 0.146 2001 1.000 0.492 3.635 0.153 2002 1.000 0.468 3.585 0.167 2003 1.000 0.445 3.127 0.221 2005 1.000 0.535 4.247 0.272 2006 1.000 0.506 4.000 0.228 2007 1.000 0.458 3.597 0.187 2008 1.000 0.438 3.745 0.183 2009 1.000 0.456 4.044 0.192 2010 1.000 0.450 3.517 0.177 2011 1.000 0.460 3.568 0.169 2012 1.000 0.430 3.890 0.169 2013 1.000 0.453 3.209 0.198 2014 1.000 0.427 3.564 0.171 2015 1.000 0.415 3.284 0.158 2016 1.000 0.419 3.252 0.178 2017 1.000 0.427 3.052 0.168
If you divide 1 by these values you can get the relative frequency of goals scored in each situation.   The dataset containing this data is available on the website, on the Request Analysis page.   So why did I need these two lemmas? That blog post won't be ready any time soon, and I better resume the "Page A Day series'.
 

A Lemma Research - Penalty Box and TOI

Original post   Nothing derails from the regular blogging like a research that you've been so eager to start, but were putting off to finish simpler and more materialistic stuff, but then you couldn't hold it off any longer.

But then, I realized that in order to do that research I need to perform a lemma research. Just like its mathematical namesake, a lemma research is one that is done for the sake of a bigger one, yet producing a useful result by itself.

So I noticed that I needed the penalty box data. Who was in the penalty box during a power play goal? More specifically, who was responsible for that goal, i.e. who left the penalty box as the result (or had a non-matched 5-minute major penalty during it). Once there was a feed that had penalty box data, but it was only since 2010 or so, and it seems to have become discontinued. Therefore I gathered the game data I already had and just went through the power play goals from 1987/88 through now, and tried to match them with penalties, while weeding out all the cancelling and all the irrelevant (e.g. misconduct) ones.

I am glad to tell that I was able to create a consistent, at least at first look, dataset. But before that I had to go in and correct penalty box entries for about 160 goals manually. About 35 of them were just forced to enter the penalty data manually, because any algorithm assigning the player in the box to the goal would be ambiguous. However I also discovered about 125 goals (120 pre 1999/00, when extra reports were introduced, and only five since) that should not even be marked as power play goals. There was no matching penalty. Of course, the mistake can be on the penalty data in the NHL report: the time of the penalty may be reported wrongly. But until further notice, these goals should not be considered PPG:
  GameID P Time Scorer Team 198720125 3 9:19 BOB SWEENEY Boston Bruins 198720134 3 18:58 RICK TOCCHET Philadelphia Flyers 198720239 1 1:23 STEPHANE RICHER Montreal Canadiens 198720367 1 4:51 DALE HAWERCHUK Winnipeg Jets 198720388 1 17:46 TROY MURRAY Chicago Blackhawks 198720389 3 3:55 PAUL MACLEAN Winnipeg Jets 198720431 2 6:56 PETER TAGLIANETTI Winnipeg Jets 198720449 2 12:34 MIKKO MAKELA New York Islanders 198720471 3 10:51 ANTON STASTNY Quebec Nordiques 198720484 2 13:38 MARIO LEMIEUX Pittsburgh Penguins 198720528 1 6:32 CHARLIE SIMMER Pittsburgh Penguins 198720610 3 3:08 LAURIE BOSCHMAN Winnipeg Jets 198720735 3 8:10 MIKE FOLIGNO Buffalo Sabres 198720755 1 3:06 GARRY GALLEY Washington Capitals 198720755 2 0:29 GERALD DIDUCK New York Islanders 198720787 1 17:02 AARON BROTEN New Jersey Devils 198720799 2 0:49 JIMMY CARSON Los Angeles Kings 198720802 2 3:24 MIKE FOLIGNO Buffalo Sabres 198720804 1 18:03 PAT VERBEEK New Jersey Devils 198730134 1 7:52 BRUCE DRIVER New Jersey Devils 198730223 3 9:47 MARK JOHNSON New Jersey Devils 198730314 2 12:31 CAM NEELY Boston Bruins 198820088 2 6:17 RANDY MOLLER Quebec Nordiques 198820088 2 7:11 ANTON STASTNY Quebec Nordiques 198820147 1 15:58 JOHN CULLEN Pittsburgh Penguins 198820150 2 2:29 KEVIN DINEEN Hartford Whalers 198820203 3 12:45 JOE MULLEN Calgary Flames 198820241 2 18:53 DAN QUINN Pittsburgh Penguins 198820307 3 10:12 MARIO LEMIEUX Pittsburgh Penguins 198820318 2 5:24 GAETAN DUCHESNE Quebec Nordiques 198820331 3 7:36 PAUL GAGNE Toronto Maple Leafs 198820489 1 16:20 DALE HUNTER Washington Capitals 198820542 1 18:13 DOUG EVANS St. Louis Blues 198820727 3 7:49 PAUL MACLEAN Detroit Red Wings 198820803 2 6:58 DOUG SMITH Vancouver Canucks 198820821 3 17:43 BRENT FEDYK Detroit Red Wings 198920146 1 5:14 KEVIN DINEEN Hartford Whalers 198920158 1 5:26 TROY MURRAY Chicago Blackhawks 198920220 2 15:53 NEAL BROTEN Minnesota North Stars 198920238 1 2:39 GREG PASLAWSKI Winnipeg Jets 198920303 2 4:55 PAT ELYNUIK Winnipeg Jets 198920475 3 8:25 BRIAN MULLEN New York Rangers 198920543 3 18:46 AL MACINNIS Calgary Flames 198920667 1 3:04 JEREMY ROENICK Chicago Blackhawks 198920749 1 8:18 CRAIG JANNEY Boston Bruins 198920818 2 1:25 JOHN OGRODNICK New York Rangers 198930231 2 13:43 TRENT YAWNEY Chicago Blackhawks 198930322 2 18:01 JARI KURRI Edmonton Oilers 199020005 3 19:54 RAY SHEPPARD New York Rangers 199020056 1 15:44 DAVE TAYLOR Los Angeles Kings 199020262 2 11:20 BOBBY HOLIK Hartford Whalers 199020612 3 7:18 JOHN CHABOT Detroit Red Wings 199020636 1 15:02 BRIAN LEETCH New York Rangers 199020647 2 9:16 KENNETH JR HODGE Boston Bruins 199020704 2 12:47 KELLY KISIO New York Rangers 199020716 3 0:34 JOE SAKIC Quebec Nordiques 199020762 2 5:16 MARK RECCHI Pittsburgh Penguins 199020815 2 19:28 KEVIN STEVENS Pittsburgh Penguins 199030222 3 2:17 DINO CICCARELLI Washington Capitals 199030235 3 14:04 BRIAN PROPP Minnesota North Stars 199120059 3 2:20 DOUG GILMOUR Calgary Flames 199120070 2 10:26 DAVE GAGNER Minnesota North Stars 199120093 3 18:48 DARREN TURCOTTE New York Rangers 199120238 3 0:18 PAUL RANHEIM Calgary Flames 199120313 3 11:52 JEREMY ROENICK Chicago Blackhawks 199120407 1 10:39 BOBBY CARPENTER Boston Bruins 199120504 2 18:42 JIMMY CARSON Detroit Red Wings 199120617 2 16:43 MARTY MCSORLEY Los Angeles Kings 199120625 3 18:17 TODD ELIK Minnesota North Stars 199120638 1 13:15 GREG ADAMS Vancouver Canucks 199120755 3 10:48 DOUG GILMOUR Toronto Maple Leafs 199130143 3 13:57 AL IAFRATE Washington Capitals 199220002 2 5:17 SCOTT STEVENS New Jersey Devils 199220013 1 12:08 RICK TOCCHET Pittsburgh Penguins 199220023 2 17:32 MARIO LEMIEUX Pittsburgh Penguins 199220068 2 17:22 MIKE GARTNER New York Rangers 199220091 3 19:34 JOE JUNEAU Boston Bruins 199220121 1 6:14 MIKE GARTNER New York Rangers 199220149 2 18:44 CHRIS KONTOS Tampa Bay Lightning 199220181 3 6:21 ULF DAHLEN Minnesota North Stars 199220287 1 16:56 CHRIS KONTOS Tampa Bay Lightning 199220337 2 5:42 ALEXANDER MOGILNY Buffalo Sabres 199220388 1 15:45 GREG HAWGOOD Edmonton Oilers 199220401 2 12:48 JEFF NORTON New York Islanders 199220562 3 9:19 CHRIS KONTOS Tampa Bay Lightning 199220563 1 9:25 TEPPO NUMMINEN Winnipeg Jets 199220589 3 9:18 ROD BRIND'AMOUR Philadelphia Flyers 199220595 1 7:20 CRAIG JANNEY St. Louis Blues 199220908 2 16:28 VALERI KAMENSKY Quebec Nordiques 199220986 1 15:44 JIRI SLEGR Vancouver Canucks 199320065 1 15:37 DENIS SAVARD Tampa Bay Lightning 199320092 3 11:22 SERGEI FEDOROV Detroit Red Wings 199320636 1 16:40 TIM SWEENEY Mighty Ducks Of Anaheim 199320643 3 16:50 MARTIN LAPOINTE Detroit Red Wings 199320740 2 7:53 KEITH TKACHUK Winnipeg Jets 199320840 1 17:17 SERGEI ZUBOV New York Rangers 199320905 3 18:16 KEVIN STEVENS Pittsburgh Penguins 199420025 2 1:32 KELLY BUCHBERGER Edmonton Oilers 199420072 2 7:27 STEVE THOMAS New York Islanders 199420087 1 9:52 KEITH TKACHUK Winnipeg Jets 199420332 2 2:35 GRANT LEDYARD Dallas Stars 199420332 2 7:11 RAY SHEPPARD Detroit Red Wings 199520189 2 15:41 LUC ROBITAILLE New York Rangers 199520226 3 17:34 CHRIS GRATTON Tampa Bay Lightning 199520490 2 9:41 TODD BERTUZZI New York Islanders 199520539 3 13:25 MARK MESSIER New York Rangers 199520560 1 9:03 VYACHESLAV KOZLOV Detroit Red Wings 199520694 3 15:43 RON FRANCIS Pittsburgh Penguins 199520744 2 6:41 SCOTT MELLANBY Florida Panthers 199520750 2 9:05 NICKLAS LIDSTROM Detroit Red Wings 199520766 1 16:00 BENOIT HOGUE Dallas Stars 199520776 2 5:53 MARIO LEMIEUX Pittsburgh Penguins 199520809 1 12:47 ADAM GRAVES New York Rangers 199520847 2 16:40 KEITH PRIMEAU Detroit Red Wings 199620127 3 12:03 ALEXEI ZHAMNOV Chicago Blackhawks 199620211 2 13:08 GREG ADAMS Dallas Stars 199620466 3 14:50 JOZEF STUMPEL Boston Bruins 199620792 1 11:50 BRENDAN SHANAHAN Detroit Red Wings 199621058 2 1:41 MARTIN GELINAS Vancouver Canucks 199720028 2 18:01 TREVOR LINDEN Vancouver Canucks 199720067 3 16:29 TERRY YAKE St. Louis Blues 199920756 1 6:46 JAMIE LANGENBRUNNER Dallas Stars 200520486 1 17:28 ROB COLLINS New York Islanders 200620150 1 7:59 NATHAN HORTON Florida Panthers 200620627 1 5:00 RYANE CLOWE San Jose Sharks 200821010 1 16:44 MIKAEL SAMUELSSON Detroit Red Wings 201620276 2 12:03 JOHAN LARSSON Buffalo Sabres
The resulting penalty box data is available on our website, in the Request Analysis section.
Hopefully, tomorrow, I'll blog about another useful dataset the lemma research has produced.
 

The Website - A Page A Day, Part V - Rink Repairs

Prologue
Part I
Part II
Part III
Part IV
Original Post
Well, the pace didn't last long, but we're back with Part V - Rink Repair Statistics

Probably, this is the least hockey related page of the website, but hey, we can do it, and it's actually pretty easy, so why not?

The STOP events as listed in the Play-By-Play HTML summaries since the 2002/03 season on the NHL.com website contain the reason(s) for the stop. While most of them are game-based, such as ICING or OFFSIDE, one of the more rare ones caught our eye: RINK REPAIR. We decided to collect these stops and rank NHL home teams as well as NHL arenas by the amount of rink repairs that happened. We filter out the occasional venues, such as outdoor stadiums for NHL special events or the foreign arenas for the European showdown games.

Since we already parse practically all events from the Play-By-Play summaries (or PL), and classify them by types, we already have a collection of STOP events. And we also detect and catalog the reasons for the stoppages, so it is an easy Mongo query to extract all rink repairs incurred. We then aggregate them by locations and teams, and create SQL tables for easy quick display of the data.

And so we were able to assemble a nice set of tables displaying the level of maintenance in the rinks around the league. Here's a look at the 2016/17 season:
  Arena Repairs BARCLAYS CENTER 8 XCEL ENERGY CENTER 3 CANADIAN TIRE CENTRE 2 VERIZON CENTER 2 PEPSI CENTER 2 FIRST NIAGARA CENTER 2 NATIONWIDE ARENA 2 CENTRE BELL 2 WELLS FARGO CENTER 1 SCOTTRADE CENTER 1 ROGERS ARENA 1 REXALL PLACE 1 PRUDENTIAL CENTER 1 CONSOL ENERGY CENTER 1 BB&T CENTER 1 JOE LOUIS ARENA 1 HONDA CENTER 1   So the claims that the Islanders' current home has the worst ice has been substantial. For the last three years, actually, Barclays Center ranks among highest. Naturally, the old arenas like Canadian Tire Centre or Rexall Palace also seemed to get a lot of rink repairs during the games.   You can switch the year of the display or the mode between 'By Team' and 'By Arena'.   As with all the displayed tables on our site, there are links below it to see it in a pristine form, the direct link to the page for the selected season, and buttons to share it on Twitter and Facebook.   Once again, it doesn't seem like a highly meaningful piece of work, but we consider it fun, and it took about quarter an hour to implement altogether.   TODO: Aggregate show by a period rather than a single season Include arena ages (requires manual input of construction years)
 

The Website - A Page A Day, Part IV - West vs. East

Prologue
Part I
Part II
Part III

And now we're putting two in a row with West vs. East.

PART IV

This page shows the results of games between Eastern and Western Conference teams. The data is available from the year 1993, when Western and Eastern Conference were formed, from the Boxscore files.

Shown from left to right:  Regular West wins OT/SO West wins Ties(up to year 2005) OT/SO East wins Regular East wins Stanley Cup Winning Conference A total tally is available as well. As of the date of this post the standings are:
WEST 2802 Reg. W - 595 OTW - 444 T - 541 Reg. W - 2570 Reg. W EAST
West holds a formidable lead which eroded a bit in the 2015/16 and 2016/17 seasons. Before that the last time East won the count was back in 1998/99! The 2009/10 was the most lopsided season with the final score of 155-115 in West's favor.
West won 14 times, East - 6. Once, in 2011/12 there was a tie with 134 wins apiece.

The Stanley Cup winners are divided more evenly, however, with West holding the edge 13-10.

There is no data for seasons 1994/95, 2004/05 and 2012/13 because of full or or partial season lockout. Also, the win-loss count from the Finals are not included.

WE NEED YOUR HELP!
If you are an experienced Webmaster, especially with Javascript and CSS we would greatly appreciate the potential tidy-up and enrichment you could provide to these graphs. Your work will be credited for future reference! Write to us, or get in touch with us on Twitter. Thanks!

Possible future additions: Season aggregation More compact design Your ideas are welcome!
 

The Website - A Page A Day, Part III - NHL's Yearly Tendencies

Despite all the delays we move on to League's Yearly Tendencies.

PART III

This view shows stacked bars of various event counts per season in the NHL.All the stats are presented per game, since the amount of games played varied every season. 

For the first time we encounter the stat selection menu, on top of the graphs. On this page it features the following options:
  Category of the stats Stage of the games (Regular or Playoff)
Available stats are:  Shots Goals (available since 1987, from Boxscore reports) Shots on Goal (available since 1987, from Boxscore reports) Misses (available since 2005, from PBP reports) Blocks (avaliable since 2005, from PBP reports) Icings (available since 2002, from PBP reports) Margin of victory (available since 1987, from Boxscore reports) Penalties Minor Major Fighting Misconduct Match Penalty Goals per Game The stats are available for regular season, playoffs and both stages combined.

The PBP reports from the NHL dating before 2005 are wildly inconsistent, thus we didn't use them for MISSES and BLOCKS.

We are using the wonderful d3js library for producing these graphs.

WE NEED YOUR HELP!
If you are an experienced Webmaster, especially with Javascript and CSS we would greatly appreciate the potential tidy-up and enrichment you could provide to these graphs. Your work will be credited for future reference! Write to us, or get in touch with us on Twitter. Thanks!

Possible future additions: PowerPlay success Minor penalty breakdown Aggregations and overlays Mouse graph manipulations Your ideas are welcome!
 

A suggestion for the All-Star Game

Original post.   While the series "Website - A Page A Day" is being delayed by all kinds of things, here comes a short post on a different topic.

Last year, in my opinion, the accuracy shooting competition which included shooting the pack from the goal line into a small hole was, in my opinion a total failure. Mike Smith's spectacular score across the rink did the injustice and provided a false impression this skill contest was any good. Otherwise, the competition was not exciting to say the least.

Therefore, here's a suggestion to replace it: reverse shootouts.

Let the goaltenders shed their equipment for once, and let the skaters don it instead. Let's have a competition where the goaltenders skate and attempt to score in shootout, while the skaters try to stop them. I am sure that somewhere in the back of their minds that would fulfill a little dream both parties would have!    
 

The Website - A Page A Day, Part I - Home Page

Original post   The main page of the website shows the summary of all its features.

The site menu features the main statistical sections:
  League - league-wide statistics Teams - team-based statistics Players - personal statistics Coaches - statistics for the NHL coaches Drafts - statistics for currently drafted players and the historical performance by draft Fantasy - tools to help the fantasy player
On the top we have a ticker of the scores, as predicted by the model. The ticker is always scrolled to the current date, however you can navigate it back and forth using the two arrows at the edges. The away team is on the top, and the home team is on the bottom. The predicted score is in the Prdct column. The actual score is in the Act column. The projected winner is displayed in bold. If the prediction failed, the displayed teams will be painted red. We never adjust our predictions backwards. Only the scores for the current season are featured.

Then, on the top right we have three very important links that would help you with understanding the pages:
  Learn More - about the methodology of the Website Glossary - about the terms used in the pages Blog - link to this blog which, as you see, also takes time to elaborate on the site. We also display our latest addition to the website and the latest blog entry.   Then we have three random snippets in the columns. The snippets represent excerpts from the tables published elsewhere on the site and may change after each publication, which happens overnight. The snippets currently (hopefully they would become more diverse) are: Team data snippets: Buchholz/Berger-Sonneborn coefficients Empty Net Statistics (probably our most popular page) Teams Elo Ratings and predicted standings, per division Strikebacks Player data snippets: Goaltender elo ratings Deadly pairs of the NHL (goals+primary assist tandems) Clutch players excelling scoring lead-changing goals Reverse stats (players being hit, drawing penalty, etc.) Coach data snippets: Face to face coaching records Coach challenge statistics Only current season data is displayed in the snippets. Below the random snippets we feature a permanent snippet that shows the best projected picks for the daily fantasy competitions. We provide a model-based evaluation of the expected score for players in the three most popular Daily Fantasy websites - Yahoo, FanDuel and DraftKings.   Below each snippet there is a link to the page with the full data.   At the bottom we have a collection of information links. Make sure you visit the Glossary and the About pages. The Links page has an ever-growing collection of hockey-related links. The Forum link leads to hockeyforums.net, the site we're partnering with - this blog is broadcast there as well. The Data section shows the software and the data sources this website is built with.
 

The Website - A Page A Day - Prologue

Original Post   Hello, hockeyforums.net, from Mr. Van Winkle...

This prolonged silence was caused by a lot of factors, led, naturally, by REAL LIFE™. But I also made a fundamental mistake in the infrastructure setup, and so I had to roll out a hastily patched setup when the season was starting; I then went back and worked on this infrastructure fix, the work which continued over three months and is now complete! Unfortunately, all this work will not be visible to the visitor, with possible exception of a slightly faster page loading - all the changes belong to the back end.

But now, once again, with REAL LIFE™ limitations I am able to work on improving the website look, speed and features. I am being somewhat torn apart since I also need to hone the models I'm using, but I decided the models can wait with half of the hockey season gone by now. In addition I'll try to put an extra effort to promote the site and made it more visible on the Web.

One of the things I was not able to complete is to release my code as the open source. This has also been put into a bottom drawer. However, I still welcome cooperation very much and will gladly share the code with people who would want to contribute to the project. The areas I could really use some help are: JavaScript/HTML/CSS MongoDB query and database optimization SEO optimization So if you feel like helping - drop me a mail.

Also I will begin a series "Website - A Page A Day", where I plan to describe each and every statistical page on the site because I have a feeling I haven't been clear enough with the explanations until now; moreover it will help me discover errors and inconsistencies that probably crawled through.
 

On carrying Momentum...

Original post.   Frequently, the importance of carrying momentum over an intermission can be heard being talked about. I thought it were possible to measure this harmony with algebra, so I tried to do that. I choose to analyze a very specific question:

If the regulation of a game ends in a tie, other than 0-0, how frequently would the team that tied the game with the last regulation goal win in overtime. 

We would define the team that tied the game as the one having the momentum. We would define the other team as the one trying to show resilience. For answering the question, we analyzed the outcome of games of seasons 2007/08-2016/17 (including the ongoing playoffs). We discard the games that end in a shootout, because their outcome depend truly more on the skill of the shooting players/goaltenders rather than the whatever momentum might've been accrued.

The results of the analysis are displayed in the table below, per season, per the time frame during which the last tying goal was scored: in the last two, five, or ten minutes, in the last period, or in one of the first two. The numbers show the percentage of wins by the team having the momentum and the number of games falling into that specific segment. Also we display a separate column and a separate row for playoffs game, although a finer granularity is not really possible because of the sample size (as of 5/1/17).
  Season   2        5        10       20       1st/2nd  total     totalPO 2007     54.2/24  57.9/19  52.9/34  53.8/13  52.6/38  53.9/128  31.2/16 2008     43.5/23  48.1/27  45.2/31  53.8/13  40.0/40  44.8/134  25.0/16 2009     42.9/28  56.5/23  72.7/22  64.7/17  53.7/41  56.5/131  58.8/17 2010     48.6/37  54.2/24  47.1/34  40.7/27  56.8/44  50.0/166  59.1/22 2011     50.0/24  45.8/24  43.5/23  72.0/25  47.7/44  51.4/140  37.5/24 2012     62.5/16  33.3/15  50.0/22  50.0/14  57.9/19  51.2/86   53.8/26 2013     58.1/43  43.5/23  34.6/26  45.5/22  44.1/34  46.6/148  70.8/24 2014     51.7/29  65.2/23  55.3/38  46.7/15  60.5/43  56.8/148  57.9/19 2015     60.0/40  46.7/30  44.4/36  45.8/24  39.6/48  47.2/178  52.6/19 2016     43.6/39  50.0/28  60.5/38  48.1/27  61.8/68  54.5/200  63.2/19 totalPO  61.4/44  46.7/30  55.8/43  68.4/19  40.9/66  52.0/202  52.0/202 total    51.5/303 50.4/236 50.7/304 51.8/197 51.8/419 51.3/1459 52.0/202   We see that there is no specific "momentum" nor "resilience" capability overall, there is practically no indication on how the OT would end based on which team scored the last GTG. The only two moderate exceptions with decent sample sizes are the second and the sixth columns of the penultimate row. The GTG-scoring team is 27-17 (61.4%) in case it scored the tying goal in the last two minutes, however if the GTG was scored before the last period, as it happened in 66 games, the momentum would obviously not carry over two or more intermissions, and the tying team is 27-39 (40.9%) in these games.   Here is how it looks on a graph: We can see all lines wobbling slightly above the 50 mark. Insufficiently above. Even if we observe the extra 1.3% chance overall (2.0% in playoffs) - wouldn't it be more related to the home/away advantage? I haven't looked at this aspect yet. Maybe another time.  

More Hockey Stats

More Hockey Stats

 

On the NHL Scoring System - Part III

It looks like I've forgotten to translate a couple of entries. Correcting that.   Original post.   Part I
Part II


Once again, driven by idea that if you want to encourage goal scoring, you need to reward the goal scoring in standings directly, not indirectly through winning. Then, based on the idea of a fellow hockey fan and blogger, a new suggestion was born in my mind.

Not so long ago I was involved in another discussion on the subject on Twitter, where an interesting alternative, 2-1-0-0 was described. The idea is that you still get two points for a win in regulation, just one point for a win in OT, but nothing if you lose, and, the key, both teams get nothing if the game is tied at the end of regulation (shootouts are abolished). This is a very sharp idea, but for me something felt very wrong, and then it crystallized:

It's not fair to reward a hard fought 5-5 tie with zero points, just like a lazy-skated 1-1. We still want to encourage goal scoring, and the simple 2-1-0-0 just unbalances the game. And so it dawned on me. We should reward goals with extra standings points!

The formula that first came to mind, and which seemed fair: give each goal a 0.1 point in the standings, while the win-scoring system shall be 2-1-0-0. If you or your database have an aversion against decimals, assign 20 points for a win, 10 points for OT loss, and 1 extra point for each goal scored. This will encourage goal scoring in any situation, and for both sides, including the games that go into garbage time pretty quickly. So, a 7-2 win will give the winner 2.7 points, and the loser 0.2 points. A 2-0 win will give the winner 2.2 points, the loser 0. A 4-3 OT win will give the winner 1.4 points, the loser 0.3 points. A 5-5 OT tie will give each side 0.5 points.

Wait, there's a caveat.

Imagine a situation where a team needs just 0.1 point to pass another one in the standings for the playoff spot. They are playing an opponent whose number of points in the standings does not have any effect on them. In such a situation, the team would play without a goaltender at all, because they don't care how much they lose, they just need that goal. Now, this is not really hockey, so to prevent this kind of play a restriction needs to be introduced:

Any goal scored without a goaltender on the ice, when not on a delayed penalty, and when trailing by more than two goals shall not yield any standings points.

Here is an example what the final reg. season standings would look like under the suggested system:

Team                           W  OW T  L  GF  GA  P --------------------------------------------------------  
Boston Bruins                  38 04 05 35 232 209 103.2
Montreal Canadiens             33 11 05 33 223 198 99.3
Toronto Maple Leafs            33 06 09 34 250 234 97.0
--------------------------------------------------------
Washington Capitals            45 08 07 22 261 177 124.1
Pittsburgh Penguins            40 06 09 27 278 229 113.8
Columbus Blue Jackets          39 09 04 30 247 193 111.7
--------------------------------------------------------
New York Rangers               40 05 07 30 253 216 110.3
Ottawa Senators                34 04 10 34 206 210 92.6
--------------------------------------------------------
Minnesota Wild                 42 04 05 31 263 206 114.3
Chicago Blackhawks             37 09 05 31 240 212 107.0
St. Louis Blues                38 06 04 34 233 216 105.3
--------------------------------------------------------
Anaheim Ducks                  40 03 06 33 220 197 105.0
Edmonton Oilers                37 06 09 30 243 207 104.3
San Jose Sharks                38 06 03 35 219 200 103.9
--------------------------------------------------------
Nashville Predators            35 04 06 37 238 220 97.8
Calgary Flames                 32 09 06 35 222 219 95.2
--------------------------------------------------------
New York Islanders             33 06 06 37 239 238 95.9
Winnipeg Jets                  33 04 04 41 246 255 94.6
Tampa Bay Lightning            32 06 07 37 230 224 93.0
Dallas Stars                   28 05 03 46 222 260 83.2
Carolina Hurricanes            28 05 09 40 212 230 82.2
Los Angeles Kings              25 12 06 39 199 201 81.9
Philadelphia Flyers            25 07 12 38 212 231 78.2
Buffalo Sabres                 25 06 08 43 199 231 75.9
Florida Panthers               23 07 11 41 205 231 73.5
Arizona Coyotes                20 04 08 50 191 258 63.1
Vancouver Canucks              19 07 06 50 178 241 62.8
New Jersey Devils              18 07 06 51 180 241 61.0
Detroit Red Wings              17 07 09 49 198 244 60.8
Colorado Avalanche             14 07 03 58 165 276 51.5

Naturally, they would not be the same standings if the system were indeed implemented, but why not to take a look. And once again, try it in the AHL first, it won't hurt anyone.
 

On Buchholz and Sonneborn-Berger coefficients - Part II

Original post. 2. The Sonneborn-Berger coefficient.

This stranger beast is a metric extensively used for tie-breaks in chess-round robins and as an auxiliary tie-break tool to the Buchholz coefficient in non-round robins. Let's start with the definition.
  SB = Σn=1N f(Rn,Pn)   where Rn is the result against the n-th opponent, and Pn is the opponent's points score.
The function  f(Rn, Pn) is defined as:

f(Win, Pn)  = Pn
f(Tie, Pn)  = Pn/2
f(Loss, Pn) = 0

The result value evaluates whether the participant performed better against stronger and weaker opposition. Actually, I do have a problem with this criteria as a tie-breaker, in my opinion ALL points are created equal, and it doesn't matter if they came from a contender or a bottom feeder. However, this metric does answer the notorious statements like "This team only shows up for big games" and "This team is only good against garbage opposition."

So, first of all, for the NHL application, we will modify the function f(Rn, Pn) to:

f(Win, Pn) = Pn
f(OW, Pn)  = 2*Pn/3
f(OL, Pn)  = Pn/3
f(L, Pn)   = 0

to account for the overtime point.

Then, we can calculate the minimal possible SBmin value for a team with the given schedule so far this season, by assigning Wins to be against the weakest teams played, and the OW/OL against the weakest remainder until the sum of W, OW and OL points add up to the number of points the team currently has.

Similarly we shall calculate the maximal possible SBmax value by assigning Wins to be against the strongest teams played, and the OW/OL against the strongest of the remainder, assuming OT wins are about 1/4 of the whole.

Then the closer the actual SB is to the SBmin or SBmax we may be able to say whether the team is successful more against the bottom feeders, the top guns, or whether it achieves its points from the whole spectrum available.

Here is the table describing how this season's teams have their SB positioned between SBminand SBmax.
  Team Points SBmin SBopt SB SBmax Pittsburgh Penguins 1.40 44.28 46.48 46.24 53.06 Washington Capitals 1.40 44.70 46.74 47.77 52.89 Minnesota Wild 1.37 42.25 44.36 46.63 50.66 Columbus Blue Jackets 1.37 43.10 45.36 46.44 52.15 Chicago Blackhawks 1.34 41.61 43.90 43.79 50.80 San Jose Sharks 1.31 40.68 42.97 44.16 49.84 New York Rangers 1.30 41.25 43.67 45.55 50.92 Ottawa Senators 1.25 37.84 40.07 41.79 46.78 Montreal Canadiens 1.25 39.37 41.74 41.05 48.87 Anaheim Ducks 1.19 36.86 39.43 40.12 47.15 Calgary Flames 1.18 35.97 38.49 38.20 46.05 Edmonton Oilers 1.16 35.86 38.32 37.43 45.70 Boston Bruins 1.15 34.73 37.23 37.74 44.72 Nashville Predators 1.13 33.28 36.14 38.04 44.72 Toronto Maple Leafs 1.13 34.64 36.99 35.66 44.02 St. Louis Blues 1.12 34.69 37.14 38.52 44.50 New York Islanders 1.12 34.36 36.94 37.94 44.71 Tampa Bay Lightning 1.09 32.62 34.98 35.41 42.06 Los Angeles Kings 1.07 32.10 34.66 33.56 42.34 Philadelphia Flyers 1.04 31.26 33.56 32.01 40.48 Florida Panthers 1.03 30.89 33.12 30.95 39.82 Carolina Hurricanes 1.00 29.43 31.78 32.41 38.85 Buffalo Sabres 0.99 30.09 32.49 33.43 39.68 Winnipeg Jets 0.96 27.55 30.35 31.48 38.75 Vancouver Canucks 0.96 28.48 30.91 29.02 38.21 Dallas Stars 0.94 28.05 30.62 31.16 38.34 Detroit Red Wings 0.94 29.12 31.12 30.02 37.13 New Jersey Devils 0.91 27.78 30.15 28.63 37.27 Arizona Coyotes 0.84 25.13 27.24 25.86 33.56 Colorado Avalanche 0.61 17.90 19.74 19.98 25.25
Once again, we use Point Per Game values because the teams and their opponents have a different number of games played at most of the moments within a season.

We would dare to make one more step forward and claim that the team that performs closer to SBmax seem to have a coach problem (notable differences highlighted in green in the table above). The roster is there to compete against the best, but the points aren't trickling in at a pace good enough against the fodder. Similarly, if the SB value is closer to SBmin is more likely to have a GM problem (notable differences highlighted in blue in the table above), that its roster is not good enough to compete, but the coach is able to squeeze close to the maximum out of it. However, it is natural to win more games against the weaker teams, so we set the balance point at SBopt = (SBmax + 3*SBmin) / 4;

Wrapping up the talk about the Buchholz and the Sonneborn-Berger coefficients we would like to state that these values have an almost entirely descriptive value and without any predictive capability, with a small exception of the Buchholz-based remaining schedule strength metric. And even then, it's sort of a 'descriptive prediction'.

Please see more Buchholz and Berger-Sonneborn data on the website!

More Hockey Stats

More Hockey Stats

 

On Buchholz and Sonneborn-Berger coefficients

Original post.   The practice of chess tournaments provides two traditional metrics that are used to rank participants beyond their mere scoring. Their names are the Buchholz coefficient and the Sonneborn-Berger coefficient (often called just Berger). They are frequently used as tie-breakers in chess events, however I arrived to completely different application for them for the National Hockey League seasons.

1. The Buchholz coefficient

The Buchholz coefficient is simply the sum of the points of your opponents.
  B = Σn=1N Pn   So, if you played five games, and your opponents currently have 5, 3, 8, 6 and 6 points, your Buchholz value will be 28. Please note, that the current number of points is always used, not the number of points at the moment of meeting. The outcome of the game does not matter (for that one see the Sonneborn-Berger).

At first, the usefulness of such a criteria would prompt a raise of the eyebrow. However, it's not used in round-robin all-play-all tournaments as a final tie-break, because, naturally, the coefficient would be the same for all tied parties. It's used in a special format of chess events called the Swiss Tournament, not very popular outside of the realm of board games for purely logistic reason. But then, consider, first, an NFL season. The list of opponents every team plays there over the 16-game season may be quite different. And, whoever would end up with a larger Buchholz coefficient, clearly would've had stronger opposition on the way.

Now let's go back to hockey. First of all, at the end of the season, although everyone has played everyone, they did so a different number of times. Thus, the sum of opponents' points at the end of the season could be different between teams - including within the same division, if they had a different schedule. So, this could still be a very valid tiebreak. Secondly, the season is so long (82 games, unlike a chess Swiss which is rarely longer than 11 rounds), and that gives us a lot of midway points in time, when the all-play-all has not been completed yet! Here the Buchholz coefficient can clearly show, who has had the stronger opposition up until a certain moment.

Then, if we look at the remainder of the schedule for each team, and for every game we add the opponent's points we get an excellent remaining schedule strength estimator.

Wait... there's a caveat.

Unlike in a chess tournament, where every round occurs for everyone at the same time, and barring very rare circumstances, every participant played an equal amount of games at any point of the tournament, there may be a significant difference in the number of games played by different teams, so summing the opponents up will not work very well. And these opponents also played a different number of games, so their total amount of points is not a very good indicator.

Fortunately, it's not a big deal. Instead of totals, let's operate with per-game numbers. So the NHL Buchholz Coefficient for a team after N games becomes:
  B = (Σn=1N PPGn)/N.    Same applies for the remaining schedule strength, where the per-game numbers of the remaining opposition are summed an averaged.

So, if the team played three games against opponents who currently are:
A) 6 points in 4 games, B) 3 points in 3 games, C) 2 point in 5 games, then the team's Buchholz value would be (6/4 + 3/3 + 2/5) / 3 = 2.9/3 ~ 0.967pts.

Here are the current (Mar 12th 2017) Buchholz coefficients and remaining schedule strengths for the entire 30 times (and note how the Blues stand out with plenty of matchups vs Colorado and Arizona remaining).

+-----------------------+-----------+-------+-------+
| Team Name             | PPG       | Buch  | RStr  |
+-----------------------+-----------+-------+-------+
| Washington Capitals   | 1.4179105 | 1.119 | 1.133 |
| Pittsburgh Penguins   | 1.4029851 | 1.117 | 1.127 |
| Minnesota Wild        | 1.3939394 | 1.090 | 1.070 |
| Columbus Blue Jackets | 1.3731343 | 1.125 | 1.132 |
| Chicago Blackhawks    | 1.3283582 | 1.088 | 1.096 |
| San Jose Sharks       | 1.2985075 | 1.106 | 1.106 |
| New York Rangers      | 1.2941176 | 1.120 | 1.184 |
| Ottawa Senators       | 1.2537313 | 1.105 | 1.169 |
| Montreal Canadiens    | 1.2352941 | 1.122 | 1.097 |
| Edmonton Oilers       | 1.1791044 | 1.121 | 1.040 |
| Anaheim Ducks         | 1.1764706 | 1.102 | 1.150 |
| Calgary Flames        | 1.1764706 | 1.099 | 1.140 |
| Boston Bruins         | 1.1470588 | 1.115 | 1.151 |
| Toronto Maple Leafs   | 1.1343284 | 1.114 | 1.150 |
| Nashville Predators   | 1.1323529 | 1.105 | 1.116 |
| St. Louis Blues       | 1.1194030 | 1.144 | 0.943 |
| New York Islanders    | 1.1194030 | 1.142 | 1.103 |
| Tampa Bay Lightning   | 1.0895522 | 1.121 | 1.134 |
| Los Angeles Kings     | 1.0746269 | 1.118 | 1.104 |
| Philadelphia Flyers   | 1.0447761 | 1.122 | 1.179 |
| Florida Panthers      | 1.0298507 | 1.118 | 1.175 |
| Carolina Hurricanes   | 1.0000000 | 1.138 | 1.136 |
| Buffalo Sabres        | 0.9855072 | 1.127 | 1.158 |
| Winnipeg Jets         | 0.9565217 | 1.110 | 1.143 |
| Vancouver Canucks     | 0.9558824 | 1.115 | 1.152 |
| Dallas Stars          | 0.9552239 | 1.119 | 1.100 |
| Detroit Red Wings     | 0.9545455 | 1.151 | 1.059 |
| New Jersey Devils     | 0.9117647 | 1.148 | 1.132 |
| Arizona Coyotes       | 0.8358209 | 1.133 | 1.098 |
| Colorado Avalanche    | 0.6119403 | 1.128 | 1.164 |
+-----------------------+-----------+-------+-------+   In the next installment we're going to talk about the application of the Sonneborn-Berger coefficient to the NHL regular season.

More Hockey Stats

More Hockey Stats

 

Faceoff statistics

I read about this idea on HFBoards and finally got to implement it.   Faceoff stats and Elo ratings.   The available views are: * career/specific season * per zone/per stick first   Here's a sample table: By stick first on the ice, 2016 season. FW - First Stick Wins, FL - First Stick Losses, FP - First Stick Win % LW - Last Stick Wins, LL - Last Stick Losses, LP - Last Stick Win % TW - Total Faceoff Wins, TL - Total Faceoff Losses, TP - Total Faceoff W % FR - Faceoff Rating (TW*TP/100), Elo - Elo rating.   Matt Duchene really surged this season.   # Player FW FL FP LW LL LP TW TL TP FR Elo 1 MATT DUCHENE 239 142 62.73 214 125 63.13 453 267 62.92 285.01 2099.16 2 PATRICE BERGERON 349 262 57.12 392 254 60.68 741 516 58.95 436.82 2078.38 3 RYAN O'REILLY 383 286 57.25 315 220 58.88 698 506 57.97 404.65 2070.72 4 ANTOINE VERMETTE 350 198 63.87 265 172 60.64 615 370 62.44 383.98 2067.26 5 RYAN KESLER 442 320 58.01 300 217 58.03 742 537 58.01 430.46 2065.49 6 MARTIN HANZAL 291 254 53.39 274 185 59.69 565 439 56.27 317.95 2063.27 7 CLAUDE GIROUX 281 218 56.31 433 350 55.30 714 568 55.69 397.66 2057.67 8 JORDAN STAAL 217 170 56.07 215 130 62.32 432 300 59.02 254.95 2057.40 9 JONATHAN TOEWS 268 216 55.37 333 227 59.46 601 443 57.57 345.98 2056.26 10 PAUL STASTNY 341 267 56.09 310 253 55.06 651 520 55.59 361.91 2054.49 11 KYLE TURRIS 226 181 55.53 272 261 51.03 498 442 52.98 263.83 2049.56 12 TYLER BOZAK 201 161 55.52 311 232 57.27 512 393 56.57 289.66 2049.46 13 BRANDON SUTTER 314 261 54.61 273 211 56.40 587 472 55.43 325.37 2049.30 14 MIKKO KOIVU 394 360 52.25 295 203 59.24 689 563 55.03 379.17 2047.14 15 FRANS NIELSEN 187 165 53.12 269 214 55.69 456 379 54.61 249.03 2046.67 16 DEREK RYAN 86 62 58.11 153 110 58.17 239 172 58.15 138.98 2046.05 17 RYAN JOHANSEN 236 224 51.30 297 244 54.90 533 468 53.25 283.81 2043.37 18 TRAVIS ZAJAC 325 293 52.59 267 216 55.28 592 509 53.77 318.31 2042.99 19 JEAN-GABRIEL PAGEAU 211 178 54.24 147 111 56.98 358 289 55.33 198.09 2040.48 20 SEAN COUTURIER 199 162 55.12 170 160 51.52 369 322 53.40 197.05 2038.48 21 BRYAN LITTLE 190 168 53.07 219 157 58.24 409 325 55.72 227.90 2038.16 22 JAY BEAGLE 297 220 57.45 144 114 55.81 441 334 56.90 250.94 2035.44 23 MIKE FISHER 300 249 54.64 240 200 54.55 540 449 54.60 294.84 2034.64 24 CODY EAKIN 165 153 51.89 138 126 52.27 303 279 52.06 157.75 2034.28 25 SEAN MONAHAN 214 189 53.10 346 310 52.74 560 499 52.88 296.13 2031.43 26 ERIK HAULA 163 141 53.62 156 129 54.74 319 270 54.16 172.77 2030.95 27 TOMAS HERTL 67 55 54.92 55 34 61.80 122 89 57.82 70.54 2029.31 28 TORREY MITCHELL 218 209 51.05 120 81 59.70 338 290 53.82 181.92 2028.69 29 JOHN MITCHELL 113 105 51.83 128 90 58.72 241 195 55.28 133.21 2027.15 30 HENRIK ZETTERBERG 207 194 51.62 275 248 52.58 482 442 52.16 251.43 2026.42

More Hockey Stats

More Hockey Stats

 

Another rule change suggestion

Original post.   Better less, but better V.I. Lenin
I've got another rule change suggestion, this one even simpler:

Allow teams to decline penalty shot awards in favor of a regular power-play.

I think it adds more tactical variety to the game and discourages penalties on breakaways that are worse in penalty shooting.

As a side matter, I think: a player who is charged with the offense after which the penalty shot is awarded should still be added a minor penalty (2 minutes) in the statistics.

More Hockey Stats

More Hockey Stats

 

On Leads Changes and Swings

Original post.     Wild thing, you make my heart sing You make everything groovy, wild thing   Also inspired by Twitter, and because I can, I decided to gather statistics on games with most lead changes* most lead swings** Here, for the 2016/17 season: By most lead swings: AWAY    HOME   Date        Sco LC LS CHI  vs DAL  on 2017/02/04: 5-3 7 3 CBJ  vs OTT  on 2017/01/22: 7-6 11 3 PHI  vs STL  on 2016/12/28: 3-6 7 3 MTL  vs PIT  on 2016/12/31: 3-4 7 3 CHI  vs NYI  on 2016/12/15: 5-4 7 3 ARI  vs PHI  on 2016/10/27: 5-4 9 3   with 60 games at 2 lead swings. Dallas leads the way with 8 games with at least two swings, and Carolina, Chicago, NY Islanders and Winnpeg follow with 7 each.   By most lead changes:       AWAY    HOME   Date        Sco LC LS CBJ  vs OTT  on 2017/01/22: 7-6 11 3 TOR  vs WSH  on 2017/01/03: 5-6  9 2 TOR  vs NYI  on 2017/02/06: 5-6  9 2 NYI  vs DET  on 2017/02/03: 4-5  9 1 CHI  vs COL  on 2017/01/17: 6-4  9 2 CAR  vs NYI  on 2017/02/04: 5-4  9 2 CHI  vs STL  on 2016/12/17: 6-4  9 1 BUF  vs OTT  on 2016/11/29: 5-4  9 1 ARI  vs PHI  on 2016/10/27: 5-4  9 3   with 31 game with at least 7 lead changes. Here we've got Carolina, Chicago and NY Islanders at the lead with at least 6 games with 7 or more lead changes.   And what do we get historically?
  The wildest games, regular season, by lead swings: AWAY    HOME   Date         Sco LC LS   PHI  vs BOS  on 2011/01/13: 5-7  11 5 COL  vs CGY  on 1991/02/23: 8-10 11 5 ARI  vs CGY  on 1991/01/15: 5-7  11 5 PHI  vs COL  on 1988/11/19: 5-6  11 5   with 30 games at 4 lead swings.   The wildest games, regular season, by lead changes: AWAY    HOME   Date        Sco LC LS   DET  vs SJS  on 2005/11/26: 7-6 13 4 MTL  vs COL  on 2002/12/06: 6-7 13 2 COL  vs SJS  on 1997/04/04: 6-7 13 2 ARI  vs PHI  on 1990/01/25: 6-8 13 1 TOR  vs PIT  on 1989/10/25: 8-6 13 3 COL  vs WSH  on 1997/11/18: 6-6 12 3 PIT  vs NJD  on 1993/04/14: 6-6 12 1 BUF  vs CAR  on 1991/12/07: 6-6 12 4 CAR  vs TOR  on 1990/02/14: 6-6 12 2 VAN  vs TOR  on 1988/01/04: 7-7 12 3   with 65 games at 11 lead changes (even numbers can only occur in the ties era).   The wildest games, playoffs, by lead swings: AWAY    HOME   Date        Sco LC LS   STL  vs DAL  on 1999/05/08: 4-5 9 4 MTL  vs COL  on 1993/04/26: 5-4 9 4 EDM  vs LAK  on 1992/04/20: 5-8 9 4   with 33 games at 3 lead swings.   The wildest games, playoffs, by lead changes: AWAY    HOME   Date        Sco LC LS   BUF  vs OTT  on 2006/05/05: 7-6 13 2 PHI  vs CHI  on 2010/05/29: 5-6 11 3 COL  vs SJS  on 2010/04/16: 5-6 11 1 PHI  vs WSH  on 1989/04/11: 8-5 11 3   with 42 games at 9 lead changes (only odd numbers can occur)   The data is presented since the year 1987 - the earliest boxscores from the NHL.com Now this one is going to make it into the website, I just haven't decided in which form.   *   Lead swing is defined as when a team takes the lead after the other team had it.  ** Lead change is defined as when a team loses the lead, even if only temporarily to a tied score.    

More Hockey Stats

More Hockey Stats

 

On goalposts statistics

Why does the cat lick his balls? Because it can.   Recently I saw a request on a stats of goal posts / crossbars hit per game. While I do have that statistic per player, I haven't one for games, so - since I can - why shouldn't I produce one?

About half an hour of Perl-ing created the following summary:
  Irons altogether, top:
AWAY    HOME                P C T OTT  vs BUF  on 2011/12/31: 8 0 8 VAN  vs FLA  on 2010/02/11: 7 0 7 WPG  vs FLA  on 2009/12/05: 6 1 7 TOR  vs BUF  on 2007/10/15: 6 1 7 TBL  vs FLA  on 2006/04/01: 6 1 7 PHI  vs PIT  on 2006/03/12: 7 0 7 COL  vs NYI  on 2005/12/17: 7 0 7 NSH  vs DAL  on 2016/03/29: 4 2 6 PIT  vs NSH  on 2014/03/04: 5 1 6 NYI  vs TBL  on 2014/01/16: 3 3 6 DAL  vs VAN  on 2013/02/15: 5 1 6 STL  vs CAR  on 2012/03/15: 5 1 6 WPG  vs MTL  on 2011/01/02: 6 0 6 OTT  vs VAN  on 2011/02/07: 6 0 6 MTL  vs CAR  on 2011/11/23: 6 0 6 LAK  vs DAL  on 2010/03/12: 4 2 6 NJD  vs TBL  on 2009/10/08: 6 0 6 LAK  vs DAL  on 2009/10/19: 5 1 6 DAL  vs CBJ  on 2009/01/31: 5 1 6 COL  vs CHI  on 2009/11/11: 6 0 6 PIT  vs WPG  on 2008/01/30: 5 1 6 NYR  vs NJD  on 2008/04/09: 4 2 6 STL  vs ARI  on 2007/01/15: 5 1 6   followed by 109 games with 5 irons hit.   Crossbars, top: AWAY    HOME                P C T
CGY  vs CBJ  on 2008/11/08: 1 4 5 NYR  vs FLA  on 2007/11/23: 0 4 4 PHI  vs FLA  on 2006/12/27: 1 4 5 BUF  vs DAL  on 2017/01/26: 1 3 4 EDM  vs DAL  on 2016/01/21: 2 3 5 TOR  vs STL  on 2015/01/17: 1 3 4 CHI  vs ANA  on 2015/05/19: 1 3 4 BOS  vs VAN  on 2015/02/13: 1 3 4 NYI  vs TBL  on 2014/01/16: 3 3 6 CHI  vs ANA  on 2008/01/04: 2 3 5 CAR  vs FLA  on 2007/11/12: 1 3 4   followed by 50 games with 2 crossbars hit.   The data is extracted from the PBP files of NHL.com, from the year 2005 on.

However I consider this a one-time effort and will not add this to the website itself.  

More Hockey Stats

More Hockey Stats

 

On streaks and breaks

Original post.   So after remembering the Botwinnik's quote, and after publishing the stats how the teams actually play after different breaks, a new idea came to me - check whether the teams on streaks are affected positively or negatively by breaks.

For the sake of the analysis, I assumed the following: A break is a period of three days at least between games. A streak is a sequence of at least three wins in a row, or at least seven points in four games. So we check for the last thirty years (as far as NHL.com would let us in) if the streaking team was able to keep the streak alive, or whether the streak was broken:
  SEASON ALIVE BROKEN 1987/1988 5 11 1988/1989 12 7 1989/1990 8 14 1990/1991 13 11 1991/1992 17 13 1992/1993 20 16 1993/1994 19 20 1994/1995 2 7 1995/1996 15 11 1996/1997 15 11 1997/1998 12 20 1998/1999 12 9 1999/2000 18 12 2000/2001 21 11 2001/2002 17 6 2002/2003 13 10 2003/2004 12 14 2005/2006 31 15 2006/2007 16 16 2007/2008 23 24 2008/2009 15 20 2009/2010 14 17 2010/2011 19 11 2011/2012 22 11 2012/2013 6 3 2013/2014 15 15 2014/2015 16 16 2015/2016 16 14 2016/2017 8 11 TOTAL 432 376
Actually, it looks like the streaks weren't affected by the break either way. 53.4% of the times the streak continued, 46.6% of the time it went dead. There is a very large discrepancy between the seasons, although I'd attribute it to lesser parity between the teams overall in these years. For the last 5 years, the probability for the streak to stay alive has been 50.8% (61 cases of extended streaks out of 120).

Now, what would change, if we define a break a little bit longer, by a single day:
  SEASON ALIVE BROKEN 1987/1988 2 2 1988/1989 4 1 1989/1990 3 1 1990/1991 4 4 1991/1992 7 8 1992/1993 8 2 1993/1994 7 7 1994/1995 1 1 1995/1996 6 7 1996/1997 6 2 1997/1998 5 5 1998/1999 6 2 1999/2000 9 3 2000/2001 7 4 2001/2002 6 4 2002/2003 5 1 2003/2004 3 6 2005/2006 16 4 2006/2007 8 5 2007/2008 10 6 2008/2009 8 8 2009/2010 6 6 2010/2011 9 3 2011/2012 8 4 2012/2013 2 1 2013/2014 3 9 2014/2015 5 9 2015/2016 7 6 2016/2017 3 8 TOTAL 174 129   The changes are rather interesting. Now, overall, the chances of streak to continue are up to 57.4%, and only in 42.6% of the cases it came to a stop. But in the last five years - since the last lockout - and with the schedule changes so that there are at least two games between every team (increasing travel), the ratio drops from 50.8% to the humble 37.7% (20 out of 53!)

Extending the breaks to five days provides too little data to draw any conclusions.

So I am inclined to agree with Dr. Botwinnik, that extended breaks of more than three days throw teams off their pace and should be reduced to minimum. Three days are borderline alright.

More Hockey Stats

More Hockey Stats

 

A rule change suggestion

whoops, got the title wrong Original post. A rule change suggestion   There's no irreplaceable people. I.V. Stalin   Rushing this one up, because this idea already came to my mind before, but I forgot about it. The age is taking its toll.

Anyways. Everyone is talking these days about rule changes. I've already expressed a few thoughts on the scoring systems, but I am not original there. Now, however, I want to make a suggestion I haven't seen mentioned yet.

Allow soccer (baseball, too)-like substitutions in hockey. Allow the coaches to replace players in the original lineup at the start of the game with one of the "healthy scratches", as submitted in the roster sheet, like the one Peter DeBoer recently messed up in the game against Edmonton.

The substitution goes ONE-WAY. That means that the player that was substituted cannot return to the game. The substitutions may occur:
  During the intermissions During the commercial breaks During a time-out First and foremost this will allow teams to handle early injuries much better. Your D-man got injured at the 7:04 mark of the 1st period? Around 10:00 there will be a commercial break, you can substitute him with one of the scratches!   Second, it may allow coaches to send stronger messages to players they deem slacking. Rather than shorten the roster by benching that guy, you can send an eager healthy scratch in. Of course, then the "slacking" player is benched for the whole remainder of the game.   Third (oh, I did military service, so I have a natural obsession of providing three reasons for each thing), it may give the coaches some extra flexibility if a designated roster player gets slightly injured in the warm-ups. Then a scratch takes his place as usual, but if the original player is fixed by the 1st intermission, he can substitute the starting scratch.   The substitutes will have to come from the "scratch" list with the exception of the emergency goaltending contracts.   Oh, and I am sure the NHL website will make a mess out of it in their game reports.

More Hockey Stats

More Hockey Stats

 

On A Hockey Website

Original post.   Just to not let the month of January slip away without another post, I got sentimental and decided to tell a small story about how my website came to life.

There was a void. A lot of time people on hockey boards would wonder if specific statistics of players and teams were available, and they wouldn't, although the raw data seemed to be there. Then, there was the fantasy hockey world, with its pizzazz, and asking for a predictive tool, - and again, the raw data seemed to be there.

Now, I am a sysadmin by trade, with occasional forays into software development, and since I've been doing Perl for all of my career, I got a few exposures to the Web development process and to databases. I've got a college degree in Engineering, so that gave me some idea about statistics.

So I got a look at the publicly available NHL reports, but was unsure of how to use them. I tried some standard database approach, but it wasn't working.

The turning point came when I attended a lecture on MongoDB. That one turned out to be perfect, with the loosely compiled NHL stats documents, just spill them into the Mongo database. Then extract data from them and summarize them into tables. Store the tables in an SQL database for quick serving on the website. And along came more luck - a lecture on the Mojolicious Perl Web framework which equipped me with an easy solution for how to run a website.

Thus, I was able to actually implement what I had in mind. First came the spider part, to crawl and collect the data available on NHL.com. Fortunately, I was able to scrape everything before the website's design changed drastically, and the box scores prior to 2002 stopped being available. I got everything from the 1987/88 season on.

Then, I started writing the parsers,.. and had to take a step back. There was quite a lot of inconsistent and missing reports. Therefore I had to a) add a thorough testing of every report I scraped to ensure it came together, b) look for complementing sources for whatever data was missing. So before I got done with the parsers, I had a large testing framework, and also visited all corners of the hockey-related websites to get the missing or conflicting data resolved, even the online archives of newspapers such as USA Today. Some of the downloaded reports had to be edited manually. Then, NHL.com landed another blow, dropping draft pick information from their player info pages. Luckily, the German version of the website still had it, so I began to scrape the German NHL website too.

I was able to produce the unusual statistics tables relatively quickly and easily. However I decided that the website will not open without the prediction models I had in mind. Being a retired chess arbiter and a big chess enthusiast I decided to try to apply the Chess Elo rating model to the performances of hockey teams and players. Whether it really works, or not, I don't know yet. I guess by the end of the season I can make a judgement on that.

In October 2016 I opened my website by using a free design I found somewhere online. Unfortunately, I quickly realized it was not a good fit with the contents the site was serving, so I sighed, breathed some air, opened w3schools.com in my browser, and created my own design. And a CMS too. At least I am happy with the way the site looks now, and even more happier that when someone asks a question - on Twitter, Reddit or hockey forums - whether it's possible to measure a specific metric, I am able to answer, 'Already done! Welcome to my website!'

At the end I'm a software developer, a web designer, a DBA, a sysadmin, a statistician and an SEO amateur. Oh, and a journalist too, since I'm writing a blog.

More Hockey Stats

More Hockey Stats

 

Update on my main website

Wanted to share with you some updates that I've made to my website lately: Frequent Dancers Penalty Killers Team Performances After Various Breaks   Corrections, advice and suggestions very much welcome!

More Hockey Stats

More Hockey Stats

 

On Intangibles (a small addendum)

Original post.   One "intangible" being tossed around is "motivation" of the players. Which brings memories of an episode I was witness to.   In 2003/04, in the Israeli Top Tier Chess League (which is indeed no slouch) our club managed to assemble an outstanding team, featuring, among others, a former Champion of Russia and a former Champion of Europe. I was part of the management team, and orchestrated bringing the first of the two, who also happened to be my childhood friend back in Leningrad, Soviet Union.   And so, in round III we were to face our main rival for the title, and the club's GM (also a pedestrian chess player) gathered the team and carried out a pronounced motivational speech, how we have to beat the team we're facing, and so on, and so on.   We lost 1½-4½ without winning a single game and lost any chance for the championship we could have.

More Hockey Stats

More Hockey Stats

Sign in to follow this  

About HF.net

 We are an enthusiastic community of HockeyFans who enjoy discussing the NHL and more in our Forums.  Our members may also write their own blogs, converse in chat, post pics in our gallery, join our fantasy hockey leagues and more.  If you are looking for a friendly community to discuss hockey then register today and begin your conversation in our NET.

 

 

Contact Us

 

Like what we do? Help us keep doing it!
Supporting Members help keep HockeyForums Advertisement Free
×