用R计算一个顶点(节点)的局部聚类系数(手工)
Calculate local clustering coefficient of a vertex (node) with R (by hand)
我找到了一个展示如何手动计算 LCC 的示例(见图)。
如何在 R 中复制这些步骤?重点是找到 "Actual number of links among Neighbors"(中间步骤)
我最好手算一下
*igraph包有提供这个数字吗?
示例邻接矩阵:
matrix(data = c(0,1,0,1,1,0,0,1,1,1,0,1,1,0,1,0), ncol = 4)
所有这些都可以在 igraph
中完成。很高兴你举了一个例子,
但由于图是完全连接的,所有顶点的 LCC=1。我决定
使用稍微复杂一点的图表。我将通过 "by hand"
顶点 1 的详细部分。
示例图
library(igraph)
set.seed(1234)
g = erdos.renyi.game(5, 0.7)
LO = matrix(c(0,2,1,1,1,0,0,-1,1,0), nrow=5, ncol=2)
plot(g, layout=LO)
首先,是的,igraph 有一个用于 LCC 的内置函数 transitivity
。
对于我的示例图,您可以使用
transitivity(g, type="localundirected")
[1] 0.6666667 0.0000000 0.3333333 0.3333333 0.6666667
但是你的问题的主要部分是手算。
您唯一需要从图中得到的东西是第一个
两个步骤 - 度中心性和邻居之间的实际联系。
度中心性 由 degree
函数给出
degree(g)
[1] 3 2 3 3 3
degree(g, 1) ## Vertex 1 only
[1] 3
正如您在问题中所建议的,唯一具有挑战性的部分是
邻居之间的实际联系。你可以通过使用子图来得到这个
由一个点的邻居引起,然后检查边的数量。
所以对于顶点 1,我们得到
ecount(induced_subgraph(g, neighbors(g, 1)))
[1] 2
这是顶点 1 的完整计算
(DC = degree(g, 1))
[1] 3
>(ALAN = ecount(induced_subgraph(g, neighbors(g, 1))))
[1] 2
(MaxPoss = DC*(DC-1)/2)
[1] 3
(LCC = ALAN/MaxPoss)
[1] 0.6666667
这与上面给出的 transitivity
一致。
我找到了一个展示如何手动计算 LCC 的示例(见图)。
如何在 R 中复制这些步骤?重点是找到 "Actual number of links among Neighbors"(中间步骤)
我最好手算一下
*igraph包有提供这个数字吗?
示例邻接矩阵:
matrix(data = c(0,1,0,1,1,0,0,1,1,1,0,1,1,0,1,0), ncol = 4)
所有这些都可以在 igraph
中完成。很高兴你举了一个例子,
但由于图是完全连接的,所有顶点的 LCC=1。我决定
使用稍微复杂一点的图表。我将通过 "by hand"
顶点 1 的详细部分。
示例图
library(igraph)
set.seed(1234)
g = erdos.renyi.game(5, 0.7)
LO = matrix(c(0,2,1,1,1,0,0,-1,1,0), nrow=5, ncol=2)
plot(g, layout=LO)
首先,是的,igraph 有一个用于 LCC 的内置函数 transitivity
。
对于我的示例图,您可以使用
transitivity(g, type="localundirected")
[1] 0.6666667 0.0000000 0.3333333 0.3333333 0.6666667
但是你的问题的主要部分是手算。 您唯一需要从图中得到的东西是第一个 两个步骤 - 度中心性和邻居之间的实际联系。
度中心性 由 degree
函数给出
degree(g)
[1] 3 2 3 3 3
degree(g, 1) ## Vertex 1 only
[1] 3
正如您在问题中所建议的,唯一具有挑战性的部分是 邻居之间的实际联系。你可以通过使用子图来得到这个 由一个点的邻居引起,然后检查边的数量。 所以对于顶点 1,我们得到
ecount(induced_subgraph(g, neighbors(g, 1)))
[1] 2
这是顶点 1 的完整计算
(DC = degree(g, 1))
[1] 3
>(ALAN = ecount(induced_subgraph(g, neighbors(g, 1))))
[1] 2
(MaxPoss = DC*(DC-1)/2)
[1] 3
(LCC = ALAN/MaxPoss)
[1] 0.6666667
这与上面给出的 transitivity
一致。