Mikä se on

Liigaplot on Twitter-botti, joka twiittaa liigakierroksen päätyttyä lyhyen tiivistelmän otteluiden tapahtumista.

Tein ensimmäisen maalitodennäköisyysmallin kesällä 2016 NHL:n laukaisudatalla. NHL:n dataa saa useasta lähteestä, ja tuolloin oli olemassa R-paketti, jonka avulla datasetit sai otteluista kätevästi omalle koneelle. Liigaan oli olemassa dataa, mutta hakukoodit on tehtävä itse.

Sain kesän aikana kehiteltyä hakuprosessin valmiiksi. Silloisella osaamisella lopputuote ei kuitenkaan ollut kovin käytännöllinen, mutta se kuitenkin toimi. Kauden 2016-2017 aikana ajoin hakuprosessia käsin aina pelikierrosten jälkeen. Tein myös koodit xG-käppyröitä varten ja postitin ne henkilökohtaiselle Twitter-tilille. Ajan myötä opettelin vähitellen hakujen automatisointia ja 2018 ei oikeastaan tarvinnut enää tehdä käsin mitään, paitsi jos Liigan dataseteissä (tai yhteydessä nettisivuun) oli jotain häiriöitä. Grafiikat tosin laitoin Twitteriin edelleen käsipelillä. Syksyllä 2018 tein lopulta Twitter-botin, joka hoitaa grafiikoiden jakamisen automaattisesti.


Sisältö

Ensinnäkin, postaus alkaa aina ilmoituksella siitä milloin hommat ovat lähteneet liikenteeseen. Joskus aiemmin kun näihin sisältyi enemmän simulaatioita, saattoi generoinnissa mennä pieni hetki. Sitä odotellessa on hyvin aikaa katsoa Kummelin meteorologin työhaastattelua ja erityisesti demovideota.

Varsinainen otteluraportti näyttää tällaiselta. Mukana on myös syväluotaava kommentti.


Mitä ne kuvat on

1. xG-käppyrä

Vaaka-akselilla kulkee peliaika ja pystyakselilla maaliodotusarvo. Joukkueen kuvaaja alkaa nollasta ja se hyppää ylös aina kun joukkue luo maaliodottamaa Liigan datan mukaan. Eli käytännössä maaliodotusarvo lasketaan Liigan laukaisukarttoihin merkattujen laukausten maalitodennäköisyyksistä, joiden laskeminen perustuu gradussani esitettyyn malliin.

Malli ei voi huomioida asioita, joita datasta ei löydy.

Kuvan alaosassa on merkattuna simuloitu 1x2-jakauma.

Yhdessä simulaatiossa kaikille laukauksille arvotaan lopputulos todennäköisyysestimaatin mukaisesti. Lopuksi lasketaan maalit ja määritetään voittaja.

Ihan kuin jääkiekossa noin muutenkin.

Tämä toistetaan ottelulle tuhansia kertoja ja tuloksista lasketaan kotivoittojen, tasapelien ja vierasvoittojen osuudet. Tuloksena saadaan 1x2-jakauma.

2. “Flow”

Toinen kuvaaja esittää joukkueiden laukausten esiintymistiheyttä ajassa. Mitä korkeammalla kuvaaja on, sitä enemmän joukkue on laukonut kyseisessä aikaikkunassa.

3. Game Score

Kolmannessa kuvassa on kaksi taulukkoa. Ensimmäisessä on kummankin joukkueen kolme eniten maaliodotusarvoa laukonutta pelaajaa. Toisessa taulukossa on kummankin joukkueen kolme eniten Game Scorea tehnyttä pelaajaa.

Game Score (GS) on eräänlainen tiivistelmä pelaajan suorituksesta ottelussa. Se on painotettu yhdistelmä useasta eri lukemasta. GS sisältää erikokoisilla painoilla seuraavien lukemien lukumäärät:

Kuten varmasti huomaatte, nämä lukemat sisältävät enimmäkseen hyökkäyspelillisiä lukuja, joten on selvää, ettei GS ole mikään absoluuttisen täydellinen mittari suoritteille. Se on tavallaan verrattavissa Liigapörssipisteisiin.

NHL tarjoaa otteluistaan kattavampaa dataa. Sisällyttämällä pelaajien on-ice -lukemia, ja vaikka blokkauksia, saadaan puolustussuoritteita hieman huomioitua. Liiga kyllä kertoo nykyään laukausten blokkaajan nimen, mutta pelaajaa ole kerrottu yksiselitteisesti ID-numeron kera, joten täyskaimoja ei voi erotella datasta.

Plus-miinus -tilaston miinuksia voisi tavallaan käyttää puolustuspelin mittarina, mutta kyseinen lukema on yksinkertaisesti niin huono viritelmä, että sitä ei pitäisi käyttää yhtään mihinkään. https://hockey-graphs.com/2016/11/01/behind-the-numbers-why-plusminus-is-the-worst-statistic-in-hockey-and-should-be-abolished/

4. Kartta

Siinä on laukausten sijainnit. Pisteen koko määritellään maalitodennäköisyyden perusteella.


Sarjataulukon odotusarvo

Aiempina vuosina kerran viikossa, muistaakseni lauantain kierrosten yhteydessä, on ajettu sarjataulukko odotusarvoilla. Odotusarvoinen sarjataulukko on saatu laskemalla otteluista yhteen joukkueiden oikeiden pisteiden sijaan pisteiden odotusarvot.

Pisteiden odotusarvo ottelussa

Muistatko ensimmäisessä kuvassa olleen 1x2-jakauman? Kun ottelusta on saatu odotettu 1x2-jakauma, niin sen avulla saadaan odotusarvo.

Peruskoulumatiikan mukaan odotusarvo on todennäköisyyden ja pistemäärän tulo. Voitosta saa kolme pistettä ja häviöstä nolla pistettä. Tasapelistä saa yhden pisteen, jonka jälkeen lopullisesta voitosta saa toisen.

Oletetaan jatkoaika ja rankkarit 50/50 arvonnoiksi, jolloin tasapelistä joukkue saa yhden pisteen todennäköisyydellä 1 ja toisen pisteen todennäköisyydellä 0.5. Tasapelin pisteodotusarvo on siis \(1+0.5=1.5\).

Jos 1x2-jakauma on esimerkiksi \((0.60, 0.22, 0.18)\), niin kotijoukkueen pisteodotusarvo on \(3*0.6+1.5*0.22 = 2.13\). Vierasjoukkueelle saadaan \(3*0.18+1.5*0.22=0.87\).

Nämä luvut saadaan kaikista peleistä, ne lasketaan yhteen, ja sitten pistetään joukkueet pisteiden perusteella järjestykseen. Siinä on sitten odotettu sarjataulukko.


Kausiennusteet

Oli. Taisi olla kausi 2018-2019, kun virittelin loppusyksystä oman Liiga-mallin sillä tavalla, että se laski aina kierroksen päätyttyä arviot kaikkiin kauden jäljellä oleviin peleihin. Sen avulla sitten simuloitiin lopullinen sarjataulukko miljoonia kertoja, ja tuloksista sai myös ylös mm. playoff-todennäköisyyksiä, kotietutodennäköisyyksiä ja kaikkea muuta hauskaa. Mallissa oli kokoonpanotiedot melko olennaisessa roolissa, joten siinä joutui olettamaan, että joukkueet menevät jollain peruskokoonpanolla kauden loppuun asti, eikä mitään kovin hienoja loukkaantumissäätöjä ollut tehtynä.





Ps.

Se NHL:n R-paketti on edelleen olemassa, mutta sitä ei enää ylläpidetä, koska paketin tekijät on pitkälti palkattu NHL-seurojen analytiikkaosastoille ja kaikenlaisiin muihin melko olennaisiin tehtäviin. Itse asiassa Seattle Kraken palkkasi Mandryckyn ennen toimitusjohtaja Ron Francisia.

Edellisellä kokeilulla tuo R-paketti toimii vielä, mutta laukausten sijainteja se ei löydä, joten NHL-datahakukin vaatii nykyään vähän enemmän itse tehtävää koodia.

Pisteodottaman kohdalla tulee aina jonkin verran kysymyksiä tuohon jatkoaikojen ja rangaistusmaalilaukausvoittopotkukilpailun kolikonheitto-oletukseen liittyen. Tutkin joskus NHL-mallin kanssa (ottelun ennustemalli, jolla lyödään vetoa) sitä, että jos olettaisi jotain muuta kuin 50-50 jatkoajalle ja rankkareille. Mallin diagnostiikka ei tuottanut parempia lukemia, jos vaikkapa kotijoukkueen tai suosikkijoukkueen määrittäisi minkäänlaiseksi suosikiksi jatkoajoille. Toisaalta, jos joukkueita profiloisi rankkariosaamisen suhteen, niin eroja voisi löytyä, mutta niiden merkityksellisyys on asia erikseen. Tästä voisi kirjoittaa joskus erillisen jutun.