时间序列(四) 预测

引言

时间序列建模的主要目标之一就是对时间序列未来取值的预测. 而另一个最重要的目标即是对预测精确性的评估.

可以说之前的所有知识都是为预测与评估作准备的.

所谓预测就是利用已观测样本数据,对未来某时刻的取值进行估计. 对时间序列预测,基于这样一个假设: 已观测信息包含时间序列模型的所有信息,其中一部分是可读的,基于可读信息,可以构建时间序列模型,此模型在一定的精度要求下, 可以作为真实模型的近似.

最佳线性预测

设时间序列\(\{X_t,\quad t=\pm1,\pm2,\dots,N\}\), 对未来 l 步预测,目前最通用的预测准则为最小方差预测原则:
\[ \hat{X_N}(l) = E(X_{N+l} |X_1,X_2,\dots,X_N) \]

\[ argmin_{params} E(\hat{X_N} - X_{N+l})^2 \]

一般地, 寻求的模型,大约都时间序列\(\{X_t,\quad t=\pm1,\pm2,\dots\}\) 各时间点的线性组合, 因而满足上述条件的模型,也称为(l 步)最佳线性预测(之前,研究时间序列的学者都将'预测'称之为''预报''(forcasting), '预测'常被使用则是最近的事).则 上式可写成:
\[ E(a_1X_1+ a_2X_2 +\dots+X_N - X_{N+l}) ^2= E(X_{N+l} - \sum_{i=1}^N a_i X_{N+1-i})^2 = min \]
其中\(a_i\) 表示(组合)系数.

则上式等价于:
\[ E\big(X_{N+l} - \sum_{i = 1}^{N}a_iX_{N+1-i} \big)X_j = 0,\quad 1\le j\le N \]
求期望可得:
\[ \gamma_{N+l-i} = \sum_{i = 1}^{N} a_i\gamma_{N+1 - j-i}, \quad j = 1,2,\dots N \]
写成矩阵形:
\[ \left( \begin{array} \\ \gamma_0 \quad\gamma_1\quad\dots\quad\gamma_{N-1}\\ \gamma_1\quad\gamma_0\quad\dots\quad\gamma_{N-2}\\ \vdots\quad\quad\vdots\quad\quad\vdots\quad\quad\vdots\\ \gamma_{N-1}\quad\gamma_{N-2}\quad\dots\quad\gamma_0 \\ \end{array} \right) \left(\begin{array} \\ a_1\\ a_2\\ \vdots\ \\ a_N\\ \end{array} \right) = \left(\begin{array} \\\gamma_{l+1}\\ \gamma_{l+2}\\ \vdots\ \\ \gamma_{N+l}\\ \end{array} \right) \]
是不是好象在哪里见过? 是的, 如果是一步预测, 即\(l = 1\)时, 上式方程也称为\(\{X_t\}\) 的第N阶Yule-walker 方程(虽然 \(\{X_t\}\)未必是AR序列),其中\((a_1,a_2,\dots,a_N)\)为未知量,也就是要求参数.

但... 等等,是不是太快了?别急,在这之前,先来了解一下如何预测:

时间序列预测

时间序列预测, 基本上可以分四大步:

  • 确定模型阶数, 经过前几讲,可知,目前的所有模型都可认为是ARIMA(p,d,q)模型, 因此, 确定模型阶数,即为确定p, d,q,此过程也被称为模型识别.
  • 当模型阶数确定后, 那就要对模型进行参数估计了.
  • 模型构建完成,那就要进行模型诊断了(或称模型评估).
  • 最后,才是根据所选模型进行预测

以上四大步每一步都可独立成章,内容过多, 不过不用担心,模型识别部分会详细讲一下,而后面的内容,在这里简单的提两句: 参数估计很重要,那是当然的,可对于实际应用来说,谁会关注这些呢,本来想放上几个公式的,可发现没有必要, 因为这些公式很复杂,而且还是递推形式的,我都记不下来,各位也就不用记忆了, 而且其主要思想已经讲了(最佳线性预测),就够了.

