我使用的scipy.odr是为了在这个问题上对x和y的不确定性进行拟合,使用scipy curve_fit进行正确拟合,包括x中的误差?
在拟合之后,我想计算参数的不确定性.因此,我查看协方差矩阵的对角元素的平方根.我明白了:
>>> print(np.sqrt(np.diag(output.cov_beta)))
[ 0.17516591 0.33020487 0.27856021]
Run Code Online (Sandbox Code Playgroud)
但Output也有output.sd_beta是,根据上ODR DOC
形状(p,)的估计参数的标准误差.
但是,它没有给我相同的结果:
>>> print(output.sd_beta)
[ 0.19705029 0.37145907 0.31336217]
Run Code Online (Sandbox Code Playgroud)
编辑
这是笔记本上的一个例子:https://nbviewer.jupyter.org/github/gvallverdu/cookbook/blob/master/fit_odr.ipynb
至少方形
stop reason: ['Sum of squares convergence']
params: [ -1.94792946 11.03369235 -5.43265555]
info: 1
sd_beta: [ 0.26176284 0.49877962 0.35510071]
sqrt(diag(cov): [ 0.25066236 0.47762805 0.34004208]
Run Code Online (Sandbox Code Playgroud)
使用ODR
stop reason: ['Sum of squares convergence']
params: [-1.93538595 6.141885 -3.80784384]
info: 1
sd_beta: [ 0.6941821 0.88909997 0.17292514]
sqrt(diag(cov): [ 0.01093697 0.01400794 0.00272447]
Run Code Online (Sandbox Code Playgroud)