Social Network Analysis in R und Gephi: Graben in Twitter

Veröffentlicht: 2022-03-11

Die Analyse sozialer Netzwerke wurde 1934 geboren, als Jacob Levy Moreno Soziogramme schuf, Abstraktionen sozialer Interaktionen. Insbesondere ist ein Soziogramm ein Diagramm, in dem jeder Knoten eine Person darstellt und Kanten Interaktionen zwischen ihnen darstellen. Moreno verwendete Soziogramme, um das Verhalten kleiner Gruppen von Menschen zu untersuchen.

Warum klein? Denn in der Zeit, in der er arbeitete, war es schwierig, granulare Informationen über eine große Anzahl persönlicher Interaktionen zu erhalten. Dies änderte sich mit dem Aufkommen sozialer Online-Netzwerke wie Twitter. Heutzutage kann jeder kostenlos umfangreiche Twitter-Daten herunterladen, was die Tür zu interessanten Analysen öffnet, die uns zu einem neuen Verständnis unseres Verhaltens und der Auswirkungen verschiedener Verhaltensweisen auf die Gesellschaft führen.

In diesem ersten Teil unserer Serie zur Analyse sozialer Netzwerke zeigen wir, wie einige dieser Analysen mit der R-Sprache durchgeführt werden, um die Daten zu erhalten und vorzuverarbeiten, und mit Gephi, um erstaunliche Visualisierungen zu erstellen. Gephi ist eine Open-Source-Anwendung, die speziell entwickelt wurde, um jede Art von Netzwerk zu visualisieren. Es ermöglicht Benutzern, Visualisierungen anhand mehrerer Kriterien und Eigenschaften einfach zu konfigurieren.

Herunterladen von Twitter-Daten für die Analyse sozialer Netzwerke in R

Wenn Sie kein Twitter- Entwicklerkonto haben, erstellen Sie eines und beantragen Sie den Essential-Zugriff. Um dann Twitter-Daten herunterzuladen, erstellen Sie eine App im Twitter Developer Portal. Wählen Sie als Nächstes Ihre App im Abschnitt „Projekte & Apps“ aus und wechseln Sie zur Registerkarte „Schlüssel & Token“. Dort müssen Sie Ihre Anmeldeinformationen generieren. Diese werden verwendet, um auf die Twitter-API zuzugreifen und die Daten herunterzuladen.

Sobald Sie Ihre Zugangsdaten generiert haben, können Sie mit der Analyse beginnen. Wir werden drei R-Bibliotheken verwenden:

  1. igraph , um das Interaktionsdiagramm zu erstellen.
  2. tidyverse , um die Daten vorzubereiten.
  3. rtweet , um mit der Twitter Dev API zu kommunizieren.

Sie können diese Bibliotheken mit der Funktion install.packages() installieren. Für unsere Zwecke gehen wir davon aus, dass Sie R und RStudio installiert haben und ein grundlegendes Verständnis davon haben.

In unserer Demonstration werden wir die hitzige Online-Diskussion über den berühmten argentinischen Fußballer Lionel Messi während seiner ersten Woche beim Fußballverein Paris Saint-Germain (PSG) analysieren. Es ist wichtig zu beachten, dass Sie mit der kostenlosen Twitter-API Tweets nur sieben Tage vor dem aktuellen Datum herunterladen können. Sie können nicht dieselben Daten herunterladen, die wir zitieren, aber Sie können aktuelle Diskussionen herunterladen.

Beginnen wir mit dem Herunterladen. Zuerst laden wir die Bibliotheken, erstellen dann ein Autorisierungs-Token mit den Anmeldeinformationen und legen schließlich die Download-Kriterien fest.

Dieser Codeblock beschreibt, wie alle drei Schritte implementiert werden:

 ## Load libraries library(rtweet) library(igraph) library(tidyverse) ## Create Twitter token token <- create_token( app = <YOUR_APP_NAME>, consumer_key = <YOUR_CONSUMER_KEY>, consumer_secret = <YOUR_CONSUMER_SECRET>, access_token =<YOUR_ACCESS_TOKEN>, access_secret = <YOUR_ACCESS_SECRET>) ## Download Tweets tweets.df <- search_tweets("messi", n=250000,token=token,retryonratelimit = TRUE,until="2021-08-13") ## Save R context image save.image("filename.RData")

Hinweis: Ersetzen Sie alle Tags zwischen <> durch die Informationen, die Sie im vorherigen Anmeldeinformationsschritt erstellt haben.

