ARIMA模型

2024-05-04 13:00

1. ARIMA模型

我看过的对ARMIA模型最简单明了的文章:https://www.cnblogs.com/bradleon/p/6827109.html
  
 1,什么是 ARIMA模型
  
 ARIMA模型的全称叫做自回归移动平均模型,全称是(ARIMA, Autoregressive Integrated Moving Average Model)。也记作ARIMA(p,d,q),是统计模型(statistic model)中最常见的一种用来进行时间序列 预测的模型。
  
 1.1. ARIMA的优缺点
  
 优点: 模型十分简单,只需要内生变量而不需要借助其他外生变量。(所谓内生变量指的应该是仅依赖于该数据本身,而不像回归需要其他变量)
  
 缺点:
  
 1.要求时序数据是稳定的(stationary),或者是通过差分化(differencing)后是稳定的。
  
 2.本质上只能捕捉线性关系,而不能捕捉非线性关系。
  
 注意,采用ARIMA模型预测时序数据,必须是稳定的,如果不稳定的数据,是无法捕捉到规律的。比如股票数据用ARIMA无法预测的原因就是股票数据是非稳定的,常常受政策和新闻的影响而波动。
  
 1.2. 判断是时序数据是稳定的方法。
  
 严谨的定义: 一个时间序列的随机变量是稳定的,当且仅当它的所有统计特征都是独立于时间的(是关于时间的常量)。
  
 判断的方法:
  
 稳定的数据是没有趋势(trend),没有周期性(seasonality)的; 即它的均值,在时间轴上拥有常量的振幅,并且它的方差,在时间轴上是趋于同一个稳定的值的。
  
 可以使用Dickey-Fuller Test进行假设检验。
  
 1.3 ARIMA的参数与数学形式
  
 ARIMA模型有三个参数:p,d,q。
  
 p--代表预测模型中采用的时序数据本身的滞后数(lags) ,也叫做AR/Auto-Regressive项
  
 d--代表时序数据需要进行几阶差分化,才是稳定的,也叫Integrated项。
  
 q--代表预测模型中采用的预测误差的滞后数(lags),也叫做MA/Moving Average项
                                          
 4.ARIMA模型的几个特例
  
 1.ARIMA(0,1,0) = random walk:
  
 当d=1,p和q为0时,叫做random walk,如图所示,每一个时刻的位置,只与上一时刻的位置有关。
  
 预测公式如下:Yˆt=μ+Yt−1

ARIMA模型

2. 理解 AR 和 MA 模型

