通过基于chi^2=2设置python curvefit/polyfit计算错误
我有三个数组,即,通过基于chi^2=2设置python curvefit/polyfit计算错误,python,statistics,curve-fitting,data-fitting,Python,Statistics,Curve Fitting,Data Fitting,我有三个数组,即,x,y和y\u sigma,每个数组包含3个数据点y_sigma是从测量中获得的绝对sigma,我使用python curvefit来拟合这三个点 x = np.array([2005.3877, 2005.4616, 2017.3959]) y = np.array([631137.78043004, 631137.88309611, 631138.12697976]) y_sigma = np.array([1.12781053, 1.1152334 , 0.31252
x,y
和y\u sigma
,每个数组包含3个数据点y_sigma
是从测量中获得的绝对sigma,我使用python curvefit来拟合这三个点
x = np.array([2005.3877, 2005.4616, 2017.3959])
y = np.array([631137.78043004, 631137.88309611, 631138.12697976])
y_sigma = np.array([1.12781053, 1.1152334 , 0.31252557])
def linear(x,m,c):
return m*x + c
popt, pcov = curve_fit(linear, x, y, sigma=y_sigma, absolute_sigma = True)
print ('Best fit line =', popt[0])
print ('Uncertainty on line =', np.sqrt(pcov[0, 0]))
Best fit line = 0.0246132542120004
Uncertainty on line = 0.07066734926776239
如果我执行chi统计,我会得到:
chi = (y - linear(x, *popt)) / y_sigma
chi2 = (chi ** 2).sum()
dof = len(x) - len(popt)
chi2: 0.004042667706414678
dof: 1
chi2非常小,但不确定性相对较大。我读了一点书,了解到估计错误的标准方法是设置Delta
chi^2=1
。但是如果你有Hi的chi^2,你介意把链接放到你的“比特阅读”(如果是在线的)。。。问题到底是什么?基本上,我想做的是冻结一个参数,比如说c(截距),然后用b拟合函数,这样卡方统计给我一个接近2而不是1的值!!好吧,但我不明白为什么会这样。Chi2和不确定性不一定相关。在曲线拟合
中可能会出现问题,即使用Levenberg-Marquardt时,从雅可比矩阵近似Hessian,但如果有线性拟合,则无需这样做。