【MATLAB第89期】基于MATLAB的差分自回归滑动平均模型ARIMA时间序列预测模型含预测未来

【MATLAB第89期】基于MATLAB的差分自回归滑动平均模型ARIMA时间序列预测模型含预测未来

往期文章
【MATLAB第82期】基于MATLAB的季节性差分自回归滑动平均模型SARIMA时间序列预测模型含预测未来

一、模型介绍

1、模型简介

差分自回归移动平均模型(Autoregressive Integrated Moving Average Model, ARIMA),又称为差分自回归移动平均模型,是时间序列预测常用的分析方法之一,常应用于不包含趋势和季节性的单变量数据的预测。

2、模型参数

ARIMA结构参数有七个:(p,d,q)

1、非季节性差分数

d:代表时序数据需要进行几阶差分化,才是稳定的,也叫Integrated项。使用ARIMA模型要求数据平稳。ARIMA的差分项有两个,非季节性差分通常在0~3之间。确定非季节性差分数d从0至3循环,平稳后停止,当检验模型参数时d=0时数据已经平稳。

2、确定ARIMA模型阶数

这个步骤中需要确定的阶数有2个:AR阶数p,MA阶数q。用基于AICBIC准则的方法定阶。

p:代表预测模型中采用的时序数据本身的滞后数(lags) ,也叫做AR/Auto-Regressive项。p通常在0~3之间,通过循环可得p=2时,AICBIC值最小。

q:代表预测模型中采用的预测误差的滞后数(lags),也叫做MA/Moving Average项。q通常在0~3之间,通过循环可得q=3时,AICBIC值最小。

3、残差检测

为了确保确定的阶数合适,还需要进行残差检验。残差即原始信号减掉模型拟合出的信号后的残余信号。如果残差是随机正态分布的、不自相关的,这说明残差是一段白噪声信号,也就说明有用的信号已经都被提取到模型中了

上图为残差检验的结果图。Standardized Residuals是查看残差是否接近正态分布,理想的残差要接近正态分布;ACF和PACF检验残差的自相关和偏自相关,理想的结果应该在图中不存在超出蓝线的点;最后一张QQ图是检验残差是否接近正太分布的,理想的结果中蓝点应该靠近红线。

除了上述图像检验方法,还可以通过Durbin-Watson对相关性进行检验:

Durbin-Watson 统计是计量经济学分析中最常用的自相关度量,该值接近2,则可以认为序列不存在一阶相关性。

运算结果为1.99,这个值越接近2越说明残差不存在一阶相关性。

上述检验可以证明,残差接近正态分布,且相互独立,可以认为ARIMA建模符合要求。

二、预测效果对比




表 ARIMA训练集和测试集预测结果评价指标

样本 RMSE MSE MAE R2

训练集 5.8556 34.2885 3.6008 0.87792

测试集 7.0661 49.9298 4.074 0.86357

表 SARIMA训练集和测试集预测结果评价指标

样本 RMSE MSE MAE R2

训练集 2.101 4.4143 0.88828 0.93821

测试集 1.6282 2.6511 1.1039 0.97196

从评价指标数值表的角度看,SARIMA相比ARIMA在销量预测上有较高的精度,测试所得的误差值较小,能深入挖掘长时间序列数据的深层规律。SARIMA对周期性波动性的挖掘较为深入。

三、部分代码展示

clike 复制代码
close all
clear all
%% 1.加载数据
xall= importdata('经营数据2.xlsx');%导入数据
time=xall.textdata;%时间数据
xnum = datenum(time(2:end,1)); % 将日期转为数值
data= xall.data(:,2);% 时间序列数据 
data1=data;
step = 12;

%% 2.d从0至3循环,平稳后停止
for d = 0:3
        dY = diff(data)%对原数据进行差分运算  
    if(getStatAdfKpss(dY)) %数据平稳
        disp(['非季节性差分数为',num2str(d)]);
        break;
    end
end
%% 3.确定阶数ARlags,MALags
max_ar = 3;    %ARlags上限
max_ma = 3;    %MALags上限
id=1;
[STD1, EstMdl1, canshu] = find_pdq_arima(id,max_ar,max_ma);

四、代码获取

1.阅读首页置顶文章

2.关注CSDN

3.根据自动回复消息,回复"89期"以及相应指令,即可获取对应下载方式。

相关推荐
果粒蹬i34 分钟前
Windows下MATLAB与C/C++混合编程:DLL生成与调用实战
c语言·windows·matlab
fie888934 分钟前
基于蒙特卡洛方法的粒子滤波跟踪MATLAB实现
开发语言·matlab
guygg8813 小时前
两轮车MATLAB仿真程序的实现方法
开发语言·matlab
cici1587415 小时前
基于GPRMAX的地下管线正演模拟与MATLAB实现
开发语言·算法·matlab
bubiyoushang88819 小时前
MATLAB空间域图像增强技术详解与实现
图像处理·计算机视觉·matlab
春日见1 天前
做一个项目的完整流程应该是什么样
linux·人工智能·数码相机·计算机视觉·matlab
ghie90901 天前
基于SVM的图像分割MATLAB实现实例
人工智能·支持向量机·matlab
wuk9981 天前
基于MATLAB的谱减法语音去噪及信噪比评估
开发语言·matlab·语音识别
Evand J1 天前
【2026课题推荐】复杂环境下,无人车协同定位与路径规划算法(附MATLAB例程演示)
开发语言·算法·matlab
rit84324991 天前
水声信道MATLAB仿真程序
开发语言·matlab