我使用evcent来确定我的顶点的EC。我注意到,对于度数为0的顶点,可能会得到正值。这应该不会发生!这是一个数值问题吗?
我用过:
ecs <- evcent(g)$vector
另外,为了查看它是否存在数值问题,我试图包含一个命名列表来增加ARPACK算法中的迭代次数:
namedList<-list()
namedList["iter"]<-100
ecs <- evcent(g, options=namedList)$vector
这并没有改变迭代次数。那么,如果这是一个数值问题,或者我对理论的理解是错误的,如果这是一个数值问题,如何改变迭代次数,你能否回答。我想我可以根据学位来纠正它。
这是一个可重复的例子:
> V(temppg)
Vertex sequence:
[1] 1 2 3 4 5 6 7 8 9 10 11
> E(temppg)
Edge sequence:
[1] 3 -- 2
[2] 4 -- 2
[3] 5 -- 2
[4] 6 -- 2
[5] 7 -- 2
[6] 8 -- 2
[7] 9 -- 2
[8] 10 -- 2
[9] 4 -- 3
[10] 5 -- 3
[11] 7 -- 3
[12] 8 -- 3
[13] 9 -- 3
[14] 10 -- 3
[15] 5 -- 4
[16] 6 -- 4
[17] 7 -- 4
[18] 8 -- 4
[19] 9 -- 4
[20] 10 -- 4
[21] 11 -- 4
[22] 7 -- 5
[23] 8 -- 5
[24] 9 -- 5
[25] 10 -- 5
[26] 11 -- 5
[27] 9 -- 6
[28] 10 -- 6
[29] 11 -- 6
[30] 8 -- 7
[31] 9 -- 7
[32] 10 -- 7
[33] 9 -- 8
[34] 10 -- 9
[35] 11 -- 9
tempec <- evcent(temppg)$vector
> tempec
[1] 0.0256601 1.0000000 0.7269698 0.6933415 0.5969578 0.8510570 0.8601283 0.8512843
[9] 0.9912620 0.9523037 0.6248307
那么为什么,如果顶点的度数= 0,它的特征向量中心性是否为0.0256601?
答案 0 :(得分:2)
对于断开连接的网络,特征向量中心性是不明确的。
特征向量中心性的基本思想是每个顶点的中心性得分应该与其邻居的中心性得分的总和成比例。很容易理解,同一网络的不同组件中的节点的特征向量中心性得分不能以任何方式相互影响(因为它们之间没有路径)。如果你没有立即看到这一点,试着将同一个连通分量中每个顶点的特征向量中心性得分乘以相同的非零常数 c - 特征向量中心性的方程仍然适用于每个顶点!因此,计算特征向量中心性分数的常用方法是独立计算图的不同连通分量。
在您的情况下,度为零的顶点本身就是一个连通分量。它的中心性得分是什么?一方面,人们可以说它的特征向量中心性得分为零,因为它根本没有邻居。另一方面,人们可以争辩说它的特征向量中心性可以是1或任何其他非负数,因为这个顶点是其自身组件中的最中心(当然也是唯一的)顶点(和我们知道不同组件中的特征向量中心性得分彼此不可比较。)
igraph不关心这一切 - 它只是找到邻接矩阵的特征向量并返回,因为我们从特征向量中心性的定义知道它是邻接矩阵的特征向量。您看到的矢量是一个特征向量。唯一的问题是由于你的网络断开连接,它的邻接矩阵有无限多个特征向量,其中一些可能与你对某些顶点的中心性的直觉不一致(因为你的直觉说零度的顶点应该为零)中心性)。