LoslegenKostenlos loslegen

Netzwerk-Randomisierungen

In der vorherigen Übung ist dir vielleicht aufgefallen, dass die durchschnittliche Pfadlänge des Forrest-Gump-Netzwerks kleiner war als die durchschnittliche Pfadlänge des Zufallsnetzwerks. Wenn du den Code ein paar Mal ausgeführt hast, hast du gemerkt, dass sie im Forrest-Gump-Netzwerk fast immer niedriger ist als im Zufallsnetzwerk. Das deutet darauf hin, dass das Forrest-Gump-Netzwerk stärker untereinander verbunden ist als jedes Zufallsnetzwerk, obwohl die Zufallsnetzwerke dieselbe Anzahl an Knoten und eine ungefähr identische Graphdichte haben. Anstatt den Code viele Male neu auszuführen, kannst du das formaler angehen, indem du 1000 Zufallsgraphen auf Basis der Knotenzahl und Dichte des ursprünglichen Forrest-Gump-Graphen erzeugst. Dann kannst du sehen, wie oft die durchschnittliche Pfadlänge der Zufallsgraphen kleiner ist als im ursprünglichen Forrest-Gump-Netzwerk. Das nennt man einen Randomisierungstest.

Der Graph g und seine durchschnittliche Pfadlänge (die du in der vorherigen Übung berechnet hast), g.apl, befinden sich in deinem Workspace.

Diese Übung ist Teil des Kurses

Netzwerkanalyse mit R

Kurs anzeigen

Anleitung zur Übung

  • Erzeuge 1000 Zufallsgraphen des ursprünglichen Graphen g, indem du den Code ausführst, der das Listenobjekt gl erstellt, sowie die for-Schleife.
  • Berechne die durchschnittliche Pfadlänge der 1000 Zufallsgraphen mit lapply(). Erzeuge einen Vektor gl.apls dieser 1000 Werte, indem du den Code mit unlist() ausführst.
  • Zeichne ein Histogramm der durchschnittlichen Pfadlängen der 1000 Zufallsgraphen, indem du hist() auf den Vektor gl.apls anwendest. Füge dem Plot mit abline() eine rote, gestrichelte vertikale Linie hinzu, wobei der x-Achsenabschnitt der Wert der durchschnittlichen Pfadlänge des ursprünglichen Graphen g.apl ist.
  • Berechne den Anteil der Fälle, in denen die Werte der durchschnittlichen Pfadlänge der Zufallsgraphen gl.apls kleiner sind als der Wert des ursprünglichen Graphen g.apl. Das ist im Wesentlichen die Wahrscheinlichkeit, unsere beobachtete durchschnittliche Pfadlänge zufällig zu erhalten, gegeben die ursprüngliche Dichte und Knotenzahl des Graphen.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

library(igraph)

# Generate 1000 random graphs
gl <- vector('list', 1000)
  
for(i in 1:1000){
  gl[[i]] <- erdos.renyi.game(n = gorder(g), p.or.m = gd, type = "gnp")
}

# Calculate average path length of 1000 random graphs
gl.apls <- unlist(lapply(gl, ___, directed = FALSE))

# Plot the distribution of average path lengths
___(gl.apls, xlim = range(c(1.5, 6)))
abline(v = ___, col = "red", lty = 3, lwd = 2)

# Calculate the proportion of graphs with an average path length lower than our observed
mean(___ < ___)
Code bearbeiten und ausführen