Betweenness
Ein weiteres Maß für die Bedeutung eines bestimmten Knotens ist seine Betweenness. Sie gibt an, wie häufig der Knoten auf kürzesten Pfaden zwischen zwei beliebigen Knoten im Netzwerk liegt. Man kann sie als Maß dafür verstehen, wie kritisch der Knoten für den Informationsfluss im Netzwerk ist. Personen mit hoher Betweenness sind zentrale Brücken zwischen verschiedenen Teilen eines Netzwerks. In unserem Masern-Übertragungsnetz sind Knoten mit hoher Betweenness jene Kinder, die maßgeblich zur Weitergabe der Krankheit in andere Teile des Netzwerks beigetragen haben. In dieser Übung ermittelst du den Betweenness-Wert für jeden Knoten und erstellst anschließend eine neue Visualisierung des Netzwerks, in der die Knotengröße anhand des Betweenness-Werts angepasst wird, um diese Schlüssel-Knoten hervorzuheben.
Diese Übung ist Teil des Kurses
Netzwerkanalyse mit R
Anleitung zur Übung
- Berechne die Betweenness jedes Knotens mit der Funktion
betweenness()auf dem Graph-Objektg. Achte darauf, dass die Werte für ein gerichtetes Netzwerk berechnet werden. Weise das Ergebnis dieser Funktion alsg.bzu. - Untersuche die Verteilung der Betweenness-Werte visuell mit der Funktion
hist(). - Erzeuge mit
plot()eine Visualisierung des Netzwerks basierend auf den Betweenness-Werten. Die Knotenbeschriftungen sollenNAsein, damit sie nicht angezeigt werden. Das Attribut für die Knotengröße soll eins plus die Quadratwurzel der Betweenness-Werte im Objektg.bsein. Angesichts der großen Unterschiede der Betweenness-Werte in diesem Netzwerk stellt diese Normalisierung sicher, dass alle Knoten sichtbar sind und ihre relative Bedeutung dennoch erkennbar bleibt.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
library(igraph)
# Calculate betweenness of each vertex
g.b <- ___(g, directed = ___)
# Show histogram of vertex betweenness
___(___, breaks = 80)
# Create plot with vertex size determined by betweenness score
___(g,
vertex.label = ___,
edge.color = 'black',
vertex.size = sqrt(___)+1,
edge.arrow.size = 0.05,
layout = layout_nicely(g))