SARIMA 模型Matlab代码

embedded/2024/12/4 17:16:48/
% 导入数据
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.ppmy.cn/embedded/142386.html

相关文章

六、Python —— 函数

文章目录 一、函数基础1.1、编写函数1.2、调用函数1.3、形参和实参1.3.1、形参的初始化方式1.3.2、带默认值的形参 1.4、变量的作用域1.5、嵌套定义函数1.6、pass 语句 二、参数传递2.1、值传递2.2、引用传递 三、return 语句四、lambda 表达式五、函数递归 一、函数基础 Pytho…

软考高级架构 - 9.2 软件可靠性模型 + 9.3 软件可靠性管理+ 9.4 软件可靠性设计

9.2 软件可靠性模型 软件可靠性模型(Software Reliability Model) 是指为估算软件的可靠性所建立的数学模型。 9.2.1 影响软件可靠性的因素 影响软件可靠性的因素多种多样,包括软件产品的特性、开发过程、运行环境和投入等。识别和优化这些关键因素,可以…

51单片机快速入门之中断的应用 2024/11/23 串口中断

51单片机快速入门之中断的应用 基本函数: void T0(void) interrupt 1 using 1 { 这里放入中断后需要做的操作 } void T0(void): 这是一个函数声明,表明函数 T0 不接受任何参数,并且不返回任何值。 interrupt 1: 这是关键字和参…

【C语言】扫雷游戏(一)

我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。 1,可以用数组存放,如果有雷就用1表示,没雷就用0表示。 2,排查(2,5)这个坐标时,我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时&#xf…

行为型模式-状态模式

状态模式(State Pattern)是行为型设计模式之一,用于允许一个对象在其内部状态改变时改变其行为。状态模式可以有效避免在对象中使用大量的条件语句,通过将状态的逻辑转移到独立的状态类中,实现状态与行为的分离。 核心…

[2024年1月28日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(1))

参考程序&#xff1a; #include <iostream> #include <algorithm> // 用于 std::sortusing namespace std;int main() {int a, b, c;cin >> a >> b >> c;// 将三个数放入一个数组中int arr[3] {a, b, c};// 对数组进行排序sort(arr, arr 3);…

同三维T80005JEHVA视频解码器

同三维T80005JEHVA视频解码器 可解1路4K30HDMI/VGA/CVBS1路3.5音频 可解电台音频网络流&#xff0c;可同时解4个网络流&#xff0c;分割输出 可预设十个流&#xff0c;任意切换1路流输出 产品介绍&#xff1a; 同三维T80005JEHVA 4K视频解码器支持多种音视频流协议解码输出&…

游戏启动时“msvcr120.dll文件丢失”是什么原因以及解决方案。四种解决办法轻松搞定“msvcr120.dll文件丢失”问题

游戏启动时“msvcr120.dll文件丢失”的真相与解决方案 在游戏的世界里&#xff0c;每一个细节都至关重要&#xff0c;而“msvcr120.dll文件丢失”这一问题&#xff0c;无疑是众多玩家在游戏启动时可能遭遇的棘手难题。作为一名软件开发从业者&#xff0c;我深知这一困扰对玩家…