最近在搞一点预测技术,用过去的数据,预测将来的数据。
  
 比如说,在过去一周中,从周一到周日,武大郎卖的炊饼数是 20,20,20,20,20,20,20,那么下一周他每天能卖出多少?他必须预测出来,不然潘金莲的炊饼做多了,做少了,都要亏钱的。
  
 大朗的炊饼好预测,看起来很简单。但西门大官然的店铺好多,要预测清楚,就不容易了。
  
 我挑了不少方法,最终决定用 XGBoost,因为要考虑刮风下雨,还有大宋国假期这些因素的影响。
  
 在此之前,我还是花了不少时间在 ARIMA 上。 毕竟,炊饼经营,是时序数据,ARIMA 对付稳定的时序数据,那是最擅长的。
  
 研究 ARIMA,少不了要确定 p 和 q,要看 ACF 和 PACF 的截尾和拖尾。但各种各样的网文教程,包括大学教材,都是干巴巴的公式,就是不给个例子。
  
 我甚为怀疑,好多写教材的,自己未必真搞懂了。
  
 越看越晕。后来,看英文资料,才明白过来。老外真是太闲,也有耐心,每一个细节都写的明明白白,仿佛在教小学生。
  
 先说 AR 模型,即自回归模型。即算一个函数,让每一个观察量(就是大郎每天卖的炊饼数)都依赖过去的量。比如上面武大郎的那个 20、20、20,就可以设计出一个函数,即,今天的炊饼量等于昨天的炊饼量。一般的公式为:
  
   
  
 这是 1 阶,即 AR(1) 的公式。 看看,   和    之间相关性是个    。
  
 而 AR(2) 则为:  
  
 举个例子,  ,用 statsmodels.tsa.arima_process 模拟一个符合 AR(1) 的时序数据。画出图来:
                                          
 要注意的是,只有    是我们指定的,而    和    则是 arima_process 随机给出的,   是一个固定值,而   则是每次都随机。
  
 可以猜到,   对      的相关性为 0.9, 而    对   的相关性是   ,对  的相关性,则为   。这种相关性,会一直延续下去,传递下去。所以,自相关 ACF 图为:
                                          
 看,一个漂亮的拖尾,拖的又长又整齐。
  
 那么,这个 AR(1) 的偏自相关应该是什么? 这是一个让初学者晕的概念。
  
 做个比喻吧。 小明、小明爸爸、小明爷爷,列祖列宗,构成一个 AR(1),记住,他们万万不可构成 AR(2)。所以,他们的DNA 就一代代往下传,小明和小明爸爸的自相关性是 1/2, 小明爷爷和小明爸爸的相关性是 1/2,而小明和小明爷爷的相关性是 1/4。
  
 但小明与爷爷的偏自相关呢?太遗憾了,只能是零。 在这里脑袋里要拧个弯,把小明爸爸的影响去除掉,即小明爸爸给小明的那1/2基因去除掉,那小明和爷爷的偏自相关,就是零了。
  
 如果不是零,那就坏了。 
  
 但小明和爸爸,爸爸和爷爷的偏自相关,其实就是他们之间的自相关,都是 1/2。
  
 所以,上面这个    的偏自相关图 PACF 是:
                                          
 看,多么经典的截尾,第一阶截断,如悬崖般。 
  
 如果是 RA(2),那么就会在第二阶截断。但是,上面那个比喻就进入一个非常艰难、难以理解的境地。
  
 我们必须假设,小明的DNA有 1/2 来自爸爸,还有1/4 是直接来自爷爷。打字打到这里,有点受不了。注意,1/4是直接来自,即爷爷既是爷爷,也是爸爸。
  
 好了,就当科幻来看吧。
  
 下面来说 MA,即移动平均模型,第一个注意,此处的“移动平均模型”,不是计算 “移动平均值” 那么简单。
  
 想象一个时间序列,互相之间,毫无关系。举个例子,三体世界,他们的天气每天都是跌宕起伏的,压根没有地球上的四季分明。三体上,第一天是40度,很热,但还能喘气。第二天就是零下200度,全部冻死。 第三天呢? 春暖花开23度,第四天就是3000度炼钢厂,行星成液体。
  
 总之,每一天都是随机数。天与天之间毫无规律,没有关系。
  
 咋办? 怎么预测明天的温度? 怎么决定明天是继续活着,还是赶紧阴干成皮?
  
 没办法,只能搞个大概的移动平均,比如,把过去10 天的天气加总,然后除以 10。
  
 这个三体天气,就是一个纯粹的 MA (10) 模型。
  
 MA 的一般公式是:  
  
 注意观察,   和    没有直接关系了,不是 AR 了,而是通过移动平均    值才产生关系。
  
 举个例子,  ,用 statsmodels.tsa.arima_process 模拟一个符合 MA(1) 的时序数据。画出图来:
                                          
 一样要注意,只有    是指定的,   都是随机值。
  
 所以,可以看到    之间的自相关系数是   ,在此处是 -0.479。而R_{t}   R_{t-2}的自相关系数是 0。(这一段没有理解,why   ?倒是 2阶之后为 0,好理解。有聪明人指点指点。)
  
 所以,此 MA 的 ACF 图是:
                                          
 一个干净利落的截尾,止于 1 阶。
  
 而 PACF 的图,则为:
                                          
 对于为何一个标准的 MA(1) 的偏自相关居然是拖尾的,深思不解。 我的理解,它应该是个飘忽不定的震荡过程。 因为从1阶之后,从自相关角度看,已经没关系,那么偏自相关更应该没有规律的关系才对。
  
 如果偏自相关还有关系,何以自相关居然没关系了?
  
 在时序数据中 ARMA 或者 ARIMA 中,MA 是 AR 过程中剩余下的残差的回归。

