手动计算贴近度测量并与R中的igraph包进行比较

时间:2014-04-30 13:01:44

标签: r graph igraph

我试图使用R中的igraph包来计算图的接近程度。我用于计算的样本数据如下,

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

当我手动执行此操作时,结果不匹配。这是igraphcloseness

给出的定义
  

接近度是最短路径的平均长度的倒数   来自/来自图中的所有其他顶点

以下是我为节点1 手动计算closeness的方式:

  1. 首先,我计算从节点1 到其他节点的最短路径:

    • 节点1 可以在1步中到达节点2 ,这也是最短的路径。

    • 节点1 可以在1步中到达节点5 ,这也是最短的路径。

    • 节点1 可以分三步到达节点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. 最后我反过来,给出接近值0.555

  4. 当我从closeness包中运行R中的igraph方法时,我为节点1 获得的结果为0.1111。

    有人可以帮我找到我在计算中遗漏的内容吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

实际上这个定义并没有错。它是接近定义的另一种形式。请参考enter link description here。 '反向总长度'是Sabidussi对亲近的定义。在第226页,弗里曼说

"此度量取决于计算它的网络中的点数。因此,我们不能比较从不同大小的图表中绘制的点的(接近度)值#34;

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