3

我想用它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")
4

1 回答 1

2

好吧,这里的问题是您在这里有 2 个不同的统计数据。一个节点的度数表示它与其他节点有多少连接。度数分布是这些度数在网络上的概率分布。

对我来说,应用度数分布没有多大意义,igraph::fit_power_law因为度数分布在一定程度上已经是幂律了。

但是,不要忘记,igraph::fit_power_law比 implementation 参数有更多的选项,这将导致不同的事情,这取决于你“喂它”的是什么。

于 2017-10-26T13:17:24.290 回答