技术心得:时间序列:ARIMA模型

简介: 技术心得:时间序列:ARIMA模型

时间序列是在时间点上形成的数值序列,时间序列预测是通过观察历史数据预测未来的值。ARIMA模型(Autoregressive Integrated Moving Average model)是时间序列预测分析方法之一,全称叫做自回归差分移动均模型。


本文是看网上博客整理而来,原始文章是:


时间序列分析(2) ARIMA 模型


罗汉堂主 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模型。


模型的优点是:模型简单,只需要内生变量而不需要借助其他外生变量。


模型的缺点是:要求时序数据是稳定的,或者通过差分化之后是稳定的;本质上只能捕捉线性关系,不能捕捉非线性关系。


1,AR模型


描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测,自回归模型必须满足稳性的要求


一般情况下,p阶自回归过程的公式定义:


yt是当前值,u是常数项,P是阶数,ri是自相关系数,et是误差,即 白噪声。


公式展开:


如果随机扰动项是一个白噪声( ),即 u=0, 则称AR模型为一个纯AR(p)过程,记为:


从公式中可以看出,当前值是通过历史值来预测的,p是自回归模型中的一个阶数,表示用几期的历史值来预测当前值。


自回归模型的限制:


1、自回归模型是用自身的数据进行预测


2、时间序列数据必须具有稳性


3、必须具有相关性,如果自相关系数(φi)小于0.5,则不宜采用


4、自回归只适用于预测与自身前期相关的现象(时间序列的自相关性)


2,MA模型


移动均模型关注的是自回归模型中的误差项的累加,在AR模型中,如果 不是一个白噪声,通常认为它是一个q阶的移动均。


其中 表示白噪声序列。


特别的,当 ,即时间序列当前值与历史值没有关系,而只依赖于历史白噪声的线性组合,就得到MA模型:


需要指出一点,AR模型中历史白噪声的影响是间接影响当前预测值的(通过影响历史时序值)。


q阶自MA模型的公式定义:


移动均法能有效地消除预测中的随机波动。


3,ARMA模型


将AR(p)与MA(q)结合,得到一个一般的自回归移动均模型ARMA(p,q):


该式表明:


(1)一个随机时间序列可以通过一个自回归移动均模型来表示,即该序列可以由其自身的过去或滞后值以及随机扰动项来解释。


(2)如果该序列是稳的,即它的行为并不会随着时间的推移而变化,那么我们就可以通过该序列过去的行为来预测未来。


4,ARIMA 模型


ARIMA中的AR和MA,分别是AR模型和MA模型,I是差分法,差分计算保证了数据的稳定性。


自回归模型(AR)、移动均模型(MA)和差分法(I)结合,我们就得到了差分自回归移动均模型 ARIMA(p、d、q),其中 d 是需要对数据进行差分的阶数,ARIMA是经过差分后的ARMA模型。


二,模型的特征


第一个特征是:自相关性


通常来讲,时间序列一般由固定趋势、季节性变动和随机因素组成。如果时间序列的随机因素在各时间点上完全独立没有任何联系,那么我们很难对这一部分进行建模。幸运的是,对于一般的时间序列,在剔除固定趋势和季节效应后,时间序列在不同时点上是存在相关性的,这种自相关特征是我们对时间序列建模的基础。


在统计学中,我们用相关系数表示两个变量之间的相关性,在时间序列中一个重要问题是研究序列之间是如何相互影响的。与统计学的相关系数类似,在时序分析中采用相似的方法来表示时间序列的自相关特征。通过自相关函数图可以清楚地看到时间序列的自相关特征,这种特征是建模的基础。


自相关函数 (AutocorrelationFunction, ACF):相关系数度量了两个向量的线性相关性,而在稳时间序列 {rt} 中,我们有时候很想知道,rt 与它的过去值 rt-i 的线性相关性。 这时候我们把相关系数的概念推广到自相关系数。


rt 与 rt-l 的相关系数称为 rt 的间隔为 l 的自相关系数,通常记为 ρl。具体的:


这里用到了弱稳序列的性质:


则函数: 称为rt 的样本自相关函数(ACF)。


当自相关函数中所有的值都为0时,我们认为该序列是完全不相关的;因此,我们经常需要检验多个自相关系数是否为0。


第二个特征是:白噪声


白噪声是由一组0均值,不变方差,相互独立的元素构成,当然可以对该元素的分布进行假设(如高斯分布)。白噪声如同他的名字听起来一样是杂乱无章的,各元素之间没有任何联系。由白噪声组成的序列是随机游走,随机游走序列的自相关特点是其自相关函数几乎为1并且衰减很慢,这种特征我们称为长记忆性。


白噪声表示数据之间没有相关性,如果时间序列都是由白噪声数据构成的,那么时间序列的数据就不能是自相关的。


