web-dev-qa-db-ja.com

numpy.polyfitのエラーは何ですか?

物理計算にnumpy.polyfitを使用したいので、エラーの大きさが必要です。

26
varantir

ドキュメント でわかるように:

Returns
-------
p : ndarray, shape (M,) or (M, K)
    Polynomial coefficients, highest power first.
    If `y` was 2-D, the coefficients for `k`-th data set are in ``p[:,k]``.

residuals, rank, singular_values, rcond : present only if `full` = True
    Residuals of the least-squares fit, the effective rank of the scaled
    Vandermonde coefficient matrix, its singular values, and the specified
    value of `rcond`. For more details, see `linalg.lstsq`.

つまり、フィットを実行して残差を次のように取得できる場合:

 import numpy as np
 x = np.arange(10)
 y = x**2 -3*x + np.random.random(10)

 p, res, _, _, _ = numpy.polyfit(x, y, deg, full=True)

次に、pは適合パラメーターであり、resは上記のように残差になります。 _は、最後の3つのパラメーターを保存する必要がないため、変数_これは使用しません。これは慣習であり、必須ではありません。


@Jaimeの答えは、残差の意味を説明しています。もう1つできることは、これらの平方偏差を関数として見ることです(合計はresです)。これは、十分に適合しない傾向を確認するのに特に役立ちます。 resは、統計的なノイズのために大きくなる可能性があります。または、次のように、系統的なフィッティングが必要になる場合があります。

x = np.arange(100)
y = 1000*np.sqrt(x) + x**2 - 10*x + 500*np.random.random(100) - 250

p = np.polyfit(x,y,2) # insufficient degree to include sqrt

yfit = np.polyval(p,x)

figure()
plot(x,y, label='data')
plot(x,yfit, label='fit')
plot(x,yfit-y, label='var')

そのため、図では、x = 0
polyfit

20
askewchan