3. AR模型简单理解

(一)白噪声的检验
   一般判断平稳有三种方法
   (1)直接画出时间序列的趋势图,看趋势判断
   (2)画出自相关和偏相关图:平稳的序列和自相关图和偏相关图要么拖尾,要么截尾。
   (3)单位根检验:检验序列中是否存在单位根,如果存在单位根就是非平稳时间序列。
   设mean(x),var(x)分别为序列{x}的平均值和方差,根据自身相关系数ACF判断是否为平稳序列:
   ACF=∑(x[i]-mean(x)) (x[i+k]-mean(x))/(n var(x)),0<=k<N,0<=i<N-k
  
 如果ACF系数随K值的增加衰减到0的速度比非平稳随机序列更快,即可说明为平稳的。
  
 不平稳序列可以通过差分转换为平稳序列。k阶差分就是相距k期的两个序列值相减。如果一个时间序列经过差分运算后具有平稳序列,则该序列为差分平稳序列。
  
 (二)AR模型的参数估计
   AR模型的参数估计主要有三种方法:矩估计、最小二乘估计和最大似然估计。
   在此学习最小二乘估计。
   对于样本序列{x t },当j>=p+1时,记白噪声的估计为
   
                                                                                                                                                                                                                                                                                                                                  
 
  
 //以上流程就是最小二乘用矩阵的方式运算,很简单的
  
 (三)AR模型的定阶
   在对AR模型识别时,根据其样本自相关系数的截尾步数,可初步得到AR模型的阶数p,然而,此时建立的 AR(p) 未必是最优的。
   定阶的一般步骤为:
   (1).确定p值的上限,一般是序列长度N的比例或是lnN的倍数
   (2).在补偿过max(p)值的前提下,从1开始根据某一原则确定最优p。
   一个好的模型通常要求残差序列方差较小,同时模型页相对简单,即要求阶数较低。因此我们需要一些准则来比较不同阶数的模型之间的优劣,从而确定最合适的阶数。下面给出四种常用的定阶准则。
  
 
  
 
                                          
 是序列的各阶样本自协方差函数,其最终预报误差可表示为
                                          
 在具体应用时,通常是分别建立从低阶到高阶的 AR 模型,并计算出相应的 FPE 的值,由此确定使 FPE 达到最小的 p 值。
  
 2.贝叶斯信息准则
  
 定义
                                          
 使得 BIC 达到最小值的 p 即为该准则下的最优 AR 模型的阶数。
  
 3.AIC(最小信息准则)
  
 4.SC(施瓦茨准则)
  
 另:python中有函数可以直接求AIC,BIC,HQIC的值。
  
  python操作实例推荐

AR模型简单理解

4. arima加法模型公式

ARIMA模型包含3个部分,即自回归(AR)、差分(I)和移动*均(MA),它们的含义分别是:
AR表示自回归(Auto Regression),
I 表示单整阶数(Integration),时间序列必须是*稳的,才能建立计量模型。对时间序列进行单位根检验,如果是非*稳序列,那么需要通过差分转化为*稳序列,经过几次差分转化为*稳序列,就称为几阶单整;
MA表示移动*均模型(Moving Average)
ARIMA模型记作ARIMA(p,d,q),p为自回归项数;q为滑动*均项数,d为使之成为*稳序列所做的差分次数(阶数)。“差分”是关键步骤,采用ARIMA模型预测的时序数据,必须是稳定的(*稳性),不稳定的数据,是无法捕捉到时序规律的。
ARIMA模型实际上是AR模型和MA模型的组合,ARIMA模型与ARMA模型的区别:ARMA模型是针对*稳时间序列建立的模型,而ARIMA模型是针对非*稳时间序列建立的模型。换句话说,非*稳时间序列要建立ARMA模型,首先需要经过差分转化为*稳时间序列,然后建立ARMA模型。
模型的优点是:模型简单,只需要内生变量而不需要借助其他外生变量。
模型的缺点是:要求时序数据是稳定的,或者通过差分化之后是稳定的;本质上只能捕捉线性关系,不能捕捉非线性关系。

