开始使用免费开始使用

网络随机化

在上一个练习中,您也许注意到 Forrest Gump 网络的平均路径长度小于随机网络的平均路径长度。若多运行几次代码,您会发现 Forrest Gump 网络的平均路径长度几乎总是更低。这表明,即使随机网络具有相同的顶点数量且图密度也近似一致,Forrest Gump 网络的互联程度仍然更高。与其反复手动运行代码,您可以更正式地处理这一点:基于原始 Forrest Gump 图的顶点数量和密度,生成 1000 个随机图。然后,查看这些随机图的平均路径长度有多少次小于原始 Forrest Gump 网络。这称为随机化检验。

图对象 g 以及其平均路径长度(您在上一个练习中计算的)g.apl 已在您的工作区中。

本练习是课程的一部分

R 中的网络分析

查看课程

练习说明

  • 通过执行创建列表对象 gl 和 for 循环的代码,基于原始图 g 生成 1000 个随机图。
  • 使用 lapply() 计算这 1000 个随机图的平均路径长度。执行使用 unlist() 的代码,创建包含这 1000 个值的向量 gl.apls
  • 对向量 gl.apls 使用 hist(),绘制 1000 个随机图平均路径长度的直方图。使用 abline() 在图中添加一条红色虚线的竖直线,x 截距为原始图的平均路径长度 g.apl
  • 计算随机图平均路径长度向量 gl.apls 中的值小于原始图 g.apl 的比例。这本质上是在给定原始图密度和顶点数量条件下,我们由于随机性而观察到当前平均路径长度的概率。

交互式实操练习

通过完成这段示例代码来试试这个练习。

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(___ < ___)
编辑并运行代码