ARIMA代码说明文档(公开版)

最后更新于:2023-08-12 10:16:32

一、代码运行环境

MATLAB2017~2021(完整版可支持2022)

二、代码说明

注:图标代表该m文件为脚本文件,可以直接运行;图标代表函数文件,在没有输入变量的情况下无法直接运行。更详细的解释可以看这里

1.demos文件夹

demos文件夹中全部为脚本文件,其中的文件使用了funs文件夹中的函数文件实现各种功能。

1.1.Demo_ARIMA.m

调用funs中的Fun_ARIMA_Forecast函数进行多步预测的例子,演示了Fun_ARIMA_Forecast函数的常规用法。

1.2.Demo_ARMA_MulComp.m

调用funs中的 Fun_ARIMA_Forecast_MulComp 函数实现划分训练集、测试集的多步预测,并绘制出预测效果对比图。

1.3.Demo_ARMA_onestep_new.m

调用funs中的Fun_ARIMA_Forecast_Onestep函数进行单步预测的例子,演示了Fun_ARIMA_Forecast_Onestep函数的常规用法。

2.funs文件夹       

funs文件夹中为该工具箱相关的函数文件,该文件夹中的文件无法直接运行,需要在其他文件或命令行窗口中对入口参数赋值并调用。

2.1.ARMA_Order_Select.m

通过AIC,BIC等准则暴力选定阶数,带有差分项。

调用该函数可以得到通过准则选定的p、q值,准则可以从”aic”、”bic”、”aic+bic”三种模式中任意选择。

函数参数说明如下:

function [AR_Order,MA_Order,aicorbic] = ARMA_Order_Select(data,max_ar,max_ma,di,criterion)
% 通过AIC,BIC等准则暴力选定阶数,带有差分项
% 输入:
% data对象数据
% max_ar为AR模型搜寻的最大阶数
% max_ma为MA模型搜寻的最大阶数
% di差分阶数
% criterion 为定阶准则,'aic'/'bic'/'aic+bic'三种选择,此变量可以不输入或者输入为[],此时将使用默认'aic+bic'准则
% 输出:
% AR_Orderr为AR模型输出阶数
% MA_Orderr为AR模型输出阶数
% aicorbic为aic+bic在所有pq组合下的值,返回值为矩阵,
% 例如当设置max_ar= 1,max_ma=2时
% 则返回矩阵为: a b c
% d e f
% a代表 p=0,q=0时的aic+bic的值,b代表p=0,q=1时的值,d代表p=1,q=0时的值,以此类推
% 矩阵中可能会存在NaN值,比如a必定为NaN,当p、q的阶数较高时,也会因为软件无法正确估计参数而产生NaN值
2.2.Fun_ARIMA_Forecast.m

        封装好的使用ARIMA方法进行多步预测的程序,可以通过输入原始数据、预测步数等直接获得预测结果。该函数的调用方法在Demo_ARIMA.m文件中演示。

        可以直接调用,差分阶数、p、q值自动确定。

        可以输出预测结果、预测置信区间上下限、aicbic值、残差值。

        可以直接画出预测结果图、ACF图、PACF图、残差检验图,如下:

        函数参数说明如下:

function [forData,lower,upper,aicorbic,res] = Fun_ARIMA_Forecast(data,step,max_ar,max_ma,figflag,criterion)
% 使用ARIMA进行预测的函数(使用n阶差分、不使用对数),可以直接调用,差分阶数自动确定。
% 输入:
% data为待预测数据,一维数据,最小11个数据。但是数据长度处于11~15时依旧可能出现报错的情况。
% step为拟预测步数
% max_ar 为最大p值
% max_ma 为最大q值
% figflag 为画图标志位,'on'为画图,'off'为不画
% criterion 为定阶准则,'aic'/'bic'/'aic+bic'三种选择,此变量可以不输入或者输入为[],此时将使用默认'aic+bic'准则
% 输出:
% forData为预测结果,其长度等于step
% lower为预测结果的95%置信下限值
% upper为预测结果的95%置信上限值
% aicorbic为aic+bic在所有pq组合下的值,返回值为矩阵,
% 例如当设置max_ar= 1,max_ma=2时
% 则返回矩阵为: a b c
% d e f
% a代表 p=0,q=0时的aic+bic的值,b代表p=0,q=1时的值,d代表p=1,q=0时的值,以此类推
% 矩阵中可能会存在NaN值,比如a必定为NaN,当p、q的阶数较高时,也会因为软件无法正确估计参数而产生NaN值
% res:拟合残差值
2.3.Fun_ARIMA_Forecast_Onestep       

