scipy libのleastsqメソッドは、あるデータに曲線をフィットさせます。そしてこの方法は、このデータY値がいくつかのX引数に依存することを意味する。そして、これを実現するために、いくつかの方法がありますscipy最小二乗法による直交回帰フィッティング
Y軸(DY)の曲線とデータ点の間の最小距離を算出し、しかし、私は両方の軸(DY及びDX)で最小限の距離を計算する必要がある場合はどのような計算? 1つの軸の計算を使用するときにここで
はコードのサンプルです:
import numpy as np
from scipy.optimize import leastsq
xData = [some data...]
yData = [some data...]
def mFunc(p, x, y):
return y - (p[0]*x**p[1]) # is takes into account only y axis
plsq, pcov = leastsq(mFunc, [1,1], args=(xData,yData))
print plsq
私は最近scipy.odrライブラリをしようと試み、それが唯一の線形関数のために適切な結果を返します。 y = a * x^bのような他の関数については、間違った結果を返します。これは私がそれを使用する方法です:
def f(p, x):
return p[0]*x**p[1]
myModel = Model(f)
myData = Data(xData, yData)
myOdr = ODR(myData, myModel , beta0=[1,1])
myOdr.set_job(fit_type=0) #if set fit_type=2, returns the same as leastsq
out = myOdr.run()
out.pprint()
これは、望ましくない結果を返し、一部の入力データでは実際には近くにもありません。 ある特別な使用方法がありますが、どうすれば間違っていますか?
scipyのダウンロードは「直交距離の回帰」のためのモジュールを持っている適切なソリューションに私を向ける - あなたが何を必要とするということですか? http://docs.scipy.org/doc/scipy/reference/odr.html –
はい、この問題を解決するようですが、試してみると、leastsqメソッドと同じ結果が返されます。私はドキュメントに記載されている例を辿り、必要に応じて動作しません。いくつかの実例がありますか? – Vladimir
私はそれを試してみたところ、結果は似ていましたが、同じではないことがわかりました - 余計な計算がフィットに大きな違いをもたらさなかったということを意味しました。 –