我试图计算我的网络的平均路径长度,我面临以下问题。我过去使用过来自average.path.length
包的igraph
。这一次,我决定选择另一条路线:我想使用distances
函数(也来自包igraph
),然后找到所有距离的平均值。我的理解是,distances
函数只是计算图的顶点之间成对的最短路径,因此mean(distances(graph))
应该返回平均路径长度。然而,当我尝试使用这种方法时,我注意到我得到了average.path.length
和mean_distance
的指导应用程序所提供的不同值。最初,我认为这个问题是由一些孤立的节点引起的,但是当我在一个完全连接的玩具图上检查它时,我也遇到了同样的问题。
下面是一个可重复的例子:
toy.graph <- graph.formula(1-2,1-3,1-5,2-5,3-5,3-6,4-6)
mean_distance(toy.graph)
[1] 1.866667
average.path.length(toy.graph)
[1] 1.866667
mean(distances(toy.graph))
[1] 1.555556
我知道mean_distance
和distances
使用了不同的算法,但是在这样一个小而简单的模型上,这种差异应该如此大吗?我遗漏了什么?
发布于 2017-02-20 19:30:11
我认为你得到了一个不同的答案,因为你用的是整个距离矩阵的平均值,而不是distance(toy.graph)
的下半个上三角,它包括对角线上的0,它降低了距离。
library(igraph)
toy.graph <- graph.formula(1-2,1-3,1-5,2-5,3-5,3-6,4-6)
plot(toy.graph)
mean_distance(toy.graph)
#[1] 1.866667
average.path.length(toy.graph)
#[1] 1.866667
mean(distances(toy.graph))
#[1] 1.555556
mean(distances(toy.graph)[lower.tri(distances(toy.graph))])
#[1] 1.866667
https://stackoverflow.com/questions/42352578
复制相似问题