matlab-AR模型的使用

AR模型概念

自回归模型,统计上处理时间序列的方法,使用同一变量的之前的数据,来预期本期的表现(前提存在线性关系)

公式定义

X t = c + ∑ i = 1 p φ i X t − i + ε t X_{t}=c+\sum_{i=1}^{p}\varphi_{i}X_{t-i}+\varepsilon_{t} Xt=c+i=1pφiXti+εt
其中c是常数项; ε t \varepsilon_{t} εt被假设为平均数等于0,标准差等于 σ \sigma σ的随机误差值; σ \sigma σ被假设为对于任何的t都不变

matlab使用方法

clear
%生成模拟数据
x=2;
for k=1:199
x(k+1)=0.7*x(k)+3*randn(1,1);
end
clear k
%定阶,由于AR模型简单所以定阶容易
figure
autocorr(x)
figure
parcorr(x)
%ACF拖尾,PACF1阶截尾,应该用AR(1)模型
y=iddata([x,0,0]'); %转化为系统辨识工具箱能识别的数据类型
% 预测的关键是要在原有数据上加0。加k个,可以预测T+1—T+K以后的数据
% 在这里曾经讨论过,https://www.ilovematlab.cn/thread-23681-1-2.html
%不过当时好像没有说清楚
AR1=ar(x,1);%估计参数,AR1同y一样是一个结构数组
p1=predict(y(1:201),AR1,1);%1步预测
p2=predict(y(1:202),AR1,2);%2步预测
%提出预测数据,关于iddata类型的数据格式,可以看help
xp1=p1.OutputData;%预测
xp2=p2.OutputData;
%绘图
figure
plot(x,'g')
hold on
plot(xp1,'r')
hold on
plot(xp2,'black')
%绘制均方误差,可以看到2步预测>1步预测
figure
plot((xp1(1:200)-x').^2,'m')
hold on
plot((xp2(2:200)-x(2:200)').^2,'b')

参数讲解

  • 拖尾 始终有非零取值,不会再K大于某个常数后就恒等于零(在0附近随机波动)
  • 截尾 在大于某给常数k后快速趋于0为k阶截尾

看两个指标自相关(ACF)、偏相关(PACF)

  • AR模型:自相关系数拖尾,偏相关系数截尾
  • MA模型:自相关系数截尾,偏相关系数拖尾
  • ARMA模型:两个都为拖尾
    matlab-AR模型的使用_第1张图片
    matlab-AR模型的使用_第2张图片

阶数确定

  • AR模型观察PACF在多少阶后截断
  • MA模型观察ACF在多少阶后截断
    如上图就是AR(1)模型

参考

建模示例
阶数确定

你可能感兴趣的:(杂七杂八,matlab,ar,开发语言)