Mit diesem Code haben wir die Twitter-API nach allen Tweets (bis zu 250.000) abgefragt, die das Wort „Messi“ enthielten und zwischen dem 8. August 2021 und dem 13. August 2021 gepostet wurden. Wir haben ein Limit von 250.000 Tweets festgelegt, da Twitter a Mengenwert und weil die Zahl groß genug ist, um eine interessante Analyse zu ermöglichen.

Die Downloadrate von Twitter beträgt 45.000 Tweets pro 15 Minuten, das Herunterladen von 250.000 Tweets dauerte also mehr als eine Stunde.

Schließlich haben wir alle Kontextvariablen in einer RData-Datei gespeichert, um sie wiederherstellen zu können, wenn wir RStudio schließen oder den Computer herunterfahren.

Erstellen des Interaktionsdiagramms

Sobald der Download abgeschlossen ist, haben wir die Tweets im tweets.df tweets.df. Diese Dataframe-Matrix enthält eine Zeile pro Tweet und eine Spalte pro Tweet-Feld. Zuerst werden wir es verwenden, um das Interaktionsdiagramm zu erstellen, in dem jeder Knoten einen Benutzer darstellt und Kanten Interaktionen (Retweets oder Erwähnungen) zwischen ihnen darstellen. Mit Tidyverse und igraph können wir dieses Diagramm schnell und in nur einer Anweisung erstellen:

 ## Create graph filter(tweets.df, retweet_count > 0) %>% select(screen_name, mentions_screen_name) %>% unnest(mentions_screen_name) %>% filter(!is.na(mentions_screen_name)) %>% graph_from_data_frame() -> net

Nach dem Ausführen dieser Zeile haben wir einen Graphen in der net , der zur Analyse bereit ist. Um beispielsweise zu sehen, wie viele Knoten und Kanten vorhanden sind:

 summary(net) # IGRAPH fd955b4 DN-- 138963 217362 --

Unsere Beispieldaten ergeben 138.000 Knoten und 217.000 Kanten. Das ist eine große Grafik. Wir könnten Visualisierungen über R generieren, wenn wir wollten, aber meiner Erfahrung nach dauert die Berechnung zu lange und sie sind visuell nicht so ansprechend wie Gephi-Visualisierungen. Fahren wir also mit Gephi fort.

Visualisierung des Diagramms mit Gephi

Zuerst müssen wir eine Datei erstellen, die Gephi lesen kann. Dies ist einfach, da wir mit der Funktion write_graph eine .gml -Datei generieren können:

 write_graph(simplify(net), "messi_network.gml", format = "gml")

Öffnen Sie nun Gephi, gehen Sie zu „Grafikdatei öffnen“, suchen Sie nach der Datei messi_network.gml und öffnen Sie sie. Es wird ein Fenster öffnen, das die Diagramminformationen zusammenfasst. Wählen Sie Akzeptieren. Dies wird erscheinen:

Ein Screenshot, der die Benutzeroberfläche von Gephi zeigt, über die Benutzer eine neue Diagrammdatei öffnen können.
Öffnen einer neuen Grafikdatei in Gephi

Unnötig zu sagen, dass dies nicht sehr informativ ist. Das liegt daran, dass wir noch kein Layout angewendet haben.

Netzwerklayout

In einem Diagramm mit Tausenden von Knoten und Kanten ist die Positionierung der Knoten in der Grafik von entscheidender Bedeutung. Dies ist der Zweck von Layouts. Sie platzieren Knoten an Positionen, die durch definierte Kriterien festgelegt werden.

Für unser Tutorial zur Analyse sozialer Netzwerke verwenden wir das ForceAtlas2-Layout, das eine Standardoption für diese Art von Analyse ist. Es positioniert die Knoten, indem es physikalische Anziehungs- und Abstoßungskräfte zwischen ihnen simuliert. Wenn zwei Knoten verbunden sind, befinden sie sich näher beieinander; Wenn sie nicht verbunden sind, sind sie weiter voneinander entfernt. Dieses Layout ergibt ein informatives Diagramm in Bezug auf Communities, da Benutzer, die derselben Community angehören, zusammen gruppiert werden, während sich Benutzer aus verschiedenen Communities in verschiedenen Regionen befinden.

Um dieses Layout auf unseren Fall anzuwenden, navigieren wir zum Layoutfenster (in der unteren linken Ecke), wählen ForceAltas 2 aus und klicken auf Ausführen. Wenn Sie dies tun, werden Sie sehen, wie sich die Knoten zu bewegen beginnen und viele „Wolken“ bilden. Nach ein paar Sekunden haben Sie ein sehr stabiles Muster und können auf Stop klicken. Bitte beachten Sie, dass das automatische Stoppen viel Zeit in Anspruch nehmen kann.

