Kan Twitter voorspellen wie de lijsttrekker van het CDA wordt

5 juli 2020

Het CDA kiest een nieuwe lijsttrekker. De stemming begint op 6 juli en sluit op 9 juli om 12 uur (update: 11 juli om 12 uur). De grafiek hieronder laat zien hoe vaak de kandidaten genoemd worden op Twitter (de gegevens worden elk uur bijgewerkt). Maar zegt dat ook iets over wie er gaat winnen?

Er wordt al zeker tien jaar onderzoek gedaan naar de vraag of je met Twitter verkiezingsuitslagen kan voorspellen. De voorlopige conclusie lijkt dat dit inderdaad kan, maar er is nog geen duidelijk beeld hoe accuraat die voorspellingen zijn (en waar dat van afhangt). Uit Nederlands onderzoek kwam naar voren dat verkiezingsuitslagen gemiddeld 2 tot 3 procentpunt afwijken van voorspellingen op basis van Twitter.

Er is ook nog geen consensus of je bijvoorbeeld de kwaliteit van voorspellingen kan verbeteren door alleen positieve tweets mee te tellen. De grafiek hierboven laat tweets zien die (vermoedelijk) een positieve lading hebben, maar de aantallen zijn beperkt, dus daar moet je niet teveel betekenis aan hechten.

Een voor de hand liggend probleem bij voorspellingen op basis van Twitter is dat twitteraars niet representatief zijn voor de kiezers. Maar er zijn ook onderzoekers die zeggen dat twitteraars juist een interessante basis vormen voor voorspellingen omdat ze de publieke opinie kunnen beïnvloeden, ook al zijn ze misschien niet representatief.

Bij de CDA-kandidaten speelt nog iets anders. Hugo de Jonge krijgt als minister van Volksgezondheid veel aandacht op Twitter, en in mindere mate geldt dat voor staatssecretaris Mona Keijzer. Moet je daarvoor corrigeren in je analyse, of moet je dit juist niet doen omdat hun positie als incumbents juist relevant is voor hun kansen op het lijsttrekkerschap?

Tussenstand

Vandaag (11 juli) is de uitslag van de eerste stemming bekendgemaakt. Aangezien geen van de kandidaten meer dan de helft van de stemmen heeft gehaald, komt er een tweede stemronde tot en met dinsdag 12 uur.

De tabel hieronder vergelijkt de tweetverhoudingen over de afgelopen 5 dagen (van 6 juli 12 uur tot 11 juli 12 uur) met de uitslag die vandaag bekendgemaakt is.

kandidaat tweets positieve tweets stemmen
hugodejonge 50.1 45.8 48.7
PieterOmtzigt 45.6 50.7 39.7
MonaKeijzer 4.3 3.5 11.6

De twittervoorspelling zat wel enigszins in de buurt van de uitslag, maar was te hoog voor Pieter Omtzigt en te laag voor Mona Keijzer. De gemiddelde afwijking (mean absolute error) was 4.9 procentpunt voor de voorspelling op basis van alle tweets, en 7.3 voor de positieve tweets. Minder nauwkeurig dus dan de hierboven geciteerde twittervoorspellingen voor Tweede Kamerverkiezingen. Dat hoeft op zich niet te verbazen: de aantallen tweets zijn kleiner, en waarschijnlijk is het lastiger om voorspellingen te doen voor CDA-kiezers dan voor het hele electoraat.

Eindstand

Vandaag (15 juli) is de einduitslag bekendgemaakt. De tabel hieronder vergelijkt de tweetverhoudingen over de laatste 3 stemdagen (van 11 juli 12 uur tot 14 juli 12 uur) met de uitslag die vandaag bekendgemaakt is.

kandidaat tweets positieve tweets stemmen
hugodejonge 58.8 47.8 50.7
PieterOmtzigt 41.2 52.2 49.7

Zou het beter kunnen?

Een verkiezing onder een specifieke groep zoals CDA-leden is waarschijnlijk sowieso lastig te voorspellen. Hier een aantal ideeën hoe de voorspelling misschien te verbeteren valt:

Methode

Met de Twitter API zoek ik op de twitternamen van de kandidaten (plus de inmiddels afgehaakte kandidaat Martijn van Helvert). Ik tel alleen tweets mee waarin maximaal één kandidaat wordt genoemd. Als een bepaalde twitteraar dezelfde kandidaat meerdere keren op een dag noemt, tel ik die maar één keer mee.

Vaststellen of tweets een positieve of negatieve lading hebben gebeurt vaak door te tellen hoe vaak bepaalde woorden voorkomen, maar hier zitten haken en ogen aan en als je het goed wil doen is het erg arbeidsintensief. Als pragmatisch alternatief heb ik gekeken of bepaalde emoji in tweets voorkomen. Uit een eerste test bleek dat 😂, 👍, 🙏, 😉 en 💪 relatief veel worden gebruikt. Op basis van een grootschalig onderzoek zouden deze allemaal een overwegend positieve lading moeten hebben. Uit een handmatige steekproef bleek echter dat vooral tweets met 😂 maar ook tweets met 😉 vaak sarcastisch lijken te zijn. Ik heb mijn analyse daarom beperkt tot 👍, 🙏 en 💪.

Bij het opslaan van de tweets stuitte ik op het probleem dat je teksten met emoji niet zomaar op kan slaan in een database: je moet de tekenset van de kolom en de verbinding met de database instellen op utf8mb4.

5 juli 2020 | Categoriën: data