石家庄网站建设培训/线下推广渠道和方式

石家庄网站建设培训,线下推广渠道和方式,网站开发注意事项,网站程序前台ARIMA预测模型 ARIMA预测模型1.算法步骤2.参数选择(1)拖尾截尾判断法(2) AIC 准则(3) BIC 准则 3.MATLAB 实现参考资料 ARIMA预测模型 #mermaid-svg-mDhjwpnuA0YcEGnE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…

ARIMA预测模型

    • ARIMA预测模型
      • 1.算法步骤
      • 2.参数选择
        • (1)拖尾截尾判断法
        • (2) AIC 准则
        • (3) BIC 准则
      • 3.MATLAB 实现
      • 参考资料

ARIMA预测模型

差分整合移动平均自回归模型ARIMA(p,q,d)
自回归移动平均模型ARMA(p,q)
差分I(d)
自回归模型AR(p)
移动平均模型MA(q)
  1. 自回归模型AR( p)

    • 描述当前值和历史值之间的关系,用变量自身的历史数据对自身进行预测,其必须要满足平稳性要求,只适用于预测与自身前期相关的现象(时间序列的自相关性);
    • p p p 阶自回归过程的公式定义: y t = μ + ∑ i = 1 p γ i y t − i + ε t y_t=μ+\sum_{i=1}^{p}γ_i y_{t-i}+ε_t yt=μ+i=1pγiyti+εt
    • p p p 表示用几期的历史值来预测, y t y_t yt 是当前值、 μ μ μ 是常数项、 p p p 是阶数、 γ i γ_i γi 是自相关系数、 ε t ε_t εt 为误差项;
  2. 移动平均模型MA(q)

    • 移动平均模型关注的是自回归模型中误差项的累计;
    • q q q 阶自回归过程的公式定义: y t = μ + ∑ i = 1 q θ i ε t − i + ε t y_t=μ+\sum_{i=1}^{q}θ_i ε_{t-i}+ε_t yt=μ+i=1qθiεti+εt
    • 即时间序列当前值与历史值没有关系,而只依赖于历史白噪声的线性组合;
    • 移动平均法能有效地消除预测中的随机波动
  3. 自回归移动平均模型ARMA(p,q)

    • 自回归与移动平均的结合;
    • 公式定义: y t = μ + ∑ i = 1 p γ i y t − i + ε t + ∑ i = 1 q θ i ε t − i y_t=μ+\sum_{i=1}^{p}γ_i y_{t-i}+ε_t+\sum_{i=1}^{q}θ_i ε_{t-i} yt=μ+i=1pγiyti+εt+i=1qθiεti
    • 该式表明:
      • 一个随机时间序列可以通过一个自回归移动平均模型来表示,即该序列可以由其自身的过去或滞后值以及随机扰动项来解释;
      • 如果该序列是平稳的,即它的行为并不会随着时间的推移而变化,那么我们就可以通过该序列过去的行为来预测未来。
  4. 差分整合移动平均自回归模型ARIMA(p,q,d)

    • 自回归模型AR( p) 、移动平均模型MA(q) 和 差分I(d) 结合,我们就得到了差分整合移动平均自回归模型ARIMA(p,q,d)
    • p p p 是自回归项, q q q 为移动平均项数, d d d 为时间序列成为平稳时所做的差分次数;
    • 原理:将非平稳时间序列转化为平稳时间序列然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。

1.算法步骤

