正交距离回归(科学.odr)

正交距离回归(科学.odr)

介绍

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

ODRPACK是一个FORTRAN-77库,用于使用非线性拟合函数。它使用修改后的信任区域Levenberg-Marquardt型算法[第156页]估计函数参数。拟合函数由Python函数提供操作NumPy数组。可以提供所需的衍生工具也可以使用Python函数,或者可以用数字进行估计。ODR确认可以执行显式或隐式ODR拟合,也可以执行OLS。输入和输出变量可能是多维的。重量可提供给解释观察结果的不同差异,甚至变量维度之间的协方差。

odr提供了两个接口:一个函数和一组包装该函数的高级类;请参考他们的docstrings获取更多信息。而函数的docstringodr没有完整的参数解释,类有,和同名参数通常具有相同的要求。此外,建议用户至少浏览一下ODRPACK用户的指南-“了解你的算法。”

使用

请参阅的文档字符串odr.odr包以及的函数和类使用说明。ODRPACK用户指南(链接在上面)也是很有帮助。

工具书类

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

模块

odr包 正交距离回归(ODRPACK)的Python包装器。
模型 用于odrpack配件包的Model实例集合。

课程

ODR公司(数据,模型[,beta0,delta0,ifixb,…]) ODR类收集所有信息并协调
数据(x[,y,we,wd,fix,meta]) Data类存储要匹配的数据。
模型(fcn[,fjacb,fjacd,extra_args,…]) Model类存储有关您希望适合的函数的信息。
输出(输出) Output类存储ODR运行的输出。
RealData(真实数据)(x[,y,sx,sy,covx,covy,fix,meta]) RealData类将权重存储为实际标准偏差
odr错误
odr停止

功能

开放式数据库(fcn,beta0,y,x[,we,wd,fjacb,…])
科学.奥德。数据(x个,y=无,we=无,wd=无,fix=无,元={})

Data类存储要适应的数据。

每个参数都附加到同名实例的成员。Model类docstring中描述了x和y的结构y是一个整数,则Data实例只能用于响应维数等于wd和we的结构如下所述。是用于特定应用程序的自由形式词典。

我们对响应变量中的偏差对拟合的影响进行加权。wd加权输入变量中的偏差对拟合的影响。收件人轻松处理多维输入和响应参数首先具有n维轴。这些论点大量使用ODRPACK的结构化参数特性方便灵活支持所有选项。有关以下内容的完整解释,请参阅ODRPACK用户指南如何在算法中使用这些权重。基本上特定数据点的权重会使该点的偏差更大对配合不利。

we–如果我们是标量,则该值用于所有数据点(和

响应变量的所有维度)。

如果我们是长度为q的秩-1数组(响应的维数变量),则该向量是协变权重的对角线所有数据点的矩阵。

如果我们是长度为n(数据点数量)的秩-1数组,那么i't元素是i't响应变量的权重观察(仅一维)。

如果我们是一个2级形状数组(q,q),那么这是完全协变的权重矩阵广播到每个观测值。

如果我们是形状(q,n)的秩-2数组,那么我们[:,i]是i't观测值的协变加权矩阵。

如果我们是一个3级形状数组(q,q,n),那么我们[:,:,i]是完整的为每个观测值指定协变加权矩阵。

如果拟合是隐式的,则只使用正标量值。

wd–如果wd是标量,则该值将用于所有数据点

(以及输入变量的所有维度)。如果wd=0,则将每个观测值的协变加权矩阵设置为恒等式矩阵(因此每个观测的每个维度都具有相同的权重)。

如果wd是长度为m的秩-1数组(输入的维数变量),则该向量是协变权重的对角线所有数据点的矩阵。

如果wd是长度为n(数据点数量)的秩-1数组,则i't元素是i't输入变量观测值的权重(仅限于一维)。

如果wd是形状(m,m)的秩2数组,则这是完全协变权重矩阵广播到每个观测值。

如果wd是形状(m,n)的秩-2数组,则wd[:,i]是i't观测值的协变加权矩阵。

