数据分析技术:时间序列分析的AR/MA/ARMA/ARIMA模型体系

2024-05-11 03:39

1. 数据分析技术:时间序列分析的AR/MA/ARMA/ARIMA模型体系

前面草堂君已经按照时间序列分析的教学顺序推送了以下文章,大家可以直接点击下方文章名称阅读回顾:
  
 在以上这些文章中,介绍了什么是时间序列以及时间序列分析的作用、时间序列的描述、时间序列的变动成分组成、如何用指数平滑模型分析带有长期趋势和季节变动两种变动成分的时间序列。可惜的是,事实总比想象来得复杂,很多时间序列的变动成分组成并不能直接通过时间序列图看出来,这个时候,通过时间序列分解的方法分析时间序列就不太合适了,而且准确性也会大打折扣。
  
 因为传统时间序列分析技术(时间序列分解法)的缺陷,所以统计学家开发出更为通用的时间序列分析方法,其中AR/MA/ARMA/ARIMA在这个发展过程中扮演了非常重要的角色,直到现在,它们都在实际工作生活中发挥重要作用。这四种分析方法的共同特点都是跳出变动成分的分析角度,从时间序列本身出发,力求得出前期数据与后期数据的量化关系,从而建立前期数据为自变量,后期数据为因变量的模型,达到预测的目的。来个通俗的比喻,大前天的你、前天的你、昨天的你造就了今天的你。
  
 虽然AR/MA/ARMA/ARIMA是四种可以独立使用的分析方法,但是它们其实是互补的关系,适用于包含不同变动成分的时间序列。由于这四种分析方法涉及的原理解释起来需要大量篇幅,所以草堂君在这里做通俗介绍。
  
   
  
 通俗介绍四种时间序列分析法之前,需要先回顾前面介绍的一个知识点,平稳时间序列和非平稳时间序列,AR/MA/ARMA用于分析平稳时间序列,ARIMA通过差分可以用于处理非平稳时间序列。平稳时间序列和非平稳时间序列如下面两幅图所示:
                                          
 一般具有长期趋势的时间序列都是非平稳时间序列。根据趋势的不同,可以使用差分将具有长期趋势的时间序列转换成平稳时间序列。例如,线性增长的长期趋势,可以通过一阶差分形成新的平稳的(消除长期趋势)时间序列:
                                          
 例如,时间序列的数值为线性增长的(1,2,3,4,5,6,7,8),经过一阶差分以后,新的时间序列的数值为(1,1,1,1,1,1,1),就成为稳定的时间序列了。
  
 根据长期趋势的发展趋势不同,可以进行差分的次数和方法也不相同,一般的规律如下:
  
   
  
 这四种模型的名称都是它们英文全称的缩写。AR模型称为自回归模型(Auto Regressive model);MA模型称为移动平均模型(Moving Average model);ARMA称为自回归移动平均模型(Auto Regressive and Moving Average model);ARIMA模型称为差分自回归移动平均模型。
  
   
  
 如果某个时间序列的任意数值可以表示成下面的回归方程,那么该时间序列服从p阶的自回归过程,可以表示为AR(p):
                                          
 可以发现,AR模型利用前期数值与后期数值的相关关系(自相关),建立包含前期数值和后期数值的回归方程,达到预测的目的,因此成为自回归过程。这里需要解释白噪声,大家可以将白噪声理解成时间序列数值的随机波动,这些随机波动的总和会等于0,例如前面统计基础文章中介绍的,某条饼干的自动化生产线,要求每包饼干为500克,但是生产出来的饼干产品由于随机因素的影响,不可能精确的等于500克,而是会在500克上下波动,这些波动的总和将会等于互相抵消等于0。
  
   
  
 如果某个时间序列的任意数值可以表示成下面的回归方程,那么该时间序列服从q阶的移动平均过程,可以表示为MA(q):
                                          
 可以发现,某个时间点的指标数值等于白噪声序列的加权和,如果回归方程中,白噪声只有两项,那么该移动平均过程为2阶移动平均过程MA(2)。比较自回归过程和移动平均过程可知,移动平均过程其实可以作为自回归过程的补充,解决自回归方差中白噪声的求解问题,两者的组合就成为自回归移动平均过程,称为ARMA模型。
  
   
  
 自回归移动平均模型由两部分组成:自回归部分和移动平均部分,因此包含两个阶数,可以表示为ARMA(p,q),p是自回归阶数,q为移动平均阶数,回归方程表示为:
                                          
 从回归方程可知,自回归移动平均模型综合了AR和MA两个模型的优势,在ARMA模型中,自回归过程负责量化当前数据与前期数据之间的关系,移动平均过程负责解决随机变动项的求解问题,因此,该模型更为有效和常用。
  
   
  
 介绍时间序列平稳性时提到过,AR/MA/ARMA模型适用于平稳时间序列的分析,当时间序列存在上升或下降趋势时,这些模型的分析效果就大打折扣了,这时差分自回归移动平均模型也就应运而生。ARIMA模型能够用于齐次非平稳时间序列的分析,这里的齐次指的是原本不平稳的时间序列经过d次差分后成为平稳时间序列。
  
 在现实生活中,存在很多非平稳的时间序列,它们的均值和方差是随着时间的变化而变化的,幸运的是,统计学家们发现,很多时间序列本身虽然不平稳,但是经过差分(相邻时间点的指标数值相减)之后,形成的新时间序列就变成平稳时间序列了。因此,差分自回归移动平均模型写成ARIMA(p,d,q)。p代表自回归阶数;d代表差分次数;q代表移动平均阶数。在spss软件中,有时输出的ARIMA模型包括6个参数:ARIMA(p,d,q)(P,D,Q),这是因为如果时间序列中包含季节变动成分的话,需要首先将季节变动分解出来,然后再分别分析移除季节变动后的时间序列和季节变动本身。这里小写的p,d,q描述的是移除季节变动成分后的时间序列;大写的P,D,Q描述的是季节变动成分。两个部分是相乘的关系。因此,ARIMA(p,d,q)(P,D,Q)也被称为复合季节模型。
  
   
  
 时间序列分析的文章更新到这里,总共介绍了两个时间序列分析的体系:时间序列分解模型体系和AR/MA/ARMA/ARIMA模型体系。两者的分析原理是不同的,时间序列分解是力求将时间序列分解成不同的变动成分,分析每种变动成分的规律,然后在综合各种成分的规律用于预测;AR/MA/ARMA/ARIMA模型体系是从时间序列数值本身的相关关系出发,将移动平均技术、相关分析技术和平稳技术(差分)等纳入模型,力求建立时间序列数值之间的回归方程,从而达到预测的目的。
  
 下篇推送将重点介绍ARIMA模型的分析原理:包括如何确定p,d,q参数;如何判断模型的拟合效果;如何利用SPSS做时间序列的ARIMA模型分析。

