Polyfit in case of power function
Show older comments
Hi All. I have an equation of the form y=b+ a.x^(1/3)
I tried to fit a line by assuming
m=x^(1/3);
p=polyfit(m,y,1);
f=polyval(p,m);
plot(x,y,'o',x,f,'-');
but the plot isn't satisfactory. Is there any wrong with the code or is the problem with my selection of fitting equation?
Regards,
7 Comments
Ede gerlderlands
on 29 Jul 2013
Edited: Ede gerlderlands
on 29 Jul 2013
dpb
on 29 Jul 2013
Obviously your assumed fitting form won't fit the data well---just look at the plot of the initial data.
It has a double curvature; something like an exp(-ax) initially w/ then a negative curvature from about the midpoint of the data in the x direction.
You need a model that has the ability to have such different changes in characteristics over the range.
Do you have a physical process from which you might be able to derive a functional form? Or, if you only need an interpolating function to describe the data over the range, a spline would work quite nicely.
Ede gerlderlands
on 29 Jul 2013
The code is correct for what it is; f(x^1/3) just doesn't have the shape of your data irregardless of whether you transform x and use the polynomial or write the actual design matrix and use \ to solve.
Choose some other functional form or add terms or something.
Again, if you do have a physical process you should be able to derive a functional form for that from basic principles. It would seem unlikely that would lead to y~f(x^1/3). If it does then there's something badly amiss in the data or the model (or both).
Ede gerlderlands
on 29 Jul 2013
dpb
on 29 Jul 2013
To get a grasp on what's going on, try the following...
plot(x,y)
b=polyfit(xp(6:end),y(6:end),1);
hold on, plot(x(6:end),polyval(b,xp(6:end)),'ro')
b=polyfit(xp(1:5),y(1:5),1);
plot(x(1:5),polyval(b,xp(1:5)),'go')
This separates the two sections of positive and negative curvature and fits the two regions separately.
As this clearly shows, x^1/3 is both too "weak" a correlation early on and of the opposite curvature later. There's simply no way you can adequately model these data w/ a single functional form of the type of a power relationship--they just don't follow that as a model.
Answers (0)
Categories
Find more on Spline Postprocessing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!