引入数据包
from __future__ import print_function
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.graphics.api import qqplot
from statsmodels.graphics.tsaplots import plot_acf
1.读取数据
# 参数初始化
discfile = '../data/arima_data.xls'
# 读取数据,指定日期列为指标,Pandas自动将“日期”列识别为Datetime格式
data = pd.read_excel(discfile,index_col=0)
print(data.head())
print('\n Data Types:')
print(data.dtypes)
2.绘制时间序列图
# 时序图
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
data.plot(title="某餐厅厅的销量数据图示")
plt.show()
3.自相关性判断
#自相关图
plot_acf(data).show()
由自相关图可以看出,在4阶后才落入区间内 ,并且自相关系数长期大于零,显示出很强的自相关性。
4.平稳性检验
#平稳性检测
from statsmodels.tsa.stattools import adfuller as ADF
print(u'原始序列的ADF检验结果为:', ADF(data[u'销量']))
#返回值依次为adf、pvalue、usedlag、nobs、critical values、icbest、regresults、resstore
原始序列的ADF检验结果为: (1.8137710150945272, 0.9983759421514264, 10, 26, {'10%': -2.6300945562130176, '5%': -2.981246804733728, '1%': -3.7112123008648155}, 299.46989866024177)
从返回的结果看p=0.9983>0.05,判断该序列为非平稳序列。
5.时间序列的差分d
#差分后的时序图
D_data = data.diff().dropna()
D_data.columns = [u'销量差分']
D_data.plot(title="差分后的时序图") #时序图
plt.show()