数据分析技术:时间序列分析的AR/MA/ARMA/ARIMA模型体系

2. 时间序列的分析模型

时间数列的组合模型1 加法模型:Y=T+S+C+I (Y,T 计量单位相同的总量指标)(S,C,I 对长期趋势产生的或正或负的偏差)2 乘法模型:Y=T·S·C·I(常用模型) (Y,T 计量单位相同的总量指标)(S,C,I 对原数列指标增加或减少的百分比)

3. 求教时间序列AR模型做预测 MATLAB

如何用MATLAB对时间序列AR模型做预测?
第一步,使用load命令加载数据
第二步,使用ar函数,确定时间序列AR模型
第三步,确定预测时间范围指定为K个样本。K=100。
第四步,使用forecast函数,绘制给定时间范围内的预测系统响应。
实现代码,(供参考)
clc
%Forecast Response of Time Series Model
%时间序列模型的预测响应
load iddata9 z9
past_data = z9.OutputData(1:50);
model = ar(z9,4);
K = 100;
forecast(model,'r--',past_data,K);
运行结果


求教时间序列AR模型做预测 MATLAB

4. 时间序列-ARIMA

 1、自回归模型(AR)   描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测   自回归模型必须满足 平稳性 的要求   
                                                                                                                                                                                                           
   8、如何确定模型和p,d,q
                                           注:可能不止一组p,q   9、ARIMA建模流程   1)将序列平稳(差分法确定d)   2)p和q阶数确定(ACF与PACF)   3)ARIMA(p,d,q)   10、模型选择AIC与BIC:选择更简单的模型
                                           1)ARIMA模型的残差是否是平均值为0且方差为常数的正态分布   2)QQ图:线性即正态分布

5. 时间序列建模分析

