ARIMA工具箱使用手册(完整版)
最后更新于:2022-01-03 23:50:48
ARIMA工具箱是专为使用ARIMA方法进行时间序列预测的工具箱。
工具箱中的代码在不定期更新中,不断完善和添加新的功能。
致力于实现优质、易用的程序,帮助研究人员快速实现目标
一、获取ARIMA工具箱使用手册(完整版)
付款后获取完整版代码下载链接和售后联系方式~
(毕业季活动价格58元,2月份恢复原价68元~)
二、代码运行环境
MATLAB2016~2021
三、工具箱介绍

注:图标代表该m文件为脚本文件,可以直接运行;
图标代表函数文件,在没有输入变量的情况下无法直接运行。更详细的解释可以看这里。
1.demos文件夹
demos文件夹中全部为脚本文件,其中的文件使用了funs文件夹中的函数文件实现各种功能。
1.1.Demo_ARIMA.m
调用funs中的Fun_ARIMA_Forecast函数进行多步预测的例子,演示了Fun_ARIMA_Forecast函数的常规用法。
1.2.Demo_ARMA_onestep_new.m
调用funs中的Fun_ARIMA_Forecast_Onestep函数进行单步预测的例子,演示了Fun_ARIMA_Forecast_Onestep函数的常规用法。
1.3.Demo_ARMA_RUL.m
调用funs中的RUL_ARIMA函数实现剩余寿命预测,该功能处于测试阶段。
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)
<span style="color:#32916b" class="has-inline-color">% 通过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值</span>
Code language: HTML, XML (xml)
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)
<span style="color:#358a6b" class="has-inline-color">% 使用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:拟合残差值</span>
Code language: HTML, XML (xml)
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)
<span style="color:#2d7f61" class="has-inline-color">% 使用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:拟合残差值</span>
Code language: HTML, XML (xml)
2.4.RUL_ARIMA.m
针对输入的退化数据和失效阈值,计算剩余寿命/全寿命的函数。函数参数说明如下:
function [rullife,rullower,rulupper] = RUL_ARIMA(t,data,max_ar,max_ma,threshold,figflag)
<span style="color:#2d765b" class="has-inline-color">% 针对输入的退化数据和失效阈值,计算剩余寿命/全寿命的函数
% 输入:
% t为待预测数据的时间轴,维度与data保持一致,t需要为等时间间隔
% data为待预测数据,一维数据,最小11个数据。但是数据长度处于11~15时依旧可能出现报错的情况。
% max_ar 为最大p值
% max_ma 为最大q值
% figflag 为画图标志位,'on'为画图,'off'为不画
% 输出:
% rullife为预测结果,为数组[a;b],其中a为剩余寿命,b为全寿命
% rullower为预测结果的95%置信下限值,为数组[a;b],其中a为剩余寿命,b为全寿命
% rulupper为预测结果的95%置信上限值,为数组[a;b],其中a为剩余寿命,b为全寿命</span>
Code language: HTML, XML (xml)
3.scripts文件夹
scripts文件夹中多为不使用funs文件夹中封装函数的脚本文件,方便需要对代码进行大面积自主修改且不需要封装函数的用户使用。放到这个文件夹中的程序不再进行维护,不建议新手使用。
3.1.ARMA_Forecast.m
使用到对数方法的脚本程序。其中还原算法和单步预测方法的正确性存疑,请同学们谨慎参考。
3.2.ARMA_Forecast_Diff.m
知乎专栏中的代码文件。
3.3.Demo_ARMA_onestep.m
旧版的单步预测程序,该版本的程序中每次单步预测都重新构建一次模型,计算效率比较低,所以放在该文件夹中停止维护。有需要的同学可以参考。
4.install_funs.m
工具箱快速安装函数,使用方法见第四节。
5.uninstall_funs.m
工具箱快速卸载函数,使用方法见第四节。
6.readme.txt
有关该工具箱的一些说明。
7.工具箱介绍.docx
有关该工具箱的一些说明(word版)。
四、快速开始
1.一键式安装工具箱
使用前建议先执行安装,安装方法为:
(1)右键点击“install_funs.m”,再点运行。

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

2.使用你的数据快速获取预测结果
(1)导入数据
根据你的文件类型的不同(excel,txt,csv等),将数据导入MATLAB的方法有所不同。同学们可以先参考这个文档。或者看博主针对常用文件的导入方法的这个教程。
如果你已经实现了数据导入,这时候应该拥有了一个一维数据变量,这时候就可以调用函数进行预测了。
(2)实现预测
a. 多步预测的一般实现方法在demos文件夹中的Demo_ARIMA文件中有所展示,代码分为导入数据和调用函数两步。用户只需要将导入数据部分换成自己的导入程序,再设置好调用函数的入口参数即可。
b. 单步预测的一般实现方法在demos文件夹中的Demo_ARIMA文件中有所展示,可以参照代码的实现方法自行按照需求修改。
3.卸载工具箱
这步通常是不需要的,如果一定要卸载(从MATLAB路径中去除)该工具箱,则右键uninstall_funs.m运行即可。
五、重要更新
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时间序列的初始版本代码