[SciPy-User] Revisit Unexpected covariance matrix from scipy.optimize.curve_fit

Pierre Barbier de Reuille pierre at barbierdereuille.net
Fri Feb 22 13:24:46 EST 2013


I am not the one that have designed curve_fit. And I don't know what you
think sigma is for. But curve_fit seems to be just using it as weighting
for the various points. And as such, I really don't understand why the perr
should change depending on a constant factor ... would anybody care to
explain?

-- 
Barbier de Reuille Pierre


On 22 February 2013 19:17, <josef.pktd at gmail.com> wrote:

> On Fri, Feb 22, 2013 at 1:03 PM, Pierre Barbier de Reuille
> <pierre at barbierdereuille.net> wrote:
> > I don't know about this result I must say, do you have a reference?
> >
> > But intuitively, perr shouldn't change when applying the same weight to
> all
> > the values.
> >
> > --
> > Barbier de Reuille Pierre
> >
> >
> > On 22 February 2013 17:12, Moore, Eric (NIH/NIDDK) [F] <
> eric.moore2 at nih.gov>
> > wrote:
> >>
> >> > -----Original Message-----
> >> > From: Tom Aldcroft [mailto:aldcroft at head.cfa.harvard.edu]
> >> > Sent: Friday, February 22, 2013 10:42 AM
> >> > To: SciPy Users List
> >> > Subject: [SciPy-User] Revisit Unexpected covariance matrix from
> >> > scipy.optimize.curve_fit
> >> >
> >> > In Aug 2011 there was a thread [Unexpected covariance matrix from
> >> > scipy.optimize.curve_fit](http://mail.scipy.org/pipermail/scipy-
> >> > user/2011-August/030412.html)
> >> > where Christoph Deil reported that "scipy.optimize.curve_fit returns
> >> > parameter errors that don't scale with sigma, the standard deviation
> >> > of ydata, as I expected."  Today I independently came to the same
> >> > conclusion.
> >> >
> >> > This thread generated some discussion but seemingly no agreement that
> >> > the covariance output of `curve_fit` is not what would be expected.  I
> >> > think the discussion wasn't as focused as possible because the example
> >> > was too complicated.  With that I provide here about the simplest
> >> > possible example, which is fitting a constant to a constant dataset,
> >> > aka computing the mean and error on the mean.  Since we know the
> >> > answers we can compare the output of `curve_fit`.
> >> >
> >> > To illustrate things more easily I put the examples into an IPython
> >> > notebook which is available at:
> >> >
> >> >   http://nbviewer.ipython.org/5014170/
>
> If my fast reading is correct, then this is a very good example what I
> DON'T want in curve_fit.
>
> Your actual standard deviation (in simulation) is 1.
>
> Then you impose a sigma of 100, and your results are completely
> inconsistent with the data, huge error margins and confidence
> intervals 5 times the range of the actual observations.
>
> In most cases (maybe not in astronomy) we would like to estimate the
> parameter uncertainty based on the actual data.
> There are some cases where we have another estimate for sigma, a
> Bayesian can impose any prior; if we have more information about
> measurement errors, then we can use ODR, but in my opinion curve_fit
> should just be a boring standard weighted least squares.
>
> Josef
>
>
>
> >> >
> >> > This was run using scipy 0.11.0 by the way.  Any further discussion on
> >> > this topic to come to an understanding of the covariance output from
> >> > `curve_fit` would be appreciated.
> >> >
> >> > Thanks,
> >> > Tom
> >> > _______________________________________________
> >>
> >> chi2 = np.sum(((yn-const(x, *popt))/sigma)**2)
> >> perr = np.sqrt(np.diag(pcov)/(chi2/(x.shape[0]-1)))
> >>
> >> Perr is then the actual error in the fit parameter. No?
> >>
> >> -Eric
> >> _______________________________________________
> >> SciPy-User mailing list
> >> SciPy-User at scipy.org
> >> http://mail.scipy.org/mailman/listinfo/scipy-user
> >
> >
> >
> > _______________________________________________
> > SciPy-User mailing list
> > SciPy-User at scipy.org
> > http://mail.scipy.org/mailman/listinfo/scipy-user
> >
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20130222/bd84b03a/attachment.html>


More information about the SciPy-User mailing list