Inizia subitoInizia gratis

Randomizzazioni della rete

Nel precedente esercizio potresti aver notato che la lunghezza media del cammino della rete di Forrest Gump era più piccola di quella della rete casuale. Se hai eseguito il codice più volte, avrai visto che quasi sempre è più bassa nella rete di Forrest Gump rispetto alla rete casuale. Questo suggerisce che la rete di Forrest Gump è più interconnessa rispetto a ciascuna rete casuale, anche se le reti casuali hanno lo stesso numero di vertici e densità del grafo approssimativamente identica. Invece di rieseguire questo codice molte volte, puoi affrontare la cosa in modo più formale creando 1000 grafi casuali basati sul numero di vertici e sulla densità del grafo originale di Forrest Gump. Poi, puoi vedere quante volte la lunghezza media del cammino dei grafi casuali è inferiore a quella della rete originale di Forrest Gump. Questo si chiama test di randomizzazione.

Il grafo g, e la sua lunghezza media del cammino (che hai calcolato nell'esercizio precedente), g.apl, sono nel tuo workspace.

Questo esercizio fa parte del corso

Analisi delle reti in R

Visualizza corso

Istruzioni dell'esercizio

  • Genera 1000 grafi casuali del grafo originale g eseguendo il codice che crea l'oggetto lista gl e il ciclo for.
  • Calcola la lunghezza media del cammino dei 1000 grafi casuali usando lapply(). Crea un vettore gl.apls con questi 1000 valori eseguendo il codice che usa unlist().
  • Traccia un istogramma delle lunghezze medie del cammino dei 1000 grafi casuali usando hist() sul vettore gl.apls. Aggiungi una linea verticale tratteggiata rossa al grafico usando abline() con l'intercetta sull'asse x pari al valore della lunghezza media del cammino del grafo originale, g.apl.
  • Calcola la proporzione di volte in cui i valori della lunghezza media del cammino dei grafi casuali gl.apls sono inferiori al valore del grafo originale g.apl. In sostanza, è la probabilità di osservare per caso la nostra lunghezza media del cammino, dato la densità e il numero di vertici del grafo originale.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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(___ < ___)
Modifica ed esegui il codice