本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

lscov

存在已知协方差情况下的最小二乘解

语法

x = lscov(A,B)
x = lscov(A,B,w)
x = lscov(A,B,V)
x = lscov(A,B,V,alg)
[x,stdx] = lscov(...)
[x,stdx,mse] = lscov(...)
[x,stdx,mse,S] = lscov(...)

说明

x = lscov(A,B) 返回线性方程组 A*x = B 的普通最小二乘解,即 x 是使得平方误差 (B - A*x)'*(B - A*x) 之和最小的 n×1 向量,其中 A 是 m×n 矩阵,B 是 m×1 矩阵。B 也可以是 m×k 矩阵,lscov 返回 B 的每列的一个解。当 rank(A) < n 时,lscovx 的最大可能元素数设置为零以获取一个“基本解”。

x = lscov(A,B,w)(其中 w 是长度为 m 的正实数权重向量)返回线性方程组 A*x = B 的加权最小二乘解,即 x 使得 (B - A*x)'*diag(w)*(B - A*x) 最小。w 通常包含计数或逆方差。

x = lscov(A,B,V)(其中 V 是 m×m 实对称正定矩阵)返回协方差矩阵与 V 成比例的线性方程组 A*x = B 的广义最小二乘解,即 x 使得 (B - A*x)'*inv(V)*(B - A*x) 最小。

更为常见的情况是,V 可以是半正定矩阵,lscov 返回在 A*x + T*e = B 约束下,使得 e'*e 最小的 x,最小值计算基于 xeT*T' = V。当 V 为半正定矩阵时,仅当 BAV 一致(即 B 位于 [A T] 列空间内),此问题才有一个解,否则 lscov 将返回错误。

默认情况下,lscov 计算 V 的 Cholesky 分解,实际上是反转该因子以将该问题转变为普通最小二乘法。但是,如果 lscov 确定 V 为半正定矩阵,它将使用正交分解算法以避免对 V 求逆。

x = lscov(A,B,V,alg) 指定当 V 为矩阵时用于计算 x 的算法。alg 可以具有以下值:

  • 'chol' 使用 V 的 Cholesky 分解。

  • 'orth' 使用正交分解,它在 V 是病态或为奇异矩阵时更合适,但计算的开销更高。

[x,stdx] = lscov(...) 返回 x 的估计标准误差。当 A 秩亏时,与 x 的必要零元素对应的 stdx 元素中会包含零。

[x,stdx,mse] = lscov(...) 返回均方误差。如果 B 假定具有协方差矩阵 σ2V(或 (σ2diag(1./W)),则 mse 是 σ2 的估计值。

[x,stdx,mse,S] = lscov(...) 返回 x 的估计协方差矩阵。当 A 秩亏时,与 x 的必要零元素对应的 S 的行和列中会包含零。lscov 在使用多个右端进行调用时(即如果 size(B,2) > 1)无法返回 S

AV 满秩时,这些数量的标准公式为:

  • x = inv(A'*inv(V)*A)*A'*inv(V)*B

  • mse = B'*(inv(V) - inv(V)*A*inv(A'*inv(V)*A)*A'*inv(V))*B./(m-n)

  • S = inv(A'*inv(V)*A)*mse

  • stdx = sqrt(diag(S))

但是,lscov 使用更快、更稳定且适合秩亏情况的方法。

lscov 假定已知 B 的协方差矩阵(仅缩放因子未知)。mse 是该未知缩放因子的估计值,lscov 对输出 Sstdx 进行相应缩放。但是,如果已知 V 完全为 B 的协方差矩阵,则该缩放是不必要的。要在此情况下获取正确的估计值,应分别按 1/msesqrt(1/mse) 重新缩放 Sstdx

示例

示例 1 - 计算普通最小二乘法

MATLAB® 反斜杠运算符 (\) 使您可以通过计算回归系数的普通最小二乘法 (OLS) 来执行线性回归。您也可以使用 lscov 计算相同的 OLS 估计值。通过使用 lscov,还可以计算这些系数的标准差的估计值和回归差项的标准差。

x1 = [.2 .5 .6 .8 1.0 1.1]'; 
x2 = [.1 .3 .4 .9 1.1 1.4]'; 
X = [ones(size(x1)) x1 x2]; 
y = [.17 .26 .28 .23 .27 .34]';

a = X\y
a =
    0.1203
    0.3284
   -0.1312

[b,se_b,mse] = lscov(X,y) 
b =
    0.1203
    0.3284
   -0.1312
se_b =
    0.0643
    0.2267
    0.1488
mse =
    0.0015

示例 2 - 计算加权最小二乘法

使用 lscov 并通过提供相对观测值权值的向量来计算加权最小二乘法 (WLS) 拟合。例如,您可能想降权不可靠观测值对拟合的影响:

w = [1 1 1 1 1 .1]'; 

[bw,sew_b,msew] = lscov(X,y,w)
bw =
    0.1046
    0.4614
   -0.2621
sew_b =
    0.0309
    0.1152
    0.0814
msew =
  3.4741e-004

示例 3 - 计算广义最小二乘法

使用 lscov 并通过提供观测值协方差矩阵来计算广义最小二乘法 (GLS) 拟合。例如,您的数据可能不相关:

V = .2*ones(length(x1)) + .8*diag(ones(size(x1))); 

[bg,sew_b,mseg] = lscov(X,y,V)
bg =
    0.1203
    0.3284
   -0.1312
sew_b =
    0.0672
    0.2267
    0.1488
mseg =
    0.0019

示例 4 - 估计系数协方差矩阵

计算 OLS、WLS 或 GLS 拟合的协方差矩阵的估计值。系数标准差等于以下协方差矩阵的对角线上值的平方根:

[b,se_b,mse,S] = lscov(X,y); 

S
S =
    0.0041   -0.0130    0.0075
   -0.0130    0.0514   -0.0328
    0.0075   -0.0328    0.0221

[se_b sqrt(diag(S))] 
ans =
    0.0643    0.0643
    0.2267    0.2267
    0.1488    0.1488

算法

向量 x 计算数量 (A*x-B)'*inv(V)*(A*x-B) 的最小值。此问题的经典线性代数解为

 x = inv(A'*inv(V)*A)*A'*inv(V)*B

lscov 函数计算 A 的 QR 分解,然后根据 V 修改 Q

参考

[1] Strang, G., Introduction to Applied Mathematics, Wellesley-Cambridge, 1986, p. 398.

扩展功能

另请参阅

| | |

在 R2006a 之前推出