封装好的“单步”预测程序,现在这个最常用的图可以傻瓜式实现啦。

可以指定训练集/测试集比例,使用训练集数据训练模型,使用测试集数据对比验证。

可以直接调用,差分阶数、p、q值自动确定。

可以输出预测结果、训练集数据、测试集数据、aicbic值、残差值。

可以直接画出预测结果图、ACF图、PACF图、残差检验图,其中预测结果图如下:

单步预测结果图
function [forData,dataTrain,dataTest,aicorbic,res] = Fun_ARIMA_Forecast_Onestep(data,TrainR,max_ar,max_ma,figflag,criterion)
% 使用ARIMA进行单步预测的函数(使用n阶差分、不使用对数),可以直接调用,差分阶数自动确定。
% 输入:
% data 为全部数据,要求为一维数据。该数据在程序中会依照TrainR的数值被进一步划分为训练集和测试集
% TrainR 为训练集比例,如果TrainR为小于1的小数,则代表比例值,如果Train为大于1的整数,则代表训练集数据点数。
% max_ar 为最大p值
% max_ma 为最大q值
% figflag 为画图标志位,'on'为画图,'off'为不画
% criterion 为定阶准则,'aic'/'bic'/'aic+bic'三种选择,此变量可以不输入或者输入为[],此时将使用默认'aic+bic'准则
% 输出:
% forData为预测结果
% dataTrain为训练集数据
% dataTest为测试集数据
% aicorbic为aic+bic在所有pq组合下的值,返回值为矩阵,
% 例如当设置max_ar= 1,max_ma=2时
% 则返回矩阵为: a b c
% d e f
% a代表 p=0,q=0时的aic+bic的值,b代表p=0,q=1时的值,d代表p=1,q=0时的值,以此类推
% 矩阵中可能会存在NaN值,比如a必定为NaN,当p、q的阶数较高时,也会因为软件无法正确估计参数而产生NaN值
% res:拟合残差值
2.4.Fun_ARIMA_Forecast_MulComp

划分训练集、测试集进行使用ARIMA进行“多步”预测,并进行预测效果对比的函数。

可以直接画出预测结果图、ACF图、PACF图、残差检验图,其中预测结果图如下:

多步预测对比图
function [forData,dataTrain,dataTest,aicorbic,res] = Fun_ARIMA_Forecast_MulComp(data,TrainR,max_ar,max_ma,figflag,criterion)
% 使用ARIMA进行多步预测的函数(使用n阶差分、不使用对数),可以直接调用,差分阶数自动确定。
% 输入:
% data   为全部数据,要求为一维数据。该数据在程序中会依照TrainR的数值被进一步划分为训练集和测试集
% TrainR 为训练集比例,如果TrainR为小于1的小数,则代表比例值,如果Train为大于1的整数,则代表训练集数据点数。
% max_ar 为最大p值
% max_ma 为最大q值
% figflag 为画图标志位,'on'为画图,'off'为不画
% criterion 为定阶准则,'aic'/'bic'/'aic+bic'三种选择,此变量可以不输入或者输入为[],此时将使用默认'aic+bic'准则
% 输出:
% forData为预测结果
% dataTrain为训练集数据
% dataTest为测试集数据
% aicorbic为aic+bic在所有pq组合下的值,返回值为矩阵,
% 例如当设置max_ar= 1,max_ma=2时
% 则返回矩阵为: a b c
%               d e f
% a代表 p=0,q=0时的aic+bic的值,b代表p=0,q=1时的值,d代表p=1,q=0时的值,以此类推
% 矩阵中可能会存在NaN值,比如a必定为NaN,当p、q的阶数较高时,也会因为软件无法正确估计参数而产生NaN值
% res:拟合残差值

3.install_funs.m

工具箱快速安装函数,使用方法见第四节。

4.uninstall_funs.m

工具箱快速卸载函数,使用方法见第四节。

5.工具箱介绍.docx

有关该工具箱的一些说明(word版)。

三、快速开始

1.一键式安装工具箱

(1) 先在MATLAB里打开下载好的文件夹, 右键点击“install_funs.m”,再点运行。

