如果您从 R 中使用 igraph,请使用此选项
fit_power_law {igraph} | R 文档 |
fit_power_law
将幂律分布拟合到数据集。
fit_power_law(
x,
xmin = NULL,
start = 2,
force.continuous = FALSE,
implementation = c("plfit", "R.mle"),
...
)
x |
要拟合的数据,一个数值向量。对于 ‘ |
xmin |
数值标量,或 |
开始 |
数值标量。用于最小化函数的指数的初始值,用于 ‘ |
force.continuous |
逻辑标量。是否强制 ‘ |
implementation |
字符标量。要使用的实现。请参阅下面的详细信息。 |
... |
附加参数,传递给最大似然优化函数, |
此函数将幂律分布拟合到包含分布样本的向量(当然,假定遵循幂律)。在幂律分布中,通常假设 P(X=x)
与 x^{-alpha}
成正比,其中 x
是一个正数,\alpha
大于 1。在许多实际情况下,幂律行为仅在阈值 x_{min}
以上才开始生效。此函数的目标是确定 \alpha
(如果给定 x_{min}
),或者确定 x_{min}
和 \alpha
的对应值。
fit_power_law
提供两种最大似然实现。如果 implementation
参数为 ‘R.mle
’,则应用 BFGS 优化(请参阅 mle)算法。附加参数将传递给 mle 函数,因此可以更改优化方法和/或其参数。此实现不能拟合 x_{min}
参数,因此如果要执行此操作,请使用 ‘plfit
’ 实现。
‘plfit
’ 实现还使用最大似然原理来确定给定 x_{min}
的 \alpha
;当没有预先给出 x_{min}
时,该算法将尝试找到其最佳值,使得拟合分布和原始样本之间的 Kolmogorov-Smirnov 检验的 p
值最大。该函数使用 Clauset、Shalizi 和 Newman 的方法来计算拟合分布的参数。有关详细信息,请参阅下面的参考文献。
取决于 implementation
参数。如果它是 ‘R.mle
’,则使用类 ‘mle
’ 的对象。它可用于计算置信区间和对数似然。 有关详细信息,请参阅 mle-class
。
如果 implementation
为 ‘plfit
’,则结果是具有以下条目的命名列表
continuous |
逻辑标量,指示拟合的幂律分布是连续的还是离散的。 |
alpha |
数值标量,拟合幂律分布的指数。 |
xmin |
数值标量,幂律分布的拟合最小值。换句话说,仅使用输入向量中大于 |
logLik |
数值标量,拟合参数的对数似然。 |
KS.stat |
数值标量,Kolmogorov-Smirnov 检验的检验统计量,该检验将拟合分布与输入向量进行比较。分数越小表示拟合越好。 |
KS.p |
数值标量,Kolmogorov-Smirnov 检验的 p 值。小 p 值(小于 0.05)表示该检验拒绝了原始数据可能来自拟合幂律分布的假设。 |
Tamas Nepusz ntamas@gmail.com 和 Gabor Csardi csardi.gabor@gmail.com
幂律、帕累托分布和齐普夫定律,M. E. J. Newman,Contemporary Physics, 46, 323-351, 2005。
Aaron Clauset, Cosma R .Shalizi and Mark E.J. Newman: Power-law distributions in empirical data. SIAM Review 51(4):661-703, 2009.
# This should approximately yield the correct exponent 3
g <- barabasi.game(1000) # increase this number to have a better estimate
d <- degree(g, mode="in")
fit1 <- fit_power_law(d+1, 10)
fit2 <- fit_power_law(d+1, 10, implementation="R.mle")
fit1$alpha
stats4::coef(fit2)
fit1$logLik
stats4::logLik(fit2)