Kan Twitter voorspellen wie de lijsttrekker van het CDA wordt
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:
- Je zou tweets kunnen filteren op mensen die
CDA
in hun bio hebben. Nadeel is dat het volume aan tweets nog een stuk kleiner wordt. Bovendien zullen veel CDA-leden niet CDA in hun bio hebben staan. - Je zou het volume wat kunnen vergroten door niet alleen op de twitternamen te zoeken maar ook op de gewone naam. Dus niet alleen
PieterOmtzigt
, maar ookPieter Omtzigt
. Eventueel zou je ook op alleen voor- of achternaam kunnen zoeken, maar dan in combinatie metCDA
of#kiesdenummer1
. Je zou misschien ook hashtags als#teamHugo
kunnen meenemen. Hoe ruimer het net, hoe meer irrelevante tweets er tussendoor zullen glippen, maar toch vermoed ik dat de kwaliteit van de voorspellingen beter wordt als het volume aan tweets groter wordt. - Hierboven gaf ik al aan dat onderzoekers er nog niet helemaal uit zijn of de kwaliteit van voorspellingen beter wordt als je rekening houdt met het sentiment van tweets. Zelf had ik maar een klein aantal (vermoedelijk) positieve tweets, doordat ik alleen tweets gebruikte waarin een beperkt aantal emoji voorkomt. Maar misschien zou je met behulp van emoji een model kunnen trainen dat sentiment voorspelt op basis van woordgebruik en op die manier grotere aantallen positieve tweets kunnen selecteren.
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
.