[SciPy-user] incorrect variance in optimize.curvefit and leastsq

Travis E. Oliphant oliphant at enthought.com
Fri Feb 13 00:24:13 EST 2009


josef.pktd at gmail.com wrote:
> On Thu, Feb 12, 2009 at 11:09 PM, Travis E. Oliphant
> <oliphant at enthought.com> wrote:
>   
>> josef.pktd at gmail.com wrote:
>>     
>>> I just saw the new optimize.curvefit which provides a wrapper around
>>> optimize.leastsq
>>>
>>>
>>>       
> the standard deviation of the error can be calculated and the
> corrected (this is written for the use from outside of curvefit):
>
> yhat = func(x,popt[0], popt[1])   # get predicted observations
> SSE = np.sum((y-yhat)**2)
> sig2 = SSE/(len(y)-len(popt))
> ecov = sig2*pcov       # this is the variance-covariance  matrix of
> the parameter estimates
>
>
> inside curvefit, this work (before the return):
>
> err  = func(popt, *args)
> SSE = np.sum((err)**2)
> sig2 = SSE / (len(ydata) - len(popt))
> pcov = sig2 * pcov
>   

Thanks very much for these...   I appreciate your help in getting 
curve_fit in better shape.   These functions were essentially added to 
curvefit so now curve_fit can be tested against those NIST pages.   
Thank you also for the unit tests.

A good project idea for somebody wanting to get their feet wet with 
SciPy would be to write unit-tests of curve_fit against some more of 
those NIST data-sets --- those look nice.   A combination of loadtxt and 
additional parsing fu and you could automate the whole thing --- nice 
project for a student out there ;-)

-Travis


-- 

Travis Oliphant
Enthought, Inc.
(512) 536-1057 (office)
(512) 536-1059 (fax)
http://www.enthought.com
oliphant at enthought.com




More information about the SciPy-User mailing list