ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Gere 1000 grafos aleatórios do grafo original g executando o código que cria o objeto lista gl e o loop for.
  • Calcule o comprimento médio do caminho dos 1000 grafos aleatórios usando lapply(). Crie um vetor gl.apls com esses 1000 valores executando o código que usa unlist().
  • Plote um histograma dos comprimentos médios do caminho dos 1000 grafos aleatórios usando hist() no vetor gl.apls. Adicione uma linha vertical tracejada em vermelho ao gráfico usando abline() 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.apls são menores do que o valor do grafo original g.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(___ < ___)
Editar e executar o código