Gephi和R中的介数分析

Analysis of betweenness in Gephi and R

我正在尝试从介数的角度分析网络(悲惨世界)。

一张网是:

graph
[
  node
  [
    id 0
    label "Myriel"
    maincharacter 0
  ]
  node
  [
    id 1
    label "Napoleon"
    maincharacter 0
  ]
  node
  [
    id 2
    label "MlleBaptistine"
    maincharacter 0
  ]
  node
  [
    id 3
    label "MmeMagloire"
    maincharacter 0
  ]
  node
  [
    id 4
    label "CountessDeLo"
    maincharacter 0
  ]
  node
  [
    id 5
    label "Geborand"
    maincharacter 0
  ]
  node
  [
    id 6
    label "Champtercier"
    maincharacter 0
  ]
  node
  [
    id 7
    label "Cravatte"
    maincharacter 0
  ]
  node
  [
    id 8
    label "Count"
    maincharacter 0
  ]
  node
  [
    id 9
    label "OldMan"
    maincharacter 0
  ]
  node
  [
    id 10
    label "Labarre"
    maincharacter 0
  ]
  node
  [
    id 11
    label "Valjean"
    maincharacter 1
  ]
  node
  [
    id 12
    label "Marguerite"
    maincharacter 0
  ]
  node
  [
    id 13
    label "MmeDeR"
    maincharacter 0
  ]
  node
  [
    id 14
    label "Isabeau"
    maincharacter 0
  ]
  ...

我在 Gephi 中打开网络,并使用 "centrality Betweenness" 属性制作了更大的节点。 这样做我得到 id 11 的节点是具有更大介数的节点。

然后我尝试在 R 中做同样的事情。 所以我 运行 这些命令:

> net <- read.graph("./dataset/lesmiserables.gml", format = c("gml"))

> bet <- betweenness(net, normalized = TRUE)
> print(bet)
 [1] 0.1768421053 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000
 [9] 0.0000000000 0.0000000000 0.0000000000 0.5699890528 0.0000000000 0.0000000000 0.0000000000 0.0000000000
[17] 0.0406293482 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.1296445410
[25] 0.0290024187 0.0749012212 0.0237962535 0.0543315597 0.0264912281 0.0080409357 0.0000000000 0.0086402950
[33] 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0069254386
[41] 0.0000000000 0.0114875507 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0263157895
[49] 0.1651125024 0.0202106216 0.0002172097 0.0475989279 0.0003508772 0.0000000000 0.0000000000 0.1320324886
[57] 0.0000000000 0.0276612364 0.0425533568 0.0012501456 0.0000000000 0.0012501456 0.0052670299 0.0021854883
[65] 0.0307536502 0.0021854883 0.0001503759 0.0000000000 0.0049603840 0.0049603840 0.0048618042 0.0038738299
[73] 0.0000000000 0.0000000000 0.0000000000 0.0004385965 0.0000000000
> max(bet)
[1] 0.5699891

> betValjean <- betweenness(net, v = 11, normalized = TRUE)
> print(betValjean)
[1] 0

为什么在Gephi中介数最高的节点是id为11的节点,而在R中介数最高的节点是id为12的节点?[​​=12=]

为什么在 R 中,id 为 11 的节点的介数 = 0?

我不明白我哪里错了..

谢谢大家

您的问题是,当您阅读 igraph 中的图表时,顶点的 ID 不一定对应于您文件中的 ID。你没有具体说明你是如何阅读 R 中的信息的,但假设你已经做了这样的事情,

net <- read.graph("lesmiserables.gml", format="gml")

并且假设我在 google 中找到了与您相同的文件,实际上当我计算节点 11 的介数时我没有得到预期的结果,

> betValjean <- betweenness(net, v = 11, normalized = TRUE)
> betValjean
[1] 0

但是节点 11 不是冉阿让,

> get.vertex.attribute(net, "label", 11)
[1] "Labarre"

你可以这样得到你想要的节点,

> V(net)[label == "Valjean"]
+ 1/77 vertex:
[1] 12

然后是这 3 种方式中任何一种的介数:

> betweenness(net, v =V(net)[label == "Valjean"], normalized = TRUE)
[1] 0.5699891
> betweenness(net, v = V(net)[id == 11], normalized = TRUE)
[1] 0.5699891
> betweenness(net, v = 12, normalized = TRUE)
[1] 0.5699891

希望对您有所帮助。