25.4 线性最小二乘法

Octave 还支持线性最小二乘最小化。也就是说,Octave 可以找到参数 b,使得模型 y = x*b 在假设零均值高斯噪声的前提下,尽可能好地拟合数据 (x,y)。如果假设噪声是各向同性的,则可以使用 '\' 或 '/' 运算符,或 ols 函数来求解。在假设噪声是各向异性的一般情况下,则需要使用 gls 函数。

 
[beta, sigma, r] = ols (y, x)

普通最小二乘(OLS)估计。

OLS 适用于多元模型 y = x*b + e,其中 y 是一个 t×p 矩阵,x 是一个 t×k 矩阵,b 是一个 k×p 矩阵,而 e 是一个 t×p 矩阵。

y 的每一行是一个 p 维观测值,每列代表一个变量。类似地,x 的行代表 k 维观测值或可能的设计值。此外,观测值集合 x 必须具有足够的秩 k,否则 b 无法被唯一估计。

观测误差 e 被认为源自一个潜在的 p 维分布,该分布具有零均值和 p×p 协方差矩阵 S,两者在给定 x 的条件下保持不变。此外,矩阵 S 对每次观测都是恒定的,因此 mean (e) = 0cov (vec (e)) = kron (s, I)。(对于不满足此标准的情况,例如自相关误差,请参见广义最小二乘法(gls)以获得更有效的估计。)

返回值 betasigmar 定义如下。

beta

