当前位置: 首页 > news >正文

SARIMA 模型Matlab代码

% 导入数据
data = readtable('data.xlsx');  % 假设数据在第一列
y = data{:, 1};  % 获取第一列数据% 划分训练集和测试集,80% 训练,20% 测试
trainSize = floor(0.8 * length(y));
trainData = y(1:trainSize);
testData = y(trainSize+1:end);% 创建时间序列对象
trainTS = timeseries(trainData);
testTS = timeseries(testData);% 设置季节性周期为 4,拟合 SARIMA 模型
% 在此我们假设 SARIMA 模型参数为 (p,d,q)(P,D,Q)[S]
p = 1; d = 1; q = 1;    % 非季节性部分的ARIMA参数
P = 1; D = 1; Q = 1;    % 季节性部分的ARIMA参数
S = 4;                  % 季节性周期% 使用arima函数创建SARIMA模型
model = arima('Constant', 0, 'D', d, 'Seasonality', S, ...'ARLags', p, 'D', D, 'MALags', q, ...'SARLags', P, 'SMALags', Q);% 拟合SARIMA模型
fitModel = estimate(model, trainData);% 进行预测
numSteps = length(testData);
[Y_Forecast, Y_ForecastMSE] = forecast(fitModel, numSteps, 'Y0', trainData);% 计算 R²(决定系数)评价预测效果
SS_tot = sum((testData - mean(testData)).^2);  % 总平方和
SS_res = sum((testData - Y_Forecast).^2);     % 残差平方和
R2 = 1 - (SS_res / SS_tot);  % R²计算% 显示R²值
disp(['R²: ', num2str(R2)]);% 绘制结果
figure;
hold on;
plot(testData, 'b', 'DisplayName', '真实数据');
plot(Y_Forecast, 'r--', 'DisplayName', '预测数据');
legend show;
title('SARIMA预测结果');
xlabel('时间');
ylabel('值');
hold off;

关键调整:

  1. 模型定义: 使用 arima 函数的 SeasonalitySARLagsMALags 等参数来指定季节性部分。

    • 'Constant': 设置常数项为 0(如果没有常数项的话)。
    • 'Seasonality': 设置季节性周期为 4(周期长度)。
    • 'ARLags': 设置非季节性自回归滞后期。
    • 'MALags': 设置非季节性移动平均滞后期。
    • 'SARLags': 设置季节性自回归滞后期。
    • 'SMALags': 设置季节性移动平均滞后期。
  2. 模型拟合与预测: estimate 函数用来拟合模型,forecast 用于预测测试集数据。

  3. R²计算: 计算了 R²(决定系数)来评价模型的预测效果。

注意事项:

  • 确保你安装了 MATLAB 中的 Econometrics Toolbox,因为 arimaforecast 函数来自于该工具箱。
  • 如果你使用的数据有缺失值,可能需要先进行数据清洗。
http://www.lryc.cn/news/495430.html

相关文章:

  • 第八课 Unity编辑器创建的资源优化_特效篇(Particle System)详解
  • Oracle对比表与表之间的结构
  • 基于JSP+MySQL的网上招聘系统的设计与实现
  • 【Linux】进程地址空间(虚拟地址vs物理地址vs页表)
  • pytorch 融合 fuse 学习笔记
  • 在 Ubuntu 20.04 上使用 Lux 下载 Bilibili 视频的详细教程
  • 【eclipse】快捷键
  • 集成开发环境(IDE)的使用技巧插件配置
  • 【如何提升代码工程质量】code review篇
  • Qt 面试题学习13_2024-12-1
  • Hive 安装与架构详解
  • 前端入门指南:模块打包器是什么?模块打包器的工作原理与实践
  • 初识ProtoBuf以及环境搭建(Win和Ubuntu)
  • springboot366高校物品捐赠管理系统(论文+源码)_kaic
  • 【Python网络爬虫笔记】5-(Request 带参数的get请求) 爬取豆瓣电影排行信息
  • 递归算法讲解(c基础)
  • AJAX一、axios使用,url组成(协议,域名,资源路径)查询参数和化简,错误处理,请求/响应报文,状态码,接口文档,
  • QT6学习第六天 初识QML
  • 映射vim键位,基本功能键位表(未更完)
  • Python学习笔记(5)Python的创建型设计模式
  • qt QAnimationDriver详解
  • 零拷贝相关知识点(一)
  • STM32的CAN波特率计算
  • 简单好用的折线图绘制!
  • Hadoop批量计算实验
  • 基于rpcapd与wireshark的远程实时抓包的方法
  • ubuntu多版本安装gcc
  • 算法刷题Day1
  • 泛化调用 :在没有接口的情况下进行RPC调用
  • Java 泛型详细解析