文章目录

  • ARMA 模型
  • 增广最小二乘法
  • 实例测试
    • 构造 ARMA(2,2) 序列
    • 递推最小二乘
    • 画图

ARMA 模型

ARMA 模型是常见的时间序列模型之一:
yt+a1yt−1+⋯+apyt−p=ϵt+b1ϵt−1+⋯+bqϵt−qy_{t} + a_1 y_{t-1} + \cdots + a_p y_{t-p} = \epsilon_t + b_1 \epsilon_{t-1} + \cdots + b_q \epsilon_{t-q} yt​+a1​yt−1​+⋯+ap​yt−p​=ϵt​+b1​ϵt−1​+⋯+bq​ϵt−q​

增广最小二乘法

增广最小二乘法,也称为增广矩阵法(Extended Matrix Method).

如果误差是可测量的,则可以将误差扩充到输入向量中去,称扩充后的向量为增广向量,记
ϕt−1=[−yt−1,…,−yt−p,ϵt−1,…,ϵt−q]⊤θ=[a1,…,ap,b1,…,bq]⊤\begin{array}{ll} \phi_{t-1} &= [&-y_{t-1},& \ldots,& -y_{t-p},&\epsilon_{t-1},& \ldots,& \epsilon_{t-q} &]^\top\\\\ \theta &= [&a_1,& \ldots,& a_p, & b_1,&\ldots, &b_q&]^\top \end{array} ϕt−1​θ​=[=[​−yt−1​,a1​,​…,…,​−yt−p​,ap​,​ϵt−1​,b1​,​…,…,​ϵt−q​bq​​]⊤]⊤​

则有
yt=ϕt−1⊤θ+ϵty_t = \phi_{t-1}^\top \theta + \epsilon_t yt​=ϕt−1⊤​θ+ϵt​
可用递推最小二乘法(Recursive Least Square)求解系数 θ\thetaθ.

但是实际上,每一步的误差 ϵt\epsilon_tϵt​ 都是不精确测量的, ϕt\phi_tϕt​ 也不是精确的,因而只能用 ϕ\phiϕ 的估计量来替代:
ϕ^t−1=[−yt−1,…,−yt−p,ϵ^t−1,…,ϵ^t−q]⊤\begin{array}{ll} \hat{\phi}_{t-1} &= [&-y_{t-1},& \ldots,& -y_{t-p},&\hat{\epsilon}_{t-1},& \ldots,& \hat{\epsilon}_{t-q} &]^\top \end{array} ϕ^​t−1​​=[​−yt−1​,​…,​−yt−p​,​ϵ^t−1​,​…,​ϵ^t−q​​]⊤​
因而求出估计量 θ^t\hat{\theta}_tθ^t​.

很多时候 θ^t\hat{\theta}_tθ^t​ 都能收敛到 θ\thetaθ,所以该方法是有价值的!

实例测试

构造 ARMA(2,2) 序列

clear;
clc;
close all;N=3000;
n=2;
e=0.6*randn(1,N+1);
a=-[-1.7000    0.7200];  % poly([0.8 0.9])
b=[-0.3 0.1];
y(1)=e(1);
y(2)=a(1)*y(1)+e(2)+b(1)*e(1);for t=3:N+1y(t)=a(1)*y(t-1)+a(2)*y(t-2)+e(t)+b(1)*e(t-1)+b(2)*e(t-2);
endfigure, plot(1:N+1, y)

递推最小二乘

原理参见 :https://blog.csdn.net/itnerd/article/details/104336512

ϵt=yt−ϕt−1⊤θt−1\epsilon_t = y_t - \phi_{t-1}^\top \theta_{t-1} ϵt​=yt​−ϕt−1⊤​θt−1​ϕt=[ytyt−1ϵtϵt−1]\phi_t = \left[\begin{array}{ll}y_t &y_{t-1} & \epsilon_{t} & \epsilon_{t-1}\end{array}\right] ϕt​=[yt​​yt−1​​ϵt​​ϵt−1​​]θt=θt−1+Pt−1ϕt1+ϕt⊤Pt−1ϕt(yt+1−ϕt⊤θt−1)\theta_t = \theta_{t-1} + \frac{P_{t-1}\phi_t}{1+ \phi_t^\top P_{t-1} \phi_t } (y_{t+1} - \phi_t^\top \theta_{t-1}) θt​=θt−1​+1+ϕt⊤​Pt−1​ϕt​Pt−1​ϕt​​(yt+1​−ϕt⊤​θt−1​)Pt=Pt−1−Pt−1ϕϕ⊤Pt−11+ϕt⊤Pt−1ϕtP_{t} = P_{t-1} - \frac{P_{t-1} \phi \phi^\top P_{t-1}}{1+ \phi_t^\top P_{t-1} \phi_t } Pt​=Pt−1​−1+ϕt⊤​Pt−1​ϕt​Pt−1​ϕϕ⊤Pt−1​​

