Een eerste expected goals (xG) model

Iedereen die ook maar enigszins geïnteresseerd is in voetbalstatistieken die wat verder gaan dan schoten op doel moet wel eens gehoord hebben van ‘expected goals’ (xG). Het idee is heel simpel: ieder schot krijgt een waardering tussen de 0 en 1. Deze waardering wordt bepaald aan de hand van schoten uit het verleden. Hiermee kunnen we beter inschatten hoe goed een team eigenlijk is. De stand op teletekstpagina 818 blijkt ons nog wel eens voor de gek te houden, xG doen dat een stuk minder.

Waarom? Omdat de factor geluk op korte termijn een grote rol speelt. Een team kan twee wedstrijden op rij winnen door een afstandsschot van 30 meter, maar het is onwaarschijnlijk dat dit team zulke afstandsschoten blijft scoren. Daadwerkelijk zijn er dus twee goals gemaakt, maar op basis van de kansen zou je dit niet verwachten. Op lange termijn (bijv. een heel voetbalseizoen) zijn er eigenlijk geen teams die erin slagen om xG te ‘verslaan’. De meeste teams komen uiteindelijk rond hun xG terecht. Bovendien zijn xG de beste voorspellers van toekomstige goals.

(Een uitgebreidere uitleg van xG is hier te vinden)

Mijn model

Ik volg @11tegen11 en Michael Caley al enkele jaren op Twitter en wilde deze modellen ook eens produceren in plaats van consumeren. Uiteindelijk was dit mijn motivatie om te beginnen met R, een data-analyse programma. (Wat is R?)   Deze modellen kunnen zeker in Excel gemaakt worden. Het voordeel van R is dat het de creatieveling in staat stelt om de benodigde data van internet te scrapen.

Na lang proberen, nadenken en finetunen heb ik een eerste model gemaakt. Het model is op basis van de volgende data gemaakt: Bundesliga 2012-2015, Eredivisie 2013-2015, La Liga 2011-2014 en de Premier League 2009-2013. Al met al leverde dit in totaal 114.000 schoten op. Het model is getest op seizoen 2014-2015 van de Premier League en La Liga. Dit is gedaan om overfitting te voorkomen. Overfitting houdt in dat er teveel variabelen aan het model worden toegevoegd. Het model ‘leert’ dan niet om te generaliseren en beschrijft de kenmerken van de data. Het model houdt dan rekening met te veel variabelen en kan ‘ongeziene’ data niet meer goed voorspellen.

(Op pagina 9 staat meer info over overfitting

Op dit moment heb ik losse regressiemodellen gemaakt voor drie situaties/schoten: penalty’s, kopballen en ‘gewone’ schoten.

Het model van penalty’s is eenvoudig. Een penalty levert een xG van 0,76 op. Het regressiemodel van kopballen en schoten is interessanter. In de modellen heb ik op dit moment vier parameters toegevoegd. De twee belangrijkste zijn de hoek van de schutter ten opzichte van het doel en de afstand naar het midden van het doel. Vanzelfsprekend zijn een hoek van 180 graden en een afstand van 0 het beste.

Verder houd ik rekening met counters en de zogenaamde ‘big chance’. Deze big chance wordt door de codeurs van Opta toegevoegd als de kans – heel logisch – groot is. Deze twee parameters hebben een positieve invloed.

Nu komt het meest interessante stuk van deze blog: de prestatie van het model. In iedere grafiek staat het aantal voorspelde goals ten opzichte van het aantal gescoorde goals. Hierbij zijn eigen goals weggelaten. Al met al ben ik niet ontevreden over de prestaties. Over de grafieken ben ik nog wel ontevreden, ik hoop binnen een aantal weken wat mooiers te kunnen laten zien.

 

 

De R² voor seizoen 2014-2015 van La Liga is bijzonder hoog in vergelijking met de rest van de seizoenen. Over de Eredivisie heb ik gemengde gevoelens. De correlatie is zeker niet onaardig, toch blijft het de vraag in hoeverre dit model toe te passen is op alle competities. Natuurlijk is het wel mogelijk om een apart regressiemodel te maken voor de Eredivisie en vergelijkbare competities, maar dan verliezen we een groot deel van onze data. Dit zou invloed kunnen hebben op het aantal parameters voor zo’n regressiemoel. Een totale sample van ongeveer 8500 schoten per Eredivisieseizoen is zeker niet onaardig, maar als we bijvoorbeeld kijken naar het aantal kopballen uit corners dan neemt de sample size aanzienlijk af. Een apart regressiemodel is dan dus aanzienlijk ‘simpeler’. We kunnen dan minder vaak naar heel specifieke situaties kijken, want de steekproefgrootte laat dat niet toe.

Anderzijds moeten we niet vergeten dat in de Premier League en de andere grote competities genoeg teams spelen die de (mogelijke) betere prestaties van de topteams compenseren. Barcelona beschikt misschien over betere afmakers dan Feyenoord of Ajax, maar of dit ook geldt voor de nummer 20 van de Spaanse competitie is nog maar de vraag. Bovendien is het nog een discussiepuntje of Messi écht een veel betere afmaker is dan de gemiddelde Eredivisiespits.

Klinkt vreemd nietwaar? Opta heeft (zwak) bewijs dat er zoiets als een ‘player finishing skill’ bestaat. Het grootste probleem is vooral sample size. Een voetballer schiet per seizoen niet vaak genoeg om de geluksfactor uit te sluiten. Dit is te verduidelijken aan de hand van een kop-munt-voorbeeld. Als we 50 keer gooien dan zouden we zomaar 36 keer kop kunnen gooien. Als we 100.000 keer gooien zal de verdeling dichter in de buurt komen van 50.000-50.000. 11tegen11 omschreef de huidige situatie treffend als ‘afwezigheid van bewijs’ tegenover ‘bewijs van afwezigheid’.

Overigens betekent dit niet dat xG-modellen niet laten zien dat Messi goed is. Messi onderscheidt zich hierin vooral door het creëren van betere kansen. Hij slaagt er dus veel vaker in om uit een goede positie te kunnen schieten.

Toekomst

In de komende weken/maanden hoop ik zeker nog het een en ander aan het model toe te voegen. Bijvoorbeeld een apart regressiemodel voor dode spelsituaties zoals corners en vrije trappen. Ook is het interessant om verschillen te maken tussen bijvoorbeeld schoten uit een voorzet en schoten na een steekpass. Een schot uit een voorzet is in de meeste gevallen moeilijker te scoren dan een schot na een steekpass. Bovendien wordt een speler na een steekpass vaak 1-op-1 met de keeper gezet, dit vergroot de kans om te scoren ook. Ten slotte wil ik de dataset behoorlijk uitbreiden, bijvoorbeeld met de Serie A.

 

Plaats een reactie