我有一些数据点在这些数据点的 x 和 y 坐标中都有错误。因此,我想使用 python 的 ODR 工具来计算最佳拟合斜率和该斜率上的误差。我已经尝试为我的实际数据做这件事,但没有找到好的结果。因此,我首先尝试通过一个简单的示例使用 ODR,如下所示:
import numpy as np
import matplotlib.pyplot as plt
from scipy.odr import *
def linear_func(B, x):
return B[0]*x+B[1]
x_data=np.array([0.0, 1.0, 2.0, 3.0])
y_data=np.array([0.0, 1.0, 2.0, 3.0])
x_err=np.array([1.0, 1.0, 1.0, 1.0])
y_err=np.array([5.0, 5.0, 5.0, 5.0])
linear=Model(linear_func)
data=RealData(x_data, y_data, sx=x_err, sy=y_err)
odr=ODR(data, linear, beta0=[1.0, 0.0])
out=odr.run()
out.pprint()
该pprint()
行给出:
Beta: [ 1. 0.]
Beta Std Error: [ 0. 0.]
Beta Covariance: [[ 5.20000039 -7.80000026]
[ -7.80000026 18.1999991 ]]
Residual Variance: 0.0
Inverse Condition #: 0.0315397386692
Reason(s) for Halting:
Sum of squares convergence
resutling Beta 值显示为 1.0 和 0.0,这是我认为的。Beta Std Error
但是,如果我在数据点上的错误很大,为什么标准错误 ,也都为零?谁能提供一些见解?