不平稳
平稳
残差白噪声
残差非白噪声
输入时间序列数据
数据平稳性检验
差分处理d次
确定p和q值
参数估计与模型构建
模型诊断
预测未来值
  1. 数据平稳性检验

    • 平稳性就是要求经由样本时间序列所得到的拟合曲线在未来的一段时间内仍然能够按照现有的形态延续下去,平稳性要求序列的均值和方差不发生明显变化:
      • 严平稳:序列所有的统计性质(期望,方差)都不会随着时间的推移而发生变化;
      • 宽平稳:期望与相关系数(依赖性)不变,就是说 t 时刻的值 X 依赖于过去的信息。
    • 对序列绘图,进行平稳性检验,观察序列是否宽平稳
    • 方法:ADF 检验(Augmented Dickey-Fuller Test);
      • ADF 大致的思想就是基于随即游走(不平稳的一个特殊序列)的,对其进行回归,如果发现 p v a l u e = 1 p_{value} = 1 pvalue=1,说明序列满足随机游走,就是非平稳的;
      • 判断标准:p-value < 0.05 则拒绝非平稳假设;
    • 若不平稳需差分处理( d 次),d 一般不超过 3 。
  2. 模型识别与定阶

    • ACF(自相关函数)确定 MA 阶数 q q q
    • PACF(偏自相关函数)确定 AR 阶数 p p p
    • 或者使用 AIC、BIC 遍历确定 p 、 q p、q pq
  3. 参数估计

    • 极大似然估计或最小二乘法求解参数。
  4. 模型诊断

    • 残差检验:Ljung-Box 检验残差是否为白噪声;
      • Ljung-Box 检验残差是否为白噪声
  5. 预测应用

    • 使用最优模型进行未来值预测。

2.参数选择

(1)拖尾截尾判断法
  • ACF(自相关函数)确定 MA 阶数 q q q

    • 有序的随机变量序列与其自身相比较。自相关系数反映了统一序列在不同时序的取值之间的相关性,对于时间序列 y t y_t yt y t y_t yt y t − k y_{t-k} ytk 的相关系数称为 y t y_t yt 间隔 k k k 的自相关系数,取值范围为 [-1 ,1];
    • 公式: A C F ( k ) = ρ k = C o v ( y t , y t − k ) V a r ( y t ) ACF(k)=ρ_k=\frac{Cov(y_t,y_{t-k})}{Var(y_t)} ACF(k)=ρk=Var(yt)Cov(yt,ytk)
  • PACF(偏自相关函数)确定 AR 阶数 p p p

    • 对于一个平稳 AR§ 模型,求出滞后 k k k 自相关系数 ρ k ρ_k ρk 时,实际上得到并不是 y t y_t yt y t − k y_{t-k} ytk 之间单纯的相关关系;
    • 因为 y t y_t yt 同时还会受到中间 k − 1 k-1 k1 个随机变量 y t − 1 、 y t − 2 、 … 、 y t − k + 1 y_{t-1}、y_{t-2}、…、y_{t-k+1} yt1yt2ytk+1 的影响,而这 k − 1 k-1 k1 个随机变量又都和 y t − k y_{t-k} ytk 具有相关关系,所以自相关系数里面实际掺杂了其他变量对 y t y_t yt y t − k y_{t-k} ytk 的影响;
    • 为了能单纯测度 y t − k y_{t-k} ytk y t y_t yt 的影响,引进偏自相关系数的概念。对于平稳时间序列 { y t } \{y_t\} {yt} ,所谓滞后 k k k 偏自相关系数指在剔除了中间 k − 1 k-1 k1 个随机变量 y t − 1 、 y t − 2 、 … 、 y t − k + 1 y_{t-1}、y_{t-2}、…、y_{t-k+1} yt1yt2ytk+1 的干扰之后, x ( t − k ) x(t-k) x(tk) { y t } \{y_t\} {yt}影响的相关程度;
    • 公式: P A C F ( k ) = C o v [ ( y t − y ˉ t ) , ( y t − k − y ˉ t − k ) ] V a r ( y t − y ˉ t ) V a r ( y t − k − y ˉ t − k ) PACF(k)=\frac{Cov[(y_t-\bar{y}_t),(y_{t-k}-\bar{y}_{t-k})]}{\sqrt{Var(y_t-\bar{y}_t)}\sqrt{Var(y_{t-k}-\bar{y}_{t-k})}} PACF(k)=Var(ytyˉt) Var(ytkyˉtk) Cov[(ytyˉt),(ytkyˉtk)]
  • 拖尾、截尾判断法:拖尾指序列以指数率单调递减或震荡衰减,而截尾指序列从某个时点变得非常小;拖尾与截尾

    • 拖尾(出现以下情况,通常视为(偏)自相关系数拖尾):

      • 如果有超过 5% 的样本(偏)自相关系数都落入 2 倍标准差范围之外;
      • 或者是由显著非 0 的(偏)自相关系数衰减为小值波动的过程比较缓慢或非常连续;
      • 拖尾
    • 截尾(出现以下情况,通常视为(偏)自相关系数 d 阶截尾):

      • 在最初的d阶明显大干 2 倍标准差范围;
      • 之后几乎 95% 的(偏)自相关系数都落在 2 倍标准差范围以内;
      • 且由非零自相关系数衰减为在零附近小值波动的过程非常突然。
      • 截尾
    • 根据截尾拖尾判断使用模型

