Präsidentschaftswahlen

Patrick Geyer, Lennard Schaack, Marcel Klug, Rico Zieger & Michael Kurila

Präsidentschaftswahlen

Gibt es einen Zusammenhang zwischen den Zugriffszahlen auf Wikipedia-Seiten zur Wahl bzw. den Kandidaten und dem endgültigen Wahlergebnis?

In diesem Projekt wurden die Wahlen aus Südkorea, Österreich, Frankreich und den USA betrachtet. Dabei wurden die Aufrufe der Wikipediaseiten der einzelnen Kandidaten sowie der dazugehörigen Präsidentschaftswahl ausgewertet. Die Aufrufe wurden auch prozentual mit dem endgültigen Wahlergebnis verglichen, um festzustellen, ob sich dabei ein Zusammenhang erkennen lässt und die Analyse von Wikipediaseiten eine Alternative zu Wahlprognosen darstellen könnte.

Untersuchte Länder

Einführung / Konzept

Die Wahl Donald Trumps zum US-Präsidenten, der Ausstieg der Briten aus der EU, all das sind Beispiele dafür, dass trotz Big Data und immer mehr verfügbaren Daten, das Wahlverhalten der Menschen nach wie vor nicht verlässlich prognostiziert werden kann. Vielmehr zeigen Beispiele wie die Bundespräsidentenwahl in Österreich sogar einen gegenläufigen Trend. Hier wichen die Prognosen so stark vom tatsächlichen Ergebnis ab, dass mehrere Zeitungen noch während der Wahl das Veröffentlichen weiterer Vorhersagen unterließen. Es stellt sich daher die Frage, ob alternativ zu den herkömmlichen Methoden, nicht auch die Analyse bisher vernachlässigter Quellen wie Wikipedia, wichtige Erkenntnisse über den Verlauf und den möglichen Ausgang einer Wahl liefern kann.

Dazu wurden in dieser Arbeit folgende Fragestellungen überprüft:

  • Sind Zusammenhänge zwischen den Zugriffszahlen auf die Wikipedia-Seiten der Kandidaten und dem tatsächlichen Wahlergebnis zu erkennen?
  • Lassen sich die Auswirkungen von Ereignissen und Skandalen anhand der Zugriffszahlen auf die Wikipedia-Seiten der Kandidaten erkennen?

Die von uns entwickelte Webseite hat es zum Ziel, die Wikipedia-Daten so aufzubereiten, dass der Nutzer für sich selbst entscheiden kann, ob er darin die oben beschriebenen Zusammenhänge sieht, oder nicht. Dies liegt zum einen darin begründet, dass sich allein durch vier analysierte Wahlen keine tatsächlichen Zusammenhänge herleiten lassen, zum anderen darin, dass sich so sehr gut Informatives mit Explorativem verbinden lässt. Beispielsweise lassen sich zu jeder Wahl und jedem Kandidaten interessante Informationen anzeigen, andererseits kann der Nutzer selbst auswählen, welche Kandidaten er vergleichend betrachten möchte sowie wichtige Ereignisse der Wahl durch einfaches Hovern über den entsprechenden Zeitpunkt selbst erkunden. Ein weiteres wichtiges Augenmerk liegt darauf, den Nutzer zu motivieren, sich mit der Anwendung und dem Thema auseinanderzusetzen. Dazu werden beim Laden der Anwendung die Zugriffe auf die Wikipedia-Seiten im zeitlichen Verlauf animiert, wobei dem Nutzer die Möglichkeit gegeben wird, diese Animation auch nachträglich erneut abzuspielen.

Daten / Auswertung

Wie bereits eingangs beschrieben analysiert und visualisiert diese Anwendung Zugriffszahlen auf Wikipedia-Seiten zu verschiedenen Wahlen sowie den zugehörigen Kandidaten. Zusätzlich dazu fließen aber auch redaktionell erarbeitete Datensätze und Informationen zu den Kandidaten, Wahlen und Ereignissen während der Wahlen in die Seite mit ein. Nachfolgend werden daher die verwendeten Quellen aufgelistet sowie die Erhebung und das Parsen dieser Daten genauer erläutert.

Quellen

