0

我正在使用一个需要考虑数千个节点和边缘的大型网络。网络的表示可以在前面的问题中找到树状图中的连接节点数

但是,在计算网络中的节点数时,我在尝试计算加在一起以通向下一个级别的节点数时遇到了问题。例如,

library(tidygraph)
library(ggraph)
library(tidyverse)

parent_child <- tribble(
  ~parent, ~child,
  "a", "b",
  "b", "c",
  "b", "d",
  "d", "e",
  "d", "f",
  "d", "g",
  "g", "z"
)

# converted to a dendrogram ------------

parent_child %>%
  as_tbl_graph() %>% 
  ggraph(layout = "dendrogram") +
  geom_node_point() +
  geom_node_text(aes(label = name),
                 vjust = -1,
                 hjust = -1) +
  geom_edge_elbow()

# Table of calculations ----------------------

parent_child %>% 
  as_tbl_graph() %>% 
  activate(nodes) %>% 
  mutate(n_community_out = local_size(order = graph_size(),
                                      mode = "out",
                                      mindist = 0)) %>% 
  as_tibble()

# Final Output Table -----------------------
# A tibble: 8 x 2
  name  n_community_out
  <chr>           <dbl>
1 a                   8
2 b                   7
3 d                   5
4 g                   2
5 c                   1
6 e                   1
7 f                   1
8 z                   1

上表显示了从起始节点出来的连接节点的数量。但是,为什么某些级别不能加起来到下一个级别呢?(节点 d + c != 节点 b)我一直试图向同事解释这一点,但无法充分解释网络正在计数的内容以及为什么将节点连接从一个位置添加到下一个位置不会导致下一个更高等级。

这个问题在拥有数千个节点的网络中更加严重,并且难以展示。无论如何,有谁知道如何解释为什么节点连接不加起来到下一个级别?任何帮助是极大的赞赏。

4

1 回答 1

0

您遇到一次性错误。在比较它连接的节点数时,您需要减去一个,因为您通过将节点本身包括在连接的节点计数中来进行计数。

对于你的例子

Node D + Node E ?= Node B

你的表给出了值

...
2 b                   7
3 d                   5
...
5 c                   1
...

您有意设置mindist = 0,以便在计算来自父节点的节点时,包括该节点本身。

这是查看方向性的快速视觉效果。

library(tidygraph)
library(ggraph)
library(tidyverse)

parent_child <- tribble(
  ~parent, ~child,
  "a", "b",
  "b", "c",
  "b", "d",
  "d", "e",
  "d", "f",
  "d", "g",
  "g", "z"
)

plot(as_tbl_graph(parent_child))

reprex 包于 2020-11-25 创建(v0.3.0)

节点 C 不能指向其他任何东西,但由于mindist = 0,它将计算自己并使其社区平等1,就像它在您的表中一样。

节点 D 可以访问 4 个节点(e, f, g, z),当我们计算它自己时,它的本地邻域总共有 5 个节点。

同样,节点 B 将计算它连接到的所有节点,但也会计算它自己

因此,要比较实际计数,您需要减去一个。

Node D + Node E
=> 5 + 1
=> 6

Node B = 7
=> 7 - 1
=> 6
于 2020-11-26T03:40:50.733 回答