若是你在寻找时间序列是什么?如何实现时间序列?那么请看这篇博客,将以通俗易懂的语言,全面的阐述时间序列及其python实现。html
就餐饮企业而言,常常会碰到以下问题。python
因为餐饮行业是胜场和销售同时进行的,所以销售预测对于餐饮企业十分必要。如何基于菜品历史销售数据,作好餐销售预测,以便减小菜品脱销现象和避免因备料不足而形成的生产延误,从而减小菜品生产等待时间,提供给客户更优质的服务,同事能够减小安全库存量,作到生产准时制,下降物流成本git
餐饮销售预测能够看做是基于时间序列的短时间数据预测,预测对象为具体菜品销售量github
经常使用按时间序列排列的一组随机变量${X_1},{X_2}, \cdots ,{X_t}$,来表示一个随机事件的时间序列,简记为$\left\{ {{X_t}} \right\}$;用${x_1},{x_2}, \cdots ,{x_n}$或$\left\{ {{x_t},t = 1,2, \cdots ,n} \right\}$表示该随机序列的n个有序观察值,称之为序列长度为n的观察值序列算法
本博文应用时间序列分析的目的就是给定一个已被观测了的时间序列,预测该序列的将来值。安全
经常使用的时间序列模型见表1.机器学习
表1 经常使用时间序列模型ide
本博文将重点介绍AR模型、MA模型、ARMA模型和ARINA模型。函数
拿到一个观察序列后,首先对它的纯随机性和平稳性进行检验,这两个重要的检验成为序列的预处理。根据检验结果能够将序列分为不一样夫的类型,对不一样类型的序列会采起不一样的分析方法。学习
对于纯随机序列,又称为白噪声序列,序列的各项之间没有任何相关关系,序列在进行彻底无序的随机波动,能够终止对该序列的分析。白噪声序列是没有信息可提取的平稳序列。
对于平稳非白噪声序列,它的均值和方差是常数,现已有一套很是成熟的平稳序列的的建模方法。一般是创建一个线性模型来拟合该序列的发展,借此提取该序列有用信息。ARMA模型是最经常使用的平稳序列拟合模型。
对于非平稳序列,因为它的均值和方差不稳定,处理方法通常是将其转变为平稳序列,这样就能够应用有关平稳时间序列的分析方法,如创建ARMA模型来进行相应的研究。若是一个时间序列经差分运算后具备平稳性,则该序列为差分平稳序列,可使用ARIMA模型进行分析。
对于随机变量X,能够计算其均值(数学指望)$\mu $、方差${\sigma ^2}$;对于两个随机变量X和Y,能够计算X,Y的协方差$\operatorname{cov} (X,Y) = E\left[ {\left( {X - \mu x} \right)\left( {Y - \mu y} \right)} \right]$和相关系数$\rho (X,Y) = \frac{{\operatorname{cov} (X,Y)}}{{{\sigma _X}{\sigma _Y}}}$,他们度量了两个不一样事件之间的相互影响程度。
对于时间序列$\left\{ {{X_t},t \in T} \right\}$,任意时刻的序列值${{X_t}}$都是一个随机变量,每个随机变量都会有均值和方差,记${{X_t}}$的均值为$\mu $,方差为${\sigma ^2}$;任取$t,s \in T$,定义序列${{X_t}}$的自协方差函数$\gamma (t,s) = E\left[ {\left( {{X_t} - {\mu _t}} \right)\left( {{X_s} - {\mu _s}} \right)} \right]$和自相关函数$\rho (t,s) = \frac{{\operatorname{cov} ({X_t},{X_s})}}{{{\sigma _t}{\sigma _s}}}$(特别地,$\gamma (t,t) = \gamma (0) = 1,\rho (0) = 1$),之因此称它们为自协方差和自相关系数,是由于它们衡量的是同一个事件在两个不一样时期(时刻t和s)之间的相关程度,形象地讲就是度量本身过去的行为对本身如今的影响。
若是时间序列$\left\{ {{X_t},t \in T} \right\}$在某一常数附近波动且波动范围有限,即有常数均值和常数方差,而且延迟k期的序列变量的自协方差和自相关系数是相等的或者说延迟k期的序列变量之间的影响程度是同样的,则称$\left\{ {{X_t},t \in T} \right\}$为平稳序列。
对序列的平稳性的检验有两种检验方法,一种是根据时序图和自相关图的特征作出判断的图检验,该方法操做简单、应用普遍,缺点是带有主观性;另外一种是构造检验统计量进行检验的方法,目前最经常使用的方法是单位根检验
(1) 时序图检验
根据平稳时间序列的均值和方差都为常数的性质,平稳序列的时序图显示该序列值始终在一个常数附近随机波动,并且波动的范围有界;若是有明显的趋势性或周期性,那它一般不是平稳序列。
(2) 自相关图检验
平稳序列具备短时间相关性,这个性质代表对平稳序列而言一般只有近期的序列值对现时值得影响比较明显,间隔越远的过去值对现时值的影响越小。随着延迟期数k的增长,平稳序列的自相关系数${\rho _k}$(延迟k期)会比较快的衰减趋向于零,并在零附近随机波动,而非平稳序列的自相关系数衰减的速度比较慢,这就是利用自相关图进行平稳性检验的标准。
(3) 单位根检验
单位根检验是检验序列中是否存在单位根,若是存在单位根就是非平稳时间序列了。
若是一个序列是纯随机序列,那么它的序列值之间应该没有任何关系,即知足$\gamma (k) = 0,k \ne 0$这是一种理论上才会出现的理想状态,实际上纯随机序列的样本自相关系数不会绝对为零,可是很接近零,并在零附近随机波动。
纯随机性检验也称白噪音检验,通常是构造检验统计量来检验序列的纯随机性,经常使用的检验统计量有Q统计量、LB统计量,由样本各延迟期数的自相关系数能够计算获得检验统计量,而后计算出对应的p值,若是p值显著大于显著性水平$\alpha $,则表示该序列不能拒绝纯随机的原假设,能够中止对该序列的分析。
ARMA模型的全称是自回归移动平均模型,它是目前最经常使用的拟合平稳序列的模型。它又能够细分为AR模型、MA模型和ARMA模型三大类。均可以看做是多元线性回归模型。
具备以下结构的模型称为p阶自回归模型,简记为$AR(p)$。
$${x_t} = \mu + \sum\limits_{i = 1}^p {{\phi _i}{x_{t - i}}} + {\varepsilon _t} = {\phi _0} + {\phi _1}{x_{t - 1}} + {\phi _2}{x_{t - 2}} + \cdots + {\phi _p}{x_{t - p}} + {\varepsilon _t}$$
即在t时刻的随机变量${X_t}$的取值${x_t}$是前$p$期${x_{t - 1}},{x_{t - 2}}, \cdots ,{x_{t - p}}$的多元线性回归,认为${x_t}$主要是受过去$p$期的序列值的影响。偏差项是当期的随机干扰${\varepsilon _t}$,为零均值白噪声序列。
平稳AR模型的性质见表2.
表2 平稳$AR$模型的性质
对知足平稳性条件的$AR(p)$模型的的方程,两边取指望,得:
$$E({x_t}) = E({\phi _0} + {\phi _1}{x_{t - 1}} + {\phi _2}{x_{t - 2}} + \cdots + {\phi _p}{x_{t - p}} + {\varepsilon _t})$$
已知$E\left( {{x_t}} \right) = \mu ,E\left( {{\varepsilon _t}} \right) = 0$,因此有$\mu = {\phi _0} + {\phi _1}\mu + {\phi _2}\mu + \cdots + {\phi _p}\mu $,解得:$$\mu = \frac{{{\phi _0}}}{{1 - {\phi _1} - {\phi _2} - \cdots - {\phi _p}}}$$
平稳$AR(p)$模型的方差有界,等于常数。
具备以下结构的模型称为$q$阶自回归模型,简记为$MR(q)$。
$${x_t} = \mu + {\varepsilon _t} + \sum\limits_{i = 1}^q {{\theta _i}{\varepsilon _{t - i}}} = \mu + {\varepsilon _t} + {\theta _1}{\varepsilon _{t - 1}} + {\theta _2}{\varepsilon _{t - 2}} + \cdots + {\theta _q}{\varepsilon _{t - q}}$$
即在t时刻的随机变量${{X_t}}$的取值${{x_t}}$是前q期的随机扰动${\varepsilon _{t - 1}},{\varepsilon _{t - 2}}, \cdots ,{\varepsilon _{t - q}}$的多元线性函数,偏差项是当期的随机干扰${\varepsilon _t}$,为零均值白噪声序列,$\mu $是序列$\left\{ {{X_t}} \right\}$的均值。认为$\left\{ {{x_t}} \right\}$主要是受过去q期的偏差项的影响。
平稳$MA(q)$模型的性质见表3.
表3 平稳$MA$模型的性质
具备以下结构的模型称为自回归移动平均模型,简记为$ARMA\left( {p,q} \right)$。
$${x_t} = \mu + \sum\limits_{i = 1}^p {{\phi _i}{x_{t - i}}} + {\varepsilon _t} + \sum\limits_i^q {{\theta _i}{\varepsilon _{t - i}}} $$
即在t时刻的随机变量${X_k}$的取值${x_k}$是前$p$期${x_{t - 1}},{x_{t - 2}}, \cdots ,{x_{t - p}}$和前$q$期${\varepsilon _{t - 1}},{\varepsilon _{t - 2}}, \cdots ,{\varepsilon _{t - q}}$的多元线性函数,偏差项是当期的随机干扰${\varepsilon _t}$,为零均值白噪声序列。认为${x_k}$主要是受过去$p$期的序列值和过去$q$期的偏差项的共同影响。
特别的,当$q=0$时,是$AR(p)$模型;当$q=0$时,是$MA(q)$模型
平稳$ARMA\left( {p,q} \right)$的性质见表4.
表4 平稳$ARMA$模型的性质
3.4.1 自相关系数(ACF)
平稳$AR(p)$模型的自相关系数${\rho _k} = \rho (t,s) = \frac{{\operatorname{cov} ({X_t},{X_s})}}{{{\sigma _t}{\sigma _s}}}$呈指数的速度锐减,始终有非零取值,不会在$k$大于某个常数以后就恒等于零,这个性质就是平稳$AR(p)$模型的自相关系数${\rho _k}$具备拖尾性。
对于一个平稳$AR(p)$模型,求出延迟k期自相关系数${\rho _k}$时,实际上的获得的并非
${X_t}$与${X_{t - k}}$之间单纯的相关关系,由于${X_t}$同时还会收到中间$k - 1$个随机变量${X_{t - 1}},{X_{t - 2}}, \cdots ,{X_{t - k}}$的影响,因此自相关系数${\rho _k}$里实际上掺杂了其余变量对${X_t}$与${X_{t - k}}$的相关影响,为了单纯地测度${X_{t - k}}$对${X_t}$的影响,引进偏自相关系数的概念。
能够证实平稳$AR(p)$模型的偏自相关系数具备$p$阶截尾性。这个性质连同前面的自相关系数的拖尾性是$AR(p)$模型重要的识别依据。
(1)p阶自回归模型$AR(p)$
AR(p)模型的偏自相关函数PACF在p阶以后应为零,称其具备截尾性;
AR(p)模型的自相关函数ACF不能在某一步以后为零(截尾),而是按指数衰减(或成正弦波形式),称其具备拖尾性。
(2)q阶移动平均模型$MA(q)$
MA(q)模型的自相关函数ACF在q阶以后应为零,称其具备截尾性;
MA(q)模型的偏自相关函数PACF不能在某一步以后为零(截尾),而是按指数衰减(或成正弦波形式),称其具备拖尾性。
(1)若是样本自相关系数(或偏自相关系数)在最初的d阶明显大于2倍标准差范围,然后几乎95%的样本自相关(偏自相关)系数都落在2倍标准差范围之内,并且由非零自相关(偏自相关)系数衰减为小值波动的过程很是忽然,这时,一般视为自相关(偏自相关)系数截尾。
(2)若是有超过5%的样本相关系数落在2倍标准差范围之外,或者是由显著非零的相关函数衰减为小值波动的过程比较缓慢或者很是连续,这时,一般视为相关系数不截尾。
某个时间序列通过预处理,被断定为平稳非白噪声序列,就能够利用ARMA模型进行建模。计算出平稳非白噪声序列$\left\{ {{X_t}} \right\}$的自相关系数和偏自相关系数,再由$AP\left( p \right)$模型、$MA\left( q \right)$模型和$ARMA\left( {p,q} \right)$模型的自相关系数和偏自相关系数的性质,选择合适的模型。平稳时间序列建模步骤如图1所示。
图1 平稳时间序列ARMA模型建模步骤
先计算非平稳白噪声序列的自相关系数(ACF)和偏自相关系数(PACF)。
也称为模型定阶,由$AP\left( p \right)$模型、$MA\left( q \right)$模型和$ARMA\left( {p,q} \right)$的自相关系数和偏自相关系数的性质,选择合适的模型。识别的原则见表5.
表5 ARMA模型识别原则
以这个表来肯定$p$和$q$,p值肯定看PACF,q值肯定看ACF,截尾的意义简而言之,就是落到95%置信区间内。
其次,模型中d,主要指d阶差分以后,模型能经过平稳性检验,此时d就是合适的参数。
前面介绍了对平稳时间序列进行分析的方法。实际上,在天然界中绝大部分序列都是非平稳的。于是对非平稳序列的分析更广泛、更重要,创造出来的分析方法也更多。
对非平稳时间序列的分析方法能够分为肯定性因素分解的时序分析和随机时序分析两大类。
肯定性因素分解的方法把全部序列的变化都归结为4个因素(长期趋势、季节变更、循环变更和随机波动)的综合影响,其中长期趋势和季节变更的规律性信息一般比较容易提取,而由随机因素致使的波动则很是难肯定和分析,对随机信息浪费严重,会致使模型拟合精度不够理想。
随机时序分析法的发展就是为了弥补肯定性因素分解方法的不足。根据时间序列的不一样特色,随机时序分析能够创建的模型有ARIMA模型、残差自回归模型、季节模型、异方差模型等。本节重点介绍使用ARIMA模型对非平稳时间序列进行建模的方法。
相距p期的两个序列值之间的减法运算称为p阶差分运算。
相距k期的两个序列值之间的减法运算称为k步差分运算。
差分运算具备强大的肯定性信息提取能力,许多非平稳序列差分后会显示出平稳序列的性质,这时称这个非平稳序列为差分平稳序列。对差分平稳序列可使用ARMA模型进行拟合。ARIMA模型的实质就是差分运算与ARMA模型的组合,掌握了ARMA模型的建模方法和步骤以后,对序列创建ARIMA模型是比较简单的。
差分平稳时间序列建模步骤如图2所示。
图2 差分平稳时间序列建模步骤
也称为模型定阶,由$AP\left( p \right)$模型、$MA\left( q \right)$模型和$ARMA\left( {p,q} \right)$的自相关系数和偏自相关系数的性质,选择合适的模型。识别的原则见表5.
表5 ARMA模型识别原则
以这个表来肯定$p$和$q$,p值肯定看PACF,q值肯定看ACF,截尾的意义简而言之,就是落到95%置信区间内。
其次,模型中d,主要指d阶差分以后,模型能经过平稳性检验,此时d就是合适的参数。
(1)AIC:赤池信息准则(Akaike Information Criterion,$AIC$)
$$AIC=2k-2ln(L)$$
(2)BIC:贝叶斯信息准则(Bayesian Information Criterion,$BIC$)
$$BIC=kln(n)-2ln(L)$$
其中,$k$为模型参数个数,$n$为样本数量,$L$为似然函数
这个准则是为了选择更简单的模型,当p和q有多种组合,咱们不肯定哪个组合更优,咱们就能够观察模型的AIC和BIC参数,以此来找出使模型最优的p和q,这一系列过程能够在程序中实现自动化进行模型定阶,将在python实现部分,进行阐述。
咱们对于某个预想为目标的模型判断是否结果可用,就须要对模型进行诊断,若是诊断不合格,这时候须要从新选择模型,若是模型可用,就能够进行下一步的预测操做,其中模型诊断通常包括两个方面,一个是残差的检验分析,一个是关于模型过分拟合和参数冗余的问题,整体原则是尽可能选择简单的模型。
(1)残差检验分析
对于残差检验分析还有不少的方法,这里只列出常见的方法以及要检验的内容:
(2)过分拟合和参数冗余
对于统计建模或者是机器学习,咱们通常都须要模型过拟合的问题,一样的,于时间序列而言,过分拟合和参数冗余也是不容忽视的问题:
通常状况下,安装步骤系统选择好模型以后,模型的方法不存在太大的问题,主要是参数优化方面,咱们使用AIC和BIC来肯定最优模型的参数,是较为准确的,若是在使用AIC和BIC肯定好了参数以后,模型仍是没有经过以上检验,则须要考虑模型方法是否选择正确,模型使用是不是合适的状况。
当上面的步骤走完以后,就能够对数据进行预测了,也就是时间序列建模的主要目标之一,预测该序列将来的取值,此外咱们要评估预测的精度。通常采用最小均方偏差标准。
因为写在同一篇博客篇幅太长,不利用阅读,这部份内容请移步个人另外一篇博文:时间序列算法理论及python实现(2-python实现) - 知-青 - 博客园
同理,因为写在同一篇博客篇幅太长,不利用阅读,这部份内容请移步个人另外一篇博文:
王黎明,王连等. 应用时间序列分析
张良均,王路,谭立云,苏剑林. Python数据分析与挖掘实战
Complete guide to create a Time Series Forecast (with Codes in Python)
时间序列预测如何变成有监督学习问题? - 云+社区 - 腾讯云
转载说明
一、本人博客纯属技术积累和分享,欢迎你们评论和交流以求共同进步。
二、在无明确说明下,博客能够转载以供我的学习和交流,可是要附上出处。
三、若是原创博客使用涉及商业/公司行为请邮件(1547364995@qq.com)告知,通常状况均会及时回复赞成。
四、若是我的博客中涉及他人文章我会尽力注明出处,但受限于能力并不能保证全部引用之处均可以注明出处,若有冒犯,请您及时邮件告知以便修改,并于此提早向您道歉。
五、转载过程当中若有涉及他人做品请您与做者联系。
六、全部文章(不限于原创)仅为我的看法,我的只能尽可能保证正确,若有错误您须要自负责任,并请您留下评论提出错误之处以便及时更正,惠泽他人,谢谢