Java教程

ARIMA时序分析模型

本文主要是介绍ARIMA时序分析模型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
%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

 

这篇关于ARIMA时序分析模型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!