时间序列 ARIMA 模型 (三)
先看下图:
这是1986年到2006年的原油月度价格。可见在2001年之后,原油价格有一个显著的攀爬,这时再去假定均值是一个定值(常数)就不太合理了,也就是说,第二讲的平稳模型在这种情况下就太适用了。也因此有了今天这一讲。
要处理这种非平稳的数据(比如上图中的均值不是一个常数),需要用非平稳模型:求和自回归滑动平均(Autoregressive integrated moving average, ARIMA)。接下来,咱先看一个处理过的石油价格:
是不是似曾相识?! 对的,经过简单的处理,本来不平稳的数据,立即变成了平稳数据了。这样再用上一章的模型就可简单处理了。这种处理方式就叫做差分(马上会讲,别急)。 而ARIMA 模型可以简单的理解为:差分+平稳模型。你看,这下,这章的内容是不是简单多了,所谓非平稳模型不就是差分处理下数据,再变有平稳数据,然后再用平稳模型处理嘛~ 确实酱紫~。
那马上就产生一个问题(或者你早就有疑问了):什么叫做差分?差分是处理时间序列非常重要的工具,在计量经济学及金融数学中广泛应用。
3.1 差分运算
3.1.1 差分运算
还是用原油价格(月度数据)作为例子,所谓一阶差分就是两个相邻月度之间做差。(这么简单?!对,就是这样~)。
规范化些:设\(\{X_t,\ t= \pm1,\pm2,\dots\}\) 为一时间序列,则:
\[
\Delta x_t = x_t - x_{t-1} \ t=\pm1,\pm2,\dots
\]
称为时间序\(\{X_t,\ t= \pm1,\pm2,\dots\}\) 的一阶差分运算。
比如 2005年原油价格为:46.84 ,48.15, 54.19, 52.98, 49.83, 56.35, 58.99, 64.98 ,65.59, 62.26, 58.32 ,59.41。那这组数据的一阶差分即为 1.31, 6.04, -1.21, -3.15, 6.52 , 2.64 , 5.99 , 0.61,-3.33, -3.94,也就是前一个数减去后一个数而已。
那如果我想去差分后的数据再做一次差分呢? 那就是二阶差分(就是这么easy~):上面的一阶差分数据为1.31, 6.04, -1.21, -3.15, 6.52 , 2.64 , 5.99 , 0.61,-3.33, -3.94,再经一次差分: 4.73 , -7.25, -1.94, 9.67, -3.88, 3.35 , -5.38 , -3.94, -0.61.
那如果想做p次呢(你够了~),那就叫做p阶差分了,定义为:
\[
\Delta^p x_t = \Delta^{p-1}x_t - \Delta^{p-1} x_{t-1}
\]
是不是很简单?!
3.1.2 k步差分
如果不是相邻数据间做差呢,比如我想隔几个数据叫,比如我想用原油数据7月份数据与1月份做差呢? 没问题,你的需求我一定满足,这个就叫做k步差分了:
\[
\Delta_k x_t = x_t - x_{t - k}
\]
比如2005年7月与1月的价格差值即为: 58.99 - 46.84 = 12.15.也即称为六步差分了。
3.1.3 差分的选择
划重点,划重点!!!
- 序列蕴含着显著的线性趋势,1 阶差分可以实现趋势平稳,比如上面的原油价格(不过,里面其实做了一个预处理,一会说~).
- 序列蕴含着曲线趋势的,通常低阶(2阶或3阶)差分就可以取提出曲线趋势的影响.
- 对于固定周期的序列,通常进行步长为周期长度的差分就可以较好的提取周期信息.
PS: 差分虽好,但也不要贪杯哦, 记住对信息的任何的加工都只会造成信息的损失.
3.1.3* 延迟算子
这一小节作为了解,不喜欢可以_跳过_,不影响理解滴~。
延迟算子,类似一个时间指针,当前序列值乘以一个延迟算子,就相当于把当前序列值的时间向过去拔了一个时刻。(ps: 算子就是映射,就是关系,就是变换[3])
3.1.3.1定义与性质
记 B 为延迟算子,有:\(x_{t-1} = Bx_t, x_{t-2} = B^2x_t,\dots, x_{t-p} = B^p x_{t-p}\)
延迟算子具有如下性质:
- \(B^0\) = 1
- 若 c 为常数, 则有 \(B(c\bullet x_t) = c B(x_t) = c\bullet x_{t-1}\)
- 对任意两个序列\(有\{x_t\},\{y_t\},有 B(x_t\pm y_t) = x_{t-1}\pm y_{t-1}\)
- \(B^n x_t = x_{t-n}\)
- \(其中(1-B)^n = \sum_{i = 0}^n(-1)^p C_{n}^i B^i,其中 C_n^i = \frac{n!}{i! (n-i)!}\)
3.1.3.2 差分的延迟算子表示
p阶差分
\[
\Delta^p x_t = (1 - B)^p x_t = \sum_{i = 0}^p(-1)^p C_p^i x_{t-i} \quad t = \pm1,\pm2,\dots
\]k步差分
\[
\Delta_k x_t = x_t - x_{t-k} = (1-B^k)x_t \quad t = \pm1,\pm2,\dots
\]
3.2* 时间序列分解
这一小节作为了解,不喜欢可以_跳过_,不影响理解滴~
在第一节(时间序列介绍) 中,曾提到过时间序列分解,其实时间序列分解不是靠感觉给出的,它也是有强大理论依据的,这里就支持时间序列分解的两大定理作简单的介绍:
3.2.1 Wold 分解
Wold 分解: 对于任何一个离散平稳过程\(\{X_t,\ t= \pm1,\pm2,\dots\}\), 它都可以分解为两个不相关的平稳序列之和,其中一个分确定性的,另一个为随机性的 不妨记作:
\[
X_t= V_t+ \xi_t \quad t = \pm1,\pm2,\dots
\]
其中 \(\{V_t\}\) 为确定性序列,而\(\{\xi_t\}\)为随机序列,且\(\xi_t = \sum_{j = 0}^\infty \phi_j\epsilon_{t -j}\). 满足:
\[
\begin{array}
\\
\phi_0 = 1,\sum_{j = 0}^\infty \phi_j^2 < \infty\\
\\
\{\epsilon_t\} \sim WN(0,\sigma_t^2)\\
\\
E(V_t,\epsilon_s) = 0, \forall t \ne s\\
\end{array}
\]
其中的所谓的'确定性':
对任意的序列\(\{V_t\quad t = \pm1,\pm2,\dots\}\) 对\(V_t\)作 q 期之前的序列值\(\{V_{t-q},V_{t-q-1},\dots,V_{t-1}\}\) 作线性回归:
\[
v_t = a_0 + a_1v_{t-q } + a_2 v_{t-q-1} + \dots+ a_q v_{t-1} + \eta_t
\]
其中\(\eta_t\) 为回归残差序列: \(Var(v_t) = \tau_q^2\). 如果:
- $\lim_{ q \rightarrow\infty} \tau_q^2 = 0 $ ,则称 \(\{V_t\}\)为确定性序列;
- \(\lim_{ q \rightarrow\infty} \tau_q^2 = Var(v_t)\), 则称\(\{V_t\}\) 为随机序列.
3.2.2 Cramer 分解
Wold分解是现代时间序列分析理论的灵魂. 1938 年 H. Wold 提出此理论时,只是为了分析平稳序列的构成, 不过另一位大牛Cramer于1961年证明此种分析思路同样适用于非平稳序列.
Crammer 分解: 任意时间序列\(\{X_t\}\) 都可分解成两部分的叠加:其中一部分是由多项式的确定性分析趋势成分,另一部分是平稳的零均值误差成分:
\[
x_t = \mu_t + \epsilon_t = \sum_{j = 0}^d \beta_jt^j+ \Psi(B)a_t \quad t = \pm1,\pm2,\dots
\]
其中\(d < \infty,\beta_1,\beta_2,\dots,\beta_d\)为常数系数,\({a_t}\)为一个零均值白噪声序列; B 为延迟算子.
Cramer分解说明任何一具序列的波动都可以视为受到了确定性影响和随机性影响的综合作用.
3.3 ARIMA 模型
千呼万唤终于到了ARIMA.
有了上面的知识,就可以很容易推出自回归滑动平均求和(ARIMA)模型。
如果有一个时间序列\(\{X_t,\ t=\pm1,\pm2,\dots\}\) 的 d 次差分 \(W_t = \Delta X_t\) 是一个平稳的ARMA过程,则称时间序列\(\{X_t,\ t=\pm1,\pm2,\dots\}\) 为 ARIMA模型。如果\(W_t\)服从 ARMA(p,q) 模型,则称\(\{Y_t\}\) 是 ARIMA(p,d,q) 过程.
其中 d 通常为1,最多也不过2,3, 所以,不用太担心模型过于复杂.另外,如果 p = 0, 即不包含自回归项,称为IMA(d,q), 如果没有滑动平均项, 则称为ARI(p,d).
来来,给个'粟子',先看个简单的,下图(上)是某个商店某产品的两个月销量的时间序列图:
(上)图中 数据显然是不平稳的; (中)图是作了一步差分的结果,是不是平稳多了(什么?图怎么更难看了? 是的, 因为我这个过程是在剔除确定性信息啊~); (下)图是再一次作一步差分的(也即二阶差分), 你会发现这会是真的像白噪声了.
下面考虑ARIMA(p,1,d), 令\(W_t = Y_t - Y_{t-1}\):
\[
W_t = \phi_1 W_{t-1}+\phi_2W_{t-2}+\dots +\phi_{t-p}W_{t-p} \\
\qquad + e_t + \theta_1e_{t-1} + \theta_2e_{t-2}+\dots+\theta_{t-q}e_{t-q}\qquad t= \pm1,\pm2,\dots
\]
即:
\[
Y_t - Y_{t-1} = \phi_1 (Y_{t-1} - Y_{t-2})+\phi_2(Y_{t-2} - Y_{t-3})+\dots +\phi_{t-p}(Y_{t-p} - Y_{t-p-1}) \\
\qquad+ e_t + \theta_1e_{t-1} + \theta_2e_{t-2}+\dots+\theta_{t-q}e_{t-q}\qquad t= \pm1,\pm2,\dots
\]
整理:
\[
Y_t = (1 + \phi_1)Y_{t-1}+(\phi_2 - \phi_1)Y_{t-2}+(\phi_2 - \phi_3)Y_{t-3}+\dots+(\phi_p - \phi_{p-1})Y_{t-p} - \phi_{p}Y_{t-p-1} \\
\qquad+ e_t + \theta_1e_{t-1} + \theta_2e_{t-2}+\dots+\theta_{t-q}e_{t-q}\qquad t= \pm1,\pm2,\dots
\]
上式即称为模型的差分方程形式, 看起来是不是像ARMA(p+1,q)过程? 不过, 其特征多项式(涉及延迟算子,不过只需要知道下面的公式是由上面推出即可,至于怎么推出,需了解上面的星号章节~[^4])满足:
\[
1 - (1+\phi_1)x - (\phi_2 - \phi_1)x^2 -(\phi_2-\phi_3)x^3 -\dots - (\phi_p - \phi_{p-1})x^p + \phi_p x^{p+1} \\
= (1 -\phi_1x-\phi_2x^2-\dots- \phi_px^p)(1-x) \qquad t = \pm1,\pm2,\dots
\]
显然,x = 1 是 一个根, 意味着这个过程非平稳,而其余的根是平稳过程的\(W_t\)的根.
参考文献
如第一节参考文献中所述, 主要的参考文献都在第一节中列出来了, 下面所列为新加入或当节的参考文献,请知悉.
1: 王燕 编著, 应用时间序列分析 北京: 中国人民大学出版社,2005
2: http://blog.sina.com.cn/s/blog_a1a5c41501012w3b.html
3: https://wenku.baidu.com/view/aab18a65cfc789eb162dc805.html
时间序列 ARIMA 模型 (三)的更多相关文章
- 时间序列ARIMA模型
时间序列ARIMA模型 1.数据的平稳性与差分法 让均值和方差不发生明显的变化(让数据变平稳),用差分法 2.ARIMA模型-----差分自回归平均移动模型 求解回归的经典算法:最大似然估计.最小二乘 ...
- 时间序列预测之--ARIMA模型
什么是 ARIMA模型 ARIMA模型的全称叫做自回归移动平均模型,全称是(ARIMA, Autoregressive Integrated Moving Average Model).也记作ARIM ...
- 时间序列分析模型——ARIMA模型
时间序列分析模型——ARIMA模型 一.研究目的 传统的经济计量方法是以经济理论为基础来描述变量关系的模型.但经济理论通常不足以对变量之间的动态联系提供一个严密的说明,而且内生变量既可以出现在方程的左 ...
- ARIMA模型——本质上是error和t-?时刻数据差分的线性模型!!!如果数据序列是非平稳的,并存在一定的增长或下降趋势,则需要对数据进行差分处理!ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数
https://www.cnblogs.com/bradleon/p/6827109.html 文章里写得非常好,需详细看.尤其是arima的举例! 可以看到:ARIMA本质上是error和t-?时刻 ...
- 用python做时间序列预测九:ARIMA模型简介
本篇介绍时间序列预测常用的ARIMA模型,通过了解本篇内容,将可以使用ARIMA预测一个时间序列. 什么是ARIMA? ARIMA是'Auto Regressive Integrated Moving ...
- 时序分析:ARIMA模型(非平稳时间序列)
转载于一篇硕士论文.... ARIMA模型意为求和自回归滑动平均模型(IntergratedAut少regressive MovingAverageModel),简记为ARIMA(p,d,q),p,q ...
- 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测
本文结构: 时间序列分析? 什么是ARIMA? ARIMA数学模型? input,output 是什么? 怎么用?-代码实例 常见问题? 时间序列分析? 时间序列,就是按时间顺序排列的,随时间变化的数 ...
- 基于R语言的时间序列指数模型
时间序列: (或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列.时间序列分析的主要目的是根据已有的历史数据对未来进行预测.(百度百科) 主要考虑的因素: 1.长期趋势(Lon ...
- ARIMA模型总结
时间序列建模基本步骤 获取被观测系统时间序列数据: 对数据绘图,观测是否为平稳时间序列:对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列: 经过第二步处理,已经得到平稳时间序列.要对平稳时间序 ...
随机推荐
- Lintcode415-Valid Palindrome-Medium
Given a string, determine if it is a palindrome, considering only alphanumeric(字母和数字) characters and ...
- HDU 4302 Holedox Eating(multiset)
http://acm.hdu.edu.cn/showproblem.php?pid=4302 题意: 在一条直线上,会有多条命令,如果是0,那么就会在x位置处出现一个蛋糕,如果是1,某人就会找到最近的 ...
- C语言 深入学习
浮点数: x = Mx*2^Ex为一个规格化浮点数,Mx为x的尾数,Ex为x的阶码. 1e-6:表示1 * 10 ^ (-6). 编译时执行: sizeof是运算符(而非函数),在编译时执行,不会导致 ...
- QT使用QJson生成解析Json数据的方法
QT中使用json还是比较方便的,下面用例子直接说明 举例子之前首先推荐一个在线解析json格式的网站,具体格式用法如下图所示: 之后根据这个格式进行json数据解析. QT使用json需要包含的头文 ...
- git 恢复单个文件的历史版本
首先查看该文件的历史版本信息:git log Default@2x.png 记录下需要恢复的commit版本号:如 9aa51d89799716aa68cff3f30c26f8815408e926 恢 ...
- Jquery中的DOM操作:
DOM是 Document Object Model的缩写,是一种与浏览器,平台,语言无关的接口,使用该接口可以访问页面中所有的标准组件,下面介绍一下常用的一些DOM操作: 选择节点: 将在下篇博客中 ...
- 三: vue组件开发及自动化工具vue-cli
一: 组件化开发 1 组件 1: 组件(Component)是自定义封装的功能.在前端开发过程中,经常出现多个网页的功能是重复的,而且很多不同的网站之间,也存在同样的功能. 2: 什么是组件 而在网页 ...
- Matlab中的基本数据类型介绍
Matlab中支持的数据类型包括: 逻辑(logical)字符(char)数值(numeric)元胞数组(cell)结构体(structure)表格(table)函数句柄(function handl ...
- C#_方法的重载
方法的重载是一种操作性多态,有的时候,可能需要在多个不同的实现中对不同的数据执行相同的逻辑操作,以writeline方法为例,有时可能想他传递一个整数.两者的具体实现肯定是不同的,但在逻辑上,这个方法 ...
- leecode第十六题(最接近的三数之和)
class Solution { public: void quick_order(vector<int>& num, int star, int en)//快排 { int st ...