通过基于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,但如果有线性拟合,则无需这样做。