对模型诊断部分, 我要说的是,实践与理论研究, 学术看问题的方式, 与实践看问题的方式是不同的,在实践应用中,我们一般不会走学术的方式对诊断模型,更多的是考查模型拟合的如何, 是否overfit, MSE(均方误差,一个模型好坏的衡量指标)是否最低,等等. 所以我都'不欲'的,就不'施于'大家了.

预测,就是以你构建好的模型,对未来时间序列的预测,其实还是有一些啰嗦事的,但知道这么多就够了,实际中才不会管你什么预测误差怎么变化呢,更不会考虑什么预测极限(因为我们有自己的更加直观的方式.).

自相关系数与偏自相关系数(ACF)

回顾自相关函数的定义:
\[ \rho_{t,s} = Corr(X_t,X_s) = \frac{Cov(X_t,X_s)}{\sqrt{Var(X_t)Var(X_s)}} \]
但一般的, 我们会研究平稳性时间序列(不平稳则先转化成平稳的).这也就意味着, 有恒定的均值,方差也可认为不变(异方差问题,我们会单独讲, 金融市场常用的模型(当然也是处理时间序列了)). 则上式可修正成样本自相关函数(\(r_k\)) (k = t - s):
\[ r_k = \frac{\sum_{t = k+1}^n(X_t - \bar{X})(X_{t-k} - \bar{X})}{\sum_{t = 1}^n(X_t - \bar{X})^2} \]
这个自相关函数很重要,(第一讲可以先翻翻喽,当然第二讲也可以看看喽,嘻~), 比如在MA(q)s模型中, 当 k > q 时, \(\rho_k = 0\) 而上式正是\(\rho_k\)的估计量啊, 也就是说\(\gamma_k\)也是0啊(或准确的说近似为0, 这里不做深挖(没必要),可以粗暴地认为这里的\(\gamma_k\)就是\(\rho_k\)就可以了). 什么,不懂什么意思? 就是说,拿到数据我们可以先以此公式来验证下 \(\gamma_k = 0\) 的k 的最小取值, 那如果是MA(q)模型, 我们就知道了 q = k - 1 !!! 神奇吧!

样本偏相关函数(PACF)

MA(q) 的滞后项数(q) 可以通过ACF确定,因为当 k > q 时ACF为0, 可是AR(p) 模型可没有这个性质啊. AR(p)模型的自相关ACF不会突然截断(为0) 而是逐渐衰减的. 没办法了吗? 怎么可能! 看小标题!

那什么是偏相关函数数呢? 就是在探讨\(X_t\)\(X_{t-k}\) 之间的相关函数时,想办法把中间介入的变量(\(X_{t-1},\dots,X_{t-k+1}\)) 的影响去掉,从而找出二者'纯洁'的相关关系. 记为\(\phi_{k,k}\).

如果用公式表示呢,则有两种方式:
\[ \phi_{k,k} = Corr(X_t,X_{t-k} | X_{t-1},X_{t-2},\dots,X_{t-k+1}) \]
此种方式有个前提假设,即是时间序列是基于高斯分布的.

或者写成如下形式(此种不要求一定是高斯分布):
\[ \phi_{k,k} = Corr(X_t - \beta_1 X_{t-1} - \beta_2 X_{t-2} - \dots - \beta_{k -1 } -X_{t-k+1},\\ X_{t-k} -\beta_1 X_{t-k+1} - \beta_2 X_{t-k+2} - \dots - \beta_{k -1 } -X_{t-1} ) \]
对于高斯分布这两个等式是等价的, 规定 \(\phi_{1,1} =1\).