第三个特征是:稳性


事件序列的稳性可以分为强稳和弱稳。为什么稳性对事件序列建模如此重要?为什么要有强、弱两种稳?


稳的时间序列需满足两个条件:均值函数是常数函数且协方差函数仅与时间差相关。稳性的实质是对时间移的不变性做了假设,有了这种假设通过历史数据去预测未来才有了基础,否则历史数据的统计特征对未来预测毫无作用。


稳是事实上的稳,它要求时间序列的点同分布,它过于严格而且不好验证和使用;弱稳则是退而求其次只要求前两阶矩稳(均值和方差),这样使得弱稳有了明显的统计意义。


因此,为了能够对时间序列进行建模,必须进行稳性检验,检验方法有ADF、稳序列的自相关和偏自相关。若非稳,则通过差分去除趋势,直到通过稳性检验。


三,稳性检查


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


时间序列必须是稳的,才能建立计量模型。稳是指数据围绕着一个常数上下波动且波动范围有限,即有常数均值和常数方差。如果有明显的趋势或周期性,那它通常不是稳序列。


//代码效果参考:http://www.lyjsj.net.cn/wx/art_23462.html

稳性是指经由样本时间序列所得到的拟合曲线在未来一段时间内仍能顺着现有的形态惯性地延续下去。

稳性要求序列的均值、方差和协方差不发生明显变化,通常从三个方面分析:均值,方差和协方差, 这三个指标都不会随着时间而发生明显的变化。


1,均值


均值不应该是关于时间t的函数,而应该是一个常数。


2,方差


方差不应该是时间的函数,即方差需要有:同方差性


3,协方差


i时刻与i+m时刻协方差不应该是时间的函数:


检查稳性,一般有三种方法:


(1)直接画出时间序列的趋势图,看趋势判断。


(2)画自相关和偏自相关图:稳的序列的自相关图(Autocorrelation)和偏相关图(Partial Correlation)要么拖尾,要么是截尾。


(3)单位根检验:检验序列中是否存在单位根,如果存在单位根就是非稳时间序列。


在项目中,通常使用前两种方法来检查时间序列的稳性。


单位根检验


对时间序列进行单位根检验,如果是非稳序列,那么需要通过差分转化为稳序列,不稳定的数据,是无法捕捉到时序规律的。


单位根(unit root)检验是指检验序列中是否存在单位根,因为存在单位根就是非稳时间序列了。单位根就是指单位根过程,可以证明,序列中存在单位根过程就不稳,会使回归分析中存在伪回归。而扩展迪基-福勒检验(Augmented Dickey-Fuller test可以测试一个自回归模型是否存在单位根,通过ADF检测的ADF值和p_value值看是否满足稳性要求。


1)ADF值判断稳性需要根据1%、%5、%10不同程度拒绝原假设的统计值:


1%:严格拒绝假设;


5%:拒绝原假设;


10%类推。


ADF值越小,越拒绝原假设,越说明序列不存在单位根,那么时间序列越稳。


2)p_value值要小于一个显著值,时间序列就是稳的,一般以0.01为显著值。


四,参数值的确认


ARIMA模型含有三个参数:p,d,q。


p:代表预测模型中采用的时序数据本身的滞后数(lags) //代码效果参考:http://www.lyjsj.net.cn/wz/art_23460.html

,也叫做AR/Auto-Regressive项

d:代表时序数据需要进行几阶差分化,才是稳定的,也叫Integrated项。


q:代表预测模型中采用的预测误差的滞后数(lags),也叫做MA/Moving Average项


1,参数d的确认


差分是求时间序列{rt}在 t时刻和t-1时刻的差值,把rt 与 t-1 时刻的值r(t-1) 的差值记做 dt,则得到了一个新序列{dt},为一阶差分;对新序列{dt}再做同样的操作,则为二阶差分。通常非稳序列可以经过d次差分,处理成弱稳或者似弱稳时间序列。d就是差分的阶数,d阶差分就是相距d期的两个序列值之间相减。


如果一个时间序列经过差分运算后具有稳性,则该序列为差分稳序列,可以使用ARIMA模型进行分析。也就是说,如果对时间序列做d次差分后得到一个稳序列,那么可以使用ARIMA(p,d,q)模型,其中d是差分次数。


首先通过ADF检验,检查原始时间序列的稳性,如果原始时间序列是稳的,那么d=0;如果原始数据不稳,那么做差分运算,通过ADF检验直到时间序列稳,一般差分次数不超过2次。


举个例子,当序列不稳时,需要通过差分使时间序列变稳,如下图所示,第一张图是原始数据,第二张图是一阶差分,第三张图是二阶差分:


很明显差分阶数越大序列越稳,一般一阶差分即可。除了看图,也可通过ADF检验去检验稳性。


