ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Genera 1000 grafos aleatorios del grafo original g ejecutando el código que crea el objeto lista gl y el bucle for.
  • Calcula la longitud media del camino de los 1000 grafos aleatorios usando lapply(). Crea un vector gl.apls con estos 1000 valores ejecutando el código que usa unlist().
  • Traza un histograma de las longitudes medias del camino de los 1000 grafos aleatorios usando hist() sobre el vector gl.apls. Añade una línea vertical discontinua roja a la gráfica usando abline() 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.apls son inferiores al valor del grafo original g.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(___ < ___)
Editar y ejecutar código