%AMRIMA模型:根据图书去年各月销量,预测图书未来销量情况
clc;
clear;
close all;
%导入原始数据,获得时间序列数据矩阵
t = 1:28;
t = t';
y = [1019,1502,-24,61,30,1584,173,901,-3,-67,240,5365,-8,0,124,156,2,7,-112,-86,-134,21,112,-506,-63,40,-3,-546];
y = y';
figure
plot(t, y)
grid on
%使用差分运算处理,确定ARIMA模型中的自相关系数ACF和偏相关系数PACF
figure
subplot(2,1,1),autocorr( y );
subplot(2,1,2),parcorr( y );
figure
dy = diff( y );
subplot(2,1,1),autocorr( dy );
subplot(2,1,2),parcorr( dy );
%拟合获得ARIMA模型
Mdl = arima(4,2,1);
EstMdl = estimate(Mdl,y);
res = infer(EstMdl,y);
%检验获得的ARIMA模型
figure
subplot(2,2,1)
plot(res./sqrt(EstMdl.Variance))
title('Standardized Residuals')
subplot(2,2,2),qqplot(res)
subplot(2,2,3),autocorr(res)
subplot(2,2,4),parcorr(res)
%通过ARIMA模型预测未来结果,给出误差上下限
[yF,yMSE] = forecast(EstMdl,20,'Y0',y);
UB = yF + 1.96*sqrt(yMSE);
LB = yF - 1.96*sqrt(yMSE);
figure
line_old = plot(y,'b','LineWidth',1);
grid on
hold on
line_predt = plot(29:48,yF,'g','LineWidth',1);
line_upLimit = plot(29:48,UB,'r--','LineWidth',1.2);
line_lowLimit = plot(29:48,LB,'r--','LineWidth',1.2);
hold off