-1

我正在使用 Gephi、Python 和 R 中的一些图形模型。直到偶然我决定比较他们给我的结果。 所以我遇到了以下问题。当用 Gephi 和 R(使用 igraph 和 statnet)计算中介中心性时,这三个给了我不同的结果(igraph 和 statnet,差别不大)。由于我在一个非常大的网络工作,所以我决定采取一个小型网络并手动进行计算,如下图所示(取自:在此处输入链接描述

在此处输入图像描述

使用邻接表:

source  target
1   2
1   3
1   4
2   3
3   4
4   5
4   6
5   6
5   8
5   7
6   8
6   7
7   8
7   9

然后看看我扔了 R 和 Gephi 的结果。我发现 Gephi 给了我同样的结果:

在此处输入图像描述

但是 R(对于 igraph 和 statnet 都不是)。

> library('igraph')
> data <- read.csv(file.choose())
> set.seed(123456)
> graph_1<-graph.data.frame(data)
> summary(graph_1)
IGRAPH cfa51db DN-- 9 14 -- 
+ attr: name (v/c)

> graph_1
IGRAPH cfa51db DN-- 9 14 -- 
+ attr: name (v/c)
+ edges from cfa51db (vertex names):
 [1] 1->2 1->3 1->4 2->3 3->4 4->5 4->6 5->6 5->8 5->7 6->8 6->7 7->8 7->9

> betweenness(graph_1)
 1  2  3  4  5  6  7  8  9 
 0  0  6 15  6  6  6  0  0

> detach("package:igraph", unload=TRUE)
> library(statnet)
> library(intergraph)
> graph_2<-asNetwork(graph_1)

> betweenness(graph_2)
[1]  0  0  6 15  6  6  6  0  0

我是通过运行我的 R 代码做错了什么,还是使用另一种算法来计算中介中心性? 谢谢 :)

4

1 回答 1

1

你正在计算两个不同的东西。

首先,为了使您的示例可重现,这里是我们所有人都可以用来制作您的示例的代码。

library(igraph)
EL = matrix(c(1,2, 1,3, 1,4, 2,3, 3,4, 4,5, 4,6, 5,6, 5,8, 
    5,7, 6,8, 6,7, 7,8, 7,9), ncol=2, byrow=T)
graph_1 = graph_from_edgelist(EL)

现在,使用您的代码,我得到了相同的结果。

betweenness(graph_1)
[1]  0  0  6 15  6  6  6  0  0

然而,

betweenness(graph_1, directed=F)
[1]  3  0  3 15  6  6  7  0  0

给出的结果与您从 Gephi 获得的结果相同。

帮助页面?betweenness说:

定向
逻辑,在确定最短路径时是否应考虑定向路径。

显然,Gephi 的默认值与 R 不同。

于 2018-10-05T14:32:52.097 回答