物理計算にnumpy.polyfit
を使用したいので、エラーの大きさが必要です。
ドキュメント でわかるように:
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
: