正交距离回归 (scipy.odr )

包裹内容

Data \(X[, y, we, wd, fix, meta] )

要匹配的数据。

RealData \(X[, y, sx, sy, covx, covy, fix, meta] )

数据,加权为实际标准差和/或协方差。

Model \(fcn[, fjacb, fjacd, extra_args, ...] )

Model类存储有关您希望适合的函数的信息。

ODR \(数据,型号[, beta0, delta0, ifixb, ...] )

ODR类收集所有信息并协调主装配例程的运行。

Output \(输出)

Output类存储ODR运行的输出。

odr \(fcn,β0,y,x[, we, wd, fjacb, ...] )

ODR的低级函数。

OdrWarning 

警告,表示传递到ODR的数据在传递到“ODR”时会导致问题,用户应该注意这一点。

OdrError 

表示管件错误的异常。

OdrStop 

停止配件时出现异常。

polynomial \(订单)

一般多项式模型的工厂函数。

exponential 

指数模型

multilinear 

任意维线性模型

unilinear 

一元线性模型

quadratic 

二次模型

使用信息

引言

为什么选择正交距离回归(ODR)?有时,在解释(又名“独立”)变量,而不仅仅是响应(又名“从属”)变量中存在测量误差。普通最小二乘(OLS)拟合程序将解释变量的数据视为固定的,即不受任何类型误差的影响。此外,OLS程序要求响应变量是解释变量的显式函数;有时使方程显式是不切实际的和/或引入错误。ODR可以轻松地处理这两种情况,如果这足以解决问题,甚至可以简化为OLS情况。

ODRPACK是一个FORTRAN-77库,用于执行可能具有非线性拟合函数的ODR。它使用了一种改进的信赖域Levenberg-MarQuardt-type算法 [1] 估计函数参数。拟合函数由在NumPy数组上操作的Python函数提供。所需的导数也可以由Python函数提供,或者可以用数值估算。ODRPACK可以执行显式或隐式ODR拟合,也可以执行OLS。输入和输出变量可以是多维的。可以提供权重来说明观测的不同方差,甚至变量维度之间的协方差。

这个 scipy.odr Package为ODRPACK提供了一个面向对象的接口,除了底层的 odr 功能。

有关ODRPACK的其他背景信息,请参阅 ODRPACK User's Guide ,推荐阅读。

基本用法

  1. 定义要与之匹配的函数。::

    def f(B, x):
        '''Linear function y = m*x + b'''
        # B is a vector of the parameters.
        # x is an array of the current x values.
        # x is in the same format as the x passed to Data or RealData.
        #
        # Return an array in the same format as y passed to Data or RealData.
        return B[0]*x + B[1]
    
  2. 创建模型。::

    linear = Model(f)
    
  3. 创建数据或realdata实例。::

    mydata = Data(x, y, wd=1./power(sx,2), we=1./power(sy,2))
    

    或者,当实际协方差已知时:

    mydata = RealData(x, y, sx=sx, sy=sy)
    
  4. 使用您的数据、模型和初始参数估计实例化ODR。::

    myodr = ODR(mydata, linear, beta0=[1., 2.])
    
  5. 运行配合。::

    myoutput = myodr.run()
    
  6. 检查输出。::

    myoutput.pprint()
    

参考文献

1

P.T.Boggs和J.E.Rogers,“正交距离回归”,在“测量误差模型和应用的统计分析:1989年6月10-16日举行的AMS-IMS-SIAM联合夏季研究会议论文集”中,“当代数学,第一卷”。112分,PG186,1990年。