【问题标题】:igraph vs sna: can one do something well the other can't or does poorly?igraph vs sna:一个人能做得很好,而另一个人不能或做得很差?
【发布时间】:2017-06-15 23:10:51
【问题描述】:

说到R中的网络分析,我对igraph比较熟悉,但对sna一点也不熟悉。

我的问题是:

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

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

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

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

ps。这些软件包中的任何一个都允许进行多层(多路)网络分析吗?

【问题讨论】:

    标签: r igraph sna


    【解决方案1】:

    我对这两个软件包之间差异的总体看法是,igraph 更适合图论和网络数学模型,sna 更适合(主要是社交)网络的统计模型。 igraph 的创建者(我认为)大多具有计算机科学背景,而 sna 的人是社会学家和统计学家。我主要使用sna(以及包含statnet 软件包套件的相关软件包——我在社会科学领域),但也经常使用igraph,有时在同一个脚本中。

    回答您的具体问题:

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

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

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

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

    不确定您所说的“多层网络分析”是什么意思,但 igraphsna 都适用于 multiplex 网络。您当然可以在sna 中分析多路网络和多级网络。 (在这里,multiplex 表示具有多种联系类型(例如友谊和建议)的网络,而 multilevel 表示嵌套网络或来自同一人群的多个网络(此时术语有点混乱)。)这取决于你想做的事,往往需要一番扯皮,但在一定程度上是可以的。

    【讨论】:

    • 我猜“多层网络”的意思是指多路复用网络,其中有不同的层,不同层之间只有一些共同的节点。我现在已经在问题中澄清了这一点。 @paqmo,这是一个很好的答案,谢谢。点赞!当我们有更多其他人的贡献时,我会奖励答案
    猜你喜欢
    • 2014-02-21
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多