Кластерная обходная дорожка возвращает три сообщества, но при построении графика все они располагаются друг над другом без видимой кластеризации. - PullRequest
0 голосов
/ 09 октября 2018

Я следовал учебным пособиям и даже пошаговым лекциям.Но по какой-то причине вывод моего графика выглядит так: enter image description here

Вывод не имеет никакого смысла для меня.Очевидно, что в этом текущем сюжете нет структуры или сообществ, так как вы можете видеть, что большие круги перекрываются.Разве это не должно в этом случае вернуть только одно сообщество?Кроме того, модульность моей сети составляет ~ 0,02, что опять же указывает на отсутствие структуры сообщества.Но почему он возвращает 3 сообщества?

это мой код: (точно такой же, как в документации, с другим набором данных)

m <- data.matrix(df)
g <- graph_from_adjacency_matrix(m, mode = "undirected")
#el <- get.edgelist(g)

wc <- cluster_walktrap(g)
modularity(wc)
membership(wc)
plot(wc,g)

мой набор данных выглядит как матрица смежности 500x500 вформа csv с 1-500 столбцами и именами индексов, соответствующими человеку.

Я попытался понять класс сообщества и использовать различные типы переменных для сюжета, например, membership(wc)[2] и т. д. Я думаю, чточто окраска просто неправильная, но ничего, что я до сих пор пробовал, похоже, не решило проблему.

1 Ответ

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

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

Если вы разделяете сообщества на графике (используя код @ G5W (igraph) Сгруппированный макет на основе атрибута ), вы можете увидеть различные группы.

set.seed(4321)
g <- sample_gnp(500, .25)

plot(g, vertex.label = '', vertex.size = 5)
wc <- cluster_walktrap(g)
V(g)$community <-  membership(wc)
E(g)$weight = 1

g_grouped = g

for(i in unique(V(g)$community)){
  groupV = which(V(g)$community == i)
  g_grouped = add_edges(g_grouped, combn(groupV, 2), attr=list(weight = 2))
}

l <- layout_nicely(g_grouped)

plot( wc,g, layout = l, vertex.label = '', vertex.size = 5, edge.width = .1)

Красные края - это межобщинные соединения, а черные края - это внутриобщинные границы

enter image description here

...