手动计算亲密度指标并与R中igraph包进行比较

3

我正在尝试使用R中的igraph包计算图的紧密度。用于计算的示例数据如下:

1 2
1 5
2 3    
5 4
4 6
2 5
3 4

当我手动计算时,结果不匹配。这是由igraph提供的closeness的定义:
Closeness是到/从图中所有其他顶点的最短路径的平均长度的倒数。
以下是我如何手动计算节点1的closeness:
1. 首先,我计算从节点1到每个其他节点的最短路径: - 节点1可以在1步内到达节点2,这也是最短路径。 - 节点1可以在1步内到达节点5,这也是最短路径。 - 节点1可以在3步内到达节点6,依此类推。 2. 然后,我取这些最短路径的平均值: - (1 (1→2) + 1 (1→5) + 2 (1→3) + 2(1→4) + 3 (1→6))/5 = (1+1+2+2+3)/5 = 9/5 3. 最后,我对其求倒数,得到closeness值为0.555。
当我使用igraph软件包中的R代码运行closeness方法时,我在节点1的计算结果为0.1111。
有人能帮我找出在计算中漏掉了什么吗?

它很奇怪。?closeness 给出了您提供的文字定义,但帮助页面上的公式是 1/sum( d(v,i), i != v),这相当于 0.1111 的值,但它是倒数和而不是倒数平均值。也许应该给维护者发一封电子邮件? - Gavin Kelly
@GavinKelly 谢谢你指出来。我已经给维护者发了邮件。 - Janani
2
igraph 手册中的文本是错误的。应该是“通过总长度的倒数”,而不是“通过平均长度的倒数”。 - Gabor Csardi
2个回答

1

我已经在评论中写过了,但是为了得到答案。igraph手册中的文本是错误的。它应该是通过总长度的倒数而不是平均长度的倒数


0

实际上这个定义并不是错误的,它是一种与接近度定义有关的另一种形式。请参考enter link description here。"总长度的倒数"是Sabidussi的接近度定义。在第226页,Freeman说:

"这一指标取决于计算网络中的点的数量。因此,我们不能将来自不同大小图形的点的(closeness)值进行比较"

可以通过遵循Beauchamp对接近度的定义来解决这个问题,即采用平均长度的倒数。在这种情况下,我们在测量平均值时采用n-1而不是n。还有一种基于Beauchamp定义的接近度度量实现在statnet R包中可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接