小编use*_*000的帖子

scipy.curve_fit与numpy.polyfit不同的协方差矩阵

我使用Python 3.6进行数据拟合.最近,我遇到了以下问题而且我缺乏经验,因此我不确定如何处理这个问题.

如果我在同一组数据点上使用numpy.polyfit(x,y,1,cov = True)和scipy.curve_fit(lambda:x,a,b:a*x + b,x,y),我得到系数a和b几乎相同.但是scipy.curve_fit的协方差矩阵的值大约是numpy.polyfit值的一半.

由于我想使用协方差矩阵的对角线来估计系数的不确定性(u = numpy.sqrt(numpy.diag(cov))),我有三个问题:

  1. 哪个协方差矩阵是正确的(我应该使用哪一个)?
  2. 为什么会有区别?
  3. 它需要什么来使它们平等?

谢谢!

编辑:

import numpy as np
import scipy.optimize as sc

data = np.array([[1,2,3,4,5,6,7],[1.1,1.9,3.2,4.3,4.8,6.0,7.3]]).T

x=data[:,0]
y=data[:,1]

A=np.polyfit(x,y,1, cov=True)
print('Polyfit:', np.diag(A[1]))

B=sc.curve_fit(lambda x,a,b: a*x+b, x, y)
print('Curve_Fit:', np.diag(B[1]))
Run Code Online (Sandbox Code Playgroud)

如果我使用statsmodels.api,结果对应于curve_fit的结果.

python numpy curve-fitting scipy

6
推荐指数
1
解决办法
699
查看次数

标签 统计

curve-fitting ×1

numpy ×1

python ×1

scipy ×1