## error message using polyfit (nonlinear regression)

on 20 Apr 2013

### bym (view profile)

hi,
I get the following error meesage:
Warning: Polynomial is not unique; degree >= number of data points.
> In polyfit at 71
In run at 74
The code I am using is the following:
for putCall =1:2
dataPutCall = data16(data16(:,3)==putCall,:);
dates=unique(dataPutCall(:,6));
for i=1:length(dates)
date=dates(i);
for indexT = 1:length(Ts)
T = Ts(indexT);
number=dataT(:,13);
x= dataT(:,2);
y=dataT(:,10);
p = polyfit(x,y,2);
f = polyval(p,x);
a=p(3);
b=p(2);
c=p(1);
SlopeSkew(number)=b+2*c.*x;
Slope=SlopeSkew';
end
end
end
I have used this code for a smaller matrix and there is was worked perfectly but not it seems as something is not working correctly and I am unsure what excatly it is

### bym (view profile)

on 20 Apr 2013

I think it is obvious from the message; you don't have a enough data points to fit the polynomial uniquely. Like fitting a line through just one point, there are many solutions
x=[1,2];
y = [2,8];
polyfit(x,y,2)
Warning: Polynomial is not unique; degree >= number of data points.
> In polyfit at 72

Locks

### Locks (view profile)

on 21 Apr 2013
You're right, I didn't get it at first because it's working for a smaller dataset. I assume when using polyfit(x,y,2), there are at least three inputs needed to compute the curve up to power of 2, is that correct?
Walter Roberson

### Walter Roberson (view profile)

on 21 Apr 2013
Yes, at least n+1 points for degree n.
Locks

on 21 Apr 2013
perfect, thanks