【数学建模】(时间序列模型)ARIMA时间序列模型

ARIMA时间序列模型详解及常见时间序列模型概览

文章目录

  • ARIMA时间序列模型详解及常见时间序列模型概览
    • 1 引言
    • 2 ARIMA模型的基本概念
    • 3 ARIMA模型的组成部分详解
      • 3.1 AR模型 (自回归模型)
      • 3.2 MA模型 (移动平均模型)
      • 3 I (差分)
    • 4 ARIMA模型的建模步骤
    • 5 Python实现ARIMA模型
    • 6 常见时间序列模型概览
      • 1. 简单时间序列模型
      • 2. 指数平滑模型
      • 3. ARIMA族模型
      • 4. 状态空间模型
      • 5. 机器学习和深度学习模型
    • 7 ARIMA模型的优缺点
      • 优点
      • 缺点
    • 8 如何选择合适的时间序列模型
    • 9 结论
    • 参考资料

1 引言

时间序列分析在数据科学中占据重要地位,广泛应用于金融、经济、气象等领域。本文将详细介绍ARIMA模型的基本原理和应用,并简要概述其他常见的时间序列模型,帮助读者了解时间序列分析的全貌。

2 ARIMA模型的基本概念

ARIMA模型全称为自回归差分移动平均模型(AutoRegressive Integrated Moving Average),由三部分组成:

  • AR (AutoRegressive): 自回归部分
  • I (Integrated): 差分部分
  • MA (Moving Average): 移动平均部分

通常表示为ARIMA(p,d,q),其中:

  • p: 自回归项数
  • d: 差分次数
  • q: 移动平均项数

ARIMA模型的基本思想是利用数据本身的历史信息来预测未来。一个时间点上的标签值既受过去一段时间内的标签值影响,也受过去一段时间内的偶然事件的影响,这就是说,ARIMA模型假设:标签值是围绕着时间的大趋势而波动的,其中趋势是受历史标签影响构成的,波动是受一段时间内的偶然事件影响构成的,且大趋势本身不一定是稳定的。

简而言之,ARIMA模型就是试图通过数据的自相关性和差分的方式,提取出隐藏在数据背后的时间序列模式,然后用这些模式来预测未来的数据。其中:

  1. AR部分用于处理时间序列的自回归部分,它考虑了过去若干时期的观测值对当前值的影响。

  2. I部分用于使非平稳时间序列达到平稳,通过一阶或者二阶等差分处理,消除了时间序列中的趋势和季节性因素。

  3. MA部分用于处理时间序列的移动平均部分,它考虑了过去的预测误差对当前值的影响。

结合这三部分,ARIMA模型既可以捕捉到数据的趋势变化,又可以处理那些有临时、突发的变化或者噪声较大的数据。所以,ARIMA模型在很多时间序列预测问题中都有很好的表现。

3 ARIMA模型的组成部分详解

3.1 AR模型 (自回归模型)

AR模型,即自回归模型,其优势是对于具有较长历史趋势的数据,AR模型可以捕获这些趋势,并据此进行预测。但是AR模型不能很好地处理某些类型的时间序列数据,例如那些有临时、突发的变化或者噪声较大的数据。AR模型相信“历史决定未来”,因此很大程度上忽略了现实情况的复杂性、也忽略了真正影响标签的因子带来的不可预料的影响。

AR§模型假设当前值与过去p个时间点的值线性相关。数学表达式为:

X t = c + ϕ 1 X t − 1 + ϕ 2 X t − 2 + . . . + ϕ p X t − p + ε t X_t = c + \phi_1 X_{t-1} + \phi_2 X_{t-2} + ... + \phi_p X_{t-p} + \varepsilon_t Xt=c+ϕ1Xt1+ϕ2Xt2+...+ϕpXtp+εt

其中:

  • X t X_t Xt 是t时刻的值
  • c c c 是常数项
  • ϕ 1 , ϕ 2 , . . . , ϕ p \phi_1, \phi_2, ..., \phi_p ϕ1,ϕ2,...,ϕp 是模型参数
  • ε t \varepsilon_t εt 是白噪声

3.2 MA模型 (移动平均模型)

相反地,MA模型,即移动平均模型,可以更好地处理那些有临时、突发的变化或者噪声较大的时间序列数据。但是对于具有较长历史趋势的数据,MA模型可能无法像AR模型那样捕捉到这些趋势。MA模型相信“时间序列是相对稳定的,时间序列的波动是由偶然因素影响决定的”,但现实中的时间序列很难一直维持“稳定”这一假设。

(P.S. ARIMA模型是一种结合了AR模型和MA模型优点的模型,可以处理更复杂的时间序列问题。参考资料:时间序列模型(四):ARIMA模型)

