Проблемы с igraph, statnet и GEPHI? - PullRequest
       72

Проблемы с igraph, statnet и GEPHI?

0 голосов
/ 05 октября 2018

Я работаю с некоторыми моделями графов в 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, и для статнета нет).

> 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-код или он использует другой алгоритм для вычисления центральности промежуточности? Спасибо:)

1 Ответ

0 голосов
/ 05 октября 2018

Вы вычисляете две разные вещи.

Во-первых, чтобы сделать ваш пример воспроизводимым, вот код, который все мы можем использовать для создания вашего примера.

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.

...