次のプロット (赤い点) を Python の Zipf 配布 PDF F~x^(-a)に合わせようとしました。を選択a=0.56
してプロットしただけy = x^(-0.56)
で、以下に示す曲線が得られました。
曲線は明らかに間違っています。カーブフィッティングのやり方がわかりません。
次のプロット (赤い点) を Python の Zipf 配布 PDF F~x^(-a)に合わせようとしました。を選択a=0.56
してプロットしただけy = x^(-0.56)
で、以下に示す曲線が得られました。
曲線は明らかに間違っています。カーブフィッティングのやり方がわかりません。
正確に何を探しているのかわかりませんが、モデル (関数) をデータに適合させたい場合は、次を使用しますscipy.optimize.curve_fit
。
from scipy.optimize import curve_fit
from scipy.special import zetac
def f(x, a):
return (x**-a)/zetac(a)
result = curve_fit(f, x, y, p0=[0.56])
p = result[0]
print p
正規化が信頼できない場合は、2 番目のパラメーターb
を追加して、それも適合させます。