作者:天天多派对_272 | 来源:互联网 | 2022-12-06 19:47
我使用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))),我有三个问题:
哪个协方差矩阵是正确的(我应该使用哪一个)?
为什么会有区别?
它需要什么来使它们平等?
谢谢!
编辑:
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]))
如果我使用statsmodels.api
,结果对应于curve_fit的结果.