时间序列预测模型:ARIMA模型

1. ARIMA模型原理介绍

ARIMA模型,全称为自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model),是一种常用的时间序列预测方法。ARIMA模型通过对时间序列数据的差分化处理,使非平稳时间序列数据变得平稳,进而利用自回归(AR)滑动平均(MA) 模型对其进行建模和预测。ARIMA模型可以表示为ARIMA(p, d, q),其中:

p:自回归项的阶数,表示预测值与过去值之间的关系。

d:差分次数,使序列平稳所需的差分次数。

q:移动平均项的阶数,表示预测误差与过去误差之间的关系。

2. 实例分析

接下来我们使用一个销售数据来进行ARIMA预测,数据第1列为日期,第2列为销量,利用现有数据预测未来10天的销量数据。

(1)首先读取数据,如何绘制历史数据变化趋势图。

clc,clear
T = readtable('arima_data.xls');
T.Properties.VariableNames
dates=T.x__
sales=T.x___1
plot(dates, sales);
xlabel('日期');
ylabel('销量');
title('销量随时间的变化');

结果如下:

(2)进行平稳性检验、ACF检验、PACF检验,然后确定最合适的p、d、q组合。

% 使用 adftest 检查平稳性
isStationary = adftest(sales);
if ~isStationary
    % 如果非平稳,进行一阶差分
    salesDiff = diff(sales);
    % 重新检查差分后序列的平稳性
    isStationary = adftest(salesDiff);
    % 如果还是非平稳,可能需要进行更多的差分操作
end
% 绘制ACF和PACF图
figure;
subplot(2,1,1);
autocorr(salesDiff); % 对差分后的序列绘制ACF图
subplot(2,1,2);
parcorr(salesDiff); % 对差分后的序列绘制PACF图
% 尝试多个p和q的组合
minBIC = Inf;
bestModel = [];
for p = 0:3 % 假设测试p的范围为0到3
    for q = 0:3 % 假设测试q的范围为0到3
        model = arima(p,1,q);
        [fit,~,logL] = estimate(model, sales, 'Display', 'off');
        [aic,bic] = aicbic(logL, p+q+1, length(sales));
        if bic < minBIC
            minBIC = bic;
            bestModel = fit;
        end
    end
end
bestModel

平稳性检验: 非平稳

ACF检验和PACF检验:


最优模型:

(3)建立模型进行预测

model = arima(1,1,0); % ARIMA(1,1,0)模型
fitModel = estimate(model, sales);
numPeriods = 10; % 预测未来10个时间点
[forecast, ~, ~] = forecast(fitModel, numPeriods, 'Y0', sales)
futureDates = dates(end) + (1:numPeriods)' % 生成未来日期
figure;
plot([dates;futureDates(1)], [sales;forecast(1)], 'b', futureDates, forecast, 'r'); % 绘制实际销量和预测销量
xlabel('日期');
ylabel('销量');
legend({'实际销量', '预测销量'}, 'Location', 'best');
title('销量预测');

ARIMA(1,1,0)模型:

ARIMA(1,1,0) Model (Gaussian Distribution):

             Value     StandardError    TStatistic      PValue  
            _______    _____________    __________    __________

Constant     23.116        13.829         1.6716        0.094607
AR{1}       0.54589       0.11588          4.711       2.465e-06
Variance     5389.9        1084.4         4.9705      6.6791e-07

预测结果图:

  • 15
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抱抱宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值