时序数据的特点:
   1.时间序列数据依赖于时间,但不一定是时间的严格函数。
   2.时间序列数据每时刻上的值具有一定的随机性,不可能完全准确地用历史值去预测。
   3.时间序列数据前后时刻(但不一定是相邻时刻)的数值往往具有相关性。
   4.从整体上看,时间序列往往会呈现出某种趋势性或出现周期性变化的现象。
  
 分类:
   按研究对象分类:一元时间序列和多元时间序列。
   按时间参数分类:离散时间序列和连续时间序列。
   按统计特性分类:平稳时间序列和非平稳时间序列。
   按分布规律分类:高斯型时间序列和非高斯型时间序列
  
 1.统计时序分析
   1. 频域分析
   2. 时域分析
  
 2.平稳时间序列检验
   什么是平稳时间序列?这就需要我们从概率统计的角度来定义。一般来讲,平稳时间序列有两种定义,分别是:严平稳时间序列和宽平稳时间序列。其中,严平稳要求序列所有的统计性质都不会随着时间的推移而发生变化。宽平稳则认为只要保证序列 [二阶矩]( https://en.wikipedia.org/wiki/Moment_(mathematics)  平稳,就代表序列稳定。显然,严平稳比宽平稳的条件严格。严平稳是对序列联合分布的要求,以保证序列所有的统计特征都相同。
  
 关于序列平稳性的检验,一般有两种方法,分别是:图检验和假设检验。图检验是根据时序图和自相关图显示的特征作出判断,因其操作简便而运用广泛。简单来讲,如果一张时序图呈现出明显的增长和下降趋势,那么就一定不平稳。
                                          
 3.自相关图
  
 4.纯随机性检验
   怎样判断一个平稳序列是否随机呢?这就会用到纯随机性检验。纯随机性检验的过程中,一般会涉及到两个统计量,分别是:Q 统计量和 LB 统计量(Ljung-Box)。但由于 LB 统计量是 Q 统计量的修正,所以业界通常所称的 Q 统计量也就是 LB 统计量。
  
 Python 中,我们可以利用 statsmodels 统计计算库中的 acorr_ljungbox() 函数计算 LB 统计量,该函数默认会返回 LB 统计量和 LB 统计量的 P 值。如果 LB 统计量的 P 值小于 0.05,我们则认为该序列为非随机序列,否则就为随机序列。
  
 5.ARMA介绍及建模
   ARMA 模型的全称是自回归移动平均模型,它是目前最常用的拟合平稳序列的模型。ARMA 模型一般又可以被细分为 AR 自回归模型,MA 移动平均模型和 ARMA 三类。

时间序列建模分析

6. 时间序列模型

众所周知,时间序列的预测是需要假定在时间序列平稳随机过程的基础上,若为非平稳时间序列,容易造成对随机过程的伪回归,得到的回归函数及检验没有可信度, 那么到底什么是平稳时间序列 ? 什么是随机过程(白噪声)? 
  
  时间序列平稳性分为弱平稳和强平稳,弱平稳是序列的均值、标准差、协方差不随时间的变化而发生改变,强平稳则是序列的联合分布函数与时间的位移无关。 
  
 我们预测时间序列一般都用序列本身存在的前后依附关系,这种关系是时间序列预测的基础,我们这里假设本期数值只与前一期相关(与前t期相关的类似),则 平稳性的推导 过程如下
                                          
 所以当r小于1的时候,序列才为平稳序列,也称为随机游走过程,但这个至少均值还为零,是带漂移时间序列的特殊形式,那什么是带漂移序列,带漂移序列就是均值也随着时间t发生改变,即
                                          
 但是也由上图第二个公式可知,一阶差分之后的(上面三角形加Yt)的均值和方差保持不变(因为Ut服从正态分布)
  
 既然我们知道了什么是非平稳时间序列,那我们应该怎么检验呢?
  
 答案是单位根检验
  
  单位根检验由来 
                                          
 ADF检验是单位根检验的一种,也是比较常用的一种检验方法,是DF检验的优化,消除了序列的自相关性,内部使用为t统计量检验过程,若t大于临界值,则不能拒绝原假设r=1,序列非平稳,否则不能拒绝备泽假设,序列为平稳序列。
  
  白噪声 
  
 纯随机过程,是由一个不相关的随机变量的序列构成的,即不存在自相关,协方差=0。对于一个随机过程来讲,如果期望和方差均为常数,则称该过程为白噪声过程。之所以成为白噪声过程是因为它和白光的过程有些相似,白光的光谱在各个频率上有相同的强度,在各个频率上面的值相同。所以白噪声序列一定是平稳的。
  
  问题解答: 
  
 &白噪声和平稳性有什么区别?
  
 这么说吧,白噪声一定是平稳序列,因为方差和均值都不随时间的变化而变化,且不存在自相关,平稳性呢是如果不平稳的话就进行差分,差分的时候是对xt=x(t-1)+u的序列方差和均值,但实际如果一介差分是平稳的话,我们实际用的数据是(xt-x(t-1))的差值这个序列,所以还要对这个序列进行白噪声检验,但也有人说白噪声的意义不大,还有我看一本书上面说,白噪声是检验数据有用的信息有没有被提取完毕,如果是白噪声,说明信息提取完毕,剩下的全是随机扰动,无法预测和使用;另一个版本的解释是,如果通不过白噪声检验就要对其进行自相关和偏自相关模型识别,即ARMA中的q.p,说明白噪声比平稳序列多一个不存在自相关,这个问题我也没找到官方的解答资料  (所以不知道理解的对不对,欢迎大家指正)  
  
 &时间序列本身是与时间相关的,为什么又要求均值和方差与t不相关呢?
  
 可以这么理解,时间序列中的数据点的位置依赖于时间,即数据的取值依赖于时间的变化,但不一定是时间t的严格函数,而且数据点和t相关不代表方差与t相关,因为方差代表了数据在其均值上的离散程度 
   
                                          
 首先,我们看下上面这个回归模型,如果上面的模型合适,则u应该是平稳序列,则y对长期均衡关系的偏离是暂时的,即回归函数为长期均衡关系,相反,如果u为非平稳,则偏离会长时期不会消失,所以上面函数是否有价值,主要看u是否平稳
  
 也许上面的几个解释变量都是非平稳序列,但是他们的线性组合也许是平稳的,这就是协整的理论思想
  
 但是利用协整必须满足几个条件:(直接上图吧)
                                                                                  
  协整检验 
  
 利用残差平稳性检验,第一种是使用上面用到的ADF检验,但需要注意的是,协整检验的临界值不但与漂移项、趋势项有关,还与非平稳变量个数有关。我们一般用第二种DW检验,用协整回归得到的残差构造
                                          
 实际上,多变量时间序列的协整就相当于是做回归,但是要看时序在回归上的可信度,对残差进行检验,判断变量间是否为长期的均衡关系,并且这个地方要注意,使用协整的条件,必须是几个变量为同阶差分。
  
 最后说一个误差修正,因为长期关系的稳定关系一般都建立在短期动态的不断调整下得到并维持的,但由于变量的长期变量相互抵消,所以我们建立的模型看起来依然可信度高。那这个地方我们就要用误差修正模型来调节短期行为
  
  误差修正过程 :
  
 首先建立长期关系模型,并使其得到平稳的残差序列,即模型合理。然后建立短期动态关系,即误差修正方程,将长期关系中的各变量差分之后重新构造,并将长期模型中的残差序列作为解释变量引入,对短期动态关系检验,逐项剔除,直到找到适合的方法为止
  
 理论案例:(直接上图)
  
 
  
                                          
  时间序列模型的建立过程: 
  
 首先,画出散点图观察并进行检验,检验序列是否是平稳序列,不平稳进行差分或者log变换,平稳则进行白噪声检验,没有通过白噪声的情况下就要进行模型识别,AR、MA和ARMA,确定后对模型的随机扰动项u进行检验,是否为白噪声序列,如果不是,则返回到前面,对模型重新识别。

7. 时间序列模型简介

  目录 
   时间序列是一列观测值  的集合, 其中每个观测值是在时段  观测所得(  是自然数 ). 给定时间序列  , 如果对任意的  , 它满足下列条件:   i.      ii.      iii.      我们把它叫做(弱)平稳(weakly stationary)序列.(下文我们简称平稳序列.)
   通俗地讲,  平稳序列的期望, 方差, 协方差不随时间变化 . 例如,   服从同一个分布时, 它是平稳的.
    例1  下图中的时间序列由  生成. 从直观上看, 这个序列是"平稳的".   
                                           
    例2  下图的中的时间序列由  生成, 其中  ,   . 它起初有明显地增长, 然后趋于平稳. 利用ADF检验(详情见下文), 我们发现该序列是平稳的(p-value < 0.01).   
                                           
    Remark  弱平稳性的"弱"主要体现在时间序列在全局上是平稳的, 即,时间序列局部是波动的,但整体上看是平稳的, 或者随着时间的变化其样本的均值收敛.
   我们用统计学中假设检验的方法来判断样本的平稳性. 常用的是Augmented Dickey-Fuller(ADF)检验  [1]  .
   在显著水平  的条件下, 我们可以通过计算p-value来接受或者拒绝  :
   Python3中 statsmodels.tas.stattools 中的 adfuller 函数  [3]  实现了ADF检验. 使用方法如下所示.
   前面之所以介绍平稳序列的概念及检验方法, 是因为它是很多基础的时间序列模型的前提假设. 在本节我们介绍一些常见的时间序列模型(更多内容可以参考  [4]  ,   [5]  ).
   AR代表自回归(Autoregression). 假设时间序列  是平稳的, 它可以被表示成如下形式:     
   MA代表移动平均(Moving Average). 假设时间序列  是平稳的, 它可以被表示成如下形式:     
   ARMA模型是AR和MA的组合. 假设同上. 它可以被表示为如下形式:     
   ARIMA模型是ARMA模型的推广, 全称是Autoregressive Integrated Moving Average. 当时间序列  不满足平稳性时, 我们通常使用 差分 的技巧把序列变得平稳, 然后再应用ARMA模型.
   参数  代表差分的阶数. 下面是差分的计算公式(  为差分算子):
    例3  下图是原始的时间序列. 通过观察, 它的均值有明显的上升趋势且不收敛, 因此不是平稳序列(ADF检验的p-value为0.94).
                                           对该序列进行一阶差分后, 我们得到如下平稳的时间序列(p-value为0.00).
                                           该记号代表季节性(或周期性)ARIMA模型, 详细的表达式可以参考  [4]  ( 4.1 Seasonal ARIMA models ), 其中
   我们可以把它看成两阶段模型: 第一阶段在全局使用ARIMA(p,d,q); 第二阶段通过指定周期长度  , 再利用ARIMA(P,Q,D)模型考虑周期之间的关系.
    例4  考虑如下周期性的平稳时间序列(  ).
                                           对序列进行周期性差分:   得到新的时间序列  如下图所示(红色部分)
                                           通过使用周期性差分, 我们可以把原有时间序列的周期性移除. 同理, 通过采用周期性的自回归和移动平均系数, 我们可以把周期之间的依赖关系考虑进模型.
    例5  考虑周期s=18的数据(蓝色曲线). 用  和  分别进行预测的结果如下.
                                           不考虑周期性的ARIMA模型的预测结果(灰色曲线)逐渐收敛到时间序列的均值. 由于序列是平稳的, 这样的预测结果符合我们的期望. 考虑到该时间序列有比较强的周期性, 且通过观察发现周期  . 在本例中, 我们仅使用周期差分,  最终得到了如图所示(红色曲线)的周期性预测结果.
   ARCH的全称是Autoregressive Conditionally Heteroscedasticity, 它可以用来考虑样本的方差随着时间变化(或震荡)的时间序列. 设时间序列  是平稳的,   模型可以被表示成如下形式:
        其中     
   GARCH即Generalized ARCH, 是ARCH模型的推广  [6]  . 设时间序列  是平稳的,   模型可以被表示成如下形式:        其中     
    Remark  ARCH/GARCH随机过程产生的数据是什么样的? 前面提到它们允许 样本的方差 随时间变化, 但是由于  必须满足平稳性(前提假设), 因此样本的方差从局部看是变化(震荡)的, 但从整体看应该是"平稳的"序列. 例如下图是一个  过程生成的时间序列(  ).
                                           VAR即Vector Autoregression, 它是多变量的自回归模型. 类似地, 我们有  , 它是  的向量版本. 需要注意的是, VARMA模型处理的时间序列可以有趋势. 我们不做详细的展开, 感兴趣的读者可以参考  [4]   章节11.2: Vector Autoregressive models VAR(p) models .
   给定时间序列的观测样本, 选定预测模型之后如何确定模型的参数? 本节我们介绍两种常用的方法: 1. 画出ACF/PACF图, 然后观察出  的值; 2. 通过计算相关的统计指标, 自动化地选择参数.
   ACF的全称是Autocorrelation Function. 对变量  , ACF的值代表  与  之间的相关性.     
   PACF的全称是Partial Autocorrelation Function. 对变量  , PACF的值代表已知  的条件 下,   与  之间的相关性.     
    例6  设  . 考虑下面三个模型生成的时间序列, 并计算相应的ACF/PACF.
                                                                                                                           基本思想是通过计算一些指标, 并选择参数使得相关的指标值尽可能小. 下面我们介绍一些常用的指标.
   为方便描述, 我们先定义一些记号.
     
   (AIC的改良版, 解决小样本过拟合的问题)     
   (也称为Schwartz Criterion, SBC, SBIC)
     
     
    Remark  建议在实际中综合考虑这些指标.
    Python3 code on Github 

时间序列模型简介

8. 时间序列模型的简介

时间序列分析是根据系统观测得到的时间序列数据,通过曲线拟合和参数估计来建立数学模型的理论和方法。它一般采用曲线拟合和参数估计方法(如非线性最小二乘法)进行。时间序列分析常用在国民经济宏观控制、区域综合发展规划、企业经营管理、市场潜量预测、气象预报、水文预报、地震前兆预报、农作物病虫灾害预报、环境污染控制、生态平衡、天文学和海洋学等方面。

最新文章
热门文章
推荐阅读