2013-10-29 7 views
7

numpyのデータに線形近似をしようとしています。numpy polyfitで使用するウェイト値とは何ですか?また、フィットのエラーは何ですか?

例(wは、その値を私が持っているサンプルの数である、すなわち、点(x=0, y=0)ために、私は1回のだけの測定を持っており、その測定値が2.2であるが、点(1,1)ため、私は値2回の測定値を有します。 はそれが正しいこれらのケースのための関数polyfitでw=wを使用することですか、私は私が使用すべきかのw = sqrt(w)を使用する必要があります。また

、どのようにすることができます3.5のだから、

x = np.array([0, 1, 2, 3]) 
y = np.array([2.2, 3.5, 4.6, 5.2]) 
w = np.array([1, 2, 2, 1]) 

z = np.polyfit(x, y, 1, w = w) 

、今の質問はありますか?私はpolyfitからフィットエラーを得る?

答えて

4

測定値が正規分布の場合、各値の不確かさは1/sqrt(n)に比例します。ここで、nは測定回数です。 w=np.sqrt(n)

パラメータの共分散を得るには、cov=Trueも与えてください。次のように、あなたの不確かさの逆数で体重を測ります。

x = np.array([0, 1, 2, 3]) 
y = np.array([2.2, 3.5, 4.6, 5.2]) 
n = np.array([1, 2, 2, 1]) 

p, c = np.polyfit(x, y, 1, w=np.sqrt(n), cov=True) 

あなたcov行列の対角線は、各パラメータの個別分散しており、もちろんオフ対角線は、共分散されています。だから、あなたが「フィット誤差」を求めているのは、これらの対角線の平方根です:

e = np.sqrt(np.diag(c)) 
+0

ありがとうございます。これは私が探していたものです。 – jbssm

+1

喜んで助けてください、@ jbssm。ところで、 'np.polyfit'、' np.polyval'、 'np.poly1d'などを使うときは、それらを' np.polynomial'モジュール関数のいずれかと組み合わせないでください。それらは[異なる慣習に従います、特に返品注文](http://stackoverflow.com/a/18767992/1730674)を参照してください。通常は['np.polynomial'パッケージ(http://docs.scipy.org/doc/numpy/reference/routines.polynomials.polynomial.html)を排他的に使用することをお勧めしますが、何らかの理由で[それはしません'共分散 'を提供する](http://docs.scipy.org/doc/numpy/reference/generated/numpy.polynomial.polynomial.polyfit.html) – askewchan

関連する問題