Aleatorizaciones de redes
En el ejercicio anterior quizá te fijaste en que la longitud media del camino de la red de Forrest Gump era menor que la de la red aleatoria. Si ejecutaste el código varias veces, habrás visto que casi siempre es más baja en la red de Forrest Gump que en la red aleatoria. Esto sugiere que la red de Forrest Gump está más interconectada que cada red aleatoria, aunque las redes aleatorias tienen el mismo número de vértices y densidades de grafo aproximadamente idénticas. En lugar de volver a ejecutar este código muchas veces, puedes abordarlo de forma más formal creando 1000 grafos aleatorios basados en el número de vértices y la densidad del grafo original de Forrest Gump. Después, podrás ver cuántas veces la longitud media del camino de los grafos aleatorios es menor que la de la red original de Forrest Gump. A esto se le llama una prueba de aleatorización.
El grafo g, y su longitud media del camino (que calculaste en el ejercicio anterior), g.apl, están en tu espacio de trabajo.
Este ejercicio forma parte del curso
Análisis de redes en R
Instrucciones del ejercicio
- Genera 1000 grafos aleatorios del grafo original
gejecutando el código que crea el objeto listagly el bucle for. - Calcula la longitud media del camino de los 1000 grafos aleatorios usando
lapply(). Crea un vectorgl.aplscon estos 1000 valores ejecutando el código que usaunlist(). - Traza un histograma de las longitudes medias del camino de los 1000 grafos aleatorios usando
hist()sobre el vectorgl.apls. Añade una línea vertical discontinua roja a la gráfica usandoabline()con la intersección en x igual al valor de la longitud media del camino del grafo original,g.apl. - Calcula la proporción de veces que los valores de la longitud media del camino de los grafos aleatorios
gl.aplsson inferiores al valor del grafo originalg.apl. Esto es, básicamente, la probabilidad de observar nuestra longitud media del camino por azar, dado la densidad y el número de vértices del grafo original.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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(___ < ___)