(2) AIC 准则

通过拖尾和截尾对模型定阶,具有很强的主观性。对于模型参数估计的方法,是通过对损失和正则项的加权评估。在参数选择的时候,需要平衡预测误差与模型复杂度。可以根据信息准则函数法,来确定模型的阶数。
AIC 准则全称是最小化信息量准则(AIC,Akaike Information Criterion): A I C = − 2 l n ( L ) + 2 K AIC=-2ln(L)+2K AIC=2ln(L)+2K其中 L L L 表示模型的极大似然函数, K K K 表示模型参数个数。
AIC准则存在一定的不足。当样本容量很大时,在 AIC 准则中拟合误差提供的信息就要受到样本容量的放大,而参数个数的惩罚因子却和样本容量没关系(一直是2),因此当样本容量很大时使用 AIC 准则的模型不收敛于真实模型,它通常比真实模型所含的未知参数个数要多。

(3) BIC 准则

贝叶斯信息准则(BIC,Bayesian Information Criterion)贝叶斯信息准则弥补了 AIC 的不足: B I C = − 2 l n ( L ) + K l n ( n ) BIC=-2ln(L)+Kln(n) BIC=2ln(L)+Kln(n)其中 n n n 表示样本容量。
AIC、BIC 这两个评价指标越小越好。可以通过网格搜索,确定 AIC、BIC 最优的模型(p、q)。

3.MATLAB 实现

训练集与测试集划分
BIC值热力图
ARIMA残差检验分析
ARIMA预测值与测试集实际值对比
BIC自动定阶结果与最优ARIMA模型参数

