Higher order polynomial regression

7 views (last 30 days)
I have to run a regression of order 5. My X matrix is
102.1750
108.0515
102.1785
100.9413
102.6634
My Y matrix is
0
5.4810
7.6267
24.7082
7.7284
Both X and Y are approxiately 20x1, I just wanted to give an idea how they look like.
I have tried the following:
1. Beta=pinv(X'*X)*(X'*Y);
2. Beta=(X'*X)\(X'*Y);
3. Beta=(X*Y);
4. Beta=polyfit(X,Y,5);
Expected=polyval(Beta,X);
The results are very different. Additionally polyfit/polyval shows the following warning:"Warning: Polynomial is not unique; degree >= number of data points"
Any ideas or suggestions of what am I doing wrong or how or what else can I try? What is the correct way to do it?

Accepted Answer

Star Strider
Star Strider on 18 May 2014
Give polyfit your entire (20x1) X and Y arrays, not simply the first five values.
Do that, then only use these lines to do your regression:
Beta=polyfit(X,Y,5);
Expected=polyval(Beta,X);
That should work.
  2 Comments
Marina
Marina on 19 May 2014
I still get this warning "Polynomial is not unique; degree >= number of data points. " Is there any other way?
Image Analyst
Image Analyst on 19 May 2014
You're not passing in all 20 points. You're just passing in 5 of them!!! Prove it by doing this
whos X
whos Y

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 18 May 2014
coefficients = polyfit(x, y, 5);
% Put training points back in
yFitted = polyfit(coefficients, x);
plot(x,y, 'bs');
hold on
plot(x, yfitted, 'rd-', 'LineWidth', 3);
grid on;

Categories

Find more on Polynomials 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!