经过'简单'(真的简单,两步就可以了,所以不放进来了,汗~) 可以得到如下重要事实:
\[ \phi_{k,k} = 0, \qquad k > p \]
那问题来了,如何计算\(\phi_{k,k}\)啊? 好, 不废话,直接上公式:
\[ \phi_{k,k} = \frac{\rho_k - \sum_{j = 1}^{k-1}\phi_{k -1,j}\rho_{k-j}}{1 - \sum_{j = 1}^{k-1} \phi_{k -1,j}\rho_j} \]
其中,
\[ \phi_{k,j} = \phi_{k-1,j} - \phi_{k,k}\phi_{k-1,k-j},\qquad j=1,2,\dots,k-1 \]
例如:
\[ \begin{array} \\ \phi_{1,1} = \rho_1\\ \phi_{2,2} = \frac{\rho_2 - \phi_{1,1}\rho_1}{1 - \phi_{1,1}\rho_1} = \frac{\rho_2 - \rho_1^2}{1 - \rho_1^2}\\ \phi_{2,1} = \phi_{1,1} - \phi_{2,2}\phi_{1,1}\\ \phi_{3,3} = \frac{\rho_3 - \phi_{2,1}\rho_2 - \phi_{2,2}\rho_{1}}{1 - \phi_{2,1}\rho_{1} - \phi_{2,2}\rho_2}\\ \vdots \end{array} \]
看,根上面的递推公式,我们可以计算任何想要的\(\phi_{k,k}\). 对于某个样本来说,将公式中的\(\rho_k\)替换成\(\gamma_k\)就可得出样本的偏相关函数.

下面给个表出ACF,PACF 在ARMA模型中的特征:

函数AR(p)MA(q)ARMA(p,q)
ACF拖尾滞后q阶后截尾拖尾
PACF滞后p阶后截尾拖尾拖尾

扩展的自相关函数(EACF)

AR(p)模型与MA(q)模型都有判别指标了,那对于混合ARMA模型(即一般的ARMA模型)怎么办呢,从上表可知,ACF与PACF不能够用来作为ARMA的判别标准(拖尾啊~~~).

因此EACF应运而生.不过我的理解却是这样, 时间序列的研究历史已经很久了, 但由于时间序列数据的序列相关性,致使数据的结构很复杂,因此, 诸如一些基本性质,研究起来都十分的吃力, 当上升到模型,则成熟的效果好的理论至今还没出现, 比如ARMA模型的识别, ARMA模型可是时间序列的非常基础的模型啊,可是公认的方法还没有出现. 本节介绍的方法,近几年才慢慢为人们所接受(因为EACF的方法论,看似逻辑简单,可操作起来并不太容易), 我想是因为没有其他更好的办法吧.而且在第五版的Time Series Analysis: Forecasting and Control一nnh(2016年出版的啊),在模型识别部分仍然没有加入EACF, 但也没有更好的办法提出来.

EACF其实更准确地说是一个方法:

如果ARMA模型的AR部分是已知的,那从观测序列中剔掉AR部分, 将会得到一个'纯'的MA过程. 该过程的MA的ACF具有截尾特征. 而自回归的系数则可以通过有限次的回归估计得到.

呃,呃,呃… 算啦, EACF就讲这么多吧,就这么任性地决定啦~. 大家对EACF有了个了解就可以了.反正我的理解是,与其用EACF,还不如备选几个模型(不同参数组合),逐个尝试来得痛快~.

非平稳模型的识别

之前讲过'差分+ARMA'模型即为ARIMA模型. 所以当遇到ARIMA模型就可以先差分再应用以上方法,就可以识别模型了~.差分阶数的选择,可参见第三讲.注意,不要过度差分.

至于如何判断时间序列是否为非平稳的. 一般认为,样本ACF的近似线性衰减是时间序列非平稳的标志.定量的可使用Dickey - FullerF单位根检验.这应用到一个事实: 对差分序列的检验,即检验时间序列AR特征多项式是否存在单位根. 这里还不展开讨论, 因为实践中差分阶数一t般不大,然后… 你懂的~ /坏笑...

其他识别方法

还有一些其他的模型识别方法, 如BIC, AIC等等, 以上都没展开谈,这里就不展开讨论了.

再吐槽~

综上,时间序列的预测就告一段落了. 你会发现今天我有好多地方没有展开(至于原因,每个位置都有讲到). 至于更深层次的原因,是它们不好用,更加直白的说法是, 太复杂,理论性太强, 实际应用中,不会自己去实现某一个方法; 太陈旧,太刻板,实践中不会使用; 太不完善,没有形成普遍认同(时间序列真的很难, 想想这几讲可都是时间序列的最基础知识,但我想你早已发现所得出的结果,性质都不是那的容易~).

以后有机会,可以来实例比如: '手把手时间序列建模.'.下一讲可能不行, 因为会分享一个更令人兴奋的话题,敬请期待~

转载于:https://www.cnblogs.com/vpegasus/p/forecast.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值