2017-06-15 40 views
2

當談到R的網絡分析時,我對igraph比較熟悉,但根本沒有與snaigraph vs sna:一個人可以做得很好,另一個做不到或做得不好?

我的問題是:

  1. 是這兩個庫兼容?即我可否將sna的操作應用於igraph中創建的圖表,反之亦然?

  2. 是否有任務在一個包中比另一個包更有效地執行 ?

  3. 哪個庫有更易於理解的操作範圍?

  4. 總的來說,有沒有什麼強有力的理由可以使用igraphsna來做網絡分析?

ps。這些軟件包是否允許進行多層(多路)網絡分析?

回答

4

我對這兩個軟件包之間的差異有很大的瞭解,igraph更適合網絡的圖論和數學模型,sna更適合於(主要是社交)網絡的統計模型。 igraph(我認爲)的創建者主要有計算機科學背景,而sna人是社會學家和統計學家。我主要工作在sna(以及包含statnet軟件包套件的相關軟件包 - 我處於社會科學領域),但也經常使用igraph,有時也使用相同的腳本。

回答您的具體問題:

1)不,他們不是。 igraph中的許多功能在sna中具有相同的名稱,這會導致衝突。 igraph圖不能在sna函數中使用。包intergraph的創建目的是爲了方便在snaigraph之間切換。所以我可以通過首先傳遞intergraph來發送igraph圖表到sna函數。 sna::evcent(intergraph::asNetwork(g)),假設g是一個igraph網絡。如果在腳本中一起使用兩者,則需要在運行某個功能時專門調用該程序包,或根據需要加載和卸載程序包。

2)根據我的經驗,我沒有發現一個比另一個更有效率。兩者都很好的開發和維護包。我相信igraph更適合大圖 - 它有一些功能被修改以節省在大圖上運行時的計算時間。但我在這裏沒有直接的經驗。雖然我會說igraph在可視化方面通常更好。

3)我會說沒有一個全面性的優勢。兩者都執行所有主要的網絡分析任務(中心性,網絡拓撲)。他們的「更高級」功能有所不同。看到我的一般觀點 - 它們適用於網絡分析中重疊但不同的問題。 sna中有很多東西在igraph(例如(如QAP迴歸[netlm/netlogit]或網絡自相關模型[lnam]),反之亦然(社區檢測功能,例如cluster_fast_greedy)。 sna由許多可兼容的軟件包擴展,這些軟件包可以處理潛在空間模型和指數隨機圖模型。

4)Ceterius paribus,no。對我而言,選擇主要是需求驅動的。如果您對統計推斷感興趣,則需要在sna中工作。否則,igraph一般服務。基於堆棧溢出的問題,igraph似乎更受歡迎,但這當然可能是由於選擇偏差。僅僅因爲這個原因,如果我不需要統計模型網絡,我可能會主要使用igraph。同樣,這兩個軟件包都很棒,服務重疊,但需求稍有不同。

不確定您的意思是「多層網絡分析」,但igraphsnamultiplex網絡一起使用。您當然可以在sna中分析多路複用網絡和多級網絡。 (這裏,多路複用意味着具有各種類型的網絡(例如友誼和建議)以及多層含義的嵌套網絡或來自同一羣體的多個網絡(術語在這一點上有點混淆))。這取決於你想要做的事情,並且經常需要一些爭論,但這可能在一定程度上。

+0

「多層網絡」我想我的意思是指多路複用網絡,其中有不同的層,只有一些節點在不同的層之間是共同的。我現在在問題中澄清了這一點。 @paqmo,這是一個很好的答案,謝謝。 Upvoted!如果我們有更多的貢獻,我會在後面給出答案 –

相關問題