如果wd是形状(m,m,n)的秩-3数组,则wd[:,:,i]是完整的为每个观测值指定协变加权矩阵。

fix–fix与ODR类中的ifixx相同。它是一个整数数组
具有与data.x相同的形状,用于确定哪些输入观测值被视为固定的。可以使用长度为m的序列(输入观测值的维数)以确定所有数据的某些维数观察。值为0时固定观察值,值>0时使其免费。

meta–元数据的可选自由形式字典

方法

集合_元数据
集合_元数据(**千瓦时)

使用提供的关键字和数据更新元数据字典按关键字。

科学.奥德。模型(燃料电池网络,fjacb=无,fjacd=无,extra_args=无,估计值=无,隐式=0,meta=无)

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

它至少存储函数本身,还可以选择存储计算拟合期间使用的雅可比数的函数。还有,一个可以提供提供合理起始值的函数对于可能给定数据集的拟合参数。

初始化方法将这些存储到同名的成员中。

fcn–fit函数
fcn(β,x)–>y
fjacb–fcn的Jacobian写入拟合参数beta
fjacb(β,x)–>@f_i(x,B)/@B_j
fjacd–fcn的Jacobian写入(可能是多维的)输入
变量fjacd(β,x)–>@f_i(x,B)/@x_j
extra_args–如果指定,extra_aargs应该是extra的元组
要传递给fcn、fjacb和fjacd的参数。每个人都将被呼叫如下所示:应用(fcn,(beta,x)+extra_args)
估计值–根据数据提供拟合参数的估计值:
估计(数据)->estbeta
implicit–布尔变量,如果为TRUE,则指定模型
是隐式的;即fcn(beta,x)~=0,没有y数据可拟合反对
meta–可选
模型的自由形式元数据字典

注意,fcn、fjacb和fjacd操作NumPy数组并返回NumPy数组。这个估计对象接受Data类的实例。

以下是参数和返回数组形状的规则:

x–如果输入数据是一维的,那么x是秩-1
阵列;即x=数组([1,2,3,…]);x.shape=(n,)如果输入数据是多维的,那么x是秩-2数组;即,x=数组([[1,2,…],[2,4,…]]);x.shape=(m,n)英寸在所有情况下,它都与传递给的输入数据数组具有相同的形状odr()。m是输入数据的维度,n是数字观察结果。
y–如果响应变量是一维的,则y是
秩-1数组,即y=数组([2,4,…]);y形状=(n,)如果响应变量是多维的,那么y是等级-2数组,即y=数组([2,4,…],[3,6,…]]);y形=(q,n)其中q是响应变量的维数。
beta–长度为p的秩1数组,其中p是参数数量;
即β=数组([B_1,B_2,…,B_p])
fjacb–如果响应变量是多维的,那么
返回数组的形状是(q,p,n),因此fjacb(x,beta)[l,k,i]=@f_l(X,B)/@B_k在第i个数据点进行评估。如果q==1,则返回数组仅为秩-2且具有形状(p,n)。
fjacd–与fjacb一样,只有返回数组的形状是(q,m,n)
使得第i个数据处的fjacd(x,beta)[l,j,i]=@f_l(x,B)/@x_j点。如果q==1,则返回数组的形状为(m,n)。如果m==1,形状为(q,n)。如果m==q==1,则形状为(n,)。

方法

集合_元数据
集合_元数据(**千瓦时)

使用提供的关键字和数据更新元数据字典在这里。

科学.奥德。ODR公司(数据,模型,beta0=无,delta0=无,ifixb=无,ifix=无,job=无,iprint=无,errfile=无,rptfile=无,ndigit=无,taufac=无,sstol=无,partol=无,maxit=无,stpb=无,stpd=无,sclb=无,scld=无,work=无,iwork=无)

ODR类收集所有信息并协调主要装配程序。

ODR类实例的成员与参数具有相同的名称初始化例程。

参数:

数据::

Data类的实例

型号::

Model类的实例

β0::

初始参数值的秩-1序列。如果是可选的该模型提供了一个“估计”函数来估计这些值。

