大家好,欢迎来到IT知识分享网。
这篇博客主要记录人大出版《应用时间序列分析》第二章的笔记。本章主要介绍进行时序分析前的预处理,即平稳性检验与纯随机性检验。
平稳性检验(描述性)
平稳性检验的方法分为描述性方法与计量性方法。前者主要指时序图检验、ACF 图检验,后者主要指 DF 检验、ADF 检验与PP检验。由于计量性方法需要 ARMA 模型的相关知识,这篇博客仅仅介绍描述性方法。
时序图检验
时序图检验即是通过观察时序图来判断时间序列是否平稳。Python 中画时序图的代码如下:
import pandas as pd
import matplotlib.pyplot as plt
data = pd.DataFrame({'2010-01-01': 10.00, '2010-01-02': 13.00, '2010-01-04': 13.50, '2010-01-05': 13.50, '2010-01-06': 14.50, '2010-01-07': 16.00, '2010-01-08': 20.50, '2010-01-10': 24.50, '2010-01-11': 27.50, '2010-01-12': 30.50}, index=['price'])
data = data.T
data['price'].plot()
plt.show()
作图结果如下:
其实就是使用 pandas 中内置的折线图。
具体如何通过时序图来检验平稳性呢?平稳时序定义要求均值、方差为常数,协方差仅仅与时间间隔相关。从定义入手,时序图满足以下任一条件的不是平稳时序:
- 时序存在明显的趋势,即均值不为常数
- 时序存在集群效应,即某段时间的波动幅度较其它时段明显较大或者较小,即方差不为常数
下图为集群效应的一个例子:
时序中间时段的波动幅度明显大于两端,可以认为时序存在集群效应,为非平稳时序。集群效应在金融时间序列中往往十分常见。
ACF图检验
上篇博客中介绍了自协方差函数的定义与作图方法,链接:https://blog.csdn.net/weixin_44607126/article/details/89086035
平稳时序往往仅具有短期自相关性,长期的 ACF 会振荡随机趋近于0。因此,当 ACF 图不满足这一条件时,可以认为时序非平稳。如何理解振荡与随机呢?下面给出几个 ACF 图检验的例子。
上图在 k >= 2 时就已经趋于 0 了,但是并没有满足随机趋于 0 的条件,该图中的 ACF(k) 先连续4项正值,然后连续6项负值,整个图形呈现出倒三角的形状,这意味着时序中存在明显的趋势,为非平稳时序。事实上,这是一条单增时序的 ACF 图。
上图是平稳时序的 ACF 图的一个例子,可以看到 ACF(k) 没有出现规律性,振荡随机趋近于0,可以认为时序平稳。
总结来看,当 ACF 图满足下列任一条件时,可以认为时序为非平稳时序:
- ACF 图正项与负项连续交替出现,呈现倒三角形,意味着时序中存在趋势
- ACF 图拖尾,即当 k 很大时仍有 ACF(k) 显著
描述性检验方法的注意事项
无论是时序图还是 ACF 图,使用它们作为检验方法时都具有较强的主观性,没有引入客观的统计量。因此,时序图与 ACF 图仅能用来排除非平稳时序,不能用来判断一个时序是否是平稳时序!即描述性检验方法仅仅是为计量性检验方法作一个初步筛选,如果时序没有通过描述性检验方法,就不需要进行计量性检验了;而即使时序通过了描述性检验方法,仍需要进行计量性检验来进一步确认时序为平稳时序。
纯随机性检验
在进行时序分析之前,我们需要确认这个时序不是一个单纯的噪音,而是蕴含着可以用模型描述的信息。因此需要对时序进行纯随机性检验。
白噪声的定义
我们称满足下列条件的时序为白噪声(纯随机时序):
白噪声满足均值与方差均为常数,且不同时刻上的随机变量不相关。显然,白噪声是一种平稳时序。
从白噪声的定义中可以看出,对于白噪声时序,历史数据不能提供关于未来的信息,此时建立时序模型将会是徒劳的。因此在蚝时序建模前需要进行白噪声检验。同时,白噪声还可以用来判断时序模型总体的显著性,当模型残差是白噪声序列时,就可以认为模型已经充分提取了时序信息。
Barlett定理
如果一个时序是纯随机的,得到一个观察期数为 n 的观察序列,那么该序列的延迟非零期样本自相关系数近似服从 的正态分布。
仅仅想在应用层面理解时序则不必深究上述定理。
BP检验
根据 Barlett 定理,可以构建 Q 统计量:
则有 ,其中 m 为指定最大延迟期数,
为 k 期延迟样本自相关系数。原假设为时序是白噪声序列,当 Q 大于单侧检验临界值时认为时序不是白噪声序列。
LB检验
LB 检验是在 BP 检验的基础上进行了一些修正,使其更适用于小样本。LB 统计量表达式为:
在实际应用中通常使用 LB 检验。
在python中进行 LB 检验的代码如下:
from statsmodels.stats.diagnostic import acorr_ljungbox
print(acorr_ljungbox(np.random.rand(100), lags=[6, 12]))
lags 即上面公式中的m , 通常取 6 与 12。
输出如下:
(array([2.02502998, 8.28247283]), array([0.91738225, 0.76268484]))
第一个 array 是 LB 统计量的数值,第二个 array 是 p 值。当 p 值小于显著性水平时认为时序不是白噪声。
总结
- 在进行正式的时序建模前需要检验时序的平稳性与纯随机性
- 平稳性检验可以通过时序图、ACF 图等描述性方法,但依然要使用 ADF 检验、PP 检验来最终判断
- 纯随机性检验可以使用 BP 统计量与 LB 统计量,通常使用 LB 统计量
误区
- 仅仅通过时序图与 ACF 图就断定一个时序是平稳时序:时序图与 ACF 图仅仅只能用于判断非平稳时序,不能用于判断平稳时序
- 不画时序图与 ACF 图,直接对时序进行 ADF 检验与 PP 检验:描述统计是必不可少的步骤,通过时序图与 ACF 图可以清楚看出时序的趋势性与周期性
- 在正式建模之前不检验时序的纯随机性,认为仅仅检验时序的平稳性就足够了:白噪声时序也是平稳序列,但是没有分析的价值
- 在正式建模之后不检验残差序列的纯随机性:残差序列的纯随机性检验有点类似于多元回归中的 F 检验,检验的是模型总体的显著性水平
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/20899.html