Da viele Informationen redaktionell aufbereitet wurden, ergeben sich erwartungsgemäß viele Quellen. Während sich angezeigte Infotexte stets auf die Wikipedia-Artikel der einzelnen Wahl- oder Kandidatenseiten beziehen, stammen viele der verwendeten Bilder von externen Quellen. Diese sind: - http://www.ourcampaigns.com - http://english.yonhapnews.co.kr - http://orf.at - http://www.eu-infothek.com - https://riippumatonmedia.com - http://n.diemacher.at - http://www.andreaskhol.at - https://in.pinterest.com - http://www.rfdtv.com - https://twitter.com - https://www.thestar.com - http://www.kremlin.ru

Sofern nicht explizit anders angegeben stehen alle auf dieser Webseite gezeigten Fremdinhalte unter der Lizenz “CC0 1.0 - Public Domain Dedication” oder sind Bestandteil der analysierten Wikipedia-Seite und unterliegen somit der Lizenz “CC BY-SA 3.0”. Die verwendeten Zugriffszahlen wurden direkt von der Wikimedia Rest-API bezogen und sind dementsprechend keinen Urheberrechtsbeschränkungen unterworfen.

Datenerhebung

Die im Rahmen dieses Projekts verwendeten Daten wurden von Wikipedia bzw. Wikimedia erhoben und von uns lediglich analysiert sowie visualisiert. Die Eingrenzung dieser Daten auf die zu den Wahlen passenden Zeiträume wurde ebenfalls von uns vorgenommen, die Original-Daten der Seiten sind tagesaktuell und selbstredend nicht auf die betrachteten Wahlzeiträume begrenzt. Aufgrund der Tatsache, dass alle redaktionell erhobenen Daten nicht über eine API bezogen werden können, sind diese auch nicht tagesaktuell, basieren aber auf dem zur Erhebung aktuellsten Stand der verwendeten Wikipedia-Artikel. Die Notwendigkeit tagesaktuelle Daten zu verwenden besteht ohnehin nicht, da sich die Zugriffszahlen der Wikipedia-Seiten im Nachhinein nicht ändern werden.

Parsing

Viele der Daten und Informationen in dieser Anwendung mussten manuell aufbereitet und angepasst werden. Explizit wurden:

  • die redaktionell erstellten Informationstexte zu den Ereignissen während der Wahl für jedes Land in eine JSON-Datei überführt. Die Struktur dieser JSON-Dateien ist nachfolgend exemplarisch dargestellt. ~~~json { “items”:[ { “date”: “20160530”, “text”: “Trump wettert in einem Tweet gegen einen amerikanischen Richter aufgrund dessen mexikanischer Wurzeln. Selbst aus eigenen Reihen werden Trumps Aussagen als “Lehrbuch-Definition von Rassismus” bezeichnet.” }, { “date”: “…”, “text”: “…” }
    ] } ~~~
  • die von der Rest-API erhaltenen JSON-Dateien zu den Zugriffzahlen nachträglich überarbeitet, sodass keine absoluten Werte, sondern relative Werte angezeigt werden können. So lassen sich die Graphen auf den Wahltag normalisieren. Aufgrund der enormen Menge der zu verarbeitenden Daten wurde für diese Aufgabe eigens ein Skript entwickelt, welches diese Aufgabe übernimmt. ~~~json { “items”: [ { “agent”: “all-agents”, “access”: “all-access”, “granularity”: “daily”, “project”: “en.wikipedia”, “article”: “Donald_Trump”, “views”: 6, “timestamp”: “2016030100” }, { “agent”: “all-agents”, “access”: “all-access”, “granularity”: “daily”, “project”: “en.wikipedia”, “article”: “Donald_Trump”, “views”: 9, “timestamp”: “2016030200” } ] } ~~~
  • für jeden Kandidaten zusätzlich eine JSON-Datei generiert, in der für jeden Tag der Wahl angegeben wird, welchen Anteil die Seitenaufrufe dieses Kandidaten bis dato an den Aufrufen aller Kandidatenseiten haben. Auch hier wurde aufgrund der enormen Datenmenge ein eigenes Skript speziell für diese Aufgabe entwickelt. ~~~json [ [ { “candidate”: “Donald_Trump”, “viewPercentage”: 63.7 }, { “candidate”: “Donald_Trump”, “viewPercentage”: 59.2 } ], [ { “candidate”: “Hillary_Clinton”, “viewPercentage”: 7.7 }, { “candidate”: “Hillary_Clinton”, “viewPercentage”: 10.1 } ] ] ~~~

