最小二乘擬合matlab,存在已知协方差情况下的最小二乘解
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,存在已知协方差情况下的最小二乘解相关推荐
- R语言使用caret包构建GBM模型:在模型最优参数已知的情况下,拟合整个训练集,而无需进行任何重采样或参数调优
R语言使用caret包构建GBM模型:在模型最优参数已知的情况下,拟合整个训练集,而无需进行任何重采样或参数调优 目录 R语言使用caret包构建GBM模型:在模型最优参数已知的情况下,拟合整个训练集 ...
- matlab已知函数表达式画函数图像,怎么用matlab画已知函数表达式的一个函数图像?函数比较复杂的……...
点击查看怎么用matlab画已知函数表达式的一个函数图像?函数比较复杂的--具体信息 答:要具体哦,如果一个自变量,函数图像就是曲线,用plot 如果是2个自变量,函数图像就是曲面了,如f=3*exp ...
- [MATLAB]从已知矩阵中取出子阵
首先要知道冒号表示法,如下: EX: 如上有4×6矩阵,假设我们要取出第一行,第二行,第四行,则可以有B=A([1 2 4],:) 假设要取出第一行,第二行,第四行的1-2列和4-6列,可以有B=A( ...
- matlab状态空间法算反馈阵,matlab中已知系统的状态方程怎样绘制系统阶跃响应曲线...
matlab中,怎样设置坐标系统的原点在左上角? axisijx=-pi:0.1:pi;y=sin(x);plot(x,y,'g:'); 谁能帮我做Matlab的作业:分析系统能否通过状态反馈实现镇定 ...
- matlab 椭圆参数传递,用MATLAB绘图已知椭圆参数方程
用MATLAB绘图已知椭圆参数方程为 cos ,[0,2] sin x a t t y b t π= ? ∈ ? = ? 一.实验名称 MATLAB绘图功能 二.实验目的及要求 1.理解MATLAB绘 ...
- matlab 参数方程绘图,用matlab绘图已知椭圆参数方程
用matlab绘图已知椭圆参数方程 1 用MATLAB绘图已知椭圆参数方程为 cos , [0,2 ] sin x a t t y b t 一.实验名称 MATLAB绘图功 ...
- Matlab利用已知方阵创建斜对角矩阵
Matlab利用已知方阵创建斜对角矩阵 A=[ 1 2 3 4 ;7 8 9 10 ;13 14 15 16 ;19 20 21 22 ]; 对于小矩阵,直接利用for循环解决 n = size(A, ...
- 从qq服务器删除误收邮件,QQ邮箱撤回时显示撤回失败,对方已读 收件箱里的消息却是对方已阅读或已删除 这种情况下邮件有没有被删除...
QQ邮箱撤回时显示撤回失败,对方已读 收件箱里的消息却是对方已阅读或已删除 这种情况下邮件有没有被删除以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容 ...
- 已安装Anaconda情况下,命令行pip,python报错(详细 已解决)
已安装Anaconda情况下,命令行pip,python报错(已解决) 这是报错截图 解决方案如下: 1.首先可以去找到anaconda文件夹,并打开该文件目录下的Script文件夹,查看是否有pip ...
最新文章
- 经历一次真实的XSS跨站攻击以及应付之策
- create-react-app支持antd按需导入
- JS中setTimeout()的使用方法具体解释
- Remoting 与 Webservice 的区别
- Win32SDK中(串行)通信资源概要(不断更新)
- wxWidgets:wxMediaCtr类用法
- 关于ALTERA的FPGA的弱上拉问题
- sql解析json oracle,oracle 11g plsql解析json数据示例1
- matlab火箭升空问题,困扰火箭的三大问题终于要解决了!球迷:我都要膨胀了!...
- P2947-[USACO09MAR]向右看齐Look Up【单调栈】
- Spring Data Jpa使用@Query时 报错Validation failed for query for method public abstract
- bvp解算器是什么_几种飞控的姿态解算算法
- WindowsServer实训项目——第一章:安装与激活WindowsServer
- 【澳大利亚英语】我的英语笔记。。。
- 计算机投针实验程序,蒲丰投针问题
- 【分享】找回word文档保护密码
- 【组图】世界著名城市夜景
- c# Thumbnail 生成缩略图,生成压缩图,最大宽高比例缩放,最大边按比例缩放
- 基于模型的设计及其嵌入式实现(无水印).pdf_DeepMind打造最强表示学习模型BigBiGAN,Goodfellow点赞!...
- jqGrid学习笔记(一)