还不会时间序列预测?根据历史值-预测未来值!大名鼎鼎的ARIMA(自回归积分移动平均模型!手把手教会你!MATLAB程序!

适用平台:Matlab2021版及以上

时间序列预测的主要目标是基于历史数据模式来预测未来的值。常见的研究方向包括:电池SOC、股票预测、碳价预测、轴承寿命预测、气温、降雨、风速等气象变量预测、道路、铁路或航空的交通流量预测等等!一个模型可以嵌套多种研究方向。广泛发表于高水平期刊上

ARIMA模型即自回归差分移动平均模型(AutoRegressive Integrated Moving Average Model),是一种广泛用于时间序列数据分析和预测的统计模型。ARIMA模型结合了三种主要的时间序列建模方法:自回归(AR)、差分(I)和移动平均(MA)。下面将简单地解释每个部分:

1自回归(AR):

自回归部分表示当前值与其之前的一系列值(滞后值)之间的关系。可以理解为,当前的数据点是基于它之前的一个或多个数据点的加权和。这里的“自”指的是自身,即当前值是它自己过去值的函数。

2差分(I):

差分是为了使时间序列数据达到平稳状态。平稳意味着时间序列的统计特性(如均值和方差)不随时间变化。在实际应用中,许多时间序列数据(如新能源波动数据、股票价格)会表现出趋势或季节性模式,这会使数据非平稳。通过差分一次或多次,可以消除这些时间依赖的结构,从而简化后续的分析和预测。

3移动平均(MA):

移动平均部分考虑了模型中的随机误差项及其滞后值的线性组合。这意味着当前的观测值受到一系列过去误差项的影响。这一部分可以帮助模型捕捉时间序列中的随机波动,即使在滞后的误差中也可能存在某种影响或模式。

将这三部分结合起来,ARIMA模型就能够描述和预测具有复杂模式的时间序列数据,包括那些显示出明显趋势或季节性的数据。这使得ARIMA模型成为金融、机械、电气、新能源等预测等领域中非常强大的工具。

数据格式:

  • 功能:时间序列预测是用于预测随时间变化的数据的未来趋势,通常用于处理时间相关的数据,如股票预测、房价预测、天气变化等。

  • 数据格式:由时刻1—4的值预测时刻5的值,由时刻2—5的值预测时刻6的值,由时刻3—6的值预测时刻7的值,以此类推。

预测结果:

部分代码

%% 来自公众号:《创新优化及预测代码》%% 清空环境变量warning off             % 关闭警告信息close all               % 关闭所有打开的图窗clear                   % 清空所有变量clc                     % 清空命令行界面%% 导入数据data=xlsread('示例数据.xlsx');   % 从xlsx文件中读取数据step=24;                     % 设置预报步长TempData=data;               % 临时存储原始数据output=data;                 % 输出数据初始化% 去趋势处理TempData=detrend(TempData);  % 从数据中移除线性趋势% 计算趋势函数TrendData=data-TempData;                                % 计算原数据和去趋势后数据的差值% 差分,平稳化时间序列[H,PValue,TestStat,CriticalValue] = adftest(TempData);  % 使用ADF测试判断序列是否平稳difftime=0;                                             % 初始化差分次数计数器SaveDiffData=[];                                        % 初始化存储差分数据的数组while ~H    % 差分,平稳化时间序列    SaveDiffData=[SaveDiffData,TempData(1,1)];              % 保存每次差分的首个数据点    TempData=diff(TempData);                                % 对数据进行差分    difftime=difftime+1;                                    % 差分次数加一    [H,PValue,TestStat,CriticalValue] = adftest(TempData);  % 再次进行ADF测试end% 模型定阶或识别test = [];% 自回归对应PACF,给定滞后长度上限p和qfor p = 0:5     for q = 0:5        if(p + q ~= 0)            m = armax(TempData,[p q]);  % 使用ARMAX模型估计参数            AIC = aic(m);               % 计算AIC值用于模型比较            test = [test;p q AIC];        end    endendfor k = 1:size(test,1)    % 选择AIC值最小的模型    if test(k,3) == min(test(:,3))        p_test = test(k,1);        q_test = test(k,2);        break;    endend% armax(p,q),[p_test q_test]对应AIC值最小m   = armax(TempData,[p_test q_test]);       ARIMA_Predict   = predict(m,TempData,step);      % 使用ARIMA模型进行预测ARIMA_Forcast   = forecast(m,TempData,step);     % 使用ARIMA模型进行预测PreR=[ARIMA_Predict' ARIMA_Forcast'];            % 结合预测结果

部分图片来源于网络,侵权联系删除!

关注小编会不定期推送高创新型、高质量的学习资料、文章程序代码,为你的科研加油助力!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值