Prozess

Am Anfang des Ideenfindungsprozesses stand zunächst gemeinsames Überlegen zu möglichen Themengebieten und Visualisierungen. Nachdem wir uns auf ein gemeinsames Ziel, nämlich der Analyse der Wahl- und Kandidatenseiten, verständigt hatten, begann die Erstellung verschiedenster Konzepte. Aus der breiten Fülle an möglichen Inhalten wurden jene ausgewählt, die in der gegebenen Zeit umsetzbar erschienen, aber zeitgleich dem Nutzer ausreichend Information und Mehrwert boten. Es kristallisierte sich relativ schnell heraus, dass eine eigene Seite zur Auswahl der Länder verwendet werden würde, in frühen Konzepten unterschied sich diese aber, beispielsweise als Weltkarte, noch recht stark von der finalen Version. Da Länder wie Österreich darauf sehr klein und schwer klickbar waren, entschieden wir uns für eine reduziertere Darstellung, auf der lediglich die Umrisse der vier Länder zu sehen sind, deren Wahlen auch analysiert wurden.

Frühes Konzept des Hauptmenüs

Vor allem aber bei der Visualisierung der Zugriffszahlen wurden viele verschiedene Darstellungsmöglichkeiten in Betracht gezogen, beispielsweise auch als Bubble chart. Es zeigte sich jedoch, dass sich ein Liniendiagramm am besten dazu eignete, sowohl einen zeitlichen Verlauf animiert anzuzeigen, als auch die einzelnen Werte gut lesbar und tagesgenau zu vergleichen.

Visualisierungsexperiment (Zugriffszahlen im zeitlichen Verlauf)

Abschließend wurden mit diesen Erkenntnissen verschiedene Konzepte für eine komplette Anwendung entworfen. Diese wurden nach und nach weiter überarbeitet, bis letztlich ein attraktives sowie umsetzbares, finales Konzept daraus hervorging. Dieses Konzept, sowie die dafür notwenige Implementierung, wird nachfolgend genauer beschrieben und erläutert.

Frühes Konzept der Detailseite

Visualisierung

Die finale Anwendung besteht aus einem Hauptmenü, in welchem die zu betrachtende Wahl ausgewählt werden kann, sowie einer Detailseite zu jeder Wahl. Im Hauptmenü werden dem Nutzer zunächst die Anwendung sowie die Besonderheiten der jeweiligen Wahlen genauer erläutert. Durch Hovern über die Länder wird der entsprechend zugehörige Infotext eingeblendet. Mit einem Klick auf ein Land gelangt der Nutzer dann direkt zu der Detailseite dieser Präsidentschaftswahl.

Hauptmenü

Die Detailseite selbst wird hauptsächlich von einem großen, zentral positionierten Liniengraphen sowie der dazu gehörigen Auswahlleiste dominiert. Der Graph visualisiert dabei die Zugriffszahlen der Wahlseite sowie aller Kandidatenseiten. Die Zugriffsverläufe der Kandidaten können in der Auswahlleiste rechts vom Diagramm über den rechteckigen Auswahlknopf einzeln ein- und ausgeblendet werden. Neben den Konterfeis der Kandidaten finden sich außerdem je zwei Balkendiagramme, welche zuoberst den Anteil der Seitenaufrufe dieses Kandidaten im Verhältnis zu den Aufrufen aller Kandidatenseiten und zuunterst die tatsächlichen Wahlergebnisse anzeigen. Beim initialen Laden der Detailseite werden der Graph in seinem zeitlichen Verlauf animiert sowie passend dazu die anteiligen Seitenaufrufe der Kandidaten tagesgenau angezeigt. Der Nutzer kann diese Animation selbst beliebig oft abspielen. Beim Klick auf einen der Kandidaten wird außerdem eine linksbündig eingelassene Leiste eingeblendet, auf der Wissenswertes über den ausgewählten Kandidaten angezeigt wird. Nicht zuletzt indizieren die grauen Punkte direkt unterhalb der Zeitleiste des Graphen ein relevantes Ereignis, welches beim Hovern über diesen Zeitpunkt als Text unterhalb der Auswahlleiste angezeigt wird.

