lsfitlinear error?
Page 1 of 1

Author:  MarcF [ Fri Apr 26, 2013 5:41 pm ]
Post subject:  lsfitlinear error?

Why does the following fail to find a simple linear fit??

double[] y = new double[] { 6.95, 8.57, 10.3, 12.2, 14.0 };
double[,] x = new double[,] {{1},{2},{3},{4},{5}};

int info;
double[] c;
alglib.lsfitreport rep;
alglib.lsfitlinear(y, x, out info, out c, out rep);

//rep.r2 value equals 0.25
//c[0] value equals 3.16
//Expected result is 1.77 ?????


Author:  Sergey.Bochkanov [ Fri Apr 26, 2013 6:48 pm ]
Post subject:  Re: lsfitlinear error?

Why do you think that it fails? lsfitlinear is a GENERAL least squares solver. In your formulation it solves problem of fitting experimental points by y(x)=c[0]*x - fitting without constant term, because you've specified only linear term in x matrix. And it fits data as good as possible - for c[0]=3.16 we have RSS (residual sum of squares) equal to 23.5, which is many times lower than RSS=129.8 for c[0]=1.77

If you want to perform linear fit by y(x)=c[0]+c[1]*x, you have to pass [[1,1],[1,2],[1,3],[1,4],[1,5]], where first item in each row correspond to constant term, second item - to linear term. Alternatively, you can use to perform polynomial fitting.

Author:  MarcF [ Fri Apr 26, 2013 10:30 pm ]
Post subject:  Re: lsfitlinear error?

thanks for the clarification, it makes sense now. I don't think this is particularly clear in the documentation though.


Page 1 of 1 All times are UTC
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group