我想用它R
来测试网络的度数分布是否表现得像具有无标度属性的幂律。尽管如此,我读过不同的人以许多不同的方式这样做,其中一个令人困惑的地方是应该在模型中使用的输入。
例如,Barabasi 建议将幂律拟合到度数的“互补累积分布”(参见第 4 章的高级主题 3.B,图 4.22)。但是,我看到人们将幂律拟合到图形的度数(通过 获得igraph::degree(g)
),我还看到其他人将幂律拟合到度数分布,通过 igraph::degree_distribution(g, cumulative = T)
正如您在下面可重现的示例中看到的那样,这些选项给出了非常不同的结果。哪一个是正确的?以及如何从图表中获得“度数的互补累积分布”,以便拟合幂律?
library(igraph)
# create a graph
set.seed(202)
g <- static.power.law.game(500, 1000, exponent.out= 2.2, exponent.in = 2.2, loops = FALSE, multiple = T)
# get input to fit power-law.
# 1) degrees of the nodes
d <- degree(g, v = V(g), mode ="all")
d <- d[ d > 0] # remove nodes with no connection
# OR ?
# 2) cumulative degree distribution
d <- degree_distribution(g, mode ="all", cumulative = T)
# Fit power law
fit <- fit_power_law(d, impelementation = "R.mle")