[SciPy-Dev] least squares solvers

Sturla Molden sturla at molden.no
Fri Jan 27 04:58:47 EST 2012


On 27.01.2012 10:47, Sturla Molden wrote:

> Why is the non-linear LS solver in sp.optimize called leastsq, whereas
> the linear solver in sp.linalg is called lstsq? Wouldn't a consistent
> name be better?

Also I think the docstring for sp.optimize.leastsq should refer to the 
linear solver, because I have seen multiple examples of people using 
sp.optimize.leastsq to solve linear systems.


> sp.linalg.lstsq uses SVD, by lapack driver *gelss. If we don't need
> singular values, solving by QR is faster (lapack driver *gels).
>
> (I actually use Fortran just to get DGELS instead of DGELSS.)

Another thing is that the terminology here could be confusing. The 
docstring for lstsq uses the naming convention from linear algebra, i.e. 
sp.linalg.lstsq(a, b) will minimize 2-norm |b - Ax|.

Those needing it for statistics (multiple regression) might not relize 
that b corresponds to y, A to X, and x to b. So fitting y = X * b by 
least squares is sp.linalg.lstsq(X, y). I think the docstring should be 
more explicit on this.

Sturla






More information about the SciPy-Dev mailing list