时间序列如何判断平稳性(时间序列的平稳性及使用差分法处理非平稳时间序列)
前面几篇文章中,我们分别讨论了pandas.date_range、pandas.DataFrame.rasample及pandas.DataFrame.rolling函数,其实这些函数可以把它归类为时间序列建模过程中的预处理函数,最终的目的都是建立时间序列模型,但是建立时间序列模型的前提是序列是平稳的,这是因为我们用时间序列做预测时,我们的随机变量的基本特性必须能在包括未来阶段的一个长时期里维持不变,否则,基于历史和现状来预测未来的思路便是错误的。所以在时间序列建模时第一步就是要将不平稳的序列平稳化。所以,这里首先对时间序列的平稳性做简单介绍,如果一个时间序列均值没有系统的变化(无趋势)、方差没有变化,且严格消除了周期性变化,那么我们称这种的时间序列为平稳性时间序列。其中,平稳性分为严平稳和弱平稳,严平稳是一种条件比较苛刻的平稳性定义,它认为只有当序列所有的统计性质都不会随着时间的推移而发生变化时,该序列才能被认为平稳.而弱平稳是使用序列的特征统计量来定义的一种平稳性.它认为序列的统计性质主要由它的低阶矩决定,所以只要保证序列低阶矩平稳(二阶),就能保证序列的主要性质近似稳定.
非平稳序列与差分法上面我们已经强调,进行时间序列建模的前提条件就是要求时间序列是平稳的,那么如果遇到非平稳的序列,我们首要的任务就是将非平稳的序列转化为平稳序列,一般来说非平稳时间序列可以分为四种:只包含长期趋势、季节变动和循环变动的时间序列和包含三种变动中两种或三种的时间序列,也就是复合型时间序列。如下图(图片来源:东山草堂君):
平稳序列及非平稳序列
而非平稳序列的平稳化也有很多方法,主要有去除趋势、差分和变换。而本篇文章,我们主要讨论差分法,所谓的差分法就是将t时刻与t-1时刻的数据做差,得到新值的过程。下面我们通过具体的例子演示差分的过程。
pandas.DataFrame.diff实现差分pandas中提供了差分的函数,函数原型为:DataFrame.diff(periods=1, axis=0),这个函数的参数只有2个,第一个表示差分阶数,第二个表示按行还是按列计算。下面直接上代码:
import pandas as pd index=pd.date_range('20190116','20190130') data=[4,8,6,5,9,1,4,5,2,4,6,7,9,13,6] ser_data=pd.Series(data,index=index) ser_data.diff(2)
差分过程
这里默认是按行做差分,如果我们想按列做差分,只需要指定axis=1即可,如下:
df = pd.DataFrame({'a': [1, 2, 3, 4, 5, 6], ... 'b': [1, 1, 2, 3, 5, 8], ... 'c': [1, 4, 9, 16, 25, 36]}) df.diff(axis=0,periods=2) df.diff(axis=1,periods=2)
按行和按列做差分
将非平稳时间序列经过差分平稳化案例通过上面的介绍,我们已经清楚了时间序列平稳性的意义及pandas差分法函数的用法,下面我们通过演示一个例子来加深理解。
st=pd.read_csv('sentiment.csv',index_col=0,parse_dates=[0]) st.plot(figsize=(12,7)) plt.legend(bbox_to_anchor=(1.25,0.5)) plt.title('sentiment') sns.despine()
原始数据
上面的图表示的是原始数据的变化频率,现在我们通过一阶差分将原始数据进行处理,然后观察变化情况,如下:
st_1=st.diff(1) st_1.plot(figsize=(12,7)) plt.legend(bbox_to_anchor=(1.25,0.5)) plt.title('sentiment') sns.despine()
一阶差分图
在一阶差分的基础上在进行差分,变为二阶差分,如下:
st_2=st_1.diff(1) st_2.plot(figsize=(12,7)) plt.legend(bbox_to_anchor=(1.25,0.5)) plt.title('sentiment') sns.despine()
二阶差分
可以看到,相比于原始数据,经过差分处理的数据已经变得相对平缓很多,这就是差分的作用。今天的内容到此为止,下篇开始讲ARIMA 差分自回归移动平均模型,喜欢的小伙伴请收藏并点击关注吧。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com