Randomizações de redes
No exercício anterior, você pode ter notado que o comprimento médio do caminho da rede de Forrest Gump era menor do que o comprimento médio do caminho da rede aleatória. Se você executou o código algumas vezes, deve ter visto que ele quase sempre é menor na rede de Forrest Gump do que na rede aleatória. Isso sugere que a rede de Forrest Gump é mais interconectada do que cada rede aleatória, mesmo que as redes aleatórias tenham o mesmo número de vértices e densidades de grafo aproximadamente idênticas. Em vez de executar esse código muitas vezes, você pode tratar isso de forma mais formal criando 1000 grafos aleatórios com base no número de vértices e na densidade do grafo original de Forrest Gump. Em seguida, você pode ver quantas vezes o comprimento médio do caminho dos grafos aleatórios é menor do que o da rede original de Forrest Gump. Isso é chamado de teste de randomização.
O grafo g e seu comprimento médio do caminho (que você calculou no exercício anterior), g.apl, estão no seu workspace.
Este exercício faz parte do curso
Network Analysis in R
Instruções do exercício
- Gere 1000 grafos aleatórios do grafo original
gexecutando o código que cria o objeto listagle o loop for. - Calcule o comprimento médio do caminho dos 1000 grafos aleatórios usando
lapply(). Crie um vetorgl.aplscom esses 1000 valores executando o código que usaunlist(). - Plote um histograma dos comprimentos médios do caminho dos 1000 grafos aleatórios usando
hist()no vetorgl.apls. Adicione uma linha vertical tracejada em vermelho ao gráfico usandoabline()com a interseção em x sendo o valor do comprimento médio do caminho do grafo original,g.apl. - Calcule a proporção de vezes em que os valores do comprimento médio do caminho dos grafos aleatórios
gl.aplssão menores do que o valor do grafo originalg.apl. Isso é, essencialmente, a probabilidade de observarmos nosso comprimento médio do caminho ao acaso, dado a densidade e o número de vértices do grafo original.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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(___ < ___)