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.

扩展功能

C/C++ 代码生成

使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

用法说明和限制:

如果 A 秩亏或 V 为矩阵且秩亏,则必须启用对可变大小数组的支持。

代码生成不支持对此函数使用稀疏矩阵输入。

在 R2006a 之前推出

最小二乘擬合matlab,存在已知协方差情况下的最小二乘解相关推荐

  1. R语言使用caret包构建GBM模型:在模型最优参数已知的情况下,拟合整个训练集,而无需进行任何重采样或参数调优

    R语言使用caret包构建GBM模型:在模型最优参数已知的情况下,拟合整个训练集,而无需进行任何重采样或参数调优 目录 R语言使用caret包构建GBM模型:在模型最优参数已知的情况下,拟合整个训练集 ...

  2. matlab已知函数表达式画函数图像,怎么用matlab画已知函数表达式的一个函数图像?函数比较复杂的……...

    点击查看怎么用matlab画已知函数表达式的一个函数图像?函数比较复杂的--具体信息 答:要具体哦,如果一个自变量,函数图像就是曲线,用plot 如果是2个自变量,函数图像就是曲面了,如f=3*exp ...

  3. [MATLAB]从已知矩阵中取出子阵

    首先要知道冒号表示法,如下: EX: 如上有4×6矩阵,假设我们要取出第一行,第二行,第四行,则可以有B=A([1 2 4],:) 假设要取出第一行,第二行,第四行的1-2列和4-6列,可以有B=A( ...

  4. matlab状态空间法算反馈阵,matlab中已知系统的状态方程怎样绘制系统阶跃响应曲线...

    matlab中,怎样设置坐标系统的原点在左上角? axisijx=-pi:0.1:pi;y=sin(x);plot(x,y,'g:'); 谁能帮我做Matlab的作业:分析系统能否通过状态反馈实现镇定 ...

  5. matlab 椭圆参数传递,用MATLAB绘图已知椭圆参数方程

    用MATLAB绘图已知椭圆参数方程为 cos ,[0,2] sin x a t t y b t π= ? ∈ ? = ? 一.实验名称 MATLAB绘图功能 二.实验目的及要求 1.理解MATLAB绘 ...

  6. matlab 参数方程绘图,用matlab绘图已知椭圆参数方程

    用matlab绘图已知椭圆参数方程 1 用MATLAB绘图已知椭圆参数方程为 cos , [0,2 ] sin x a t t y b t        一.实验名称 MATLAB绘图功 ...

  7. Matlab利用已知方阵创建斜对角矩阵

    Matlab利用已知方阵创建斜对角矩阵 A=[ 1 2 3 4 ;7 8 9 10 ;13 14 15 16 ;19 20 21 22 ]; 对于小矩阵,直接利用for循环解决 n = size(A, ...

  8. 从qq服务器删除误收邮件,QQ邮箱撤回时显示撤回失败,对方已读 收件箱里的消息却是对方已阅读或已删除 这种情况下邮件有没有被删除...

    QQ邮箱撤回时显示撤回失败,对方已读 收件箱里的消息却是对方已阅读或已删除 这种情况下邮件有没有被删除以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容 ...

  9. 已安装Anaconda情况下,命令行pip,python报错(详细 已解决)

    已安装Anaconda情况下,命令行pip,python报错(已解决) 这是报错截图 解决方案如下: 1.首先可以去找到anaconda文件夹,并打开该文件目录下的Script文件夹,查看是否有pip ...

最新文章

  1. 经历一次真实的XSS跨站攻击以及应付之策
  2. create-react-app支持antd按需导入
  3. JS中setTimeout()的使用方法具体解释
  4. Remoting 与 Webservice 的区别
  5. Win32SDK中(串行)通信资源概要(不断更新)
  6. wxWidgets:wxMediaCtr类用法
  7. 关于ALTERA的FPGA的弱上拉问题
  8. sql解析json oracle,oracle 11g plsql解析json数据示例1
  9. matlab火箭升空问题,困扰火箭的三大问题终于要解决了!球迷:我都要膨胀了!...
  10. P2947-[USACO09MAR]向右看齐Look Up【单调栈】
  11. Spring Data Jpa使用@Query时 报错Validation failed for query for method public abstract
  12. bvp解算器是什么_几种飞控的姿态解算算法
  13. WindowsServer实训项目——第一章:安装与激活WindowsServer
  14. 【澳大利亚英语】我的英语笔记。。。
  15. 计算机投针实验程序,蒲丰投针问题
  16. 【分享】找回word文档保护密码
  17. 【组图】世界著名城市夜景
  18. c# Thumbnail 生成缩略图,生成压缩图,最大宽高比例缩放,最大边按比例缩放
  19. 基于模型的设计及其嵌入式实现(无水印).pdf_DeepMind打造最强表示学习模型BigBiGAN,Goodfellow点赞!...
  20. jqGrid学习笔记(一)

热门文章

  1. 计算机缺失Fmod.dll,fmodstudio.dll
  2. php 获取 拼音,php根据汉字获取拼音(php基于拼音搜索实现原理)
  3. Spark 调优技巧总结
  4. 银监会计算机专业考试,)(2015国家公务员考试银监会计算机专业考试分析
  5. php artisan 命令详解,Artisan命令详解
  6. 数据结构与算法之美(二)
  7. 一个产品经理的自我认识
  8. 厦门大学821电子电路考研参考书目
  9. 前端角度出发做好SEO需要考虑什么?
  10. 目前最值得收藏的100个各类资源站