【问题标题】:Network Modularity Calculations in RR中的网络模块化计算
【发布时间】:2011-04-01 22:04:05
【问题描述】:

Network Modularity 的等式在其维基百科页面(以及知名书籍)中给出。我想看到它在一些代码中工作。我发现这可以使用 modularity library for igraph 与 R (The R Foundation for Statistical Computing) 一起使用。

我想看看下面的示例(或类似示例)在代码中用于计算模块性。该库提供了示例,但这并不是我真正想要的。

让我们有一组顶点 V = {1, 2, 3, 4, 5} 和边 E = {(1,5), (2,3), (2,4), (2,5 ) (3,5)} 形成一个无向图。

将这些顶点分成两个社区:c1 = {2,3} 和 c2 = {1,4,5}。要计算的是这两个社区的模块性。

【问题讨论】:

    标签: r graph-theory igraph modularity


    【解决方案1】:
    library(igraph)
    g <- graph(c(1,5,2,3,2,4,2,5,3,5))
    membership <- c(1,2,2,1,1)
    modularity(g, membership)
    

    这里有一些解释:

    1. 我在创建图形时使用的向量是图形的边列表。 (在 0.6 之前的 igraph 版本中,我们必须从数字中减去 1,因为当时 igraph 使用从零开始的顶点索引,但现在不再使用了。

    2. 成员向量membership的第i元素给出了顶点i所属的社区的索引。

      李>

    【讨论】:

    • 谢谢塔马斯。你是怎么想出membership &lt;- c(1,2,2,1,1)的?我可能没有正确阅读它,但是对于第一个边 (1,5),您说的是社区 1,但顶点 1 和 5 在社区 2 中?
    • 是的,我把它弄混了;在我的向量中,顶点 1、4 和 5 属于社区 1,顶点 2 和 3 属于社区 2。
    • 小心,成员向量必须从零开始(根据文档)
    • @Pomber:实际上,这并不重要,因为模块化公式只关心两个顶点是否属于同一个社区,因此将成员向量移动任意常数是安全的。然而,确实 igraph 函数总是返回一个从零开始的成员向量。
    • 也许较新的 iGraph 库已经改变了一些东西,但上面的图 g 在实例化时会产生错误。而且,与上面的 cmets 不同,根据文档 (igraph.org/r/doc/modularity.html),成员向量现在必须是基于 1 的
    猜你喜欢
    • 2020-03-21
    • 2015-07-07
    • 2017-12-05
    • 2022-12-04
    • 2013-11-15
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多