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:
full_graph

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:
ring_graph1

ring_graph2

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:
star_graph

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 :
gnp1

gnp2

gnp3

gnp4

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:

degree

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:

betwenness

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:

network_density

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:

cliques

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:

components

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:

random_walk

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.

change_color

change_color2

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()

write_out

edge_list

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.