Aan de slagGa gratis aan de slag

Willekeurige netwerkcreaties

In de vorige oefening heb je misschien gezien dat de gemiddelde padlengte van het Forrest Gump-netwerk kleiner was dan die van het willekeurige netwerk. Als je de code een paar keer uitvoerde, zag je vast dat deze in het Forrest Gump-netwerk bijna altijd lager is dan in het willekeurige netwerk. Dit suggereert dat het Forrest Gump-netwerk sterker onderling verbonden is dan elk willekeurig netwerk, ook al hebben de willekeurige netwerken hetzelfde aantal knopen en ongeveer dezelfde graafdichtheid. In plaats van de code heel vaak opnieuw uit te voeren, kun je dit formeler aanpakken door 1000 willekeurige grafen te maken op basis van het aantal knopen en de dichtheid van de oorspronkelijke Forrest Gump-graaf. Vervolgens kun je bekijken hoe vaak de gemiddelde padlengte van de willekeurige grafen kleiner is dan die van het oorspronkelijke Forrest Gump-netwerk. Dit heet een randomisatietest.

De graaf g, en de gemiddelde padlengte daarvan (die je in de vorige oefening hebt berekend), g.apl, staan in je werkruimte.

Deze oefening maakt deel uit van de cursus

Netwerkanalyse in R

Cursus bekijken

Oefeninstructies

  • Genereer 1000 willekeurige grafen van de oorspronkelijke graaf g door de code uit te voeren die het lijstobject gl en de for-lus maakt.
  • Bereken de gemiddelde padlengte van de 1000 willekeurige grafen met lapply(). Maak een vector gl.apls van deze 1000 waarden door de code uit te voeren die unlist() gebruikt.
  • Plot een histogram van de gemiddelde padlengtes van de 1000 willekeurige grafen met hist() op de vector gl.apls. Voeg een rode, gestreepte, verticale lijn toe aan de plot met abline(), waarbij het x-snijdpunt de waarde is van de gemiddelde padlengte van de oorspronkelijke graaf, g.apl.
  • Bereken de proportie keren dat de waarden van de gemiddelde padlengte van willekeurige grafen gl.apls lager zijn dan de waarde van de oorspronkelijke graaf g.apl. Dit is in feite de kans dat we onze geobserveerde gemiddelde padlengte toevallig zouden verwachten, gegeven de oorspronkelijke dichtheid en het aantal knopen van de graaf.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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 bewerken en uitvoeren