【学习笔记】时间序列模型(ARIMA)

文章目录


前言

通过模型算法,熟练对 python 的应用。

学习视频链接:
https://www.bilibili.com/video/BV1EK41187QF?p=50&vd_source=67471d3a1b4f517b7a7964093e62f7e6

一、时间序列

时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分,分别是描述过去、分析规律和预测未来,本文主要介绍时间序列分析中常用 ARIMA 模型。

时间序列数据

对同一对象在不同时间连续观察所取得的数据,它具备两个要素,第一个要素是时间要素 ,第

二个要素是数值要素

时间序列根据时间和数值性质的不同,可以分为时期时间序列时点时间序列

  • 时期序列 中,数值要素反映现象在一定时期内发展的结果
  • 时点序列 中,数值要素反映现象在一定时点上的瞬间水平

时期序列可加,时点序列不可加

二、ARIMA 模型大纲

ARIMA 模型的建模步骤

  • 对序列绘图,进行平稳性检验,观察序列是否平稳;对于非平稳时间序列要先进行 d 阶差分,
    转化为平稳时间序列;
  • 经过第一步处理,已经得到平稳时间序列。要对平稳时间序列分别求得其自相关系数(ACF)
    和偏自相关系数(PACF),通过对自相关图和偏自相关图的分析,得到最佳的阶数 p、q ;
  • 由以上得到的 d、q、p,得到 ARIMA 模型。然后开始对得到的模型进行模型检验。

模型前提

平稳性

  • 平稳性就是要求经由样本时间序列所得到的拟合曲线在未来的一段时间内仍然能够按照现有
    的形态延续下去
  • 平稳性要求序列的均值和方差不发生明显变化
    • 严平稳:序列所有的统计性质(期望,方差)都不会随着时间的推移而发生变化
    • 宽平稳:期望与相关系数(依赖性)不变,就是说 t t t 时刻的值 X X X 依赖于过去的信息

差分法实现

  • 时间序列在 t t t 和 t − 1 t-1 t−1 时刻的差值,将非平稳序列变平稳
    Δ y x = y ( x + 1 ) − y ( x ) , ( x = 0 , 1 , 2 , . . . ) \Delta yx=y(x+1)-y(x),(x=0,1,2,...) Δyx=y(x+1)−y(x),(x=0,1,2,...)
  • 比如一组数列 [0,1,2,3,4,5,6,7]
  • 进行差分后就会得到新数列 [1,1,1,1,1,1]

平稳性检验

对于一个时间序列,如何确定它是否满足平稳性要求?

通常采用图检验法 (通过时间序列趋势图或者自相关函数图判断) 或 ADF 检验

ADF检验

  • ADF 大致的思想就是基于随即游走(不平稳的一个特殊序列)的,对其进行回归,如果发现 p = 1 p=1 p=1,说明序列满足随机游走,就是非平稳的

图检验法

  1. 自相关系数(ACF)

    有序的随机变量序列与其自身相比较。自相关系数反映了同一序列在不同时序的取值之间的相关性,对于时间序列 y t y_t yt, y t y_t yt 与 y t − k y_{t-k} yt−k 的相关系数称为 y t y_t yt 间隔 k k k 的自相关系数。

  2. 偏自相关系数 (PACF)

    为了能单纯测度 y ( t − k ) y(t-k) y(t−k) 对 y ( t ) y(t) y(t) 的影响,引进偏自相关系数 ( P A C F ) (PACF) (PACF) 的概念。对于平稳时间序列 { y ( t ) } \{y(t)\} {y(t)},所谓滞后 k k k 偏自相关系数指在剔除了中间 k − 1 k-1 k−1 个随机变量 y ( t − 1 ) , y ( t − 2 ) , . . . , y ( t − k + 1 ) y(t-1),y(t-2),...,y(t-k+1) y(t−1),y(t−2),...,y(t−k+1) 的干扰之后, y ( t − k ) y(t-k) y(t−k) 对 y ( t ) y(t) y(t) 影响的相关程度。

  • 下图是训练集的 ACF 和 PACF 图,由图形可以看出,大部分的值都落在了置信区间内,可以把训练集本身作为平稳序列,无需差分。

