【数据挖掘 机器学习 | 时间序列】时间序列必学模型: ARIMA超详细讲解

在这里插入图片描述

🤵‍♂️ 个人主页: @AI_magician
📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。
👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍

在这里插入图片描述

【数据挖掘 & 机器学习 | 时间序列】时间序列必学模型: ARIMA超详细讲解
作者: 计算机魔术师
版本: 1.0 ( 2023.8.27 )

摘要: 本系列旨在普及那些深度学习路上必经的核心概念,文章内容都是博主用心学习收集所写,欢迎大家三联支持!本系列会一直更新,核心概念系列会一直更新!欢迎大家订阅

该文章收录专栏
[✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨]

content

      • 传统时间序列系列模型
        • ARIMA模型
          • AR MA 模型介绍
          • **前提假设**
          • ARIMA算法步骤

传统时间序列系列模型

以下是一些常见传统时序建模方法。

名称介绍优点和缺点
移动平均模型 (Moving Average Model) MA移动平均模型是一种基本的时间序列模型,它假设观测值是过去观测值的线性组合。该模型没有考虑趋势和季节性等因素,适用于平稳的时间序列数据。优点:简单易懂,参数易于解释。缺点:忽略了趋势和季节性等重要因素,不适用于非平稳数据。
自回归模型 (Auto Regressive Model) AR自回归模型是一种基于时间序列过去值的线性回归模型。它假设观测值与过去观测值之间存在一种自相关关系。AR模型的阶数§表示其依赖的过去观测值的数量。优点:能够捕捉时间序列内在的自相关性。缺点:不考虑其他影响因素,对于复杂的时间序列可能不够准确。
移动平均自回归模型 (Autoregressive Moving Average Model) ARMA移动平均自回归模型是自回归模型和移动平均模型的结合。ARMA模型包含两个参数,分别表示自回归阶数§和移动平均阶数(q)。优点:结合了自回归和移动平均的优点,能够应对更广泛的时间序列模式。缺点:对于参数的选择和估计需要一定的经验和技巧。
季节性自回归移动平均模型 (Seasonal Autoregressive Integrated Moving Average Model) ARIMA季节性ARIMA模型是ARMA模型的扩展,用于处理具有明显季节性模式的时间序列。它包含了季节性差分和季节性ARMA模型。优点:适用于具有季节性模式的时间序列数据。缺点:参数选择和估计的复杂性较高,需要较多的历史数据。
隐马尔可夫模型 (Hidden Markov Model)隐马尔可夫模型是一种统计模型,用于建模具有潜在隐状态的时间序列数据。它具有两个基本假设,即当前状态仅取决于前一个状态,并且观测值仅取决于当前状态。优点:适用于具有潜在隐状态的时间序列数据,能够进行状态的预测和估计。缺点:对于较长的时间序列,模型复杂度可能较高,计算开销大。
长短期记忆网络 (Long Short-Term Memory Network)长短期记忆网络是一种特殊类型的循环神经网络 (RNN),用于处理具有长期依赖性的时间序列数据。LSTM通过门控机制来控制信息的流动,能够有效地捕捉时间序列中的长期依赖关系。优点:能够处理长期依赖性,适用于复杂的时间序列模式。缺点:模型复杂度较高,训练和调整参数可能较为困难
ARIMA模型
AR MA 模型介绍

我们首先捋清楚下面四个。

AR(自回归)模型是一种仅使用过去观测值来预测未来观测值的模型。它基于一个假设,即当前观测值与过去观测值之间存在一种线性关系,可以用来描述时间序列数据的自相关性。AR模型的阶数表示过去的观测值对当前观测值的影响程度,例如AR(1)表示只考虑一个过去观测值的影响。

MA(移动平均)模型是一种把一个时间序列看作是过去若干期噪声的加权平均,即当前的观察值是由过去的白噪声通过一定的线性组合得到的。基本思想是:大部分时候时间序列应当是相对稳定的。在稳定的基础上,每个时间点上的标签值受过去一段时间内、不可预料的各种偶然事件影响而波动。即在一段时间内,时间序列应该是围绕着某个均值上下波动的序列,时间点上的标签值会围绕着某个均值移动,因此模型才被称为“移动平均模型 Moving Average Model”. MA模型的阶数表示考虑过去的预测误差的数量,例如MA(1)表示只考虑一个过去的预测误差。