5. ARIMA模型的介绍

全称为自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA),是由博克思(Box)和詹金斯(Jenkins)于70年代初提出一著名时间序列预测方法1,所以又称为box-jenkins模型、博克思-詹金斯法。其中ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数。所谓ARIMA模型,是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。ARIMA模型根据原序列是否平稳以及回归中所含部分的不同,包括移动平均过程(MA)、自回归过程(AR)、自回归移动平均过程(ARMA)以及ARIMA过程。

ARIMA模型的介绍

6. AR模型的MA模型

MA模型(moving average model)滑动平均模型,模型参量法谱分析方法之一,也是现代谱估中常用的模型。设一个离散线性系统,输入u(n)是一个具有零均值与方差为σ的白噪声序列,输出是x(n),该离散线性系统的输出和输入之间的关系可用如下图3的差分方程来表示。其系统函数为图4。式中X(Z)为输出信号x(n)的Z变换,U(Z)为输入信号u(n)的Z变换,br(r=0,…M)是系数。式①表达的信号模型称为MA模型,又称移动平均模型。按公式的物理意义可以解释为模型表示现在的输出是现在和过去M个输入的加权和。按②式,MA模型是一个全零点模型。用MA模型法求信号谱估计的具体作法是:①选择MA模型,在输入是冲激函数或白噪声情况下,使其输出等于所研究的信号,至少应是对该信号一个好的近似。②利用已知的自相关函数或数据求MA模型的参数。③利用求出的模型参数估计该信号的功率谱。在ARMA参数谱估计中,大多数估计ARMA参数的两步方法都首先估计AR参数,然后在这些AR参数基础上,再估计MA参数,然后可求出ARMA参数的谱估计。所以MA模型参数估计常作为ARMA参数谱估计的过程来计算。

7. ARIMA模型的基本思想

ARIMA模型的基本思想是:将预测对象随时间推移而形成的数据序列视为一个随机序列,用一定的数学模型来近似描述这个序列。这个模型一旦被识别后就可以从时间序列的过去值及现在值来预测未来值。现代统计方法、计量经济模型在某种程度上已经能够帮助企业对未来进行预测。

ARIMA模型的基本思想

8. arima模型数据如何整理

1.数据的预处理。对时间序列数据的平稳性和纯随机性进行检验,根据检验结果来判断时间序列的类型,以便选择合适的方法建立模型。

平稳性是指围绕着一个常数上下波动且波动范围有限,即有常数均值和常数方差。如果有明显的上升或下降趋势或周期性,那它通常不是平稳序列。

三种常用的检验平稳性的方法:

(1)时序图。通过时序图来观察。一般而言,平稳序列始终在一个常数值附近随机波动,且波动范围有界;非平稳序列则有明显的趋势性或周期性。

(2)自相关与偏相关系数检验。在自相关图中,在那一阶数值高于虚线即表明自相关系数>0.5,就存在那一阶自相关(偏自相关一样)。随着滞后数(延迟期数)的增加,平稳序列自相关系数会很快衰减至0而非平稳序列衰减速度通常较慢。若自相关图呈现三角对称性则为单调趋势的非平稳序列。自相关系数长期位于零轴一边表示有单调趋势序列。自相关系数呈现明显正弦波动规律则表明有周期变化规律。

(3)单位根检验(ADF)。单位根检验是指检验序列中是否存在单位根,如果存在单位根就是非平稳时间序列。若P值<0.05,为平稳
最新文章
热门文章
推荐阅读