差分整合移动平均自回归模型 ARIMA(p,q,d)

自回归模型 (AR( p ))

  • 描述当前值历史值之间的关系,用变量自身的历史数据对自身进行预测,其必须要满足平稳性要求,只适用于预测与自身前期相关的现象(时间序列的自相关性)
  • p p p 阶自回归过程的公式定义: y t = μ + ∑ i = 1 p γ i y t − i + ϵ t , p y_\mathrm{t}=\mu+\sum_{i=1}^p\gamma_iy_{t-i}+\epsilon_t,p yt=μ+∑i=1pγiyt−i+ϵt,p 表示用几期的历史值来预测
  • y t y_t yt 是当前值 μ \mu μ 是常数项 p p p 是阶数 γ i \gamma_i γi 是自相关系数

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

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

自回归移动平均模型(ARMA(p,q))

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

差分自回归移动平均模型 ARIMA(p,d,q)

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

确定 p,q

1. 相关函数法

  • 拖尾和截尾:拖尾指序列以指数率单调递减或震荡衰减,而截尾指序列从某个时点变得非常小


2. AIC、BIC准则

  • AIC 准则全称是最小化信息量准则( Akaike Information Criterion):
    A I C = − 21 n ( L ) + 2 K AIC=-21n(L)+2K AIC=−21n(L)+2K,其中 L L L 表示模型的极大似然函数, K K K 表示模型参数个数
  • AIC 准则存在一定的不足。当样本容量很大时,在 AIC 准则中拟合误差提供的信息就要受到样本容量的放大,而参数个数的惩罚因子却和样本容量没关系(一直是2),因此当样本容量很大时, 使用 AIC 准则的模型不收敛于真实模型,它通常比真实模型所含的未知参数个数要多
  • BIC( Bayesian InformationCriterion)贝叶斯信息准则弥补了 AIC 的不足:
    B I C = − 21 n ( L ) + K 1 n ( n ) BIC=-21n(L)+K1n(n) BIC=−21n(L)+K1n(n),其中 n 表示样本容量。
  • 显然,这两个评价指标越小越好。我们通过网格搜索,确定 AIC、BIC 最优的模型 (p、q)

以 BIC 准则为例,确定 p,q 的取值范围为 [0,5],通过循环网格搜索所有组合的 BIC 的值,得到结果如下图

可以看到,BIC最小值的组合为 ('AR1','MA0')

结果分析和模型检验

  • 检验参数估计的显著性( t 检验)
  • 检验残差序列的随机性,即残差之间是独立的 e i = y i − y ^ i e_i=y_i-\hat{y}_i ei=yi−y^i
  • 残差序列的随机性可以通过自相关函数法来检验,即做残差的自相关函数图
  • 从 ACF 图中可以看出残差之间独立性比较高
相关推荐
亦枫Leonlew1 小时前
三维测量与建模笔记 - 3.3 张正友标定法
笔记·相机标定·三维重建·张正友标定法
考试宝1 小时前
国家宠物美容师职业技能等级评价(高级)理论考试题
经验分享·笔记·职场和发展·学习方法·业界资讯·宠物
黑叶白树3 小时前
简单的签到程序 python笔记
笔记·python
@小博的博客3 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
幸运超级加倍~4 小时前
软件设计师-上午题-15 计算机网络(5分)
笔记·计算机网络
南宫生4 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法
懒惰才能让科技进步5 小时前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝
love_and_hope5 小时前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习
Chef_Chen5 小时前
从0开始学习机器学习--Day14--如何优化神经网络的代价函数
神经网络·学习·机器学习
芊寻(嵌入式)5 小时前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习