解释一下上述这段定义:

  • 均值稳定:时间序列的均值或期望值是恒定的,不随时间变化。这就是公式中的μ项,它对所有时间点都是相同的。这也是为什么会说“时间序列应该是围绕着某个均值上下波动的序列”。在许多实际的时间序列分析中,我们可能需要通过一些预处理步骤(如差分或去趋势)将原始时间序列转换为均值稳定的序列。
  • 方差稳定:时间序列的方差也是恒定的,不随时间变化。换句话说,时间序列的波动程度是一致的,不会在不同的时间点表现出明显的扩大或缩小。在MA模型中,这个特性主要由白噪声项 ϵt 来保证,因为白噪声的方差是常数。
  • 无自相关:在理想的MA模型中,不同时间点的观察值之间没有自相关性。这意味着过去的值不能用来预测未来的值,除非你考虑到了白噪声项。这就是为什么会说“每个时间点上的标签值受过去一段时间内、不可预料的各种偶然事件影响而波动”。

ARMA(自回归移动平均)模型是AR和MA模型的结合。它综合考虑了过去观测值和过去的白噪声序列对当前观测值的影响。ARMA模型的阶数分别表示AR部分和MA部分的阶数,例如ARMA(1,1)表示考虑一个过去观测值和一个过去的预测误差。

ARIMA(自回归综合移动平均)模型是在ARMA模型的基础上引入了差分操作,用于处理非平稳时间序列(季节性)。ARIMA模型包括差分操作、自回归部分和移动平均部分。通过差分操作,ARIMA模型可以将非平稳时间序列转化为平稳时间序列,然后使用ARMA模型进行建模。ARIMA模型的阶数分别表示差分操作、AR部分和MA部分的阶数,例如ARIMA(1,1,1)表示进行一阶差分,考虑一个过去观测值和一个过去的预测误差。

前提假设

1、平稳性:MA模型假设时间序列是平稳的。这意味着序列的主要统计属性,如均值和方差,不随时间变化。这个假设强调了序列在长期内保持稳定的行为,而在短期内可能会受到随机因素的影响。

2、白噪声:MA模型假设存在一个白噪声序列。白噪声是随机误差项,它的均值为0,方差为常数,且各个时间点上的值是相互独立的。这个假设强调了在一段较短的时间内,时间序列的波动可能受到不可预测的随机因素的影响。

3、线性:MA模型假设时间序列可以被过去的白噪声项的线性组合表示。这就是模型被称为“移动平均”模型的原因,因为它的预测值是过去白噪声的加权平均。

4、有限历史影响:MA模型假设只有过去的q个白噪声才对当前时间点的值有影响,其中q是模型的阶数。换句话说,过去更久的白噪声对当前值没有直接影响。

5、标签值的关联性与白噪声的独立性:AR模型假设不同时间点的标签值之间是关联的,这反映了历史标签影响时间序列的长期趋势。而MA模型假设偶然事件在不同时间点上产生的影响(即白噪声)是相互独立的,这反映了在短期内,时间序列的波动可能受到不可预测的随机因素的影响。

举个例子:影响明日会不会下雨的真正因素不仅是“今天”或“昨天”这些过去的天气,而是还有风、云、日照等更加客观和科学的因素(这些其实就是MA模型认为的“偶然因素”)。随着季节的变化、时间自有自己的周期,因此天气也会存在季节性的周期,因此从长期来看时间序列的趋势是恒定的。

ARIMA算法步骤

