基于自回归差分移动平均模型时间序列预测matlab程序
可解决非平稳数据
可实现+多步预测+对未来的数据实现预测+评价指标包括mae+mape+rmse+r2
基于 自回归差分移动平均模型(ARIMA, AutoRegressive Integrated Moving Average) 的时间序列预测 MATLAB 程序。ARIMA 模型广泛应用于时间序列分析和预测,适用于具有趋势和季节性的时间序列数据。
程序说明
-
ARIMA 模型简介:
- ARIMA(p, d, q) 模型由三部分组成:
- p:自回归项的阶数。
- d:差分次数(使序列平稳)。
- q:移动平均项的阶数。
- 该模型适用于非平稳时间序列数据的预测。
- ARIMA(p, d, q) 模型由三部分组成:
-
程序功能:
- 使用 MATLAB 的
arima
函数构建 ARIMA 模型。 - 对给定的时间序列进行拟合和预测。
- 可视化原始数据与预测结果。
- 使用 MATLAB 的
-
适用场景:
- 股票价格预测。
- 销售额预测。
- 气象数据预测等。
—
MATLAB 代码
% 基于 ARIMA 模型的时间序列预测
clc;
clear;
%% 参数定义
% 示例时间序列数据(可以替换为实际数据)
data = [100, 105, 110, 115, 120, 128, 135, 142, 150, 160, ...
170, 180, 190, 200, 210, 225, 240, 255, 270, 285];
% 数据分割
trainRatio = 0.8; % 训练集比例
n = length(data);
trainData = data(1:floor(n * trainRatio)); % 训练集
testData = data(floor(n * trainRatio)+1:end); % 测试集
% ARIMA 模型参数
p = 1; % 自回归阶数
d = 1; % 差分次数
q = 1; % 移动平均阶数
%% 构建 ARIMA 模型
model = arima(p, d, q); % 定义 ARIMA 模型
fitModel = estimate(model, trainData'); % 拟合模型
%% 预测
numSteps = length(testData); % 预测步数
[forecast, forecastCI] = forecast(fitModel, numSteps, 'Y0', trainData');
%% 绘图
figure;
plot(1:n, data, 'b', 'LineWidth', 1.5); hold on;
plot((floor(n * trainRatio)+1):n, forecast, 'r--', 'LineWidth', 1.5);
plot((floor(n * trainRatio)+1):n, forecastCI(:, 1), 'k:', 'LineWidth', 1);
plot((floor(n * trainRatio)+1):n, forecastCI(:, 2), 'k:', 'LineWidth', 1);
xlabel('时间');
ylabel('值');
title('ARIMA 时间序列预测');
legend('原始数据', '预测值', '预测置信区间');
grid on;
%% 输出结果
disp('预测值:');
disp(forecast');
disp('真实值:');
disp(testData');
disp('预测误差:');
disp(mean(abs(forecast' - testData)));
—
代码说明
-
时间序列数据:
- 示例中使用了一个简单的递增序列作为时间序列数据,用户可以替换为实际数据(如股票价格、销售额等)。
-
模型构建:
- 使用
arima
函数定义 ARIMA 模型。 - 使用
estimate
函数对训练数据进行模型拟合。
- 使用
-
预测:
- 使用
forecast
函数生成未来若干步的预测值。 - 同时返回预测值的置信区间。
- 使用
-
可视化:
- 绘制原始数据、预测值和置信区间。
- 通过对比预测值和真实值评估模型性能。
示例输出
运行代码后,将显示如下内容:
- 原始时间序列数据与预测值的对比图。
- 预测值及其置信区间。
- 平均绝对误差(MAE),用于评估预测精度。
注意事项
-
参数选择:
- ARIMA 模型的关键是选择合适的
(p, d, q)
参数。 - 可以使用 ACF 和 PACF 图辅助确定
p
和q
,通过单位根检验确定d
。
- ARIMA 模型的关键是选择合适的
-
数据预处理:
- 如果时间序列存在明显的季节性,可以扩展为 SARIMA(季节性 ARIMA)模型。
- 对于非平稳数据,可以通过差分使其平稳。
-
扩展应用:
- 结合外部变量(如天气、节假日)构建 ARIMAX 模型。
- 应用于多维时间序列预测(如 VAR 模型)。