fit a model function to data
Fit(f, X, Y, v, options)
Fit(f, XY, v, options)
algebraic; model function
Vector or Matrix; values of independent variable(s)
Vector; values of dependent variable
Matrix; values of independent and dependent variables
name or list(names); name(s) of independent variables in the component functions
(optional) equation(s) of the form option=value where option is one of output, weights, summarize, or initialvalues; specify options for the Fit command
The Fit command fits a model function to data by minimizing the least-squares error. Consider the model y=f⁡x1,x2,...,xn⁢; ⁢a1,a2,...,am, where y is the dependent variable and f is the model function of n independent variables x1,x2,...,xn, and m model parameters a1,a2,...,am. Given k data points, where each data point is an (n+1)-tuple of numerical values for x1,x2,...,xn,y, the Fit command finds values of the model parameters such that the sum of the k residuals squared is minimized. The ith residual is the value of y−f⁡x1,x2,...,xn⁢; ⁢a1,a1,...,am evaluated at the ith data point.
The first parameter f is an algebraic expression in the independent variables x1,x2,...,xn and the model parameters a1,a2,...,am.
In the first calling sequence, the second parameter X is a Matrix containing the values of the independent variables. Row i in the Matrix contains the n values for the ith data point while column j contains all values of the single variable xj. If there is only one independent variable, X can be either a Vector or a k-by-1 Matrix. The third parameter Y is a Vector containing the k values of the dependent variable y.
In the second calling sequence, the second parameter XY is a Matrix containing the values of both the independent and the dependent variables, consisting of k rows and n + 1 columns. The first n columns correspond to X, the final column to Y. That is, the ith row of XY contains first the n values for the ith data point of variables x1 through xn, then the value of the dependent variable y.
The parameters X, Y, and XY can also be specified as lists or Arrays; for details, see the Input Forms help page.
The parameter v is a list of the independent variable names used in f. If there is only one independent variable, then v can be a single name. The order of the names in the list must match exactly the order in which the independent variable values are placed in the columns of X.
The Fit command returns the model function, with the final parameter values, in terms of the independent variables. Additional results or a solution module that allows you to query for various settings and results can be obtained with the output option. For more information, see the Statistics/Regression/Solution help page.
The Fit command determines if the model function is linear or nonlinear in the model parameters. (Note that a model function can be nonlinear in the independent variables but linear in the model parameters.) It then calls either Statistics[LinearFit] or Statistics[NonlinearFit]. The most commonly used options are described below. Additional options accepted by LinearFit or NonlinearFit are passed directly to those commands. Note in particular the (recommended) use of the initialvalues option.
The Fit command accepts the model function only as an algebraic expression. Different input forms, allowing for greater flexibility and efficiency, are offered by the LinearFit and NonlinearFit commands. For more information, see the Input Forms help page.
The options argument can contain one or more of the options shown below. These options are described in more detail on the Statistics/Regression/Options help page.
output = name or string -- Specify the form of the solution. The output option can take as a value the name solutionmodule, or one of the following names (or a list of these names): AtkinsonTstatistic, confidenceintervals, CookDstatistic, degreesoffreedom, externallystandardizedresiduals, internallystandardizedresiduals, leastsquaresfunction, leverages, parametervalues, parametervector, residuals, residualmeansquare, residualstandarddeviation, residualsumofsquares, rsquared, rsquaredadjusted, standarderrors, tprobability, tvalue, variancecovariancematrix. For more information, see the Statistics/Regression/Solution help page.
summarize = true, false, or embed -- Display a summary of the regression model. This option is only available when the model expression is linear in the parameters.
svdtolerance = realcons(nonnegative) -- Set the tolerance that determines whether a singular-value decomposition is performed.
weights = Vector -- Provide weights for the data points.
The Fit command uses various methods implemented in a built-in library provided by the Numerical Algorithms Group (NAG). The underlying computation is done in floating-point; therefore, all data points must have type realcons and all returned solutions are floating-point, even if the problem is specified with exact values. For more information about numeric computation in the Statistics package, see the Statistics/Computation help page.
Set infolevel[Statistics] to 2 or higher to see messages about the progress of the solvers. In particular, these userinfo messages indicate whether the LinearFit command or the NonlinearFit command is being used.
For fitting a data sample to a distribution, see MaximumLikelihoodEstimate.
X := Vector([1, 2, 3, 4, 5, 6], datatype=float):
Y := Vector([2, 3, 4.8, 10.2, 15.6, 30.9], datatype=float):
Fit a model that is linear in the parameters.
Fit(a+b*t+c*t^2, X, Y, t);
It is also possible to generate a summary for models that are linear in the parameters. Note that the summary is not a part of the output that is assigned to ls:
ls := Fit(a+b*t+c*t^2, X, Y, t, summarize=embed):
Residual Sum of Squares
Residual Mean Square
Residual Standard Error
Degrees of Freedom
Five Point Summary
Fit a model that is nonlinear in the parameters.
Fit(a+b*exp(c*t), X, Y, t);
Consider now an experiment where quantities x, y, and z are quantities influencing a quantity w according to an approximate relationship
with unknown parameters a, b, and c. Six data points are given by the following matrix, with respective columns for x, y, z, and w.
ExperimentalData := <1, 1, 1, 2, 2, 2 | 1, 2, 3, 1, 2, 3 | 1, 2, 3, 4, 5, 6 | 0.531, 0.341, 0.163, 0.641, 0.713, -0.040>;
We take an initial guess that the first term will be approximately quadratic in x, that b will be approximately 1, and for c we do not even know whether it will be positive or negative, so we guess c=0. We compute both the model function and the residuals. Also, we select more verbose operation by setting infolevel.
infolevel[Statistics] := 2:
NonlinearFit(x^a + b*x^2/y + c*y*z, ExperimentalData, [x, y, z], initialvalues=[a = 2, b = 1, c = 0], output=[leastsquaresfunction, residuals]);
In NonlinearFit (algebraic form)
We note that Maple selected the nonlinear fitting method. Furthermore, the exponent on x is only about 1.14, and the other guesses were not very good either. However, this problem is conditioned well enough that Maple finds a good fit anyway.
Now suppose that the relationship that is used to model the data is altered as follows:
We adapt the calling sequence very slightly such that the expression is linear in the parameters. This also makes it possible to return a summary for the regression and more details on the residuals with the summarize option:
Fit(a*x + b*x^2/y + c*y*z, ExperimentalData, [x, y, z], initialvalues=[a = 2, b = 1, c = 0], output=[leastsquaresfunction, residuals], summarize=embed);
In LinearFit (container form)
final value of residual sum of squares: .0537598869493245
This time, Maple could select the linear fitting method, because the expression is linear in the parameters. The initial values for the parameters are not used.
The XY parameter was introduced in Maple 15.
For more information on Maple 15 changes, see Updates in Maple 15.
The Statistics[Fit] command was updated in Maple 2016.
The summarize option was introduced in Maple 2016.
For more information on Maple 2016 changes, see Updates in Maple 2016.
Download Help Document
What kind of issue would you like to report? (Optional)