在这里插入图片描述

  1. 数据准备:首先,收集时间序列数据,并进行必要的预处理。确保数据是连续的,并处理任何缺失值或异常值。

  2. 平稳性检验:通过绘制时间序列图,自相关图及其单位根检验观察数据的整体趋势、季节性和噪声。这将帮助我们选择合适的ARIMA模型参数。(确定是否符合假设,并进行平稳性检验)

  3. 确定差分阶数(d):(绘图看趋势 & ADF等检验),如果时间序列是非平稳的,需要进行差分操作,使其变为平稳序列。通过计算一阶差分、二阶差分等,直到得到平稳序列。差分阶数d即为使时间序列平稳所需的差分次数。

  4. 进行白噪声检验:如果通过白噪声检验(非平稳一定不是白噪声检验),这意味着该时间序列在统计上表现出了随机性,时间序列中没有明显的模式或趋势。可能需要重新考虑研究假设或采用不同的分析方法。

  5. 确定自回归(AR)和移动平均(MA)的阶数(p和q)

  6. 建立公式如下

    AR部分(Autoregressive Part):
    AR ( p ) : X t = ϕ 0 + ∑ i = 1 p ϕ i X t − i + ε t \text{AR}(p): \quad X_t = \phi_0 + \sum_{i=1}^{p} \phi_i X_{t-i} + \varepsilon_t AR(p):Xt=ϕ0+i=1pϕiXti+εt

    其中:

    • X t X_t Xt 是时间序列在时间点t的观测值。
    • ϕ 0 \phi_0 ϕ0 是常数项。
    • ϕ i \phi_i ϕi 是自回归系数,表示时间序列在过去p个时间点的滞后值与当前值之间的线性关系。
    • ε t \varepsilon_t εt 是白噪声随机干扰误差项。

    差分部分(Integrated Part):
    I ( d ) : Y t = ( 1 − L ) d X t \text{I}(d): \quad Y_t = (1 - L)^d X_t I(d):Yt=(1L)dXt

    其中:

    • Y t Y_t Yt 是经过d阶差分处理后的时间序列。
    • L L L 是滞后 算子,表示对时间序列进行一步滞后操作,即 L X t = X t − 1 LX_t = X_{t-1} LXt=Xt1

    移动平均部分(Moving Average Part):
    MA ( q ) : X t = μ + ε 0 + ∑ i = 1 q θ i ε t − i \text{MA}(q): \quad X_t = μ + \varepsilon_{0} + \sum_{i=1}^{q} \theta_i \varepsilon_{t-i} MA(q):Xt=μ+ε0+i=1qθiεti

    其中:

    • θ i \theta_i θi 是移动平均系数,表示误差项在过去q个时间点的滞后值与当前值之间的线性关系。 $\varepsilon_{0} $ 为零均值白噪声序列, μ μ μ为均值。

    • 在实际计算时,MA模型规定 ϵ 等同于模型的预测值 Y^t 与真实标签 Yt 之间的差值(Residuals),即:

      ϵ t = Y t − Y t ϵt=Yt−Y^t ϵt=YtYt

      MA模型使用预测标签与真实标签之间的差异就来代表“无法被预料、无法被估计、无法被模型捕捉的偶然事件的影响”。MA模型相信这些影响累加起来共同影响下一个时间点的标签值,因此 Yt 等于所有 ϵ 的线性组合(加权求和)。 ϵt的前面没有需要求解的系数(即默认系数为1),这可能代表当前的“偶然事件”对 ϵt 的标签的影响程度是100%。

    • 具体地说,给定过去q个时刻的误差项,当前时刻t的误差项ε_t可以通过以下方式计算:

      ε t = X t − μ − θ 1 ε ( t − 1 ) − θ 2 ε ( t − 2 ) − . . . − θ q ε ( t − q ) ε_t = X_t - μ - θ_1ε_(t-1) - θ_2ε_(t-2) - ... - θ_qε_(t-q) εt=Xtμθ1ε(t1)θ2ε(t2)...θqε(tq)

      也就是说,当前时刻的误差项是观测值与序列均值以及过去q个时刻的误差项的加权差。(将公式变换一下)

    综合起来,ARIMA(p, d, q)模型的数学公式可以表示为:

在这里插入图片描述

这个公式描述了ARIMA模型中时间序列的变化规律,其中p、d和q分别表示AR、差分和MA的阶数。通过拟合ARIMA模型到历史数据,并使用该模型进行预测,可以获得对未来时间序列值的估计。

  1. 模型训练:使用最大似然估计或其他优化算法,对ARIMA模型的参数进行估计和优化。

  2. 模型评估:使用各种评估指标(如均方根误差RMSE、平均绝对误差MAE等)来评估模型的拟合效果。如果模型拟合效果不好,可以调整参数并重新拟合模型。

  3. 模型预测:使用训练好的ARIMA模型进行未来时间点的差分预测并通过逆差分得到目标数据。可以通过逐步预测或一次性预测多个时间点。

