首页 文章

igraph与sna:一个人做得好,另一个不能或做得不好?

提问于
浏览
4

在R中进行网络分析时,我对 igraph 比较熟悉,但与 sna 完全没有关系 .

我的问题是:

  • 这两个库是否兼容?即我可以将 sna 中的操作应用于 igraph 中创建的图形,反之亦然?

  • 在一个包中执行的任务是否比在另一个包中执行效率更高?

  • 哪个库具有更易于理解的操作范围?

  • 总体而言,是否有任何强有力的理由在R中使用 igraphsna 进行网络分析?

PS . 这些软件包中是否允许进行多层(多路)网络分析?

1 回答

  • 7

    我对这两个软件包之间差异的全局描述是, igraph 更倾向于图论和网络数学模型,而且更适合于(主要是社交)网络的统计模型 . igraph (我认为)的创造者大多具有计算机科学的背景,而 sna 人是社会学家和统计学家 . 我主要工作在 sna (以及包含 statnet 套件包的相关软件包 - 我在社会科学领域),但也经常使用 igraph ,有时也在同一个脚本中 .

    回答您的具体问题:

    1)不,他们不是 . igraph 中的许多函数在 sna 中具有相同的名称,这会导致冲突 . igraph 图形不能在 sna 函数中使用 . 创建了包 intergraph ,以便在 snaigraph 之间轻松切换 . 所以我可以通过首先传递给 intergraphigraph 图形发送到 sna 函数 - 例如 sna::evcent(intergraph::asNetwork(g)) ,假设 gigraph 网络 . 如果在脚本中同时使用它们,则需要在运行函数时专门调出包,或根据需要加载和卸载 .

    2)根据我的经验,我没有发现一个比另一个更有效率 . 两者都是很好的开发和维护包 . 我相信 igraph 更适合大型图形 - 它有一些功能可以修改,以节省在大型图形上运行时的计算时间 . 但我没有直接经验 . 虽然我会说 igraph 在可视化方面通常更好 .

    3)我会说,两者都没有全面的优势 . 两者都做主要的网络分析(中心,网络拓扑) . 他们的更多"advanced"功能不同 . 请参阅我的一般观点 - 它们适用于网络分析中的重叠但不同的问题 . sna 中有很多东西在 igraph 中没有(例如与统计推断相关,如QAP回归[ netlm / netlogit ]或网络自相关模型[ lnam ]),反之亦然(例如,社区检测功能如 cluster_fast_greedy ) . sna 由许多兼容包扩展,这些包执行潜在空间模型和指数随机图模型 .

    4)Ceterius paribus,没有 . 对我来说,选择主要是需要驱动 . 如果您对统计推断感兴趣,则需要在 sna 中工作 . 如果没有, igraph 一般服务 . 基于堆栈溢出的问题, igraph 似乎更受欢迎,但这当然可能是由于选择偏差 . 仅仅因为这个原因,如果我不需要统计模拟网络,我可能大多使用 igraph . 同样,两个包都很棒,服务重叠,但需求略有不同 .

    不确定"multilayer network analysis"是什么意思,但 igraphsna 都适用于Multiplex网络 . 您当然可以在 sna 中分析多路复用网络和多级网络 . (这里,多路复用意味着具有各种关系类型的网络(例如友谊和建议)和多层意味着嵌套网络或来自同一群体的多个网络(此时术语有点混淆) . )这取决于你是什么我想做,并且经常需要一些争吵,但这在一定程度上是可能的 .

相关问题