theta(:,1)=randn(2*n,1);
P(:,:,1)=10^5*eye(2*n);
phi = zeros(4, N);
epsilon= zeros(1,N);
epsilon(1)=y(1);
sigma2 = zeros(size(epsilon));
sigma2(1)=epsilon(1)^2;
phi(:,2)=[y(1) 0 epsilon(1) 0];
for t=2:Nepsilon(t)=y(t)-phi(:,t-1)'*theta(:,t-1);phi(:,t)=[y(t) y(t-1) epsilon(t) epsilon(t-1)]';theta(:,t)=theta(:,t-1) + P(:,:,t-1)*phi(:,t)/(1+phi(:,t)'*P(:,:,t-1)*phi(:,t))*...(y(t+1)-phi(:,t)'*theta(:,t-1));P(:,:,t)=P(:,:,t-1)-P(:,:,t-1)*phi(:,t)/(1+phi(:,t)'*P(:,:,t-1)*phi(:,t))*...phi(:,t)'*P(:,:,t-1);sigma2(t)=sigma2(t-1)+1/t*(epsilon(t)^2-sigma2(t-1));
end

画图

figure,
t=1:N;
subplot(3,2,1);
plot(t,theta(1,t),'r');
line([0,N],[a(1),a(1)])
axis([0 N 0 3]);
title('a1');
subplot(3,2,2);
plot(t,theta(2,t),'r');
line([0,N],[a(2),a(2)])
axis([0 N -2 0]);
title('a2');
subplot(3,2,3);
plot(t,theta(3,t),'r');
line([0,N],[b(1),b(1)])
axis([0 N -0.5 0.5]);
title('b1');
subplot(3,2,4);
plot(t,theta(4,t),'r');
line([0,N],[b(2),b(2)])
axis([0 N -0.5 0.5]);
title('b2');
subplot(3,2,5);
plot(t,sigma2,'r');
line([0,N],[0.36,0.36])
axis([0 N 0 1]);
title('sigma^2');

ARMA 模型的参数估计 —— 增广最小二乘法相关推荐

  1. 递推增广最小二乘法RELS——脚本及S函数实现

    这一周,我在学习递推最小二乘法RLS.递推增广最小二乘法RELS以及具有遗忘因子的递推最小二乘法FFRLS,在matlab中实现了相应的代码,并写了适用于三者的S函数,在Simulink中得到验证. ...

  2. 递归最小二乘法、增广最小二乘法、带遗忘因子的递归增广最小二乘法

    一.递归最小二乘法 递推最小二乘法:当矩阵维数增加时,矩阵求逆运算计算量过大,而且不适合在线辨识.为了减少计算量,并且可以实时地辨识出动态系统的特性,可以将最小二乘法转换成参数递推的估计. 取前N组数 ...

  3. 增广最小二乘法 matlab 东南大学,各种最小二乘法总结(算法+matlab源码)

    [实例简介] 10种最小二乘法总结,算法+源码 一般最小二乘法 遗忘因子最小二乘法 限定记忆最小二乘递推算法 偏差补偿最小二乘法 增广最小二乘法 广义最小二乘法 辅助变量法 二步法 多级最小二乘法 y ...

  4. 一步完成最小二乘法、递推最小二乘法、增广最小二乘法、广义最小二乘法、辅助变量法、二步法辨识(传递函数)

    用一步完成最小二乘法.递推最小二乘法.增广最小二乘法.广义最小二乘法.辅助变量法.二步法辨识如下模型的参数: 噪声的成形滤波器 采样时间0.01 要求: 1.用matlab 写出程序代码: 2.画出实 ...

  5. 通过R语言实现平稳时间序列的建模--基础(ARMA模型)

    目录 1. 建模流程 2. 序列平稳性检验和纯随机性检验 2.1 图检验 2.2 单位根检验 3. 模型选择 ​ 4. 参数估计 5. 模型检验 5.1 模型显著性检验 5.2 参数显著性检验 6. ...

  6. 时间序列分析ARMA模型原理及Python statsmodels实践(上)

    目录 1. 时间序列及相关基本概念 1.1. 时间序列分解 1.2. 时间平稳序列 1.3. 自相关与自相关函数(ACF) 1.4. 白噪声及Ljung-Box检验 1.4.1. 白噪声 1.4.2. ...

  7. 常用数据增广方法,解决数据单一问题

    Datawhale干货 作者:陈信达,Datawhale优秀学习者 寄语:本文将对传统图像算法的数据增广方式进行学习,以最常用的平移和旋转为例,帮助大家梳理几何变换的概念和应用,并对其在OpenCV的 ...

  8. 计算机视觉的数据增广技术大盘点!附涨点神器,已开源!

    如果要把深度学习开发过程中几个环节按重要程度排个序的话,相信准备训练数据肯定能排在前几位.要知道一个模型网络被编写出来后,也只是一坨代码而已,和智能基本不沾边,它只有通过学习大量的数据,才能学会如何作 ...

  9. 谷歌简单粗暴“复制-粘贴”数据增广,刷新COCO目标检测与实例分割新高度

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近日,谷歌.UC伯克利与康奈尔大学的研究人员公布了一篇论文 Sim ...

  10. 【深度学习】基于深度学习的数据增广技术一览

    ◎作者系极市原创作者计划特约作者Happy 周末在家无聊,偶然兴心想对CV领域常用的数据增广方法做个简单的调研与总结,重点是AI时代新兴的几种反响还不错的方法.各种第三方与官方实现代码等.那么今天由H ...

最新文章

  1. unity三维向量变化为角度_对于向量和矩阵的理解
  2. 如何在IE地址栏显示自己的小图标
  3. 【HTML/CSS】HTML元素种类的划分
  4. Node.js 工具模块
  5. vue-flowy前端流程图绘制工具
  6. 【什么是数据隐私?安全与隐私的区别?】差分隐私代码实现系列(一)
  7. android应用程序的生命周期,Android应用程序的生命周期.doc
  8. ruby和python比较_为什么说Ruby比Python容易阅读
  9. PulseAudio多线程通信:pthread_cond_broadcast/pthread_cond_signal/pthread_cond_wait(九)
  10. 数组 -- removeElement -- 图解
  11. 许多自己正在总结的东东
  12. 解决servlet中get方式中中文乱码问题(二):装饰者模式使用
  13. matlab quiver 箭头颜色,matlab – quiver3箭头颜色对应大小
  14. 六石管理学:发现自己确实错了,怎么办
  15. 【数学建模】评价类算法
  16. Linux下更新BIOS的方法
  17. c语言函数使用的三个步骤,sqrt函数怎么使用 C语言中的sqrt函数使用方法介绍
  18. 树和二叉树的应用 -- ---哈夫曼(Huffman)树和哈夫曼编码
  19. 利用python对包含离散型特征和连续型特征的数据进行预处理
  20. [USACO18FEB] Rest Stops(贪心)

热门文章

  1. 搜集了一些AIDA64的GPGPU测试结果,现整理成表格共享
  2. 惠普战99安装deepin20.2.4并驱动NVIDIA显卡
  3. 最好的网盘--主流网盘大比拼
  4. android 获取签名的md5值,获取Android MD5签名
  5. 互联网日报 | 5月17日 星期一 | 高德地图月平均日活超1亿;阿里影业新设“锦鲤拿趣”潮玩品牌;爱奇艺会员开放平台正式启动...
  6. 最近很火的京东、天猫超市飞天茅台抢购是怎么回事,从原理流程给你们分析一波
  7. Redis入门指南(三)
  8. Redis入门指南之一(简介)
  9. 磨煤机监测参数及实际运行数据
  10. 电视盒子内存测试软件,电视盒子内存太小怎么办?当贝市场一招扩充内存