igraph与sna:一个人可以做得好吗,另一个人可以做得不好吗?

时间:2017-06-15 23:10:52

标签: r igraph sna

在R中进行网络分析时,我对igraph比较熟悉,但对sna一点都不熟悉。

我的问题是:

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

  2. 是否在一个包中执行的任务更有效 比另一个?

  3. 哪个库具有更易理解的操作范围?

  4. 总体而言,是否有充分理由使用igraphsna在R中进行网络分析?

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

1 个答案:

答案 0 :(得分:7)

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

回答您的具体问题:

1)不,他们不是。 igraph中的许多函数在sna中具有相同的名称,这会导致冲突。 igraph函数无法使用sna图表。创建了一个包intergraph,以便在snaigraph之间轻松切换。因此,我可以首先转到igraph来向sna函数发送intergraph图表,例如sna::evcent(intergraph::asNetwork(g)),假设gigraph网络。如果在脚本中同时使用它们,则需要在运行函数时专门调出包,或根据需要加载和卸载。

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

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

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

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