Python时间序列分析

本文介绍了Python中时间序列分析的过程,包括数据读取、时间序列图绘制、自相关性判断、平稳性检验、差分处理、以及ARIMA模型的p、q选择。通过对序列的差分和平稳性检测,确定一阶差分为合适次数。最终,根据自相关和偏自相关图,提出了可能的ARIMA模型选择方案。
摘要由CSDN通过智能技术生成

引入数据包 

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()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值