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
Istruzioni dell'esercizio
- Genera 1000 grafi casuali del grafo originale
geseguendo il codice che crea l'oggetto listagle il ciclo for. - Calcola la lunghezza media del cammino dei 1000 grafi casuali usando
lapply(). Crea un vettoregl.aplscon questi 1000 valori eseguendo il codice che usaunlist(). - Traccia un istogramma delle lunghezze medie del cammino dei 1000 grafi casuali usando
hist()sul vettoregl.apls. Aggiungi una linea verticale tratteggiata rossa al grafico usandoabline()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.aplssono inferiori al valore del grafo originaleg.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(___ < ___)