Analyse sozialer Netzwerke mit R-Programmierung
Social Network Analysis (SNA) ist der Prozess der Erforschung oder Untersuchung der sozialen Struktur mithilfe der Graphentheorie. Es wird zur Messung und Analyse der strukturellen Eigenschaften des Netzwerks verwendet. Es hilft, Beziehungen und Flüsse zwischen Gruppen, Organisationen und anderen verbundenen Einheiten zu messen.
Bevor wir beginnen, sehen wir uns einige Begriffe der Netzwerkanalyse an
- Ein Netzwerk wird als Diagramm dargestellt, das Verbindungen (falls vorhanden) zwischen jedem Scheitelpunkt (oder Node) und seinen Nachbarn zeigt.
- Eine Linie, die eine Verbindung zwischen Scheitelpunkten anzeigt, wird als Kante bezeichnet.
- Eine Gruppe von Node, die durch folgende Kanten im Graphen gegenseitig erreichbar sind, wird als Komponente bezeichnet.
- Die Kanten, die von einem Node zum anderen folgen, werden Pfade genannt.
Die folgende Software ist erforderlich, um eine Netzwerkanalyse durchzuführen
- R-Software
- Pakete:
- igraph
- sna (Analyse sozialer Netzwerke)
Funktionen, die in der Social Network Analysis verwendet werden
- library()-Funktion
library()
Funktion Add-On-Pakete laden und anhängen.Syntax:
Bibliothek (Paket, Hilfe, Logical.return = FALSE ....)
- Funktion make_full_graph()
Diese Funktion wird verwendet, um ein vollständiges Diagramm zu erstellen.Syntax:
make_full_graph(n, Loops = FALSE, gerichtet = FALSE)
- Funktion make_ring()
Ein Ring ist ein eindimensionales Gitter und kann Gitter beliebiger Dimensionen erzeugen, periodische oder nichtperiodische.Syntax:
make_ring(n, gerichtet = FALSE, kreisförmig = TRUE, gegenseitig = FALSE)
- Funktion make_star()
Diese Funktion erstellt einen Sterngraphen, bei dem jeder einzelne Scheitelpunkt mit dem mittleren Scheitelpunkt verbunden ist und mit niemand anderem.Syntax:
make_star(n, center = 1, mode = c("in", "out", "mutual", "undirected"))
- Funktion sample_gnp()
Dies ist ein einfaches Modell, bei dem jede mögliche Kante mit derselben konstanten Wahrscheinlichkeit erzeugt wird.Syntax:
sample_gnp(n, p, Loops = FALSE, gerichtet = FALSE)
- Funktion plot()
Diese Funktion wird verwendet, um das gegebene Diagramm im aktiven Grafikfenster zu zeichnen.Syntax:
plot(definierter_graph_name)
Erstellen von Beispieldiagrammen
Vollständige Grafik
Syntax:
make_full_graph ()
Parameter:
- Anzahl der Eckpunkte.
- gerichtet = WAHR/FALSCH Ob ein gerichteter Graph erstellt werden soll oder nicht.
- loops = TRUE/FALSE Ob dem Diagramm Selbstschleifen hinzugefügt werden sollen oder nicht.
Beispiel:
library(igraph) Full_Graph <- make_full_graph(8, directed = FALSE) plot(Full_Graph)
Ausgabe:
Ringdiagramm
Der Ringgraph ist ein eindimensionales Gitter und ein Sonderfall der Funktion make_lattice.
Syntax:
make_ring ()
Parameter:
- Anzahl der Eckpunkte.
- gerichtet = WAHR/FALSCH Ob ein gerichteter Graph erstellt werden soll oder nicht.
- gegenseitig =TRUE/FALSE Ob gerichtete Kanten gegenseitig sind oder nicht. Es wird in ungerichteten Graphen ignoriert.
- kreisförmig =TRUE/FALSE Ob ein kreisförmiger Ring erstellt werden soll.
Beispiel:
library(igraph) Ring_Graph <- make_ring(12, directed = FALSE, mutual = FALSE, circular = TRUE) plot(Ring_Graph)
Ausgabe:
Sterndiagramm
In einem Sterndiagramm ist jeder einzelne Scheitelpunkt mit dem mittleren Scheitelpunkt und sonst niemandem verbunden.
Syntax:
make_star()
Parameter:
- Anzahl der Eckpunkte
- center = ID des zentralen Scheitelpunkts
- mode = Definiert die Richtung der Kanten nach innen/aussen/gegenseitig/ungerichtet.
- in – Die Kanten zeigen zur Mitte.
- out – Die Kanten zeigen von der Mitte.
- gegenseitig – Ein gerichteter Sterngraph wird mit gemeinsamen Kanten erstellt.
- ungerichtet – Die Kanten sind ungerichtet.
Beispiel:
library(igraph) Star_Graph <- make_star(10, center = 1) plot(Star_Graph)
Ausgabe:
Zufallsgraphen generieren (gnp)
Die folgenden Diagramme werden zufällig mit einer gegebenen konstanten Wahrscheinlichkeit zum Erzeugen einer Kante generiert.
Syntax:
sample_gnp()
Parameter:
- Anzahl der Scheitelpunkte im Diagramm
- Wahrscheinlichkeit, eine Kante zwischen zufälligen Scheitelpunkten zu ziehen
- gerichtet = FALSCH/WAHR
- Schleifen = FALSCH/WAHR
Beispiel:
library(igraph) gnp_Graph <- sample_gnp(20, 0.3, directed = FALSE, loops = FALSE) plot(gnp_Graph)
In ähnlicher Weise können Sie verschiedene Diagramme ausprobieren, indem Sie ihre Argumente wie unten beschrieben ändern.
Ausgabe :
Diagramme analysieren
Verbundenheit des Graphen
Eines der grundlegenden Maße der Scheitelpunkte in einem Diagramm ist, wie viele Verbindungen sie mit anderen Scheitelpunkten haben. Dieses Maß kann entweder die Anzahl der Verbindungen oder die Gesamtzahl möglicher Verbindungen sein, die auch als Dichte bezeichnet wird.
Lassen Sie uns nun den Grad jedes Nodes / Scheitelpunkts in einem zufälligen Diagramm finden.
Syntax:
degree(graph)
Die Gradfunktion wird verwendet, um die Anzahl der Scheitelpunkte herauszufinden, mit denen jeder Scheitelpunkt verbunden ist.
Beispiel:
library(igraph) gnp_Graph <- sample_gnp(7, 0.4, directed = FALSE, loops = FALSE) plot(gnp_Graph) degree(gnp_Graph)
Ausgabe:
Betweenness des Diagramms
In sozialen Netzwerken wird Betweenness als Brücke zwischen und zwischen Gruppen von Netzwerkmitgliedern definiert. Eine Möglichkeit, die Betweenness zu berechnen, besteht darin, die Betweenness jedes Scheitelpunkts zu berechnen. Im Allgemeinen gilt: Je höher der Betweenness-Score, der einem Scheitelpunkt zugeordnet ist, desto mehr Kontrolle über das Netzwerk.
Syntax:
betweenness(graph)
betweenness()
Die Funktion wird durch die Anzahl der kürzesten Pfade definiert, die durch einen Node oder eine Kante gehen.
Beispiel:
library(igraph) gnp_Graph <- sample_gnp(7, 0.4, directed = FALSE, loops = FALSE) plot(gnp_Graph) betweenness(gnp_Graph)
Ausgabe:
Netzwerkdichte
Die Dichte des Netzwerks ist definiert als die Anzahl der Verbindungen zur Gesamtzahl möglicher Verbindungen. Ein vollständiger Graph hat die Dichte = 1, während andere Netzwerke einen Dezimalwert haben können.
Syntax:
edge_density(graph)
Es ist das Verhältnis der Anzahl der Kanten zur Gesamtzahl der möglichen Kanten.
Beispiel:
library(igraph) sample_graph <- sample_gnp(10, 0.3, directed = FALSE) plot(sample_graph) sample_density <- edge_density(sample_graph, loops = FALSE) sample_density
Ausgabe:
Cliquen in einem Netzwerk identifizieren
Eine Clique kann als eine Gruppe von Scheitelpunkten definiert werden, in der alle möglichen Verknüpfungen vorhanden sind.
Syntax:
cliques(graph, min=NULL,max=NULL)
Diese Funktion findet alle größten oder maximalen Cliquen in einem ungerichteten Graphen.
Beispiel:
library(igraph) sample_graph <- sample_gnp(20, 0.3, directed = FALSE, loops = FALSE) plot(sample_graph) clique_num(sample_graph, min=4)
Ausgabe:
Komponenten eines Graphen finden
Eine Gruppe verbundener Netzwerkknoten wird als Komponente bezeichnet. Es ist also möglich, dass ein mehrere Komponenten hat, die nicht miteinander verbunden sind.
Syntax:
components(graph)
Dadurch werden die stark oder schwach verbundenen Komponenten eines Graphen berechnet.
Beispiel:
library(igraph) sample_graph <- sample_gnp(30, 0.07, directed = FALSE, loops = FALSE) plot(sample_graph) components(sample_graph)
Ausgabe:
Ein Random Walk auf einem Graphen
Lassen Sie uns nun einen Zufallsgraphen generieren und ihn mit der Funktion random_walk durchlaufen.
Syntax:
random_walk( graph, start_node, Number_of_steps, stuck = "return"/"error" )
Diese Funktion ermöglicht es uns, einen zufälligen Spaziergang von start_node bis Number_of_steps zu machen, und falls wir stecken bleiben oder nicht vorwärts kommen, entweder zurückgeben oder einen Fehler ausgeben.
Beispiel:
library(igraph) sample_graph <- sample_gnp(30, 0.07, directed = FALSE, loops = FALSE) plot(sample_graph) random_walk(sample_graph, 8, 10, stuck = "return")
Ausgabe:
Visualisierung eines Netzwerks
Farbe von Kanten und Scheitelpunkten ändern
Jetzt werden wir versuchen zu lernen, wie man die Farben von Scheitelpunkten und Kanten ändert und das Diagramm bunter macht.
set_vertex_attr(graph, name_attr, value)
Wir werden versuchen, mit dieser Funktion einen bestimmten Attributwert von Scheitelpunkten festzulegen.
set_edge_attr(graph, name, value)
Dies ist eine ähnliche Funktion, aber der Unterschied besteht darin, dass Kantenattribute festgelegt werden.
Eine Grafik schreiben
Mit den folgenden Funktionen können Sie die Kantenliste des Diagramms auf Ihrem Computer speichern, indem Sie den Pfad angeben.
write.graphs()
setwd(dir)
Mit der Funktion „Arbeitsverzeichnis festlegen“ können Sie das gewünschte Verzeichnis für die Arbeit festlegen.
Hinweis: Beim Festlegen des Pfads sollten alle Backslashes in Forwardslashes geändert werden.
getwd()
Diese Funktion gibt den aktuellen Verzeichnispfad zurück, den Sie verwenden.
write_graph(graph, format)
Mit dieser Funktion können Sie Diagramme in einem bestimmten Format wie Edgelist/pajek/ncol/lgl/graphml/dimacs/gml usw. exportieren.