最近看时间序列,由于统计学知识的薄弱,略感吃力。
作为码农,自然有“纸上得来终觉浅,绝知此事要coding“的思想。因此做了一个ARMA的例子,将建模流程过一遍,旨在加深理解,预测准确性并不是主要目的。
一.数据获取与加工
1.引入所用到的库
2.获取GDP数据并重新排序
3.转为Series
二.数据平稳化
1.定义单位根检验的函数
拿到时间序列数据后,要进行平稳性检验,主要有两种方法:肉眼检验法和单位根检验法。
肉眼优点是简单省事,但是缺点是不准确,不通用。肉眼检验主要看看序列图、ACF、PACF。
ARMA公式其实是一个随机差分方程,序列要平稳,那方程的解应该在单位圆内,或者对应的逆特征方程的特征根在单位圆外。
根据时间序列的一般特性,方程的解不太可能落在单位元外。因为如果在单位圆外,意味着历史数据的影响随着时间的增加而变大。现实中基本不会有这样的情况。因此,不在圆上,就在圆内,只需要检验是否落在单位圆上即可,这就是单位根检验。
落在单位圆上,是单位根,序列不平稳(H0);否则序列平稳。单位根检验常用Augmented Dickey-Fuller test来做,本例也是用这个方法。另外,下函数还绘制了滑动的均值和方差。
2.原序列检验