我正在尝试使用powerlaw模块将幂律拟合到经验数据.我创建了以下数据,这些数据遵循指数2的幂律分布:
x = range(1,1000)
y = []
for i in x:
    y.append(i**(-2))
Run Code Online (Sandbox Code Playgroud)
我期望拟合幂定律的指数为2.然而,得到的指数偏离理论值很多:
    fitted_pl = powerlaw.Fit(y)
    fitted_pl.alpha
    Out[115]: 1.4017584065981563
Run Code Online (Sandbox Code Playgroud)
你能告诉我为什么会这样,或者指出我在这里做错了什么?
谢谢你的回答!
Mos*_* Xu 10
正如@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
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           5280 次  |  
        
|   最近记录:  |