MA(q)模型假设当前值与过去q个预测误差项线性相关。数学表达式为:

X t = μ + ε t + θ 1 ε t − 1 + θ 2 ε t − 2 + . . . + θ q ε t − q X_t = \mu + \varepsilon_t + \theta_1 \varepsilon_{t-1} + \theta_2 \varepsilon_{t-2} + ... + \theta_q \varepsilon_{t-q} Xt=μ+εt+θ1εt1+θ2εt2+...+θqεtq

其中:

  • μ \mu μ 是期望值
  • ε t \varepsilon_t εt 是白噪声
  • θ 1 , θ 2 , . . . , θ q \theta_1, \theta_2, ..., \theta_q θ1,θ2,...,θq 是模型参数

3 I (差分)

差分操作用于使非平稳时间序列转化为平稳序列(P.S. GNSS中的周跳检测)。d阶差分定义为:

∇ d X t = ( 1 − B ) d X t \nabla^d X_t = (1-B)^d X_t dXt=(1B)dXt

其中B是后移算子, B X t = X t − 1 B X_t = X_{t-1} BXt=Xt1

4 ARIMA模型的建模步骤

  1. 平稳性检验:使用ADF检验等方法检验时间序列是否平稳
  2. 差分处理:如果序列非平稳,进行差分直到序列平稳
  3. 模型识别:通过ACF和PACF图确定合适的p、q值
  4. 模型拟合:估计模型参数
  5. 模型诊断:检验残差是否为白噪声
  6. 模型预测:使用拟合好的模型进行预测

5 Python实现ARIMA模型

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf# 加载数据
data = pd.read_csv('data.csv', index_col='date', parse_dates=True)
ts = data['value']# 平稳性检验
def test_stationarity(timeseries):# ADF检验dftest = adfuller(timeseries, autolag='AIC')dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])for key, value in dftest[4].items():dfoutput['Critical Value (%s)'%key] = valueprint(dfoutput)# 差分处理
ts_diff = ts.diff().dropna()# 模型拟合
model = ARIMA(ts, order=(1, 1, 1))  # ARIMA(p,d,q)
model_fit = model.fit()
print(model_fit.summary())# 模型预测
forecast = model_fit.forecast(steps=10)  # 预测未来10个时间点

6 常见时间序列模型概览

除了ARIMA模型外,时间序列分析还有许多其他模型,以下是一些常见的时间序列模型:

1. 简单时间序列模型

  • 简单平均模型:使用历史数据的平均值作为预测值
  • 朴素模型(Naive Method):使用最近一期的观测值作为预测值
  • 季节性朴素模型:使用上一个季节周期对应时间点的值作为预测值
  • 移动平均模型:使用过去n个时间点的平均值作为预测值

2. 指数平滑模型

  • 简单指数平滑(SES):适用于无趋势、无季节性的数据
    y ^ t + 1 = α y t + ( 1 − α ) y ^ t \hat{y}_{t+1} = \alpha y_t + (1-\alpha)\hat{y}_t y^t+1=αyt+(1α)y^t

  • Holt线性趋势模型:适用于有趋势、无季节性的数据
    KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲ \hat{y}_{t+h} …

  • Holt-Winters季节性模型:适用于有趋势、有季节性的数据

    • 加法形式和乘法形式

3. ARIMA族模型

  • SARIMA:季节性ARIMA,处理具有季节性的时间序列
    S A R I M A ( p , d , q ) ( P , D , Q ) s SARIMA(p,d,q)(P,D,Q)_s SARIMA(p,d,q)(P,D,Q)s

  • ARIMAX:带外生变量的ARIMA模型
    X t = c + ϕ 1 X t − 1 + . . . + ϕ p X t − p + β 1 Z 1 , t + . . . + β k Z k , t + ε t + θ 1 ε t − 1 + . . . + θ q ε t − q X_t = c + \phi_1 X_{t-1} + ... + \phi_p X_{t-p} + \beta_1 Z_{1,t} + ... + \beta_k Z_{k,t} + \varepsilon_t + \theta_1 \varepsilon_{t-1} + ... + \theta_q \varepsilon_{t-q} Xt=c+ϕ1Xt1+...+ϕpXtp+β1Z1,t+...+βkZk,t+εt+θ1εt1+...+θqεtq

  • VARIMA:向量ARIMA,处理多变量时间序列

  • GARCH:广义自回归条件异方差模型,用于建模波动性
    σ t 2 = ω + ∑ i = 1 p α i ε t − i 2 + ∑ j = 1 q β j σ t − j 2 \sigma_t^2 = \omega + \sum_{i=1}^{p} \alpha_i \varepsilon_{t-i}^2 + \sum_{j=1}^{q} \beta_j \sigma_{t-j}^2 σt2=ω+i=1pαiεti2+j=1qβjσtj2

