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=1∑pφiXt−i+ε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模型:两个都为拖尾
阶数确定
- AR模型观察PACF在多少阶后截断
- MA模型观察ACF在多少阶后截断
如上图就是AR(1)模型