What's the error of numpy.polyfit?

后端 未结 2 1786
轻奢々
轻奢々 2020-12-09 08:36

I want to use numpy.polyfit for physical calculations, therefore I need the magnitude of the error.

2条回答
  •  孤街浪徒
    2020-12-09 09:01

    If you specify full=True in your call to polyfit, it will include extra information:

    >>> x = np.arange(100)
    >>> y = x**2 + 3*x + 5 + np.random.rand(100)
    >>> np.polyfit(x, y, 2)
    array([ 0.99995888,  3.00221219,  5.56776641])
    >>> np.polyfit(x, y, 2, full=True)
    (array([ 0.99995888,  3.00221219,  5.56776641]), # coefficients
     array([ 7.19260721]), # residuals
     3, # rank
     array([ 11.87708199,   3.5299267 ,   0.52876389]), # singular values
     2.2204460492503131e-14) # conditioning threshold
    

    The residual value returned is the sum of the squares of the fit errors, not sure if this is what you are after:

    >>> np.sum((np.polyval(np.polyfit(x, y, 2), x) - y)**2)
    7.1926072073491056
    

    In version 1.7 there is also a cov keyword that will return the covariance matrix for your coefficients, which you could use to calculate the uncertainty of the fit coefficients themselves.

提交回复
热议问题