2,参数p、q的确认


通常在时间序列分析中,采用自相关函数(ACF)、偏自相关函数(PACF)来判别ARMA(p,q)模型的系数和阶数。


自相关函数(ACF)描述时间序列观测值与其过去的观测值之间的线性相关性。


偏自相关函数(PACF)描述在给定中间观测值的条件下时间序列观测值与其过去的观测值之间的线性相关性。


具体判别过程如下面的表格所示:


p由显著不为0的偏自相关系数的数目决定,此时序列的偏自相关函数表现为拖尾性,即当k>p时,偏自相关系数的值都在置信区间以内;


q由显著不为0的自相关系数的数目决定,此时序列的自相关函数表现为截尾性,即当k>p时,自相关系数的值都在置信区间内。


这里的拖尾是指以指数率单调或振荡衰减,截尾是指从某个开始非常小(不显著非零)。


稳时间序列中,应用自相关函数和偏自相关函数在初步判断ARMA模型的阶数p和q的基础上,然后通过最小信息准则AIC进行定阶。


ARMA模型中p和q的的最佳估计可以通过AIC准则给出,AIC比较适合在被观察样本数据较少的情况下使用。


做出上面时间序列的ACF和PACF,图中横线为0±两倍标准差,可以判断ACF和PACF是否显著非零。


可以看出ACF呈拖尾状,PACF第2个后截尾,可初步断定序列适合AR(2)模型。


3,拖尾和截尾


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


p,q阶数的确定


五,模型优化


AIC和BIC准则


在所有通过检验的模型中,使得AIC和BIC函数达到最小的模型是相对最优的模型。


参考文档:


时间序列分析(2) ARIMA 模型


罗汉堂主 ARIMA


机器学习(三)——时间序列法


作者:悦光阴


出处:


本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。

相关文章
|
6月前
时间序列分析实战(二):时序的ARMA模型拟合与预测
时间序列分析实战(二):时序的ARMA模型拟合与预测
|
4月前
|
机器学习/深度学习 数据挖掘 vr&ar
时间序列预测利器:Sklearn中的ARIMA与状态空间模型
【7月更文第24天】时间序列预测是数据分析和机器学习领域的一个重要分支,它致力于从历史数据中挖掘规律,预测未来的发展趋势。在Python的Scikit-learn库中,虽然直接提供的时间序列预测模型不如专门的时间序列分析库如Statsmodels或Prophet那样丰富,但Scikit-learn的强大之处在于其模型的灵活性和集成能力,尤其是状态空间模型的实现,为自定义复杂时间序列模型提供了坚实的基础。本文将介绍如何使用Scikit-learn进行时间序列预测,重点聚焦在ARIMA模型(通过Statsmodels间接实现)和状态空间模型的使用上,并通过代码示例深入解析。
160 0
|
机器学习/深度学习 运维 计算机视觉
TimesNet:时间序列预测的最新模型
2023年4月发表了一个新的模型,它在时间序列分析的多个任务中实现了最先进的结果,如预测、imputation、分类和异常检测:TimesNet。
798 0
|
6月前
|
机器学习/深度学习 vr&ar Python
数据分享|R语言用logistic逻辑回归和AFRIMA、ARIMA时间序列模型预测世界人口
数据分享|R语言用logistic逻辑回归和AFRIMA、ARIMA时间序列模型预测世界人口
|
6月前
R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析
R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析
|
6月前
|
机器学习/深度学习 数据挖掘 vr&ar
R语言时间序列:ARIMA / GARCH模型的交易策略在外汇市场预测应用
R语言时间序列:ARIMA / GARCH模型的交易策略在外汇市场预测应用
|
6月前
|
机器学习/深度学习 数据采集 算法
利用scikit-learn进行时间序列预测
【4月更文挑战第17天】本文介绍了如何使用Scikit-learn进行时间序列预测,涉及数据预处理(如缺失值填充、平滑和特征提取)、模型选择(线性回归、SVM、随机森林等)、模型评估与优化(如MSE、RMSE、MAE作为评估指标,超参数优化和模型融合)。Scikit-learn为时间序列预测提供了强大支持,但实际应用需结合问题需求和数据特性。未来可探索深度学习在此领域的应用。
|
6月前
ARIMA、ARIMAX、 动态回归和OLS 回归预测多元时间序列
ARIMA、ARIMAX、 动态回归和OLS 回归预测多元时间序列
ARIMA、ARIMAX、 动态回归和OLS 回归预测多元时间序列
|
6月前
|
机器学习/深度学习 数据可视化 算法
R语言拟合改进的稀疏广义加性模型(RGAM)预测、交叉验证、可视化
R语言拟合改进的稀疏广义加性模型(RGAM)预测、交叉验证、可视化
|
6月前
多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析
多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析