4. 状态空间模型

  • 卡尔曼滤波:递归估计动态系统状态的算法
  • 结构时间序列模型:将时间序列分解为趋势、季节性和不规则成分

5. 机器学习和深度学习模型

  • Prophet:Facebook开发的时间序列预测工具,适合处理具有强季节性的数据
  • LSTM (长短期记忆网络):一种特殊的RNN,能够学习长期依赖关系
  • GRU (门控循环单元):LSTM的简化版本,计算效率更高
  • Transformer:基于注意力机制的模型,近年来在时间序列预测中表现出色
  • N-BEATS:纯深度学习方法,不依赖于传统的时间序列分解

7 ARIMA模型的优缺点

优点

  1. 理论基础扎实,模型简单易懂
  2. 适用于大多数线性时间序列问题
  3. 预测短期趋势效果较好
  4. 模型解释性强

缺点

  1. 只适用于平稳或可通过差分转化为平稳的时间序列
  2. 对非线性关系的建模能力有限
  3. 需要较长的历史数据才能得到较好的效果
  4. 不适合处理具有长期记忆特性的序列

8 如何选择合适的时间序列模型

选择时间序列模型时,需要考虑以下因素:

  1. 数据特性:是否存在趋势、季节性、周期性
  2. 预测时间范围:短期预测和长期预测适合的模型不同
  3. 数据量:深度学习模型通常需要更多的数据
  4. 解释性需求:是否需要理解模型的内部机制
  5. 计算资源:复杂模型需要更多的计算资源

9 结论

ARIMA作为经典的时间序列分析模型,在许多场景下仍然表现良好。随着机器学习和深度学习的发展,时间序列分析工具箱不断丰富,为不同的应用场景提供了更多选择。在实际应用中,应根据具体问题特点选择合适的模型,有时候甚至可以将多种模型结合使用,以获得更好的预测效果。

参考资料

  1. Box, G. E. P., & Jenkins, G. M. (1976). Time Series Analysis: Forecasting and Control.
  2. Hyndman, R. J., & Athanasopoulos, G. (2018). Forecasting: Principles and Practice.
  3. statsmodels官方文档: https://www.statsmodels.org/
  4. 时间序列模型(四):ARIMA模型

希望这篇文章对您了解ARIMA和其他时间序列模型有所帮助!如有任何问题,欢迎在评论区留言交流。

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

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

相关文章

嵌入式AI开发者职业成长路线图

嵌入式AI开发者职业成长路线图 一、核心技术能力构建 1. 深度学习框架 TensorFlow/TensorFlow Lite:适合部署到嵌入式设备PyTorch:研究和原型开发ONNX:模型转换与部署 2. 模型理解与应用 卷积神经网络(CNN):图像识别、目标检…

单元测试之mockito

简介 mockito是一款模拟测试框架,用于Java开发中的单元测试。通过mockito,可以创建和配置一个对象,通过它来替换对象的外部依赖。 作用:模拟一个类的外部依赖,保证单元测试的独立性。例如,在类A中会调用类…

Oracle数据库数据编程SQL<5 正则表达式函数*****>

Oracle 提供了一组强大的正则表达式函数,用于在 SQL 和 PL/SQL 中进行复杂的模式匹配和文本处理。这些函数基于 POSIX 标准正则表达式,功能强大且灵活。 目录 一、Oracle 正则表达式函数概览 二、函数详解及示例 1. REGEXP_LIKE 2. REGEXP_INSTR 3. REGEXP_SUBSTR 4. …

el-tabs添加按钮增加点击禁止样式

前置文章 一、vue使用element-ui自定义样式思路分享【实操】 二、vue3&ts&el-tabs多个tab表单校验 现状确认 点击添加按钮,没有点击样式,用户感知不明显没有限制最大的tab添加数量,可以无限添加 调整目标&代码编写 调整目标…

DB-Mysql中TIMESTAMP与DATETIME的区别

文章目录 ‌存储范围‌‌时区处理‌存储空间‌默认值和自动更新‌‌零值处理‌适用场景‌总结 在MySQL中,TIMESTAMP和DATETIME是两种常用的日期时间数据类型,它们虽然都用于存储日期和时间,但在多个方面存在显著差异。以下是它们的主要区别&a…

Spring 中有哪些设计模式?

🧠 一、Spring 中常见的设计模式 设计模式类型Spring 中的应用场景单例模式创建型默认 Bean 是单例的工厂模式创建型BeanFactory、FactoryBean抽象工厂模式创建型ApplicationContext 提供多个工厂接口代理模式结构型AOP 动态代理(JDK/CGLIB)…

C# Winform 入门(3)之尺寸同比例缩放