delta0:可选:

一个(双精度)浮点数组,用于保存输入变量中的错误。必须与数据的形状相同。x个

ifixb:可选:

长度与beta0相同的整数序列,用于确定哪些参数保持不变。值为0将修复参数,如果值>0,则可以释放参数。

ifixx:可选:

形状与data.x相同的整数数组,用于确定哪些输入观测值被视为固定值。可以使用序列长度m(输入观测值的维数)以固定所有观测的尺寸。值为0可以修复观察结果,值>0表示它是免费的。

作业:可选:

一个整数,告诉ODRPACK要执行的任务。请参阅如果您绝对必须在此处设置值,请参阅ODRPACK用户指南。使用方法setjob后初始化以获得更可读的接口。

iprint:可选:

一个整数,告诉ODRPACK要打印什么。参见第33-34页如果您绝对必须在此处设置值,请参阅ODRPACK用户指南。使用方法setiprint后初始化以获得更可读的接口。

错误文件:可选:

要将ODRPACK错误打印到的文件名的字符串。请勿打开这个文件是你自己的!

rptfile:可选:

要将ODRPACK摘要打印到的文件名的字符串。不要自己打开这个文件!

ndigit:可选:

指定计算中可靠位数的整数函数的。

taufac:可选:

float指定初始信任区域。默认值为1。初始信赖域等于taufac乘以第一次计算出高斯-纽顿步长。taufac必须小于1。

sstol:可选:

float指定基于相对值的收敛公差平方和的变化。默认值为eps**(1/2),其中eps是最小值,1+eps>1表示双精度在机器上进行计算。sstol必须小于1。

partol:可选:

float指定基于相对值的收敛公差估计参数的变化。默认值为eps**(2/3)显式模型和隐式模型的eps**(1/3)。partol必须少一些比1。

maxit:可选:

整数,指定要执行的最大迭代次数。对于第一次运行时,maxit是执行的迭代总数默认为50。对于重新启动,maxit是额外的迭代执行,默认为10。

stpb:可选:

要计算的相对步长序列(len(stpb)==len(beta0))有限差分导数与参数有关。

stpd:可选:

相对数组(stpd.shape==data.x.shape或stpd.sshape==(m,))计算输入的有限差分导数的步长变量错误。如果stpd是长度为m的秩为1的数组(输入变量的维数),然后将值广播到所有观察结果。

sclb:可选:

比例因子序列(len(stpb)==len(beta0))参数。这些缩放因子的目的是缩放所有围绕统一的参数。通常适当的比例因子如果未指定此参数,则计算。自己指定如果自动程序出错。

scld:可选:

缩放数组(scld.shape==data.x.shape或scld.sshape==(m,))的因素错误在输入变量中。同样,这些因素如果不提供,则会自动计算。如果scld.shape==(m,),然后将比例因子广播到所有观测值。

工作:可选:

数组来保存ODRPACK的双值工作数据。何时重新启动,获取self.output.work的值。

iwork:可选:

数组来保存ODRPACK的整数值工作数据。何时重新启动时,取self.output.iwork的值。

输出::

如果Output类包含所有返回的来自ODR.run()或ODR.restart()调用的数据

方法

重新启动
运行
设置_打印
设置作业(_J)
重新启动(iter=无)

通过iter更多迭代重新启动运行。

参数:

iter公司:int,可选

ODRPACK的新迭代次数默认为10次。

退货:

输出:输出实例

该对象也被分配给属性.output。

运行()

使用给定的所有信息运行装配程序。

退货:

输出:输出实例

该对象也被分配给属性.output。

设置_打印(init=无,so_init=无,iter=无,so_iter=无,iter_step=无,final=无,so_final=无)

设置用于打印计算报告的iprint参数。

如果在此处指定了任何参数,则在iprint成员。如果未手动或使用此方法设置iprint,则ODRPACK默认为不打印。如果没有用指定文件名成员rptfile,然后ODRPACK打印到stdout。可以告诉ODRPACK通过设置此函数的so*参数,但不能指定打印到stdout但不是文件,因为可以通过不指定rptfile来实现文件名。