Da dies ein stochastischer Algorithmus ist, werden Sie bei jedem Durchlauf leicht unterschiedliche Ausgaben haben. Ihre Ausgabe sollte ungefähr so ​​​​aussehen:

Ein Bild, das die Ausgabe des ForceAtlas2-Layouts in Schwarzweiß zeigt, was zu einem Diagramm ohne Farben oder Grauschattierungen führt.
Monochrome Gephi-Ausgabe mit dem ForceAtlas2-Layout

Die Grafik beginnt, ansprechend auszusehen. Lassen Sie uns jetzt etwas Farbe hinzufügen.

Community-Erkennung

Wir können Knoten nach mehreren Kriterien einfärben; Der üblichste Ansatz ist der von der Community. Wenn wir vier Gemeinschaften in unserem Diagramm haben, haben wir vier Farben. Durch die Farbe ist es anhand Ihrer Daten einfacher zu verstehen, wie die Gruppen interagieren.

Um die Knoten einzufärben, müssen wir zuerst die Gemeinschaften identifizieren. Klicken Sie in Gephi auf die Schaltfläche „Modularität“ im Fenster unter der Registerkarte „Statistiken“ – diese Schaltfläche wendet den beliebten Louvain-Graph-Cluster-Algorithmus an, einen der schnellsten verfügbaren Algorithmen, der aufgrund seiner hohen Leistung als hochmodern gilt. Klicken Sie im angezeigten Fenster auf Akzeptieren. Ein weiteres Fenster wird angezeigt, das ein Streudiagramm der nach Größe verteilten Gemeinden enthält. Jetzt haben wir in jedem Knoten ein neues Attribut namens Modularity Class, das die Community enthält, die dem Benutzer gehört.

Nachdem wir die vorherigen Schritte abgeschlossen haben, können wir das Diagramm jetzt nach Clustern einfärben. Klicken Sie dazu auf der Registerkarte Darstellung auf Anwenden.

Ein Screenshot, der die Registerkarte „Aussehen“ in einem Gephi-Arbeitsbereich zeigt. Das Bild zeigt eine Reihe von Farben, die in der Grafik verwendet werden.
Verwenden von Gephis Aussehen, um Farbe hinzuzufügen

Hier können wir die Größe (in Bezug auf den Benutzerprozentsatz) jeder Community sehen. In unserem Fall machen die Hauptgemeinden (violett und grün) 11,34 % bzw. 9,29 % der Gesamtbevölkerung aus.

Unter Verwendung des aktuellen Layouts und der aktuellen Palette sieht das Diagramm wie folgt aus:

Ein Bild eines farbigen Diagramms. Die Form ist identisch mit dem vorherigen monochromen Diagramm, aber Farben helfen, bestimmte Gemeinschaften zu identifizieren, wobei die größte Gemeinschaft (violett) in der unteren linken Ecke und die zweitgrößte Gemeinschaft (grün) in der oberen rechten Ecke ist. Dazwischen werden kleinere Gemeinschaften durch andere Farben dargestellt, darunter Cyan, Orange, Rot und Schwarz.
Ein farbiges Diagramm ermöglicht es uns, verschiedene Gemeinschaften leicht zu identifizieren.

Twitter-Influencer-Erkennung

Abschließend möchten wir die wichtigsten Diskussionsteilnehmer identifizieren, um beispielsweise zu verstehen, wer zu welcher Gemeinschaft gehört. Wir können den Einfluss jedes Benutzers anhand verschiedener Eigenschaften messen; einer von ihnen ist durch ihren Grad . Dies zeigt an, wie viele Benutzer sie retweetet oder erwähnt haben.

Um Benutzer mit vielen Interaktionen hervorzuheben, ändern wir die Größe der Knoten mithilfe der Degree-Eigenschaft:

Ein Screenshot, der zeigt, wie die Degree-Eigenschaft in Gephi geändert wird, unter der gleichen Registerkarte „Darstellung“, die in den vorherigen Abbildungen erwähnt wurde. Die minimale Größe wird auf 0,1 und die maximale Größe auf 10 festgelegt.
Ändern der Degree-Eigenschaft in Gephi

Das Diagramm zeigt jetzt Influencer als Knoten an, die durch größere Kreise dargestellt werden:

Ein Bild eines farbigen Diagramms ähnlich dem vorherigen, jedoch mit zusätzlichen Kreisen, die Influencer-Knoten darstellen. Jede Farbgruppe verfügt über eine Handvoll solcher Knoten.
Farbige Ausgabe, die Influencer als größere Knoten zeigt

