我正在试验用powerlaw模块来拟合经验数据的幂律。我创建了以下数据,这些数据遵循指数2的幂律分布:
x = range(1,1000)
y = []
for i in x:
y.append(i**(-2))
我期望拟合幂律有一个指数为2。然而,得到的指数与理论值有很大的偏差:
fitted_pl = powerlaw.Fit(y)
fitted_pl.alpha
Out[115]: 1.4017584065981563
你能告诉我为什么会发生这种事吗,或者指出我在这里做错了什么?
谢谢您的好意回答!
发布于 2013-08-12 06:43:41
正如@DSM所指出的,powerlaw模块处理的是拟合幂律分布所得出/生成的值的指数,而不是拟合回归。为了帮助那些可能有类似困惑的人,下面是如何验证指数拟合的方法:
## use a proper power law random number generator (or code your own)
from networkx.utils import powerlaw_sequence
pl_sequence = powerlaw_sequence(1000,exponent=2.5)
fitted_pl = powerlaw.Fit(pl_sequence)
fitted_pl.alpha
Out[73]: 2.4709012785346314 ##close enough
https://stackoverflow.com/questions/18167669
复制相似问题