кластерная walktrap возвращает три сообщества, но при построении графика они все друг на друга, без видимой кластеризации

Я слежу за учебными пособиями по документации и даже лекционными учебниками шаг за шагом. Но почему-то результат моего заговора выглядит так: введите описание изображения здесь

Выход не имеет для меня никакого смысла. В этом текущем сюжете явно нет структуры или сообществ, так как вы можете видеть, что все больше кругов перекрываются. Разве это не должно в этом случае возвращать только одно сообщество? Кроме того, модульность моей сети составляет ~ 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 ответ


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

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

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)

Красные края - межсоединения, а черные -

введите описание изображения здесь


Есть идеи?

10000