簡體   English   中英

Igraph 的 R 度集中度 - 星形圖未評估為 1

[英]Degree Centralization in Igraph for R - star graph not evaluated as 1

我正在使用 R 中的 igraph 處理一系列無向小圖。我對圖級度集中化感興趣,並且正在使用 igraph 中的 centr_degree 函數。

但是,我注意到即使在“星形”圖(一個節點連接到所有其他節點,沒有其他連接)的情況下,代碼也不會返回 1 的度集中度,盡管從 Freeman 1979 看來它們應該如此。 我是否遺漏了應該如何計算的內容?

弗里曼 1979: http : //leonidzhukov.net/hse/2014/socialnetworks/papers/freeman79-centrality.pdf

我一直在處理同樣的問題。 我認為計算中心化的代碼有問題,但我認為它是用 C 編寫的(R 函數使用“.Call”)而不是 R,所以看不到它。 下面的代碼生成一個星形圖並計算 igraph 的中心化(不是 1)。

> adj = rbind(c(0,1,0,0,0),c(1,0,0,0,0),c(1,0,0,0,0),c(1,0,0,0,0),c(1,0,0,0,0))
> h = graph.adjacency(adj,mode="undirected")
> plot(h) # check star graph
> centralization.degree(h)
$res
[1] 4 1 1 1 1

$centralization
[1] 0.6

$theoretical_max
[1] 20

> centralize(degree(h),normalize=FALSE)
[1] 12

我認為實際問題可能是理論最大值的逐一錯誤。 手動計算它給你 3 * 4 = 12,這與使用 centralize(normalize=FALSE) 一致,但來自 centralization.degree 的 R 輸出似乎是 4 * 5 = 20。為了解決你的問題,我建議使用下面的代碼自己規范化。

> newCentralization = function(h) centralize(degree(h),normalize=FALSE)/((vcount(h)-1)*(vcount(h)-2))
> newCentralization(h)
[1] 1

> sessionInfo()
R version 3.3.0 (2016-05-03)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252    LC_MONETARY=English_Australia.1252
[4] LC_NUMERIC=C                       LC_TIME=English_Australia.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] igraph_1.0.1

loaded via a namespace (and not attached):
[1] magrittr_1.5

這是因為默認選項是loops=TRUE 星形圖只有在我們不考慮循環的情況下才能實現最大的中心化。 如果我們考慮它們,最大集中圖是這樣的:

在此處輸入圖片說明

簡而言之,您可能需要centr_degree(g, loops=F)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM