我想使用R
来测试网络的度分布是否表现为具有无标度特性的幂律。尽管如此,我读到过不同的人以许多不同的方式做这件事,一个令人困惑的点是应该在模型中使用的输入。
例如,巴拉巴西建议用幂律来拟合学位的“互补累积分布”(see Advanced Topic 3.B of chapter 4, figure 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")
发布于 2017-10-26 21:17:24
好吧,这里的问题是你有两个不同的统计数据。一个节点的度数显示了它与其他节点的连接数。度分布是这些度在网络上的概率分布。
对我来说,将igraph::fit_power_law
应用于学位分布没有多大意义,因为学位分布在一定程度上已经是幂律。
但是,不要忘记,igraph::fit_power_law
有比实现参数更多的选项,这将导致不同的结果,这取决于您“提供给它的内容”。
https://stackoverflow.com/questions/43769677
复制相似问题