Detailseite zur Präsidentschaftswahl in Südkorea. Bildquellen:
- "Ahn Cheol-Soo" von Jinho Jung / Wikipedia.org (CC BY-SA 2.0)
- "Moon Jae-in in 2017" von Jeon Han / Wikipedia.org (CC BY-SA 2.0)
- "Sim Sangjung in 2015" von NPAD / Wikipedia.org (CC BY 2.0 KR)
- "Hong Jun-pyo's presidential campaign" von Krcon / Wikipedia.org (CC BY-SA 4.0)
- "Yoo Seong-min at the his party's leadership meeting" / yonhapnews.co.kr (CC BY-NC 3.0)

Erkenntnisse

Durch die Visualisierung der Daten haben sich einige durchaus interessante Erkenntnisse ergeben. Zunächst einmal stellte sich heraus, dass, wie auch von uns zunächst vermutet, bei allen vier analysierten Wahlen der populärste Kandidat, also der Kandidat, dessen Wikipedia-Seite am häufigsten aufgerufen wurde, letztendlich auch die Wahl gewonnen hat. Im Gegensatz dazu verhielten sich die Veränderungen der Zugriffszahlen bei bestimmten Ereignissen wiederum nicht wie erwartet. Beispielsweise stiegen bei Bekanntwerden der E-Mail Affäre von Hillary Clinton fast ausschließlich die Zugriffszahlen der Seite von Donald Trump an und bei einer skandalösen Äußerung Trumps mehrere Monate später wiederum fast ausschließlich die Zugriffe auf Clintons Seite. Nicht zuletzt ist auch die analysierte Wahl in Österreich erwähnenswert, da hier die Zugriffzahlen auf die Seiten von Norbert Hofer und Alexander Van der Bellen fast exakt den tatsächlichen Wahlverlauf widerspiegeln. Es lässt sich sehr gut erkennen, wie Van der Bellen zunächst deutlich unterlegen war, aber von der Stichwahl profitierte und letztlich kurz vor dem finalen Wahltag Norbert Hofer überholte.

Implementierung

Die von uns entwickelten Visualisierungen wurden mit D3js und Typescript umgesetzt. Da das Zeichnen der Linien- und Balkendiagramme den Hauptteil der Implementierung ausmacht, wird in diesem Kapitel auf diesen Part genauer eingegangen.

Liniendiagramm

Das Kernstück des Liniendiagramms bildet die renderGraph() Funktion. In dieser werden die übergebenen Daten in das Diagramm eingefügt, die Skalierung angepasst, die X-Achse aktualisiert und eine Animation für das Erscheinen der Linien im Diagramm gestartet. Die Animation der Liniendiagramme wird über eine Maske gesteuert, die von links nach rechts über den Bildschirm geschoben wird.

renderGraph(data: any) {
    this.addData(data);
    this.updateScales(data);
    this.updateAxis();
    this.updatePageViews(d3.easeCircleOut, 10);
    let maximum = parseInt(d3.max<number>(this.groupedData, (datum: any) => datum.length));
    let stepsize = (this.size.width - this.margin.left - this.margin.right) / maximum;
    d3.interval((elapsed: number) => {
            this.currentWidth += stepsize;
            d3.select("clipPath > rect").transition().duration(3000/maximum).attr("width", this.currentWidth)
    }, 3000/maximum);
}

Für das letztendliche Darstellen der Daten ist die Funktion updatePageViews() zuständig. Diese Funktion nutzt D3js, um für jeden Kandidaten im Datensatz ein Liniendiagramm zu zeichnen.

updatePageViews(easingFn: (normalizedTime: number) => number, duration: number) {
  let g = d3.select(`#${this.svgId} > g.lineGraph`);
  let groupSelection = g.selectAll(".pageviews").data(this.groupedData);
  let pageviewsSelection = groupSelection.enter().append("g").attr("class", "pageviews");
  let transitionLine = d3.line()
      .x((d: any) => this.xScale(this.parseDate(d.timestamp)))
      .y((d: any) => this.yScale(0))
      .curve(d3.curveLinear);
  pageviewsSelection.append("path").attr("d", (d: any[]) => transitionLine(d))
      .merge(g.selectAll(".pageviews > path") as any)
      .transition().duration(duration).ease(easingFn)
      .attr("fill", "none")
      .attr("stroke-width", "4")
      .attr("class", (d: any[]) => d[0].article.replace(",", ""))
      .attr("d", (d: any[]) => this.line(d));
}

