Koning TOTO : Sjaak vs Bayes

Definitieve uitslag voetbal eredivisie op basis van een wiskundig model, Baysiaanse statistiek, en een kleine Monte Carlo simulatie

Het Doel

Recentelijk is er wat ophef ontstaan betreffende de beslissingen van de KNVB over de uitslagen van de eredivisie 2019/2020. Om onnodige controverse en verhitte discussies te voorkomen leek het ons een goed idee om de uitslag van de nog ongespeelde wedstrijden bij deze wiskundig, onpartijdig (en niet gehinderd door enige kennis van voetbal) vast te stellen.

Om dit vast te kunnen stellen is allereerst een statistisch model nodig voor voetbalwedstrijden. Dit model kan in principe zo gedetailleerd zijn als we maar willen, toch is het niet praktisch om te beginnen met het simuleren van grassprietjes, en ook het gedrag van spelers of zelfs eenvoudige spelregels als buitenspel blijken toch lastig om precies vast te leggen. Om dit soort problemen uit de weg te gaan is gekozen voor een wat simpeler model waar alleen rekening wordt gehouden met het eindresultaat en niet zo zeer met het proces er aan vooraf.

Lezers die geïnteresseerd zijn in de wiskundige achtergrond kunnen ook  door gaan naar de technische versie inclusief python code.

sjaak_vs_bayes.png

De spelregels

Het model dat gebruikt zal worden in dit artikel gaat uit van 2 eenvoudige eigenschappen per team. Namelijk hoe goed ze zijn op aanvallend gebied, en hoe goed hun verdediging is. Kort gezegd gaat dit model er van uit dat de kans dat team A scoort tegen team B evenredig is aan het aanvallend vermogen van team A en het verdedigend vermogen van team B. Verder doet dit model geen aannames over wanneer dit goal dan zou moeten vallen, dus daar gaan het er van uit dat op elk moment in de wedstrijd een goal even waarschijnlijk is.

Meer over de spelregels in wiskundige notatie ....


Alle wedstijden (inclusief de niet gespeelde wedstrijden ?!#$@#)

uitslag-wedstijden-eredivisie-2019-2020.png


 De uitslag Voetbal Eredivisie seizoen 2019/2020

(Op basis van een MonteCarlo simulatie)

eredivisie-uitslage-seizoen-2019-2020-versie-3.png


Zo op het eerste gezicht lijken de maxima op dezelfde te plek liggen als de uitslag op basis van de gemiddelden, maar merk wel op dat bij veel teams het maximum onder de 50% ligt, wat aangeeft dat ze waarschijnlijker niet op die positie zullen eindigen dan wel. En nu is ook duidelijk dat de middenmoot met FC Groningen, Heracles en SC Heerenveen wel erg dicht tegen elkaar aan ligt, wat verklaart waarom de twee voorgaande methodes verschillende resultaten gaven voor die clubs.

Nadeel van deze methode is dat het moeilijk is om de teams te rangschikken, waardoor er nu dus aardig wat discussie mogelijk is over de uitslag, zo had Utrecht bijvoorbeeld best nog 5e kunnen worden, en de degradatie van ADO Den Haag staat ook nog niet volledig vast. Dit zou als argument gebruikt kunnen worden dat het terecht was om de competitie nietig te verklaren. Toch zal het voor fans van FC Utrecht wrang blijven dat hen een reële kans op de Europa League is ontzegt.

En dus resteert nu alsnog de vraag wat eerlijk is. Kijken we naar de meest waarschijnlijke uitslag per wedstrijd, of het verwachte aantal punten, of de kans die elk team maakte op een bepaalde positie te eindigen, of genereren we gewoon een willekeurige uitslag (als een soort loting) en baseren we alles daarop?

Wil je je eigen waarheid maken, ga dan aan de slag met de python code (opend langzaam)

Of bekijk de Github repo