Причина, по которой взаимность сети равна 0 при использовании igraph в R - PullRequest
2 голосов
/ 20 июня 2020

Я пытаюсь вычислить взаимность сети, содержащей большое количество ребер и узлов. Я не знаю, почему взаимность сети равна 0, хотя нет изолированного узла со степенью 0. Что может быть другой причиной того, что взаимность равна 0, за исключением изолированных узлов, влияющих на возможность подключения в сети. взаимность сети не должна быть 0, поскольку это связный граф. Я использую библиотеку igraph в R (R версии 4.0.0). Ниже указан код

graph<- read.csv("data.csv")
bt_graph=graph_from_data_frame(subset(graph, select=c(source,target)),directed=TRUE)
bt_conn<- delete.vertices(bt_graph,which(degree(bt_graph)==0))  #deleting nodes with 0 degree
reciprocity_bt <- reciprocity(bt_conn, mode = "default")

1 Ответ

1 голос
/ 20 июня 2020

Обнуление взаимности не означает отключение. Это означает, что нет двусторонних соединений. Вот краткая цитата из статьи в Википедии о взаимности

С этим определением r = 1 соответствует чисто двунаправленной сети, а r = 0 для чисто однонаправленного.

Вот очень маленький пример.

library(igraph)

EL <- matrix( c(1,2,1,3), nc = 2, byrow = TRUE)
g = graph_from_edgelist(EL)
reciprocity(g)
[1] 0
plot(g)

Связный граф с нулевой взаимностью

Нет ссылок, которые go A -> B -> A, поэтому взаимность равна нулю.

...