Matt Crema wrote:
> Robert Kern wrote:
> 
>> 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]))
>>
> 
> I'm new to numpy myself.
> 
> The above posters are correct to say that the problem must be cast into 
> matrix form.  However, as this is such a common technique, don't most 
> math/stats packages do it behind the scenes?
> 
> For example, in Matlab or Octave I could type:
> polyfit(x,y,1)
> 
> and I'd get the answer with shorter, more readable code.  A one-liner! 
> Is there a 'canned' routine to do it in numpy?
> 
> btw, I am not advocating that one should not understand the concepts 
> behind a 'canned' routine.  If you do not understand this concept you 
> should take <Robert Kern>'s advice and dive into a linear algebra book. 
>  It's not very difficult, and it is essential that a scientific 
> programmer understand it.
> 
> -Matt

Hi again,

I guess I should have looked first ;)

m,b = numpy.polyfit(x,y,1)

-Matt
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to