ARIMA时间序列预测完整代码matlab
时间: 2023-08-24 14:04:56 浏览: 56
以下是使用 MATLAB 实现 ARIMA 时间序列预测的完整代码:
```matlab
% 加载数据
data = load('data.mat');
y = data.y;
% 拆分训练集和测试集
train_size = floor(length(y) * 0.8);
train = y(1:train_size);
test = y(train_size+1:end);
% ARIMA 模型拟合
Mdl = arima(2,1,2);
EstMdl = estimate(Mdl, train);
% 预测测试集
[yhat, yci] = forecast(EstMdl, length(test), 'Y0', train);
% 计算误差
mse = mean((test - yhat').^2);
rmse = sqrt(mse);
% 可视化预测结果
figure
plot(y, 'b')
hold on
plot(train_size+1:length(y), yhat, 'r', 'LineWidth', 2)
plot(train_size+1:length(y), yci(:,1), 'k--', 'LineWidth', 1)
plot(train_size+1:length(y), yci(:,2), 'k--', 'LineWidth', 1)
legend({'真实值','预测值','置信区间'})
title(['ARIMA(2,1,2) 预测结果 (RMSE = ', num2str(rmse), ')'])
```
其中,`data.mat` 是存储原始时间序列数据的文件,`y` 是一维向量,表示时间序列的各个观测值。`train_size` 表示训练集的大小,这里设置为全体数据的 80%。`Mdl` 是 ARIMA 模型的初始参数,这里设定为 ARIMA(2,1,2)。`EstMdl` 是拟合后的 ARIMA 模型。`forecast` 函数用于预测测试集,其中 `Y0` 参数设置为训练集的最后一个观测值,表示从该点开始预测。`mse` 和 `rmse` 分别表示均方误差和均方根误差,用于评价预测结果的准确性。最后,使用 `plot` 函数将原始数据、预测结果及其置信区间可视化展示出来。