(2)当在命令行窗口出现下图提示时说明安装完成

2.运行测试脚本

进入demos文件夹,依次运行Demo_ARIMA.m、Demo_ARIMA_MulComp.m、Demo_ARMA_onestep_new.m三个文件,程序运行完毕后如果没报错,则说明运行环境正常,程序正确。

2.导入数据

复制一个demos文件夹的副本,在这个副本里你需要功能的脚本中做如下修改:

根据你的文件类型的不同(excel,txt,csv等),将数据导入MATLAB的方法有所不同。同学们可以先参考这个文档。或者看博主针对常用文件的导入方法的这个教程

如果你已经实现了数据导入,这时候应该拥有了一个一维数据变量,这时候就可以调用函数进行特征提取了。

3.实现特征提取

参照demos文件夹的脚本文件中第二步,相关函数的调用方法,设置step、max_ar、max_ma、TrainR等单数,运行程序即可。

四、关于完整版与公开版代码

功能公开版完整版
进行数据导入、参数设置,实现多步预测、多步预测对比、单步预测对比
ARMA_Order_Select文件p*m*
封装好的全流程函数Fun_ARIMA_Forecast.m及案例demo-可以通过输入原始数据、预测步数等直接获得预测结果-将使用ARIMA进行预测的过程中的大部分工作都固化下来,方便使用。 p* m*
封装好的全流程函数Fun_ARIMA_Forecast_Onestep.m及案例demo-可以通过输入原始数据,训练、测试集划分规则等直接获得预测结果-快速实现数据的单步预测  p*   m*
封装好的全流程函数Fun_ARIMA_Forecast_MulComp及案例demo-划分训练集、测试集进行使用ARIMA进行“多步”预测,并进行预测效果对比的函数 p* m*
分析数据data的数据长度100以内无限制
预测步数长度3~8无限制
p、q上限值≤3无限制
数据训练集比例TrainR限定为0.85无限制
-视频教程快速上手-更为丰富、详细的注释,标注了同学们反馈的常见疑问×
*p文件可以被调用,但无法查看代码,m文件可以查看源码并自由修改

五、获取公开版程序(需使用电脑浏览器打开)

ARMA公开版代码V3

注:公开版代码需使用MATLAB2022a及以上版本

六、获取完整版程序(使用电脑浏览器或者手机浏览器打开)

获取通道一(淘宝):点击此处获取完整版程序

获取通道二(本页面):点击下面“立即支付”按钮,付款后获取完整版代码下载链接和售后联系方式~本通道处于测试阶段,使用该通道可以额外优惠(仅需53元)。付款完成后刷新一下本页面即可看到下载链接

(注意支付跳转失败的话,请使用浏览器打开本页面)

您需要先支付 53元 才能查看此处内容!立即支付

七、完整版代码重要更新

20230312 (重要)可以自动绘制差分后的图像。

20230114 支持MATLAB2022

20220123 加入了多步预测的训练集/测试集划分及预测对比(Fun_ARIMA_Forecast_MulComp函数和Demo_ARMA_MulComp文件)

20211114 改进一:现在可以指定定阶准则,’aic’/’bic’/’aic+bic’三种选择选其一;改进二:现在可以导出残差res值了(可以用于计算拟合结果)。

20210408 支持MATLAB2021

20210324 现在可以导出各p、q组合下对应的aic+bic值

20210206 加入了单步预测的封装函数Fun_ARIMA_Forecast_Onestep及其相关测试程序

20200805 解决了小概率出现的频繁弹窗报错的bug

20200526 优化了pq阶数选定算法

20200430 兼容了MATLAB2016

20200419 加入了工具箱快速安装/卸载函数,完善了函数参数说明

20200325 增加了在已经估计pq阶数后,再进行模型估计是无法正常估计的警告

20200313 修改了阶数选择的函数,在定阶时不会再因为阶数高而报错

20200309 加入了寿命预测相关函数和脚本

20200308 加入了单步预测的程序,修改了部分程序bug

20190920 更新了关于需要字符串标量或字符串向量形式的参数名称的问题说明

20190919 使用MATLAB内置函数作为定阶依据

20190130 创建ARMA时间序列的初始版本代码

八、其他

此外,还有带图形界面的ARIMA软件,傻瓜式操作:图形界面版ARIMA软件

需要的同学可以自取~