下面是一个使用Python库实现ARIMA模型的模板示例:

import pandas as pd
from statsmodels.datasets import get_rdataset
from statsmodels.tsa.arima.model import ARIMA

# 获取AirPassengers数据集
data = get_rdataset('AirPassengers').data

# 将Month列转换为日期类型
data['Month'] = pd.to_datetime(data['Month'])

# 将Month列设置为索引列
data.set_index('Month', inplace=True)

# 拆分数据集为训练集和测试集
train_data = data[:'1959']
test_data = data['1960':]

# 创建ARIMA模型
model = ARIMA(train_data, order=(2, 1, 2))

# 拟合模型
model_fit = model.fit()

# 预测未来值
predictions = model_fit.predict(start='1960-01-01', end='1960-12-01', dynamic=False)

# 打印预测结果
print(predictions)

在这里插入图片描述

						  🤞到这里,如果还有什么疑问🤞
					🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
					 	 🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

获取文章分类详情

CategoryController GetMapping("/detail")public Result<Category> detail(Integer id){Category c categoryService.findById(id);return Result.success(c);} CategoryService //根据id查询分类信息Category findById(Integer id); CategoryServiceImpl …

Pandas分组聚合_Python数据分析与可视化

Pandas分组聚合 分组单列和多列分组Series 系列分组通过数据类型或者字典分组获取单个分组对分组进行迭代 聚合应用单个聚合函数应用多个聚合函数自定义函数传入 agg() 中对不同的列使用不同的聚合函数 分组聚合的流程主要有三步&#xff1a; 分割步骤将 DataFrame 按照指定的…

【开源】基于Vue和SpringBoot的康复中心管理系统

项目编号&#xff1a; S 056 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S056&#xff0c;文末获取源码。} 项目编号&#xff1a;S056&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…

【如何将任何直流电机变成伺服电机】

【如何将任何直流电机变成伺服电机】 1 前沿2 伺服电机工作原理3 如何制作定制伺服电机4 AS5600 编码器 – 磁性旋转位置传感器5 定制伺服电机电路图6 PCB设计7 自定义伺服3D模型8 定制伺服齿轮箱的 3D 打印零件9 对控制器进行编程9.1 引导加载程序刻录9.2 代码上传9.3 源代码9…

YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进【NO.79】改进损失函数为VariFocal Loss

前言 作为当前先进的深度学习目标检测算法YOLOv8&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系列文章&#xff0c;将重点对YOLOv8的如何改进进行详细的介绍&…

linux如何重置root密码

目录 当我们想要重置root管理员密码时&#xff0c;我们可以有两种方法进行&#xff1a; 方法一、init方法 1、重启系统&#xff0c;在下图所示界面按e键 2、随后进入以下界面&#xff0c;、将ro修改为rw&#xff0c;在行末尾添加init/bin/sh。​编辑 3、随后按Ctrlx启动到s…

腾讯云服务器价格计算器真心好用,推荐给大家!

腾讯云服务器价格计算器可以一键计算出云服务器的精准报价&#xff0c;包括CVM实例规格价格、CPU内存费用、公网带宽收费、存储系统盘和数据盘详细费用&#xff0c;腾讯云百科txybk.com分享腾讯云价格计算器链接入口、使用方法说明&#xff1a; 腾讯云服务器价格计算器 打开腾…

Java集合大总结——Iterator(迭代器)接口

Iterator接口 在程序开发中&#xff0c;经常需要遍历集合中的所有元素。针对这种需求&#xff0c;JDK专门提供了一个接口java.util.Iterator。 Iterator接口也是Java集合中的一员&#xff0c;但它与Collection、Map接口有所不同。 Collection接口与Map接口主要用于存储元素Ite…

Halcon (3):窗体常用语法使用

文章目录 文章专栏视频资源前言halcon图像使用加载图片示例绘制常用图像批量批注绘制 文章专栏 Halcon开发 视频资源 机器视觉之C#联合Halcon 前言 在使用halcon的算子之前&#xff0c;我们要先学会如何在图片上面进行标注。因为我们不仅要导出处理的结果&#xff0c;还要导出…

win10电脑无法联网,设置IPv4,点击属性无法打开,闪退

