Artificial Intelligence aanpak
Voor de geïnteresseerde lezer met verstand van statistiek is het goed om wat verschillen tussen de traditionele statische methodes en Artificial Intelligence-methodes te geven.Er is hier namelijk gekozen voor een aanpak die komt uit de Artificial Intelligence (AI), en die is voor sommige mensen met een ‘traditioneel’ statische achtergrond soms verwarrend. In de AI is het doel een algoritme te maken dat een zo goed mogelijke voorspelling doet, het verkrijgen van inzichten in oorzaak en gevolg wordt minder mee genomen.
Dit heeft ook gevolgen op hoe er gewerkt wordt met controle op generaliseerbaarheid. Een effect kan natuurlijk toevallig in de beschikbare dataset zitten, maar niet in de gehele data en dat soort effecten wil je eruit halen. In de statistiek wordt hiervoor gekeken met significantie, met meestal een eis van van een p van kleiner dan 0.05 voordat de nulhypothese wordt verworpen en er dus wordt uitgegaan van een correlatie. In de wereld van de Artificial Intelligence wordt de beschikbare dataset verdeeld in een train-set (meestal 80% tot 90% van de data) en een test-set (de resterende 10 tot 20%). Het model wordt getraind in de train-set en er wordt gekeken of deze ook goed presteert op de test-set. Als dit het geval is, en ook bijna even goed als in de train-set, dan kan je ervan uit gaan dat het ook in volledig nieuwe data goed voorspelt. Voor het model was de train-set immers ook nieuw. In dit geval gaf deze splitsing een interessante constatering.
Oorspronkelijk deed ik wat snelle analyses door de data willekeurig in trainings- en test-data op te delen. Daarbij gaven de ingewikkeldere modellen, met meer input-factoren en met mee nemen van niet-lineare factoren, heel erg goede prestaties. Dit is echter geen reële situatie: we weten altijd het resultaat van de afgelopen verkiezingen en voorspellen het resultaat van de komende verkiezing. Toen de realistische split werd gemaakt in één verkiezing als test-data en de andere twaalf verkiezingen als trainingsdata stortte de prestaties van de ingewikkelde modellen in en werd het model veel slechter dan de laatste peiling. Het was dus duidelijk een geval van ‘overfitting’: doordat resultaten van de verschillende partijen aan één verkiezing sterk samenhangen kon het model goede voorspellingen maken, maar dat was zinloos als er nieuwe verkiezingen voorspeld moesten worden. Dit laat ook nog eens zien dat je altijd moet blijven nadenken over de context van je data.
Verder doen we aan zogenaamde cross validatie: dit houdt in dat we eerst de verkiezing van 1977 als test set gebruiken en dus alle verkiezingen sindsdien als trainingsset gebruiken. Ditzelfde doen we voor de verkiezing van 1981 als test set en alle andere verkiezingen vanaf 1977 als train-set, en zo gaan we alle verkiezingen langs. We vergelijken dan de gemiddelde fout per verkiezing voor een set instellingen, maar dus eigenlijk voor 13 verschillende modellen. Cross validatie zorgt ervoor dat we onze beperkte dataset efficient inzetten.
Een tweede reden waarom we eigenlijk heel veel modellen maken is hoe ver voor de verkiezing je dit doet. Het model zal zaken anders wegen verder voor de verkiezingen dan vlak voor de verkiezingen, al hebben we er wel voor gekozen om een set instellingen te gebruiken: dus we nemen altijd dezelfde input-factoren.
In de uiteindelijke toepassing zullen met de gekozen set instellingen één set aan modellen gemaakt worden met daarbij alle verkiezingen van 1977 tot 2017 als train-set, maar dus wel een model voor de verschillende periodes tot de verkiezingen.
Soorten modellen
Er is gekeken met twee soorten modellen:* een linear model, wat lijkt op een multi-variate analyse uit de statistiek.
* een random forest model, het voordeel is dat deze ook interactie en niet-lineaire effecten kan mee nemen; deze is gekozen omdat een random forest vaak goed voorspelt op problemen met relatief weinig data-punten maar wel discreet gecodeerde data, waar dit een goed voorbeeld van is.
Uiteindelijk bleek overfitting een groot probleem: dit kwam dus eerst niet boven water toen de verdeling van train- en test-set random was, maar wel toen deze per verkiezing is. Dit betekent dat het model toevallige effecten in de dataset oppakt. Bijvoorbeeld als enkele keren de partij die uit het kabinet stapt bij een economische groei van meer dan 2% meer stemmen haalt dan verwacht, denkt het model dat dit de volgende keer ook zal gebeuren. De derde keer dat deze combinatie voorkomt, haalt de partij die het dan betreft wellicht veel minder stemmen. Daarmee wordt de voorspelling dus juist slechter in plaats van beter. Dat leidt tot de conclusie dat er dus van te weinig verkiezingen data om de computer er niet-lineare effecten uit te laten halen.
Ik heb dus gekozen voor het meest simpele model, dus een linear model. Daarmee zijn andere modellen die niet-lineaire en interactie effecten kunnen mee nemen zoals neurale netwerken, niet geprobeerd.
Onderzochte factoren
De volgende factoren zijn bekeken om te kijken of ze aan de voorspellingen bij kunnen dragen:* De laatste stand van de peilingen. Er is gekeken om deze op twee manieren mee te nemen: het gemiddelde van de laatste peiling van elk peilingbureau, of een gewogen gemiddelde van de laatste paar weken. Dit zou een deel van de variatie er uit kan halen. Er is gekozen om de peilingen van peil.nl niet mee te nemen aangezien deze niet transparant zijn over de gekozen methodes.
* De trend in de peilingen, dus of de partij de laatste twee weken gestegen of gedaald is.
* Of de partij in de race is om de grootste te worden, doordat ze binnen vijf procentpunt van de grootste partij in de peiling zit.
* Het resultaat in de laatst gehouden verkiezing(en). Ook hier is vergeleken tussen een variant waarbij het laatste resultaat mee genomen wordt met een waarbij een voortschrijdend gemiddelde van de laatste drie verkiezingen wordt genomen omdat het mogelijk iets meer zegt over het min of meer lange termijn niveau van een partij.
* Of de partij regeringsverantwoordelijk droeg in de periode voor de verkiezingen, en zo ja, of ze de premier leverde. Het is een bekend gegeven dat de laatste partij een premier-bonus krijgt, terwijl andere regereringspartijen gemiddeld lijken te verliezen. Deze twee parameters kunnen ook gecombineerd worden met de economische groei. Het idee is dat regeringspartijen populairder zijn als het met mensen goed gaat. In de Verenigde Staten is dit een duidelijk effect voor de populariteit van de partij van de president. Deze combinatie is dus eerst gedaan en daarna is de resterende factor in het lineare model gestopt. Dit betekent dat we dit interactie-effect dus wel testen, door het handmatig te berekenen voordat we het in het verder lineare model stoppen.
* Of de partij uit de regering is gestapt. Door kiezers worden brekende partijen vaak afgestraft. Het is nogal lastig om te bepalen welke partij door een groot deel van de kiezers als ‘breker’ wordt gezien, maar welke partij haar ministers heeft teruggetrokken uit het kabinet zou wel een maat kunnen zijn. Probleem bij deze variabele is meteen het lage aantal gevallen.
Uiteindelijk zijn van al deze factoren er maar een vijftal gebruikt:
- voortschrijdend gemiddelde van verkiezingsuitslagen, in beide modellen.
- voortschrijdend gemiddelde van peilingen en trend in de peilingen, beide alleen in het model met peilingen.
- een premier-bonus die afhankelijk is van de economische groei, en een daarvan onafhankelijke regerings-malus, beide alleen in het model zonder peilingen.
Na deze tekst wil je toch vooral de resulaten en historische voorspellingen zien.