2017-02-20 127 views
0

我正在嘗試計算我的網絡的平均路徑長度,並且遇到以下問題。我過去使用igraph包中的average.path.length。這一次,我決定採取不同的路線:我想使用distances功能(也從包igraph),然後找到所有距離的平均值。我的理解是distances函數只是計算圖形頂點之間的成對最短路徑,因此應該返回平均路徑長度。但是,當我嘗試使用這種方法時,我注意到我得到了average.path.lengthmean_distance的直接應用程序給出的不同值。起初,我認爲問題是由一些孤立節點引起的,但是當我在完全連接的玩具圖上檢查它時,我遇到了同樣的問題。平均距離與igraph中的平均距離

這裏是一個重複的例子:

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_distancedistances而應該區別是在這樣一個小而簡單的模型如此之大?我錯過了什麼?

回答

2

我覺得你得到了不同的答案,因爲你是平均的整個距離矩陣而不是下|上三角的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 
+0

謝謝您對角。這就說得通了。我可以看到對角線會降低平均值。我的網絡定向時,是否應該同時使用較低和較高的三角形?在這種情況下,矩陣不會是對稱的(儘管它在對角線上仍然有0)。 – Justyna

+0

如果你想使用這種方法來處理有向圖,那麼你需要計算圖的「in」和「out」距離,在平均之前刪除「Inf」和對角線。這對於一個簡單的有向圖很有用,但不確定這是多麼普遍 – emilliman5

相關問題