有三个报告:初始化、迭代和最终报告。它们由参数init、iter和final表示分别是。允许值为0、1和2,表示“否报告”、“短报告”和“长报告”。

参数iter_step(0<=iter_sstep<=9)指定执行以下操作的频率迭代报告;每个iter步骤都会有报告迭代从迭代一开始。如果iter_step==0,则否无论其他参数如何,都会生成迭代报告。

如果rptfile为None,则提供的任何so_*参数都将引发例外。

设置作业(fit_type=无,deriv=无,var_calc=无,del_init=无,重新启动=无)

设置“job”参数是一种有望理解的方法。

如果未指定参数,则值保持不变类初始化的默认值用于所有这些选项集到0。

参数:

fit_type(适合类型):{0,1,2}整数

0->显式ODR

1->隐式ODR

2->普通最小二乘

衍生:{0,1,2,3}整数

0->正向有限差分

1->中心有限差分

2->用户提供的衍生品(雅可比式)及结果

ODRPACK检查

3->用户提供的衍生品,无需检查

变量(_C):{0,1,2}整数

0->计算渐近协方差矩阵并拟合

使用导数的参数不确定性(V_B,s_B)在最终解决方案中重新计算

1->使用上次迭代的导数计算V_B和s_B

2->不计算V_B和s_B

删除(_I):{0,1}整数

0->初始输入变量偏移设置为0

1->用户在变量“work”中提供的初始偏移

重新启动:{0,1}整数

0->fit不是重新开始

1->适应是一种重新开始

笔记

允许值与ODRPACK用户指南只能指定大于的数字每个变量的最后一个值。

如果没有提供计算雅可比数的函数,则拟合过程将默认将derive更改为0,即有限差分。收件人自己初始化输入变量offset,将del_init设置为1,然后将偏移量正确地放入“work”变量。

科学.奥德。输出(输出)

Output类存储ODR运行的输出。

使用一个参数进行初始化功能开放式数据库.

笔记

上面列出的“可选”属性仅在以下情况下存在开放式数据库已运行具有完整输出=1.

属性

贝塔 标准射线 形状(q,)的估计参数值。
sd_贝塔 标准射线 形状(p,)估计参数的标准误差。
cov_beta公司 标准射线 形状(p,p)估计参数的协方差矩阵。
三角洲 标准,可选 输入变量中的估计误差数组,形状与x个.
每股收益 标准,可选 响应变量中的估计误差数组,形状与.
X光片 ndarray,可选 的数组x个 + 三角洲.
标准,可选 阵列 = fcn(x + 三角洲).
资源变量 浮动,可选 剩余方差。
总质量 浮动,可选 平方和误差。
总和平方增量 浮动,可选 增量误差的平方和。
平方和每股收益 浮动,可选 eps误差的平方和。
inv_condnum(发票编号) 浮子,可选 反向条件数(参见ODRPACK UG第77页)。
相对错误(_E) 浮动,可选 在fcn内计算的函数值的相对误差。
工作 标准,可选 最终工作阵列。
工作ID dict,可选 用于绘制值的工作索引(参见ODRPACK UG第83页)。
信息 int,可选 返回原因,如ODRPACK输出(参见ODRPACK-UG第38页)。
停止理由 str列表,可选 信息翻译成英语。

方法

打印 递归支持漂亮打印列表、元组和字典。
打印()

漂亮的打印重要结果。

例外科学.奥德。odr错误
例外科学.奥德。odr停止
科学.奥德。开放式数据库(燃料电池网络,β0,,x个,we=无,wd=无,fjacb=无,fjacd=无,extra_args=无,ifixx=无,ifixb=无,作业=0,i打印=0,errfile=无,rptfile=无,ndigit=0,陶法=0.0,sstol=-1.0,部分醇=-1.0,最大值=-1,stpb=无,stpd=无,sclb=无,scld=无,work=无,iwork=无,完整输出=0)

目录

上一个主题

科学.数字.形态.white_tophat

下一个主题

科学.odr.odr包

本页