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
时,lscov
将 x
的最大可能元素数设置为零以获取一个“基本解”。
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
,最小值计算基于 x
、e
和 T*T' = V
。当 V
为半正定矩阵时,仅当 B
与 A
和 V
一致(即 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
(或 (σ2)×diag
(1./W
)),则 mse
是 σ2 的估计值。
[x,stdx,mse,S] = lscov(...)
返回 x
的估计协方差矩阵。当 A
秩亏时,与 x
的必要零元素对应的 S
的行和列中会包含零。lscov
在使用多个右端进行调用时(即如果 size(B,2) > 1
)无法返回 S
。
当 A
和 V
满秩时,这些数量的标准公式为:
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
对输出 S
和 stdx
进行相应缩放。但是,如果已知 V
完全为 B
的协方差矩阵,则该缩放是不必要的。要在此情况下获取正确的估计值,应分别按 1/mse
和 sqrt(1/mse)
重新缩放 S
和 stdx
。
示例
示例 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 之前推出