【发布时间】:2017-02-17 22:03:51
【问题描述】:
我有一些数据点在这些数据点的 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
结果显示的 Beta 值是 1.0 和 0.0,这是我认为的。但是,如果我在数据点上的错误非常大,为什么标准错误Beta Std Error 也都为零?谁能提供一些见解?
【问题讨论】:
标签: scipy regression curve-fitting data-fitting orthogonal