2013-08-11 9 views
7

私はpowerlawモジュールを使って実証データにべき乗則をフィッティングすることを実験しています。しかし、結果の指数が理論値から多くのことを外れ、私は2の指数を持つようにフィットべき乗則を期待していPythonの経験的データにべき乗則を適合

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 

なぜこのようなことが起こるのかアドバイスしてください。ここで間違ったことを指摘してください。

ありがとうございました。

+1

(X **( - 2))'、私はあなたが 'yの意味だと思う:同様の混乱があるかもしれない人々を助けるために、以下は、1つのフィッティング指数を確認する方法です。 append(i **( - 2)) ' – Brionius

+0

@Brioniusそれを指摘してくれてありがとう、訂正しました。 –

+1

*確率分布* 'p(x)〜(a-1)x ^( - )から引き出された値に指数を当てはめて、' y(x)= kx^a) '? [k-> aの変更は意図的です。] 'powerlaw'モジュールは2番目の質問に対処します。 – DSM

答えて

8

@DSMが指摘しているように、powerlawモジュールは、回帰を適合させるのではなく、べき乗則の分布から作成/生成された値に指数を当てることを扱います。あなたは `y.appendを書くとき

## 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 
関連する問題