The fitters module contains two scilab functions
polyfit.sci: polynomial regression
linfit.sci: linear regression over multiple independent variables
Upload date : 2011-07-05 16:13:51
MD5 : 4765bdb82824ef60c7d4cd4ae347eb41
SHA1 : ead398440e5c0292abbf36b324a638820dae1d84
Downloads : 3043
Does the linfit function satisfy the same API as Matlab/linfit :
Do you have examples using your functions ?
Is there an advantage of your polyfit with respect to stibox/polyfit:
Well in brief
-Matlab's nlfit is based on the Levenberg–Marquardt algorithm (LMA), which is an
procedure. Therefore its results depend on the choice of parameters for the convergence of
the method. LMA can be applied to linear problems (which are a particular case of the
general non-linear problems), but it is possible that different choices of parameters
produce different sets of coefficients for the same data set.
-linfit is a non-iterative procedure based on the analytic solution of the equations
resulting from the application of the minimum conditions. It allways produce the same
result, and does not require an initial estimation of the values of the parameters. But it
does not solve non-linear problems.
Sorry, it wasn't my intention to use the same name as your code, simply I wasn't aware of
the existence of another polyfit in stixbox. Since no polyfit appears in Scilab's help I
assumed there wasn't one, and I didn't checked Git/stixbox. I chose the name trying to
make it clear it has the same purpose as the Matlab's polyfit.
Comparing the two codes I realized that the results seems to be the same, but my
implementation offers two options for the output, a Scilab polynomial object or a matrix
ordered as in Matlab, besides graphic comparison.
Given that the purpose of linfit and polyfit seems to fit ;) in Git/stixbox I would
suggest in incorporate them into that project.
can you please tel me haw can i use this package to use polyfit function, I am working
with Scilab for 1 weak a go.
please help me, I don't know haw can I install this fitters zip!!!!!
> please help me, I don't know haw can I install this fitters zip!!!!!
Sorry but installation with atoms is not possible, it seems that the module was never
packaged after I uploaded it. Anyway the documentation (manuals in pdf format) is in the
docs folder, and the functions are in the files linfit.sci and polyfit.sci. Therefore you
can load the functions in memory by executing these files after unzip fitters.zip. The
usage is described in the manuals.
Great tool. Thanks Javier
I Found a possible issue in this function.
The code below works
x=[-6e6 0 6e6]; y=[-65.0155 0 65.0155]; p=polyfit(x,y,2)
but if you change to
x=[-6e9 0 6e9]; y=[-65.0155 0 65.0155]; p=polyfit(x,y,2)
There is an error: Division by xero. It should work for both cases.
This answer has been deleted.
Sorry for this late reply.
You are right, it seems this behavior is related with the use of the qr algorithm (line
177), but I have not found a solution yet. I will keep you informed.
There is already a "polyfit" in Stixbox, which has full help page, unit tests and
interesting options such as the statistical analysis of the residuals.
So what are the advantages of your module on this topic ?
For the error of Gabriel, Stixbox's polyfit works, although it produces a Warning,
due to the bad scaling of the input x :
-->x=[-6e9 0 6e9]; y=[-65.0155 0 65.0155]; p=polyfit(x,y,2)
Warning : matrix is close to singular or badly scaled.
1.268D-14 1.084D+12 0.
A possible solution is to scale the input x by dividing by the maximum absolute value
of the input :
- 5.263D-15 65.0155 0.
To evaluate the polynomial, all you have to do is to rescale the input :
-->y = polyval(p,x/scale)
- 65.0155 0. 65.0155
This works because drastically reduces the orders of magnitude inside Vandermonde's
matrix, making the problem much easier to handle : all entries are in [-1,1]. (In
your particular example, the data has already been scaled so that the mean is zero.)
Matlab's solution for scaling is to handle the mean and the standard deviation of x
with the mu parameter. I will had this to Stixbox's polyfit/polyval.
After considering the facts I think Stixbox's polyfit is better than my proposal (that
anyway dates back to five years ago and is almost forgotten). In other words, I agree on
However, being part of a module puts it in disadvantage with Matlab's polyfit, which comes
with its standard installer. Many users don't have the time or the inclination to deal
with additional modules and go to Matlab when they don't find polyfit.
By the way the Stixbox URL seems empty.