小世界网络模型简介及R模拟

Posted 小白鱼的生统笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小世界网络模型简介及R模拟相关的知识,希望对你有一定的参考价值。

小世界网络模型
小世界网络模型简介及R模拟
在前文 中,简介了两种随机图模型,经典随机图和广义随机图,都是简单地从一个给定集合中均匀随机抽取获得,区别是对于集合的界定有所不同。并展示了如何使用这种随机网络对经验网络的“显著性”进行评估,或者评估某些潜在的用于关系预测的因素。

  

小世界网络


但是传统的随机图过于简单,难以模拟“现实世界”特征。许多现实世界网络通常具有两个特点:(1)任意节点对之间的距离都相对较小,(2)同时传递性或聚类的等级相对较高。因此,通过引入某种简单的机制来产生这些特征,是当代网络建模的重要创新之一。

而言,它的平均路径长度确实很短,这意味着一对节点之间往往只有一条路径,而该路径只涉及少数几个边(即(1)成立)。但是,其缺乏一定程度的可传递性(但(2)不成立)。

增加传递性的一种方法是将所有节点排列在一个晶格中。最简单的格子是将节点排成一排,甚至将两端连接成一个圆,这样就不必担心边界。然后,如果每个节点只连接到附近的节点,那么结果网络中的传递性自然就会产生。由于连接到第三个节点的一对节点将趋向于靠近晶格中的每一个节点,因此很可能它们也已连接。即网络图中的数量将相对较高,产生高传递性或聚类(即满足了(2))。然而,这样的晶格模型中由于所有连接都是两个附近的节点,因此需要很长的连接链才能到达晶格上距离较远的节点。如果将节点排列在一个圆上,则圆相反处的节点之间的最短路径将非常大(但(1)将拒绝)。

小世界( small world )网络模型将晶格模型的可传递性与随机网络模型的低路径长度结合在一起,其由一个网络结构的图出发,对一小部分边进行随机重连( rewiring )( Watts and Strogatz, 1998 )。具体而言,从排成一圈的 Nv 个节点的集合开始,将每个节点与其一侧的 r 个邻居进行连接;之后以概率 p 移除每条边的一个端点,与另一个等概率选取的新节点相连,并避免生成自环与多重边。      

重连概率p与小世界网络特征的关系


下图展示了小型世界网络的特征,显示了网络)和C)随重连概率p改变的关系。

小世界网络模型简介及R模拟

当概率p低时,大多数边仍然是原始的局部连接,它们连接的是晶格附近的节点,因此传递性仍然很高。但是,一些被重新连接的边可能会变成长距离的连接,连接晶格中彼此距离很远的节点,这些长距离连接会立即在任一端附近的节点之间创建一个短距离。这个结论隐含了这样一个事实,即路径长度将每条边的长度都计算为1,所以即使我们经常将它们作为长连接,它们也只向路径长度添加1

当重连概率p变大时,网络将与相似,传递性变低。但是,存在一个较大的概率p的取值范围,在该范围内,聚类系数高且平均路径长度小,网络被认为是一个小世界网络。

 

小世界网络模拟


考虑以下示例,通过Rigraph模拟小世界网络。

library(igraph)
 
#模拟小世界网络,详情 ?watts.strogatz.game
set.seed(123)
par(mfrow = c(2, 2))
 
#生成具有 Nv=25 个节点,r=5 个邻居,重连概率 p=0 的网络(p 越小,聚集性越高)
g_rand <- watts.strogatz.game(dim = 1, size = 25, nei = 5, p = 0)
plot(g_rand, layout = layout.circle)
 
#更改重连概率 p=0.01
g_rand <- watts.strogatz.game(dim = 1, size = 25, nei = 5, p = 0.01)
plot(g_rand, layout = layout.circle)
 
#更改重连概率 p=0.05
g_rand <- watts.strogatz.game(dim = 1, size = 25, nei = 5, p = 0.05)
plot(g_rand, layout = layout.circle)
 
#更改重连概率 p=0.1
g_rand <- watts.strogatz.game(dim = 1, size = 25, nei = 5, p = 0.1)
plot(g_rand, layout = layout.circle)

小世界网络模型简介及R模拟

在具有相同数量节点和边的情况下,随着重连概率p的增加,网络传递性变低。

 

为了更清晰展示网络特征与重连概率p的关系,我们从p=0开始,依次增加0.01,直到0.5,模拟网络并绘制网络随重连概率p改变的关系。

##在固定节点和边数量前提下,逐步增加重连概率 p 值的模拟
#模拟网络,并计算聚类系数和平均路径长度
clustering_coefficient <- c()
average_path_length <- c()

set.seed(123)
for (p in seq(0, 1, 0.01)) {
g_rand <- watts.strogatz.game(dim = 1, size = 100, nei = 5, p = p)
clustering_coefficient <- c(clustering_coefficient, transitivity(g_rand))
average_path_length <- c(average_path_length, average.path.length(g_rand, directed = FALSE))
}

dat <- data.frame(p = seq(0, 1, 0.01),
clustering_coefficient = clustering_coefficient,
average_path_length = average_path_length)

#作图展示趋势
source('two_axis.r') #ggplot2 组合坐标轴,r 代码见 https://pan.baidu.com/s/1L-G96AhiqIZ5nvGInBFQvw#list/path=%2F

p1 <- ggplot(dat, aes(log10(p), clustering_coefficient)) +
geom_smooth(color = 'blue', se = FALSE) +
theme(axis.title.y = element_text(color = 'blue'))

p2 <- ggplot(dat, aes(log10(p), average_path_length)) +
geom_smooth(color = 'red', se = FALSE) +
theme(axis.title.y = element_text(color = 'red')) +
theme(panel.background = element_rect(fill = NA))

ggplot2.two_y_axis(p1, p2)

小世界网络模型简介及R模拟

该曲线反映的趋势和上述一致,即随着重连概率p的增加,网络传递性变低。

  

小世界网络与经典随机网络的比较


比较小世界网络与经典随机网络。

##与经典随机图的比较
set.seed(123)

#生成具有 Nv=25 个节点,r=5 个邻居,重连概率 p=0.05 的网络
g_rand_s <- watts.strogatz.game(dim = 1, size = 25, nei = 5, p = 0.05)

#具有相同节点和边数量的经典随机图
g_rand_ER <- erdos.renyi.game(n = vcount(g_rand_s), p = ecount(g_rand_s), type = 'gnm', mode = 'undirected')

#网络图
par(mfrow = c(1, 2))
plot(g_rand_s, layout = layout.circle)
plot(g_rand_ER, layout = layout.circle)

#聚类系数和平均路径长度比较
transitivity(g_rand_s)
average.path.length(g_rand_s, directed = FALSE)
transitivity(g_rand_ER)
average.path.length(g_rand_ER, directed = FALSE)

小世界网络模型简介及R模拟

在重连概率p为低值时,网络呈现小世界特征,低(与经典随机网络相似,低平均路径长度是它的特征)且高(相比之下明显高于经典随机网络的聚类系数)。

 

现在我们提升重连概率p,再比较二者。

#提升重连概率,再比较二者
set.seed(123)

#生成具有 Nv=25 个节点,r=5 个邻居,重连概率 p=0.2 的网络
g_rand_s <- watts.strogatz.game(dim = 1, size = 25, nei = 5, p = 0.2)

#具有相同节点和边数量的经典随机图
g_rand_ER <- erdos.renyi.game(n = vcount(g_rand_s), p = ecount(g_rand_s), type = 'gnm', mode = 'undirected')

#网络图
par(mfrow = c(1, 2))
plot(g_rand_s, layout = layout.circle)
plot(g_rand_ER, layout = layout.circle)

#聚类系数和平均路径长度比较
transitivity(g_rand_s)
average.path.length(g_rand_s, directed = FALSE)
transitivity(g_rand_ER)
average.path.length(g_rand_ER, directed = FALSE)

小世界网络模型简介及R模拟

可以看到,当重连概率p为一个较高的值时,网络将不再具有小世界特征,归因于此时的低(接近随机网络,如果重连概率p继续提升还可能小于随机网络),失去了小世界对高传递性特征的要求。因此,此时原则上不能再称呼为“小世界”,此时的网络将呈现与经典随机图比较类似的特征。

  

参考资料


Eric D Kolacayk, Gabor Csardi,  网络数据的统计分析: R 语言实践(李杨   译) 西安交通大学出版社 , 2016.
Math Insight: https://mathinsight.org/index/general
Watts DJ and Strogatz SH. Collective dynamics of 'small-world' networks. Nature, 393:440-442, 1998.

 

 

小世界网络模型简介及R模拟
链接
小世界网络模型简介及R模拟

相关性和网络分析基础


 

 


基础统计图(以R作图为主)


柱形图类               
箱线图类:         
饼图类:                    
面积图类:
散点图类:             
曲线图类
雷达图类:
集合可视化:                 
圈图:         
三元相图:
树形图:         
相关图:



以上是关于小世界网络模型简介及R模拟的主要内容,如果未能解决你的问题,请参考以下文章

基于“小世界”网络模型的产业集群内企业竞争优势仿真分析

第七章:小世界网络模型

神经网络模型及R代码实现

CNN经典网络模型:ResNet简介及代码实现(PyTorch超详细注释版)

理论从社交网络获取灵感,用小世界网络模型分析分子筛传递性质

R语言 | 广义加性模型的简介应用举例及R语言操作