Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将幂律拟合到Python中的经验数据_Python_Power Law - Fatal编程技术网

将幂律拟合到Python中的经验数据

将幂律拟合到Python中的经验数据,python,power-law,Python,Power Law,我正在尝试用这个模块来拟合经验数据的幂律。我创建了以下数据,该数据遵循指数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 你能告诉我为什么会这样,或者指出我做错了什么吗 谢

我正在尝试用这个模块来拟合经验数据的幂律。我创建了以下数据,该数据遵循指数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
你能告诉我为什么会这样,或者指出我做错了什么吗


谢谢你友好的回答

正如@DSM所指出的,幂律模块处理的是将指数拟合到从幂律分布中提取/生成的值,而不是拟合回归。为了帮助可能有类似困惑的人,以下是验证指数拟合的方法:

## 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

当你写
y.append(x**(-2))
的时候,我想你的意思是
y.append(I**(-2))
@Brionius谢谢你指出了这一点,更正了。你是不是把直线
y(x)=kx^(-a)
的回归与将指数拟合到概率分布
p(x)~(a-1)x^(-a)
得出的值混淆了?[k->a更改是有意的。
powerlaw
模块解决了第二个问题。@DSM,你完全正确!我混淆了这两个截然不同的任务。非常感谢您指出这一点!