【问题标题】:How to generate a series of random networks in R如何在R中生成一系列随机网络
【发布时间】:2016-10-05 18:05:05
【问题描述】:

我是 R 初学者,所以请多多包涵。

我正在尝试创建一组大约 100 个随机网络,以与我的 60 个节点和 246 个加权链接的原始网络进行比较。

我希望每个网络的节点数量在 0-100 之间,每个节点具有随机密度(即任何一个节点将与另一个节点连接的随机概率),以及 1-5 之间的随机加权边。

我对 R 中的网络分析非常陌生,所以我不知道如何创建一个允许我输出 100 个的脚本(用循环猜测),也不知道如何指定随机边缘密度和权重。

任何建议都会很棒。

【问题讨论】:

  • 编写一个函数,使一个随机网络具有您想要的特征。然后循环运行。你试过什么?您正在使用什么包/网络类别?你到底卡在哪里了?如果你想创建一个有 2 个节点并在它们之间建立连接的网络,你能做到吗?如果您知道n,那么n 节点呢?你知道如何在 R 中绘制随机数吗?你知道你想从哪个分布中提取节点数量吗?统一在 0-100,或者泊松平均 50 或正常或其他什么?
  • 这里不是提供一般建议的好地方 - 它是帮助您克服特定绊脚石的好地方。也许看看How to make a reproducible example 并尝试询问与您的当前问题相关的具体问题。

标签: r network-programming


【解决方案1】:

igraph 是一个好的开始:

library(igraph)
set.seed(1)
gs <- list()
for (x in seq_len(100L)) {
  gs[[x]] <- erdos.renyi.game(sample(1:100, 1), p.or.m = runif(1))
  E(gs[[x]])$weight <- sample(1:5, ecount(gs[[x]]), T)
}
plot(gs[[1]], edge.width = E(gs[[1]])$weight) # plot first graph

有关随机图生成的文档,请参阅?erdos.renyi.game

【讨论】:

  • @lukaA 太棒了,我认为应该可以完美地完成我需要做的事情。如果没有,我会尝试看看我是否知道足以修改它。我主要是因为我以前从未写过循环,并且不知道如何处理它。@Gregor:只是为了回答你的问题(并感谢你的建议)我尝试使用 igraph 作为我的基础,特别是 erdos。人艺.game。我的限制是知道该函数可以/不能做什么,或者我可以/不能修改什么。感谢你们的帮助,我会在解决这个问题时尝试提出更具体的问题!
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多