Igraph Идентификация узлов на основе оценок центральности - PullRequest
0 голосов
/ 07 января 2019

Я использую пакет igraph для анализа сети в этом примере набора данных

structure(list(ï..Column1 = c(NA, NA, NA, NA), Column2 = c(NA, 
NA, NA, NA), Column3 = c(NA, NA, NA, NA), Column4 = c(NA, NA, 
NA, NA), Column5 = structure(c(2L, 1L, 4L, 3L), .Label = c("Eric ", 
"Jim", "Matt", "Tim"), class = "factor"), Column6 = c(NA, NA, 
NA, NA), Column7 = structure(c(1L, 3L, 2L, 3L), .Label = c("Eric", 
"Erica", "Mary "), class = "factor"), Column8 = structure(c(3L, 
2L, 1L, 3L), .Label = c("Beth", "Loranda", "Matt"), class = "factor"), 
    Column9 = structure(c(2L, 3L, 1L, 3L), .Label = c("Courtney ", 
    "Heather ", "Patrick"), class = "factor"), Column10 = structure(4:1, .Label = c("Beth", 
    "Heather", "John", "Loranda "), class = "factor"), Column11 = c(NA, 
    NA, NA, NA), Column12 = c(NA, NA, NA, NA), Column13 = c(NA, 
    NA, NA, NA), Column14 = c(NA, NA, NA, NA), Column15 = c(NA, 
    NA, NA, NA)), class = "data.frame", row.names = c(NA, -4L
))

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

structure(c("Jim", "Eric ", "Tim", "Matt", "Jim", "Eric ", "Tim", 
"Matt", "Jim", "Eric ", "Tim", "Matt", "Jim", "Eric ", "Tim", 
"Matt", "Eric", "Mary ", "Erica", "Mary ", "Matt", "Loranda", 
"Beth", "Matt", "Heather ", "Patrick", "Courtney ", "Patrick", 
"Loranda ", "John", "Heather", "Beth"), .Dim = c(16L, 2L), .Dimnames = list(
    NULL, c("Column5", "value")))

Я пытаюсь вычислить центральность для каждого из узлов в сети, используя этот код (мат - моя матрица списка ребер)

g1=graph_from_edgelist(mat)
degree.cent <- centr_degree(g1, mode = "all")
degree.cent

Мой вывод выглядит примерно так

> degree.cent
$`res`
 [1] 4 1 4 2 4 1 6 1 2 1 2 1 1 1 1

$centralization
[1] 0.1479592

$theoretical_max
[1] 392

Я знаю, что «степень $ res» - это моя оценка центральности, но мне неясно, какие узлы фактически получают эту оценку. Я посмотрел учебник здесь , но все, что он говорит, это первая оценка "узел 1". Там нет указания на то, что узел 1 или простой способ определить, что

1 Ответ

0 голосов
/ 07 января 2019

Во-первых, вы получаете неверные результаты, так как некоторые имена содержат пробелы (Эрик, Мэри, Хизер, ...). Итак, пусть

mat <- gsub(" ", "", mat)
g1 <- graph_from_edgelist(mat)
degree.cent <- centr_degree(g1, mode = "all")

Теперь мы можем извлечь соответствующие имена вершин и объединить их с вашим результатом:

setNames(degree.cent$res, V(g1)$name)
#      Jim     Eric     Mary      Tim    Erica     Matt  Loranda     Beth  Heather 
#        4        5        2        4        1        6        2        2        2 
#  Patrick Courtney     John 
#        2        1        1 
...