Nachdem wir nun die Benutzer mit einer hohen Anzahl von Interaktionen identifiziert haben, können wir ihre Namen preisgeben. Klicken Sie dazu auf den schwarzen Pfeil in der Leiste am unteren Bildschirmrand:

Ein Screenshot des Gephi-Arbeitsbereichs, der den schwarzen Pfeil in der unteren rechten Ecke der Benutzeroberfläche zeigt.
Zugriff auf die Etikettenkonfiguration in Gephi

Klicken Sie dann auf Etiketten und Konfiguration. Aktivieren Sie im angezeigten Fenster das Kontrollkästchen Name und klicken Sie auf Akzeptieren. Klicken Sie als Nächstes auf das Kontrollkästchen Knoten. Im Diagramm erscheinen kleine schwarze Linien. Dies sind die Namen aller Benutzer. Aber wir wollen nicht alle sehen, sondern nur die wichtigsten.

Um sie zu definieren, ändern Sie ihre Größe nach Knotengrad, indem Sie dasselbe Fenster verwenden, das wir für die Knotengröße verwendet haben. Wir haben die Mindestgröße von 0,1 auf 10 und die Maximalgröße von 10 auf 300 erhöht.

Durch das Hinzufügen von Namen wird die Grafik deutlich informativer, da sie zeigt, wie verschiedene Communities mit Influencern interagieren:

Ein Bild eines farbigen Diagramms mit Kreisen, die wichtige Benutzer darstellen, wobei die Namen der wichtigsten Benutzer darüber gelegt sind. Die Größe des Textes entspricht der Größe (Einfluss) jedes Benutzers, wobei einige der größten ESPNFC in Lila, TrollFootball in Grau und PSG_inside in Pink sind.
Durch das Hinzufügen von Namen können wir sehen, wie verschiedene Communities mit Influencern interagieren.

Wir verstehen jetzt viel mehr über diese spezielle Twitter-Diskussion. Zum Beispiel offenbart die Aufnahme von Konten wie mundodabola und neymarjrdepre durch die grüne Community ihren brasilianischen Ort. Die orangefarbenen und grauen Communities enthalten spanischsprachige Benutzer wie sc_espn und InvictosSomos. Insbesondere die grauen und schwarzen Communities scheinen spanischsprachig zu sein, da sie Benutzer wie IbaiOut, LaScaloneta und den beliebten Streamer IbaiLlanos haben. Schließlich scheinen die violetten und roten Communities englischsprachig zu sein, da sie Konten wie ESPNFC und brfootball enthalten.

Jetzt können wir besser verstehen, warum diese Benutzer unterschiedliche Gemeinschaften in Bezug auf Soziologie und nicht nur Graphenberechnung umfassen: Sie sprechen unterschiedliche Sprachen! Sie alle twittern über Messi und sein neues Team, aber es macht Sinn, dass Spanischsprecher mehr mit anderen Spanischsprechern interagieren als mit Portugiesisch- oder Englischsprechern. Darüber hinaus können wir auch verstehen, dass die grauen und orangen Gemeinden zwar Spanisch sprechen, dies jedoch aus unterschiedlichen Perspektiven. Die graue Community verwendet einen humorvolleren Ansatz, der erklärt, warum sie mehr miteinander interagieren als mit offiziellen Fußball- oder Journalisten-Accounts.

Erschließung des Potenzials von R und Gephi

Hätten wir Gephi nicht zum Zeichnen verwendet, hätten wir die Ggplot-Bibliothek von R verwenden können. Aus meiner Sicht ist diese Bibliothek jedoch in Bezug auf die grafische Darstellung von Netzwerken viel eingeschränkter. Es ist nicht dynamisch wie Gephi, es ist schwieriger zu konfigurieren und die resultierende Anzeige ist weniger klar.

Im Rest der Serie werden wir diese Analyse weiterführen. Wir werden einige Textanalysen zur Themenmodellierung durchführen, um zu sehen, wie viel Benutzer sprechen und welche Themen für sie von Interesse sind. wir führen eine Stimmungsanalyse durch, um zu sehen, ob sie positiv oder negativ sind; und wir werden eine tiefere Diagrammanalyse durchführen, um die größten Influencer von Twitter zu analysieren.

Mit diesen Schritten können Sie neue Twitter-Diskussionen analysieren und sehen, welche Erkenntnisse Sie aus Ihren Diagrammen gewinnen können.