%% ARIMA时间序列预测(BIC自动定阶 + 训练集验证)
clc; clear; close all;%% 加载示例数据(航空乘客数据)
% 数据说明:1949-1960年每月航空乘客数(单位:千人)
data = [112 118 132 129 121 135 148 148 136 119 104 118 ...115 126 141 135 125 149 170 170 158 133 114 140 ...145 150 178 163 172 178 199 199 184 162 146 166 ...171 180 193 181 183 218 230 242 209 191 172 194 ...196 196 236 235 229 243 264 272 237 211 180 201 ...204 188 235 227 234 264 302 293 259 229 203 229 ...242 233 267 269 270 315 364 347 312 274 237 278 ...284 277 317 313 318 374 413 405 355 306 271 306 ...315 301 356 348 355 422 465 467 404 347 305 336 ...340 318 362 348 363 435 491 505 404 359 310 337 ...360 342 406 396 420 472 548 559 463 407 362 405 ...417 391 419 461 472 535 622 606 508 461 390 432]';
dates = datetime(1949,1:length(data),1, 'Format', 'MMM yyyy');%% 划分训练集和测试集(前80%训练,后20%测试)
trainRatio = 0.8;
n = length(data);
trainEnd = floor(n * trainRatio);
trainData = data(1:trainEnd);
testData = data(trainEnd+1:end);
trainDates = dates(1:trainEnd);
testDates = dates(trainEnd+1:end);% 可视化数据分割
figure('Color','white', 'Position',[100 100 1000 400]);
plot(trainDates, trainData, 'b', testDates, testData, 'm', 'LineWidth',1.5);
title('数据划分:训练集(蓝色) vs 测试集(品红)');
xlabel('日期'); ylabel('乘客数(千)'); 
legend('训练集', '测试集', 'Location','northwest'); grid on;%% 步骤1:数据平稳化处理
% ADF检验确定差分阶数d
d = 0;
[h, pValue] = adftest(trainData);
while pValue > 0.05 && d < 3d = d + 1;trainDataDiff = diff(trainData, d);[h, pValue] = adftest(trainDataDiff);
end
fprintf('自动确定差分阶数 d = %d\n', d);%% 步骤2:BIC准则自动选择最优p,q
maxP = 13;  % AR最大尝试阶数
maxQ = 13;  % MA最大尝试阶数
numModels = (maxP+1)*(maxQ+1); % 总模型数
bicMatrix = inf(maxP+1, maxQ+1); % 初始化BIC矩阵% 遍历所有p,q组合
for p = 0:maxPfor q = 0:maxQtry% 创建ARIMA模型model = arima(p, d, q);% 拟合模型(抑制命令行输出)[fitModel, ~, logL] = estimate(model, trainData, 'Display','off');% 计算参数总数(AR + MA + 常数项 + 方差)numParams = p + q + 1 + 1; % 计算BIC值:BIC = -2*logL + numParams*log(n)n = length(trainData) - d; % 有效样本量bic = -2*logL + numParams*log(n);bicMatrix(p+1, q+1) = bic;catch ME% 跳过无法收敛的模型fprintf('[警告] p=%d, q=%d 模型拟合失败: %s\n', p, q, ME.message);endend
end% 找到最小BIC对应的p,q
[minBIC, idx] = min(bicMatrix(:));
[bestP, bestQ] = ind2sub(size(bicMatrix), idx);
bestP = bestP - 1; % 调整索引偏移
bestQ = bestQ - 1;
fprintf('\n===== BIC自动定阶结果 =====\n');
fprintf('最优 p = %d, q = %d (BIC=%.2f)\n', bestP, bestQ, minBIC);% 可视化BIC热力图
figure('Color','white');
heatmap(0:maxQ, 0:maxP, bicMatrix, 'Colormap', parula);
xlabel('MA阶数 q'); ylabel('AR阶数 p'); 
title('BIC值热力图(颜色越深BIC越小)');%% 步骤3:使用最优参数建立ARIMA模型
model = arima(bestP, d, bestQ);
fitModel = estimate(model, trainData); % 训练最终模型
disp('最优ARIMA模型参数:');
disp(fitModel);%% 步骤4:模型诊断(残差检验)
residuals = infer(fitModel, trainData);figure('Color','white', 'Position',[100 100 1000 600]);
subplot(2,2,1); plot(residuals); title('残差序列');
subplot(2,2,2); autocorr(residuals); title('残差ACF');
subplot(2,2,3); parcorr(residuals); title('残差PACF');
subplot(2,2,4); qqplot(residuals); title('Q-Q图');% Ljung-Box检验
[h, p] = lbqtest(residuals, 'Lags', 20);
fprintf('残差白噪声检验p值 = %.4f\n', p);%% 步骤5:测试集预测与评估
numTest = length(testData);
[forecastData, forecastMSE] = forecast(fitModel, numTest, trainData);% 计算误差指标
actual = testData;
predicted = forecastData;
mae = mean(abs(actual - predicted));
rmse = sqrt(mean((actual - predicted).^2));
mape = mean(abs((actual - predicted)./actual)) * 100;
% 可视化预测对比
figure('Color','white', 'Position',[100 100 1200 500]);
hold on;
plot(trainDates, trainData, 'b', 'LineWidth',1.5);
plot(testDates, testData, 'm', testDates, forecastData, 'r', 'LineWidth',1.5);
plot(testDates, forecastData-1.96*sqrt(forecastMSE), 'k--');
plot(testDates, forecastData+1.96*sqrt(forecastMSE), 'k--');
text(testDates(end), forecastData(end)+30, ...sprintf('MAE=%.1f\nRMSE=%.1f', mae, rmse), ...'VerticalAlignment','bottom', 'HorizontalAlignment','right');
title(sprintf('ARIMA(%d,%d,%d) 测试集预测', bestP, d, bestQ));
xlabel('日期'); ylabel('乘客数(千)'); 
legend('训练集', '测试集实际值', '预测值', '95%置信区间', 'Location','northwest');
grid on; xlim([dates(1) dates(end)]);
fprintf('\n===== 测试集预测效果 =====\n');
fprintf('MAE: %.1f\nRMSE: %.1f\nMAPE: %.1f%%\n', mae, rmse, mape);

