# Linear regression in NumPy

Robert Kern robert.kern at gmail.com
Sat Mar 18 00:58:23 CET 2006

```nikie wrote:
> I still don't get it...
> My data looks like this:
>  x = [0,1,2,3]
>  y = [1,3,5,7]
> The expected output would be something like (2, 1), as y[i] = x[i]*2+1
>
> (An image sometimes says more than 1000 words, so to make myself clear:
> this is what I want to do:
> http://www.statistics4u.info/fundstat_eng/cc_regression.html)
>
> So, how am I to fill these matrices?

As the docstring says, the problem it solves is min ||A*x - b||_2. In order to
get it to solve your problem, you need to cast it into this matrix form. This is
out of scope for the docstring, but most introductory statistics or linear
algebra texts will cover this.

In [201]: x = array([0., 1, 2, 3])

In [202]: y = array([1., 3, 5, 7])

In [203]: A = ones((len(y), 2), dtype=float)

In [204]: A[:,0] = x

In [205]: from numpy import linalg

In [206]: linalg.lstsq(A, y)
Out[206]:
(array([ 2.,  1.]),
array([  1.64987674e-30]),
2,
array([ 4.10003045,  1.09075677]))

--
Robert Kern
robert.kern at gmail.com

"I have come to believe that the whole world is an enigma, a harmless enigma