矩阵 b 的 OLS 估计量。beta 直接通过 inv (x'*x) * x' * y 计算,前提是矩阵 x'*x 满秩。否则,beta = pinv (x) * y,其中 pinv (x) 表示 x 的伪逆。

sigma

矩阵 s 的 OLS 估计量,

sigma = (y-x*beta)' * (y-x*beta) / (t-rank(x))
r

OLS 残差矩阵,r = y - x*beta

另请参阅: glspinv

 
[beta, v, r] = gls (y, x, o)

广义最小二乘(GLS)模型。

对多元模型执行广义最小二乘估计 y = x*B + E,其中 y 是一个 t×p 矩阵,x 是一个 t×k 矩阵,b 是一个 k×p 矩阵,而 e 是一个 t×p 矩阵。

y 的每一行是一个 p 维观测值,每列代表一个变量。类似地,x 的行代表 k 维观测值或可能的设计值。此外,观测值集合 x 必须具有足够的秩 k,否则 b 无法被唯一估计。

观测误差 e 被认为源自一个具有零均值但可能存在异方差性的潜在 p 维分布。也就是说,一般情况下,mean (e) = 0cov (vec (e)) = (s^2)*o,其中 s 是一个标量,o 是一个 t*p×t*p 矩阵。

返回值 betavr 定义如下。

beta

矩阵 b 的 GLS 估计量。

v

标量 s^2 的 GLS 估计量。

r

GLS 残差矩阵,r = y - x*beta

另请参阅: ols

 
x = lsqnonneg (c, d)
x = lsqnonneg (c, d, x0)
x = lsqnonneg (c, d, x0, options)
[x, resnorm] = lsqnonneg (…)
[x, resnorm, residual] = lsqnonneg (…)
[x, resnorm, residual, exitflag] = lsqnonneg (…)
[x, resnorm, residual, exitflag, output] = lsqnonneg (…)
[x, resnorm, residual, exitflag, output, lambda] = lsqnonneg (…)

最小化 norm (c*x - d),约束条件为 x >= 0

cd 必须是实数矩阵。

x0 是解 x 的可选初始猜测值。

options 是一个用于改变算法行为的选项结构体(参见 optimset)。lsqnonneg 识别以下选项:"MaxIter""TolX"

输出:

resnorm

残差的 2-范数平方:norm (c*x-d)^2

residual

残差:d-c*x

exitflag

收敛指示器。0 表示超过迭代次数,因此未能达到收敛;>0 表示算法已收敛。(该算法是稳定的,只要迭代次数足够就会收敛。)

output

包含两个字段的结构体:

  • "algorithm":使用的算法("nnls"
  • "iterations":执行的迭代次数。
lambda

拉格朗日乘子。如果这些值非零,则对应的 x 值应为零,表明解被压在了坐标平面上。其大小表示如果在那个方向上放宽 x >= 0 约束,残差将改善多少。

另请参阅: pqpnonneglscovoptimset

 
x = lscov (A, b)
x = lscov (A, b, V)
x = lscov (A, b, V, alg)
[x, stdx, mse, S] = lscov (…)

计算广义线性最小二乘拟合。

在模型 b = Ax + w 下估计 x,其中噪声 w 被假定服从具有协方差矩阵 {\sigma^2} V 的正态分布。

如果系数矩阵 A 的大小为 n×p,则常数项向量/数组 b 的大小必须为 n×k。

可选的输入参数 V 可以是一个 n 元正权重向量(逆方差),或一个表示 b 协方差的 n×n 对称半正定矩阵。如果未提供 V,则返回普通最小二乘解。

输入参数 alg 用于指示求解方法的选择,当前被忽略。

除了最小二乘估计矩阵 x(p×k)之外,该函数还返回 stdx(p×k),即估计 x 的标准误差;mse(k×1),即估计的数据误差协方差尺度因子(\sigma^2);以及 S(p×p,如果 k > 1 则为 p×p×k),即 x 的误差协方差。

参考文献:Golub and Van Loan, Matrix Computations (3rd Ed.), Johns Hopkins, Section 5.6.3, 1996.

另请参阅: olsglslsqnonneg

 
optimset ()
options = optimset ()
options = optimset (par, val, …)
options = optimset (old, par, val, …)
options = optimset (old, new)

创建优化函数的选项结构体。

当无输入或输出参数调用时,optimset 打印所有有效优化参数的列表。

当有一个输出参数且无输入参数调用时,返回一个所有有效选项参数均初始化为 [] 的选项结构体。

当使用参数/值对列表调用时,返回一个仅初始化了指定参数的选项结构体。

当第一个输入是现有的选项结构体 old 时,将从 par/val 列表或选项结构体 new 更新值。

如果 par 与标准参数的名称不完全匹配,optimset 将尝试将 par 匹配到一个标准参数,如果找到匹配项,则设置该参数的值。匹配不区分大小写,基于参数名称开头的字符进行匹配。如果找到多个不明确的匹配,optimset 会返回错误。如果没有找到匹配的标准参数,则发出警告并创建一个非标准参数。

标准有效参数列表:

AutoScaling
ComplexEqn
Display

请求优化结果的详细显示。取值为:

"off" [默认值]

无显示。

"iter"

显示每次循环迭代的中间结果。

"final"

显示最终循环迭代的结果。

"notify"

如果函数未能收敛,则显示最终循环迭代的结果。

FinDiffType
FunValCheck

启用后,如果目标函数返回无效值(复数、NaN 或 Inf),则显示错误。必须设置为 "on""off"(默认)。注意:函数 fzerofminbnd 能正确处理 Inf 值,只有复数或 NaN 会导致错误。

GradObj

当设置为 "on" 时,要最小化的函数必须返回第二个参数,即该函数在点 x 处的梯度(一阶导数)。如果设置为 "off"(默认),则通过有限差分计算梯度。

Jacobian

当设置为 "on" 时,要最小化的函数必须返回第二个参数,即该函数在点 x 处的雅可比矩阵(一阶导数)。如果设置为 "off"(默认),则通过有限差分计算雅可比矩阵。

MaxFunEvals

优化停止前的最大函数求值次数。必须为正整数。

MaxIter

优化停止前的最大算法迭代次数。必须为正整数。

OutputFcn

每个算法迭代执行一次的用户自定义函数。

TolFun

函数输出的终止准则。如果相邻两次算法迭代之间计算的目标函数差值小于 TolFun,则优化停止。必须为正标量。

TolX

函数输入的终止准则。如果 x(当前搜索点)在相邻两次算法迭代之间的差值小于 TolX,则优化停止。必须为正标量。

TypicalX
Updating

此列表可由用户或其他已加载的 Octave 包扩展。可以使用无参数形式的 optimset 查询更新后的有效参数列表。

注 1:在匹配短参数名称时,仅考虑标准列表中的参数名称,并且 par 将始终扩展以匹配标准参数,即使存在完全匹配的非标准参数。与一个或多个标准参数存在歧义的非标准参数的值无法通过 optimset 设置,只能使用 setfield 或结构体的点表示法进行设置。

注 2:优化选项结构体主要用于通过 optimsetoptimget 操作已知参数。创建非标准或歧义参数,或在创建优化选项结构体后加载/卸载更改已知参数列表的包,可能导致未来对 optimsetoptimget 的调用出现不可预测的行为。

另请参阅: optimget

 
val = optimget (options, par)
val = optimget (options, par, default)

从由 optimset 创建的优化选项结构体 options 中返回特定参数 par 的值。

如果 par 未定义,则返回 default 值(如果提供了的话),否则返回空矩阵。

如果 par 与标准参数的名称不完全匹配,optimget 将尝试将 par 匹配到一个标准参数,如果找到匹配项,则返回该参数的值。匹配不区分大小写,基于参数名称开头的字符进行匹配。如果找到多个不明确的匹配,optimget 会返回错误。如果没有找到匹配的标准参数,则发出警告。请参阅 optimset 了解标准选项列表的信息。

注意:在匹配短参数名称时,仅考虑标准列表中的参数名称,并且 par 将始终扩展以匹配标准参数,即使存在完全匹配的非标准参数。与一个或多个标准参数存在歧义的非标准参数的值无法通过 optimget 返回,只能使用 getfield 或结构体的点表示法进行访问。

另请参阅: optimset


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2