win10设置IPv4&#xff0c;点击属性无法打开&#xff0c;闪退 问题:win10设置IPv4&#xff0c;点击属性无法打开&#xff0c;闪退 问题:win10设置IPv4&#xff0c;点击属性无法打开&#xff0c;闪退 第1步&#xff1a;用管理员打开cmd命令窗口&#xff0c;然后输入下面的命令&…

Vue3问题:如何实现el-tree树的单选?

前端功能问题系列文章&#xff0c;点击上方合集↑ 序言 大家好&#xff0c;我是大澈&#xff01; 本文约1400字&#xff0c;整篇阅读大约需要3分钟。 本文主要内容分三部分&#xff0c;第一部分是需求分析&#xff0c;第二部分是实现步骤&#xff0c;第三部分是问题详解。 …

教程:使用 Keras 优化神经网络

一、介绍 在 我 之前的文章中&#xff0c;我讨论了使用 TensorFlow 实现神经网络。继续有关神经网络库的系列文章&#xff0c;我决定重点介绍 Keras——据说是迄今为止最好的深度学习库。 我 从事深度学习已经有一段时间了&#xff0c;据我所知&#xff0c;处理…

网站被攻击怎么办

随着互联网的普及和网络攻击的日益增多&#xff0c;网站安全成为了众多企业和个人必须面对的重要问题。为了保护网站和用户数据的安全&#xff0c;内容分发网络&#xff08;CDN&#xff09;成为了一种有效的解决方案。本文将介绍CDN在保护网站安全、抵御网络攻击方面的作用和应…

80C51单片机的七种寻址方式

首先理解这样的等式 地址是20H的寄存器中&#xff0c;存放的内容是01H (20H)#01H 符号指令的书写格式 单个操作数的指令&#xff1a; 操作助记符 [目的操作数] 两个操作数的指令&#xff1a; 操作助记符[目的操作数],[源操作数] 描述符号 Rn(n0~7)当前工作寄存器组中的寄…

使用内网穿透解决支付宝回调地址在公网问题

使用natapp解决内网穿透问题 前言NATAPP使用购买隧道 支付宝回调地址测试之后的学习计划 前言 最近一个项目用到了支付宝&#xff0c;但是本地调试的时候发现支付宝的回调地址需要在公网上能够访问到。为了更加方便地调试&#xff0c;就使用了natapp内网穿透&#xff0c;将回调…

QEMU显示虚拟化的几种选项

QEMU可以通过通过命令行"-vga type"选择为客户机模拟的VGA卡的类别,可选择的类型有多个: -vga typeSelect type of VGA card to emulate. Valid values for type arecirrusCirrus Logic GD5446 Video card. All Windows versions starting from Windows 95 should …

关于MySQL安装时一直卡在starting sever......手把手教你搞定

&#x1f388;&#x1f388;&#x1f388;很多人刚开始安装MySQL的时候会出现卡在starting sever..的情况&#xff0c;今天手把手教大家轻松搞定&#xff01; 首先出现这个问题的原因有两个&#xff1a; 1. 你的电脑用户名是中文的。 2. 你前一次安装的MySQL没有完全删除干净。…

电商平台革新:食派士小程序的无代码开发与广告推广集成

食派士小程序&#xff1a;无代码开发的连接神器 食派士小程序&#xff0c;作为上海食派士商贸发展有限公司的专利产品&#xff0c;是一种凭借无代码开发&#xff0c;就能实现与各种系统的连接和集成的电商解决方案。它采用无代码开发的方式&#xff0c;避免了API开发的复杂过程…

消息消费过程

前言 本文介绍下Kafka消费过程, 内容涉及消费与消费组, 主题与分区, 位移提交&#xff0c;分区再平衡和消费者拦截器等内容。 消费者与消费组 Kafka将消费者组织为消费组, 消息只会被投递给消费组中的1个消费者。因此, 从不同消费组中的消费者来看, Kafka是多播(Pub/Sub)模式…

实验三 页面置换算法

一. 实验目的&#xff1a; 1、熟悉虚存管理的各种页面淘汰算法 二、实验环境&#xff1a; 硬件环境&#xff1a;计算机一台&#xff0c;局域网环境&#xff1b; 软件环境&#xff1a;Windows XP及以上版本 Professional操作系统平台&#xff0c;Visual C 6.0专业版或企业版…