numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)[source]#
Least squares polynomial fit.
Note
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in numpy.polynomial is preferred.
A summary of the differences can be found in the
transition guide.
Fit a polynomial p(x)=p[0]*x**deg+...+p[deg] of degree deg
to points (x, y). Returns a vector of coefficients p that minimises
the squared error in the order deg, deg-1, ... 0.
The Polynomial.fit class
method is recommended for new code as it is more stable numerically. See
the documentation of the method for more information.
Parameters:
xarray_like, shape (M,)
x-coordinates of the M sample points (x[i],y[i]).
yarray_like, shape (M,) or (M, K)
y-coordinates of the sample points. Several data sets of sample
points sharing the same x-coordinates can be fitted at once by
passing in a 2D-array that contains one dataset per column.
degint
Degree of the fitting polynomial
rcondfloat, optional
Relative condition number of the fit. Singular values smaller than
this relative to the largest singular value will be ignored. The
default value is len(x)*eps, where eps is the relative precision of
the float type, about 2e-16 in most cases.
fullbool, optional
Switch determining nature of return value. When it is False (the
default) just the coefficients are returned, when True diagnostic
information from the singular value decomposition is also returned.
warray_like, shape (M,), optional
Weights. If not None, the weight w[i] applies to the unsquared
residual y[i]-y_hat[i] at x[i]. Ideally the weights are
chosen so that the errors of the products w[i]*y[i] all have the
same variance. When using inverse-variance weighting, use
w[i]=1/sigma(y[i]). The default value is None.
covbool or str, optional
If given and not False, return not just the estimate but also its
covariance matrix. By default, the covariance are scaled by
chi2/dof, where dof = M - (deg + 1), i.e., the weights are presumed
to be unreliable except in a relative sense and everything is scaled
such that the reduced chi2 is unity. This scaling is omitted if
cov='unscaled', as is relevant for the case that the weights are
w = 1/sigma, with sigma known to be a reliable estimate of the
uncertainty.
Returns:
pndarray, shape (deg + 1,) or (deg + 1, 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
These values are only returned if full==True
residuals – sum of squared residuals of the least squares fit
rank – the effective rank of the scaled Vandermonde
coefficient matrix
singular_values – singular values of the scaled Vandermonde
Present only if full==False and cov==True. The covariance
matrix of the polynomial coefficient estimates. The diagonal of
this matrix are the variance estimates for each coefficient. If y
is a 2-D array, then the covariance matrix for the k-th data set
are in V[:,:,k]
Warns:
RankWarning
The rank of the coefficient matrix in the least-squares fit is
deficient. The warning is only raised if full==False.
The coefficient matrix of the coefficients p is a Vandermonde matrix.
polyfit issues a RankWarning when the least-squares fit is
badly conditioned. This implies that the best fit is not well-defined due
to numerical error. The results may be improved by lowering the polynomial
degree or by replacing x by x - x.mean(). The rcond parameter
can also be set to a value smaller than its default, but the resulting
fit may be spurious: including contributions from the small singular
values can add numerical noise to the result.
Note that fitting polynomial coefficients is inherently badly conditioned
when the degree of the polynomial is large or the interval of sample points
is badly centered. The quality of the fit should always be checked in these
cases. When polynomial fits are not satisfactory, splines may be a good
alternative.