R语言中用igraph包进行:给定节点数为22和边数24,模拟100次ER随机网络,计算随机网络相关拓扑属性(平均聚类系数、平均路径长度、模块化值以及这三个值的均值和标准差)。有朋友构建的代码,但是必须手动进行100次;也从网上找到了可以直接随机100次的,但是没有计算模块化值,有同学可以帮忙吗
有之前同学构建的代码,但是只能手动进行100次:
##安装需要的包
install.packages("igraph")
#加载包
library(igraph)
########### the following objects are masked from "package:stats":decompose,spectrum ###########
########### the following object is masked from "package:base":union ###########
rayyan <- erdos.renyi.game(30,127, type="gnm",directed = FALSE)
#平均路径长度
average.path.length(rayyan)
#模块化
wtc <- cluster_walktrap(rayyan)
modularity(wtc)
#平均聚类系数
transitivity(rayyan)
还有从其他地方找到的可以直接进行100次模拟并计算的,但是没有写模块化值
#给定与上述网络相同数量的节点和边,模拟 1000 次 ER 随机网络,并计算随机网络有关的拓扑属性
clustering_coefficient_rand <- c()
average_path_length_rand <- c()
set.seed(123)
for (i in 1:1000) {
#生成非含权的无向的 ER 随机网络,本示例中,给定节点数量 n=100,边数量 p=920
g_rand <- erdos.renyi.game(n = nodes_num, p = edges_num, type = 'gnm', weight = FALSE, mode = 'undirected')
#记录这 1000 个随机网络的聚类系数和平均路径长度
clustering_coefficient_rand <- c(clustering_coefficient_rand, transitivity(g_rand))
average_path_length_rand <- c(average_path_length_rand, average.path.length(g_rand, directed = FALSE))
}
mean(clustering_coefficient_rand) #1000 个随机网络的聚类系数的均值
sd(clustering_coefficient_rand) #1000 个随机网络的聚类系数的标准差
mean(average_path_length_rand) #1000 个随机网络的平均路径长度的均值
sd(average_path_length_rand) #1000 个随机网络的平均路径长度的标准差