参考资料

[1] 终于弄明白ARIMA模型啦!包括确定pq值详细解释!!哔哩哔哩bilibili
[2] 时间序列模型(ARIMA)讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北_哔哩哔哩_bilibili
[3] 「SPSSAU|数据分析」:时间序列模型分析分析
[4] 5-参数选择_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/70889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用git管理uniapp项目

1.本地管理 1. 在项目根目录中新建 .gitignore 忽略文件&#xff0c;并配置如下&#xff1a; # 忽略 node_modules 目录 /node_modules /unpackage/dist 2. 打开终端&#xff0c;切换到项目根目录中&#xff0c;运行如下的命令&#xff0c;初始化本地 Git 仓库&#xff1…

Unity中动态切换光照贴图的方法

关键代码&#xff1a;LightmapSettings.lightmaps lightmapDatas; LightmapData中操作三张图&#xff1a;lightmapColor,lightmapDir,以及一张ShadowMap 这里只操作前两张&#xff1a; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public cl…

1.2 Kaggle大白话:Eedi竞赛Transformer框架解决方案02-GPT_4o生成训练集缺失数据

目录 0. 本栏目竞赛汇总表1. 本文主旨2. AI工程架构3. 数据预处理模块3.1 配置数据路径和处理参数3.2 配置API参数3.3 配置输出路径 4. AI并行处理模块4.1 定义LLM客户端类4.2 定义数据处理函数4.3 定义JSON保存函数4.4 定义数据分片函数4.5 定义分片处理函数4.5 定义文件名排序…

pycharm远程连接服务器运行pytorch

Linux部署pytorch 背景介绍 不同的开源代码可能需要不同的实验环境和版本&#xff0c;这时候的确体现出Anaconda管理环境的好处了&#xff0c;分别搞一个独立环境方便管理。 有的教程建议选择较旧的版本&#xff0c;但笔者建议在条件允许的情况下安装最新版&#xff0c;本次…

组件注册方式、传递数据

组件注册 一个vue组件要先被注册&#xff0c;这样vue才能在渲染模版时找到其对应的实现。有两种注册方式&#xff1a;全局注册和局部注册。&#xff08;组件的引入方式&#xff09; 以下这种属于局部引用。 组件传递数据 注意&#xff1a;props传递数据&#xff0c;只能从父…

ROS的action通信——实现阶乘运算(三)

