Zurück zur Startseite
Netzwelt
Zurück zur Startseite
Netzwelt

So haben wir die Landtagswahl in Bayern auf Twitter analysiert | BR24

© Luca Hammer

Retweets der neun Beispielaccounts

Per Mail sharen
Teilen

    So haben wir die Landtagswahl in Bayern auf Twitter analysiert

    Unsere BR24 Twitter-Analyse zur Bayernwahl hat tagelang für Gesprächsstoff gesorgt. Die Reaktionen reichten von "spannend" bis "Lügen mit Statistik!". Wir zeigen deshalb gerne genauer, wie wir vorgegangen sind. Achtung - für Analyse-Fans.

    Per Mail sharen
    Teilen

    Wer es noch nicht gesehen und gelesen hat - so haben wir die Kommunikationsströme der Wahlnacht auf Twitter sichtbar gemacht. Die Struktur der Verbindungen der Parteien-, Medien und Privataccounts stieß auf großes Interesse. Viele User wünschten sich aber, dass wir noch genauer darlegen, wie die Grafiken entstanden sind.

    Wir werden im folgenden sehr ins Detail gehen. Warum ist das nötig? Weil viele unsere Analyse auch für konkrete Rückschlüsse genutzt haben über die Beziehungen der Akteure untereinander - einfach ist dies jedoch nicht, sieht man sich die Grundlagen unserer Visualisierung an.

    Damit wir alle über dasselbe reden und nachdenken - hier noch einmal die meistgeteilte Grafik:

    © Luca Hammer

    Der Ausgangspunkt: Accounts, welche am Wahltag besonders oft geretweetet wurden.

    Warum überhaupt eine Netzwerk-Visualisierung?

    In der Twitter-Analyse wollten wir herausfinden, was in der Wahlnacht auf Twitter passiert ist. Welche Accounts waren besonders aktiv und erfolgreich und wie haben sie untereinander agiert. Daher haben wir uns dazu entschieden, eine Netzwerk-Visualisierung zu erstellen.

    Während Säulen-, Balken-, Kreis-, und Liniendiagramme den meisten Menschen bekannt sind und entsprechend gut interpretiert werden können, sind Netzwerk-Visualisierungen weniger verbreitet. Sie bieten sich jedoch gerade an, wenn es darum geht, soziale Netzwerke zu analysieren - wenn also viele Akteure und ihre Interaktionen zugleich betrachtet werden. Im Gegensatz zu anderen Möglichkeiten der Datenvisualisierung werden bei einer Netzwerk-Visualisierung die einzelnen Akteure nicht zusammengefasst, sondern in ihrer Gesamtheit präsentiert. Während ein Balkendiagramm nur wenige der über 30-tausend aktiven Accounts realistisch sichtbar macht - etwa die Top 10 nach Tweets - , sind in der Netzwerk-Visualisierung fast alle zu sehen. Entsprechend können Strukturen in einem Netzwerk sichtbar gemacht werden, die man sonst nicht sehen würde, weil die Datenmengen zu groß sind.

    Grundlage einer Netzwerk-Visualisierung sind Knoten (Punkte) und Kanten (Linien).

    Was hat es mit den Knoten und Kanten auf sich?

    Damit aus der Liste an Tweets ein Netzwerk wird, mussten wir festlegen, was für uns ein Knoten und was eine Kante ist. Da wir das Retweet-Verhalten am Wahltag betrachtet haben, entschieden wir uns dazu, dass jeder Account, welcher einen Tweet zur Wahl abgesetzt hatte, ein Knoten und jeder Retweet eine Kante ist. Und zwar eine Kante des Accounts, der retweetet, zu demjenigen Account, der den originalen Tweet veröffentlicht hat.

    Es ist auf Twitter nicht möglich nachzuvollziehen, wie es tatsächlich zu einem Retweet kommt: ob der Tweet in der eigenen Timeline angezeigt wird, weil man dem Urheber folgt, oder weil eine andere Person, der man folgt, ihn geretweetet oder favorisiert hat. Genauso wenig ist feststellbar, ob der Tweet über die Twitter-Suche oder die Trends-Vorschläge der Plattform gefunden wurde. Die Verbindung wird jedoch immer vom Account, der retweetet, zum Ursprungsaccounts des Tweets gezählt.

    Unser in der Programmiersprache Python verfasstes Script hat jeden Tweet im Datensatz verarbeitet. Der Account wurde der Liste der Knoten hinzugefügt und falls es sich um einen Retweet handelte, wurde eine entsprechende Kante generiert. Als Format haben wir GEXF genutzt - das ist ein XML-Format für Graphen.

    Für die weiteren Berechnungen und Darstellung des Netzwerks haben wir das Programm Gephi eingesetzt.

    Wie kommt die Größe der Knoten zustande?

    Nachdem das Netzwerk in Gephi geladen wurde, ist jeder Knoten gleich groß. Man kann entsprechend wenig erkennen.

    © Luca Hammer

    Knoten in Gephi

    Uns interessierten Accounts mit hoher Sichtbarkeit. Daher haben wir die Größe der Knoten über die Anzahl der eingehenden Verbindungen berechnet. Je öfter Tweets zur Wahl eines Accounts am Wahltag geretweetet wurden, desto größer wird der Account dargestellt.

    © Luca Hammer

    Größe nach eingehenden Verbindungen

    Woher kommt die Farbe der Knoten?

    Wir wollten ebenfalls zeigen, woher die Accounts kommen, die sich auf Twitter zur Bayern-Wahl äußerten. Auf Twitter hat jeder Benutzer die Möglichkeit, bei dem eigenen Account einen Ort anzugeben. Da die Angabe eines Ortes freiwillig ist, machen es nicht alle. Es gibt auch keine inhaltliche Einschränkung bei dem Feld, sodass es oft auch kreativ genutzt wird ("Wohnzimmer", "Hogwarts").

    Immerhin bei 42% der Accounts im Datensatz konnte die Ortsangabe aber einer Region zugeordnet werden. Wir haben die Knoten mit korrespondierenden Ortsangaben eingefärbt. Blau stellt Accounts aus Bayern dar, Grün Berlin, Braun NRW, Orange Baden-Württemberg und Pink Hamburg. Alle anderen Knoten sind grau.

    © Luca Hammer

    Farbe nach Region

    Die genaue Position der Knoten? Achtung - jetzt gehts ans Eingemachte!

    Der wichtigste Teil einer Netzwerk-Visualisierung ist die Berechnung der Positionen der Knoten. Bei Gephi stehen dafür unterschiedliche Algorithmen zur Verfügung. Für Soziale Netzwerke haben sich force-basierte Algorithmen als zuverlässig erwiesen. Alle Knoten stoßen sich voneinander ab. Durch die Kanten ziehen sie einander an. Je mehr direkte und indirekte Verbindungen zwei Accounts haben, desto näher sind sie gruppiert. Es sei denn sie werden von anderen Accounts stärker weggezogen.

    Wir haben "ForceAtlas2" eingesetzt, der mehrere Methoden kombiniert und besonders effizient ist. Details können im Paper der Entwickler Jacomy, Venturini, Heymann und Bastian nachgelesen werden.

    Die verwendeten Parameter: "Scaling: 1", "Gravity: 1", "Edge Weight Influence: 1". Das bewirkt eine stärker gewertete Verbindung, je öfter ein Account einen anderen retweetet. Ausgeschaltete Parameter: "Stronger Gravity", "Dissuade Hubs", "LinLog mode". "Prevent Overlap" wurde am Ende zugeschaltet, damit die Knoten sich nicht überlagern, aber es zu Beginn nicht die Performance beeinträchtigt.

    © Luca Hammer

    Berechnung der Positionen mit "ForceAtlas2"

    Mit den von uns gesammelten Daten sind so die zwei entscheidenden großen Cluster sichtbar geworden. Die absoluten Positionen - horizontal und vertikal in der Darstellung - sind dabei unwichtig. Der Graph kann beliebig gedreht werden und es kann je nach der zufälligen Ausgangsposition passieren, dass ein Cluster einmal auf der einen Seite und das nächste Mal auf der anderen Seite eines anderen Daten-Ballung auftaucht. Vorausgesetzt, die Vernetzung zwischen den Clustern ist auf beiden Seiten ähnlich stark.

    Ein Cluster bedeutet, dass die Accounts darin sich gegenseitig stärker geretweetet haben, als Accounts aus dem anderen Cluster. Jeder einzelne Retweet hat einen geringen Einfluss auf das Endergebnis. Die Netzwerkstruktur entsteht aber erst durch die Summe aller Retweets.

    Wie funktioniert der Algorithmus "ForceAtlas2" genau?

    Dazu ein Beispiel: Wir beginnen mit neun Accounts (A-I).

    © Luca Hammer

    Neun Accounts

    Das ist - beispielhaft - auf Twitter passiert:

    A und B retweeten sich gegenseitig.

    B retweetet C.

    C retweetet A.

    D retweetet E.

    H und E retweeten sich zweimal gegenseitig.

    F wird von A, B, H und G geretweetet.

    G retweetet F und E.

    H retweetet G und F.

    I retweetet niemanden.

    © Luca Hammer

    Retweets der Beispielaccounts

    Nun werden die Positionen im Beispiel-Netzwerk mit "ForceAtlas2" berechnet. A, B und C ergeben aufgrund der direkten und indirekten Verbindungen einen Cluster, wobei sich A und B näher sind, weil sie quasi eine doppelt so starke Verbindung haben. F nimmt eine zentrale Position ein. F selbst hat keinen anderen Account geretweetet, wurde aber von je zwei Accounts aus beiden Clustern geretweetet. G, H, E und D ergeben einen zweiten Cluster. I ist nicht mehr sichtbar, weil der Knoten ohne Verbindung zum Rest sich so weit abgestoßen hat.

    © Luca Hammer

    Berechnung mit ForceAtlas2

    Die einzelnen Verbindungen können nicht direkt verglichen werden. Eine doppelt so lange Verbindung bedeutet nicht, dass es halb so viele Retweets zwischen den Accounts gab. Je mehr Accounts in einem Cluster sind, desto stärker ist ihre gemeinsame Abstoßung. Auch die Größe eines Clusters sagt noch nichts über die Anzahl der Knoten im Cluster aus. Je mehr Verbindungen innerhalb des Clusters, desto näher rücken die Knoten aneinander.

    "ForceAtlas2" ist ein kontinuierlicher Algorithmus. Er läuft endlos, bis man ihn unterbricht. Mit jedem Durchgang werden die Kräfte neu berechnet. Nach einer gewissen Zeit gibt es weniger Bewegung und nur noch minimale Verschiebungen. Dann kann der Algorithmus gestoppt werden. Bei kleinen Netzwerken passiert dies sehr schnell, bei großen Netzwerken kann es mehrere Minuten bis Stunden dauern.

    Gibt es die Darstellung auch interaktiv?

    Ja - aber: Um die Privatsphäre von Accounts mit geringer Sichtbarkeit zu schützen, zeigen wir nur Labels von Accounts, deren Tweets mehr als 100 Mal geretweetet wurden. Damit man möglichst viele Labels lesen kann, haben wir die Größe der Accounts gesplined. Dies bedeutet, dass die Größe nicht linear entsprechend der Retweets ist. Wir haben den mittleren Bereich hervorgehoben und den oberen Bereich reduziert.

    Damit sich Labels nicht überlappen, haben wir zusätzlich den "Label Adjust Algorithmus" genutzt, der überlappende Knoten minimal verschiebt, sodass alle Labels sichtbar sind. Accounts, die nicht über Retweets mit dem Hauptnetzwerk verbunden sind, wurden mithilfe einer "Giant Component" Berechnung entfernt. Manuell aus der Darstellung entfernt wurden auch kleine Gruppen, die über nur eine Verbindung zum Hauptnetzwerk verbunden und sehr weit davon entfernt waren.

    Hier die interaktive Darstellung:

    Zum Zoomen scrollen/vergrößern. Bewegen des Ausschnitts durch linke Maustaste halten. Knoten können angeklickt werden, um dessen Kanten anzuzeigen.

    Woher kommen überhaupt die Daten?

    Die Daten wurden über eine Programmierschnittstelle (API) direkt von Twitter bezogen.

    Twitter bietet unterschiedliche APIs an, über die Tweets abgerufen werden können. Für unsere Analyse waren die Schnittstellen relevant, mit denen Tweets zu bestimmten Begriffen abgerufen werden können. Wir haben uns für den 30-Tage-Endpoint der Premium-API entschieden, weil dieser im Gegensatz zur Standard-API die Vollständigkeit der abgefragten Tweets gewährleistet. Darüber hinaus enthält die Premium-API abgeleitete Ortsdaten zu der Twitteraccounts. Enthält ein Account ‚München‘ als Ortsinformation, wird es in den Daten als ‚Land: Deutschland, Region: Bayern‘ ausgegeben. Dies vereinfachte die weitere Verarbeitung der Daten.

    Die Tweets wurden am Montag, den 15.10.2018 um 10:00 Uhr mit einem eigenen Python-Skript abgefragt, das den von Twitter entwickelten Python Wrapper für die Premium-Search-API nutzt.

    Welche Tweets wurden beachtet?

    Um möglichst nur Tweets zur Landtagswahl in Bayern zu analysieren, durften von allen Tweets am Tag der Wahl nur die Relevanten betrachtet werden. Diese Auswahl funktioniert über Regeln die beschreiben, welche Begriffe in den jeweiligen Tweets vorkommen müssen. Wir haben die Begriffe nach der Devise gewählt: so breit wie möglich und dabei so eng wie nötig. Es sollten so viele Tweets wie möglich erfasst werden, die von der Wahl handeln. Zugleich sollten möglichst wenig Tweets im Datensatz sein, die nichts mit der Wahl in Bayern zu tun haben.

    Zur Vorbereitung haben wir zunächst per Hand diverse Begriffe gesammelt: Aus den Twitter-Trends, von Accounts von Politikern, Journalisten und Medien. Aus diesen Tweets wiederum haben wir weitere typische und relevante Begriffe gezogen. Über eine Suche mit all diesen Begriffen sind letztlich in einem Zeitraum von drei Tagen vor der Wahl insgesamt 76-tausend Tweets zusammen gekommen. Diese Masse war nötig, um zu sehen, welche Hashtags wie häufig genutzt werden und mit welchen Begriffen wir sogenannte "false positives" erfassen könnten: Tweets, die nicht von der Wahl in Bayern handeln. Die nahe Landtagswahl in Hessen beispielsweise hat dazu geführt, dass parteispezifische Hashtags nicht nur für Bayern genutzt wurden und somit für unsere Analyse nicht brauchbar waren.

    Am Ende haben wir uns für folgende Abfrage entschieden, bei der alle Begriffe einen klaren Bezug zur Wahl in Bayern haben:

    (bayern wahl) OR (ltwby18 OR ltwbayern OR bayernwahl OR brwahlarena OR br24wahl OR ltwby2018 OR LTWBayern2018 OR ltwby OR LtwBayern18 OR ltw18by)

    Bei Twitter werden Suchabfragen standardmäßig mit einem "AND" verbunden. "ltwby18 ltwbayern" würde daher nur Tweets finden, bei denen beide Begriffe enthalten waren. Diese Verknüpfung wollten wir jedoch nur bei der Kombination "bayern" und "wahl". Bei allen anderen Begriffen war es ausreichend, dass einer der Begriffe vorkam.

    Die Klammern um "bayern" und "wahl" stellen sicher, dass nur diese beiden Begriffe als Kombination vorkommen müssen und nicht in jedem Tweet. Die zweite Klammerung hat keine Auswirkung auf das Ergebnis, sondern dient der Lesbarkeit. Die Raute wurde weggelassen, damit "bayernwahl" sowohl als Hashtag (#bayernwahl) als auch als Begriff ("bayernwahl") zu einem Treffer führte.

    Kann ich mir alle Tweets, die benutzt wurden, selbst anschauen?

    Ohne Zugang zum 30-Tage-Endpoint der Premium-API leider nicht vollständig. Über die Suche bei Twitter kommt man aber annähernd ran: die folgende Suchabfrage gibt einen guten Eindruck, welche Tweets in unserem Datensatz enthalten sind: "(bayern wahl) OR (ltwby18 OR ltwbayern OR bayernwahl OR brwahlarena OR br24wahl OR ltwby2018 OR LTWBayern2018 OR ltwby OR LtwBayern18 OR ltw18by) since:2018-10-14 until:2018-10-15".

    Aber Achtung: Mit der Angabe‚ "since:2018-10-14 until:2018-10-15" in der Suche fehlen die ersten zwei Stunden des Wahltages und die ersten zwei vom 15.10.2018 sind dabei. Twitter nutzt für Zeitangaben intern die sogenannte koordinierte Weltzeit (UTC). Das bedeutet, dass es am Wahltag zwei Stunden Unterschied zur deutschen Zeit gab. Bei der Premium-API ist die Zeitangabe stundengenau möglich. So lässt sich der kompletten Tag deutscher Zeit abfragen.

    Ein weiterer Unterschied sind Retweets. Das Webinterface gibt diese nur implizit als Zahl bei den jeweiligen Tweets aus. Auch unterscheidet es nicht, ob ein Retweet innerhalb des abgefragten Zeitraums entstanden ist oder nicht. Die API gibt jeden Retweet, der den Suchkriterien entspricht, als eigenen Tweet aus. Mit einem Zeitstempel, wann der Account geretweetet hat.