Balkendiagramme

Die Balkendiagramme sind Teil der Auswahlleiste und stellen den prozentualen Anteil an Zugriffen auf den jeweiligen Kandidaten, zu dem der Balken gehört, dar. Dazu wird zuerst für jeden Kandidaten das entsprechend zugehörige Bild geladen und eingeblendet. Danach wird ein Balken für den prozentualen Anteil an Zugriffen für den aktuellen Zeitpunkt erstellt und abschließend ein Balken, der das tatsächliche Wahlergebnis anzeigt. Im unteren Codeabschnitt wird gezeigt, wie die Balken aktualisiert werden. Hierbei wird der obere Balken animiert, sodass die Werte beim Durchlaufen des kompletten Zeitstrahls flüssig ineinander übergehen.

svg.select("image").attr("href", this.nameMap[this.data.items[0].candidate]);

let bar = svg.select("#bar").data(this.data.items);
let barEnter = bar
    .attr("transform", (d, i) => `translate(${this.margin.left}, 20)`);

barEnter.select("rect")
    .transition().duration(10)
    .attr("width", (d: any) => this.xScale(d.viewPercentage))
    .attr("height", 20)
    .attr("class", (d: any) => d.candidate);

svg.select("#bar text").data(this.data.items)
    .attr("transform", (datum: any) => `translate(${this.xScale(datum.viewPercentage) + 8}, 14)`)
    .text((datum: any) => datum.viewPercentage);

Sourcecode

Der Sourcecode zur Website kann auf Github gefunden werden.

Fazit

Anhand der entwickelten Anwendung lässt sich gut erkennen, welcher Kandidat bei welchen Ereignissen am stärksten im öffentlichen Interesse stand und den größten Anstieg an Zugriffszahlen verbuchen konnte. Es lässt sich auch sehr einfach erkennen, dass, zumindest in den vier analysierten Wahlen, schlussendlich immer der populärste Kandidat die Wahl gewonnen hat. Zwar kann die entwickelte Lösung aufgrund der geringen Anzahl an untersuchten Wahlen nicht wirklich Zusammenhänge zwischen den Aufrufen der Kandidatenseiten und dem letztlichen Wahlergebnis belegen, dennoch bietet die Webseite eine gute Möglichkeit die Wahlen im Nachhinein zu analysieren und durch die Visualisierung der Daten womöglich neue Ansätze und Aspekte zu finden, die künftig im Zusammenhang mit Wahlprognosen ebenfalls betrachtenswert sein könnten.

Alle geplanten Punkte/Funktionalitäten konnten in der Webseite umgesetzt werden. Das Hauptaugenmerk lag dabei auf der Visualisierung und dem Vergleich der Zugriffszahlen der Kandidatenseiten. Lediglich gegenüber den ersten Entwürfen und Konzepten mussten, der recht knappen Zeit geschuldet, einige Punkte gestrichen werden. Da wir uns aber rechtzeitig auf die in der gegebenen Zeit umsetzbaren Punkte beschränkten, konnte eine anregende Anwendung mit umfangreicher Funktionalität realisiert werden. Folgende Ideen und Überlegungen bieten darüber hinaus einen Ausblick, wie die Anwendung sinnvoll erweitert werden könnte:

  • Die bisher vier analysierten Wahlen um weitere Wahlen ergänzen.
  • Die Wahlen der verschiedenen Länder untereinander und somit indirekt die Besonderheiten der jeweiligen Wahlen/Wahlsysteme vergleichen.
  • Die Zugriffszahlen zu den jeweiligen Wahlen nicht ausschließlich auf die Seiten im landessprachlichen Wikipedia beschränken, sondern auch Daten aus anderen Sprachversionen auswählbar machen. In diesem Fall würde es sich dann auch anbieten, die Zugriffszahlen in diesen unterschiedlichen Sprachversionen direkt miteinander vergleichbar zu machen.