在ROS中除了常见的话题(topic&#xff09;通信、服务(server)通信等方式&#xff0c;还有action通信这一方式&#xff0c;由于可以实时反馈任务完成情况&#xff0c;该通信方式被广泛运用于机器人导航等任务中。本文将通过三个小节的分享&#xff0c;实现基于action通信的阶乘运…

四款 AI 协作办公工具,AI工具库革新办公效率

在数字化办公时代&#xff0c;AI 技术正深刻改变着我们的工作方式。AIDH.NETAI工具库汇聚了众多先进的工具&#xff0c;今天我们来了解 AI协作办公工具&#xff0c;探索它们如何助力企业和团队在办公场景中脱颖而出。 Taskade&#xff1a;智能工作流的领航者 Taskade 是一款将…

vue2 h5 画高德地图电子围栏

使用前请先申请高德地图key JavaScript API | 腾讯位置服务 npm install lodash-es效果图 子组件代码 <template><div class"fence-container"><div v-if"loading" class"map-loading"><div class"loader">…

unity学习54:图片+精灵+遮罩mask,旧版文本 text 和新的TMP文本

目录 1 图片 image 1.1 如果直接导入image 1.2 图片 image 和精灵 sprite 1.2.1 继续修改上面的格式 texture type 是default 1.2.2 再次关联到UI的 image 物体上就可以了 1.3 图片和遮罩 mask 1.3.1 创建1个父物体和1个子物体&#xff0c;分别都是image 1.3.2 如果父…

在线骑行|基于SpringBoot的在线骑行网站设计与实现(源码+数据库+文档)

在线骑行网站系统 目录 基于SpringBoot的在线骑行设计与实现 一、前言 二、系统设计 三、系统功能设计 5.1用户信息管理 5.2 路线攻略管理 5.3路线类型管理 5.4新闻赛事管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取…

(python)Arrow库使时间处理变得更简单

前言 Arrow库并不是简单的二次开发,而是在datetime的基础上进行了扩展和增强。它通过提供更简洁的API、强大的时区支持、丰富的格式化和解析功能以及人性化的显示,填补了datetime在某些功能上的空白。如果你需要更高效、更人性化的日期时间处理方式,Arrow库是一个不错的选择…

pandas中的数据结构+数据查询

pandas 数据结构 Series Series是一种类似于一维数组的对象&#xff0c;它由一组数据&#xff08;不同数据类型&#xff09;以及一组与之相关的数据标签&#xff08;即索引&#xff09;组成。 列表创建 仅有数据列表即可产生最简单的Series s1 pd.Series([1,a,5.2,7]) 左侧…

使用前端 html css 和js 开发一个AI智能平台官网模板-前端静态页面项目

最近 AI 人工智能这么火&#xff0c;那必须针对AI 做一个 AI方面的 官方静态网站练手。让自己的前端技术更上一层楼&#xff0c;哈哈。 随着人工智能技术的不断发展&#xff0c;越来越多的AI应用开始渗透到各行各业&#xff0c;为不同领域的用户提供智能化解决方案。本网站致力…

Redis集群机制及一个Redis架构演进实例

Replication&#xff08;主从复制&#xff09; Redis的replication机制允许slave从master那里通过网络传输拷贝到完整的数据备份&#xff0c;从而达到主从机制。为了实现主从复制&#xff0c;我们准备三个redis服务&#xff0c;依次命名为master&#xff0c;slave1&#xff0c;…

Windows系统编程项目(一)进程管理器

本项目将通过MFC实现一个进程管理器&#xff0c;如下图详细信息页所示&#xff1a; 一.首先创建一个基于对话框的MFC项目&#xff0c;在静态库中使用MFC 二.在项目默认的对话框中添加一个列表 三.列表添加变量 四.初始化列表 1.设置列表风格和表头 2.填充列表内容 我们需要在…

RAG-202502

目录 RAG场景的坑知识等级金字塔 初级RAG存在的问题高级RAG索前优化检索优化检索后优化 优化经验总结参考 RAG场景的坑 晦涩的专业术语 误区&#xff1a;在专业领域中。许多文献和资料中充满了专业术语&#xff0c;这些术语对于非专业人士&#xff08;甚至是大模型&#xff0…

STM32-智能小车项目

项目框图 ST-link接线 实物图&#xff1a; 正面&#xff1a; 反面&#xff1a; 相关内容 使用L9110S电机模块 电机驱动模块L9110S详解 | 良许嵌入式 测速模块 语音模块SU-03T 网站&#xff1a;智能公元/AI产品零代码平台 一、让小车动起来 新建文件夹智能小车项目 在里面…

【Linux】vim 设置

【Linux】vim 设置 零、起因 刚学Linux&#xff0c;有时候会重装Linux系统&#xff0c;然后默认的vi不太好用&#xff0c;需要进行一些设置&#xff0c;本文简述如何配置一个好用的vim。 壹、软件安装 sudo apt-get install vim贰、配置路径 对所有用户生效&#xff1a; …

17164字符迁移

17164字符迁移 ⭐️难度&#xff1a;中等 &#x1f4d6; &#x1f4da; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int q scanner.nextInt();scanner.next…

IDEA关闭SpringBoot程序后仍然占用端口的排查与解决

IDEA关闭SpringBoot程序后仍然占用端口的排查与解决 问题描述 在使用 IntelliJ IDEA 开发 Spring Boot 应用时&#xff0c;有时即使关闭了应用&#xff0c;程序仍然占用端口&#xff08;例如&#xff1a;4001 端口&#xff09;。这会导致重新启动应用时出现端口被占用的错误&a…