【问题标题】:Warning message when using closness() in igraph在 igraph 中使用 closeness() 时的警告消息
【发布时间】:2019-04-27 02:06:09
【问题描述】:

我希望为一组顶点计算 USairports 图的接近中心度度量:ATL、JFK、ORD、LAS

我的代码如下:

closeness(USairports,vids=c("ATL","JFK","ORD","LAS"),mode="all")

这给了我警告信息

“近距离(美国机场,vids = c(“ATL”,“JFK”,“ORD”,“LAS”),模式 = "all") : at centrality.c:2784 :closeness centrality is not 为断开的图定义良好"

这个警告的本质是什么?

【问题讨论】:

    标签: r graph igraph


    【解决方案1】:

    警告信息直接告诉你。 “对于断开连接的图,紧密度中心性没有明确定义”。 closeness 上的帮助页面说:

    顶点的接近中心性由图中所有其他顶点的最短路径的平均长度的倒数定义:

    但是如果有两个顶点之间有 no 路径呢?你将如何计算这个?对此没有明确的答案,这就是为什么在这种情况下没有很好地定义亲密性的原因。两个节点之间怎么可能没有路径?如果图是断开的,即有多个连接的组件。让我用一个非常简单的图表来说明。

    library(igraph)
    g = make_ring(3) + make_ring(4)
    plot(g)
    

    此图有两个断开的组件。例如,节点 3 和 4 之间没有路径。因此,当我们运行 closeness 时,我们会得到相同的警告。

    closeness(g)
    [1] 0.03333333 0.03333333 0.03333333 0.04000000 0.04000000 0.04000000 0.04000000
    Warning message:
    In closeness(g) :
      At centrality.c:2784 :closeness centrality is not well-defined for disconnected graphs
    

    您可以通过检查连接组件的数量轻松地对此进行测试。

    ConComp = components(g)
    ConComp$no
    [1] 2
    

    如果组件的数量大于一个,您将收到此警告消息。

    我假设您正在使用来自 igraphdata 包的 USairports 数据。由于这是一个有向图,您将需要指定强组件。

    library(igraphdata)
    data(USairports)
    USA_CC = components(USairports, mode="strong")
    USA_CC$no
    [1] 30
    USA_CC$csize
     [1]  1   1  1  1  1  1  1  1  1  1  2  1  2  1  1  2  1  1  1  1  1  1  1
    [24]  1 723  1  1  1  1  1
    

    大多数机场都属于一个大组件,但也有几个机场属于小组件。在这种情况下,将您的注意力限制在相互连接的 723 个机场上可能是有意义的。

    BigComp = which.max(USA_CC$csize)
    Main_USairports = induced_subgraph(USairports, 
        which(USA_CC$membership == BigComp))
    closeness(Main_USairports)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 2018-05-25
      相关资源
      最近更新 更多