在 Stata 中查找社交网络组件

Find social network components in Stata

[我从一个单独的 post 中复制了下面示例的一部分,并根据我的特定需要进行了更改]

pos_1    pos_2
  2        4
  2        5
  1        2
  3        9
  4        2
  9        3

上面读作person_2接person_4,...,person_4接person_2,person_9接至 person_3.

我想创建第三个分类 [编辑] 变量组件,它让我知道观察到的 link 是否是该网络中连接组件(子网)的一部分。在这种情况下,网络中有两个连通分量:

pos_1    pos_2    component
  2        4        1
  2        5        1
  1        2        1
  3        9        2
  4        2        1
  9        3        2

组件 1 中的所有节点都相互连接,但不连接到组件 2 中的节点,反之亦然。有没有办法在 Stata 中生成这个组件变量?我知道有替代程序可以执行此操作,但如果我可以将它集成到 Stata 中,我的代码会更加无缝。

如果您 reshape 数据为长格式,您可以使用 group_id(来自 SSC)来获得您想要的:

clear
input pos_1    pos_2
  2        4
  2        5
  1        2
  3        9
  4        2
  9        3
end

gen id = _n
reshape long pos_, i(id) j(n)

clonevar comp = id
list, sepby(comp)

group_id comp, match(pos)

reshape wide pos_, i(id) j(n)

egen component = group(comp)
list