放大前 放大后 1.定义当前窗体的宽度和高度 private float x;//定义当前窗体的宽度private float y;//定义当前窗台的高度 2.接收当前窗体的尺寸大小 x this.Width;//存储原始宽度ythis.Height;//存储原始高度setTag(this);//为控件设置 Tag 属性 3.声明方法,获…

从零开始的编程-java篇1.6.3

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

【Redis】数据的淘汰策略

目录 淘汰策略方案(8种) LRU和LFU策略的区别 使用建议 手搓LRU算法 方式一 方式二 大家好,我是jstart千语。今天和大家回来聊一下redis,这次要讲的是它的淘汰策略。为什么需要淘汰策略呢,就是当redis里面的内存占…

【前端】Node.js一本通

近两天更新完毕,建议关注收藏点赞。 目录 复习Node.js概述使用fs文件系统模块path路径模块 http模块 复习 为什么JS可以在浏览器中执行 原理:待执行的JS代码->JS解析引擎 不同的浏览器使用不同的 JavaScript 解析引擎:其中,C…

【AI论文】JavisDiT: 具备层次化时空先验同步机制的联合音视频扩散Transformer

摘要:本文介绍了一种新型的联合音频-视频扩散变换器JavisDiT,该变换器专为同步音频-视频生成(JAVG)而设计。 基于强大的扩散变换器(DiT)架构,JavisDiT能够根据开放式用户提示同时生成高质量的音…

Java-实现公有字段自动注入(创建人、创建时间、修改人、修改时间)

文章目录 Mybatis-plus实现自动注入定义 MetaObjectHandler配置 MyBatis-Plus 使用 MetaObjectHandler实体类字段注解使用服务类进行操作测试 Jpa启用审计功能实现自动注入添加依赖启动类启用审计功能实现AuditorAware接口实体类中使用审计注解 总结 自动注入创建人、创建时间、…

金融机构开源软件风险管理体系建设

开源软件为金融行业带来了创新活力的同时,也引入了一系列独特的风险。金融机构需要构建系统化的风险管理体系,以识别和应对开源软件在全生命周期中的各种风险点。下面我们将解析开源软件在金融场景下的主要风险类别,并探讨如何建立健全的风险…

图形渲染中的定点数和浮点数

三种API的NDC区别 NDC全称,Normalized Device Coordinates Metal、Vulkan、OpenGL的区别如下: featureOpenGL NDCMetal NDCVulkan NDC坐标系右手左手右手z值范围[-1,1][0,1][0,1]xy视口范围[-1,1][-1,1][-1,1] GPU渲染的定点数和浮点数 定点数类型&a…

同花顺客户端公司财报抓取分析

目标客户端下载地址:https://ft.51ifind.com/index.php?c=index&a=download PC版本 主要难点在登陆,获取token中的 jgbsessid (每次重新登录这个字段都会立即失效,且有效期应该是15天的) 抓取jgbsessid 主要通过安装mitmproxy 使用 mitmdump + 下边的脚本实现监听接口…

QT工程建立

打开软件新建一个工程 选择chose 工程命名,选择保存路径,可以自己选择,但是不要有中文路径 默认的直接下一步 任意选一个下一步 点击完成 之后是这个界面,点击右下角的绿色三角形编译一下 实验内容 添加类 第一个是建立cpp和.h文件…

【NLP 53、投机采样加速推理】

目录 一、投机采样 二、投机采样改进:美杜莎模型 流程 改进 三、Deepseek的投机采样 流程 Ⅰ、输入文本预处理 Ⅱ、引导模型预测 Ⅲ、候选集筛选(可选) Ⅳ、主模型验证 Ⅴ、生成输出与循环 骗你的,其实我在意透了 —— 25.4.4 一、…

ffmpeg时间基与时间戳

时间基、时间戳 时间基:表示时间单位的分数,用来定义视频或音频流中时间的精度。其形式是一个分数,分子通常为 1,而分母则表示每秒的单位数。 时间戳:代表在时间轴里占了多少个格子,是特定的时间点。 时间…

激光加工中平面倾斜度的矫正

在激光加工中,加工平面的倾斜度矫正至关重要,直接影响加工精度和材料处理效果。以下是系统的矫正方法和步骤: 5. 验证与迭代 二次测量:加工后重新检测平面度,确认残余误差。 反馈优化:根据误差分布修正补偿…

算法刷题记录——LeetCode篇(2.2) [第111~120题](持续更新)

更新时间:2025-04-04 算法题解目录汇总:算法刷题记录——题解目录汇总技术博客总目录:计算机技术系列博客——目录页 优先整理热门100及面试150,不定期持续更新,欢迎关注! 114. 二叉树展开为链表 给你二…