时序图、自相关图和偏相关图是判断时间序列数据是否平稳的重要依据。
本文涉及的扩展库numpy、pandas、statsmodels一般可以使用pip进行在线安装,如果安装失败,可以到http://www.lfd.uci.edu/~gohlke/pythonlibs/下载相应的whl文件进行离线安装。
另外,绘制自相关图的函数plot_acf()和绘制偏自相关图的函数plot_pacf()还有更多参数可以使用,请自行挖掘和探索。
from random import randrange
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
def generateData(startDate, endDate):
df = pd.DataFrame([300+i*30+randrange(50) for i in range(31)],\
columns=['营业额'],\
index=pd.date_range(startDate, endDate, freq='D'))
return df
# 生成测试数据,模拟某商店营业额
data = generateData('20170601', '20170701')
print(data)
# 绘制时序图
myfont = fm.FontProperties(fname=r'C:\Windows\Fonts\STKAITI.ttf')
data.plot()
plt.legend(prop=myfont)
plt.show()
# 绘制自相关图
plot_acf(data).show()
# 绘制偏自相关图
plot_pacf(data).show()
某次运行得到的随机数据为:
营业额
2017-06-01 333
2017-06-02 370
2017-06-03 392
2017-06-04 425
2017-06-05 457
2017-06-06 467
2017-06-07 488
2017-06-08 540
2017-06-09 575
2017-06-10 575
2017-06-11 635
2017-06-12 631
2017-06-13 706
2017-06-14 691
2017-06-15 728
2017-06-16 767
2017-06-17 783
2017-06-18 831
2017-06-19 846
2017-06-20 894
2017-06-21 908
2017-06-22 954
2017-06-23 971
2017-06-24 1011
2017-06-25 1051
2017-06-26 1089
2017-06-27 1120
2017-06-28 1118
2017-06-29 1143
2017-06-30 1181
2017-07-01 1240
相应的时序图为:
从时序图来看,有明显的增长趋势,原始数据属于不平稳序列。
相应的自相关图为:
从自相关图来看,呈现三角对称形式,不存在截尾或拖尾,属于单调序列的典型表现形式,原始数据属于不平稳序列。
相应的偏自相关图为:
从偏自相关图形来看,也不存在截尾或拖尾,属于不平稳序列。
对于不平稳序列而言,要获得平稳序列的方法之一就是进行差分运算,请参考。