以ARIMA模型为例介绍时间序列算法在python中是如何实现的,一下是应用Python语言建模步骤:

–– coding: utf-8 ––

“””

Created on Mon Apr 2 16:45:36 2018

@author: houy

“”“

arima模型对时间序列的要求是平稳型

import pandas as pd

参数初始化7ku9

discfile = ‘arima_data.xlsx’

读取数据,制定日期列为指标,Pandas自动将“日期”列识别为Datatime格式

data = pd.read_excel(discfile,index_col = 0)

print(data.head())

print(‘\n Data Types:’)

print(data.dtypes)

时序图

import matplotlib.pyplot as plt

plt.rcParams[‘font.sans-serif’] = [‘SimHei’] #用来正常显示中文标签

plt.rcParams[‘axes.unicode_minus’] = False #用来正常显示负号

data.plot()

plt.show()

自相关图

from statsmodels.graphics.tsaplots import plot_acf

plot_acf(data).show() #显示出很强的自相关性

平稳性检测

from statsmodels.tsa.stattools import adfuller as ADF

print(u’原始序列的ADF检验结果为:’,ADF(data[u’销量’]))

返回值依次为:adf,pvalue,usedlag,nobs,critical value,icbest,regresults,resstore

返回结果中,pvalue的值显著大于0.05.该序列为非平稳序列

##########通过时间序列的差分将非平稳的时间序列变为平稳时间序列,d次差分后平稳,使用ARIMA(p,d,q)模型

D_data = data.diff().dropna()

D_data.columns= [u’销量差分’]

D_data.plot() #时序图

plt.show()

plot_acf(D_data).show() #自相关图 差分后的序列迅速落入区间内,并向0靠拢,序列没有自相关性

对差分后的序列做偏自相关检验

from statsmodels.graphics.tsaplots import plot_pacf

plot_pacf(D_data).show() #偏自相关图 差分后的序列没有显示出骗子相关性

print(u’差分序列的ADF检验结果为:’,ADF(D_data[u’销量差分’])) #p值小于0.05

对差分后的序列做白噪声检验

from statsmodels.stats.diagnostic import acorr_ljungbox

print(u’差分序列的白噪声检验结果为:’,acorr_ljungbox(D_data,lags=1)) #返回统计量和p值

通过检验,p值小于0.05,该序列为白噪声序列

##########比较一阶差分后的序列和二阶差分后的序列

一阶差分

fig = plt.figure(figsize=(12,8))

ax1 = fig.add_subplot(111)

diff1 = data.diff(1)

diff1.plot(ax = ax1)

一阶差分的序列的均值和方差已基本平稳

二阶差分

fig = plt.figure(figsize = (12,8))

ax2 = fig.add_subplot(112)

diff2 = data.diff(2)

diff2.plot(ax = ax2)

可以看出二阶差分后的时间序列与一阶差分相差不大,并且二者随时间推移,序列的均值和方差保持不变,可设置差分次数d为1

##########已找到稳定的时间序列,选择合适的ARIMA模型,即确定p,q

合适的pq,第一步检验平稳序列的自相关图和偏自相关图

import statsmodels.api as sm

dta = data.diff(1)[1:]

fig = plt.figure(figsize = (12,8))

ax1 = fig.add_subplot(211)

fig1 = sm.graphics.tsa.plot_acf(dta[u’销量’],lags=10,ax=ax1)

ax2 = fig.add_subplot(212)

fig2 = sm.graphics.tsa.plot_pacf(dta[u’销量’],lags=10,ax=ax2)

从两图观察到:可有ARIMA(0,2)、ARIMA(1,0)、ARIMA(0,1)模型作为选择

q =2 的移动平均模型, p=1的自回归模型,q = 1的自回归模型

”’

使用AIC准则进行模型选择,有限考虑AIC值小的那个模型

(其中L为似然函数,k为参数数量,n为观察数)

AIC = -2 ln(L) + 2 k 中文名字:赤池信息量 akaike information criterion

BIC = -2 ln(L) + ln(n)*k 中文名字:贝叶斯信息量 bayesian information criterion

HQ = -2 ln(L) + ln(ln(n))*k hannan-quinn criterion

”’

对三个模型分别做三个统计量检验

模型

arma_mod20 = sm.tsa.ARMA(data,(2,0)).fit()

print(arma_mod20.aic,arma_mod20.bic,arma_mod20.hqic)

arma_mod01 = sm.tsa.ARMA(data,(0,1)).fit()

print(arma_mod01.aic,arma_mod01.bic,arma_mod01.hqic)

arma_mod10 = sm.tsa.ARMA(data,(1,0)).fit()

print(arma_mod10.aic,arma_mod10.bic,arma_mod10.hqic)

结果中,ARMA(0,1)的三个值均最小,是最佳模型

###########模型检验

残差QQ图

from statsmodels.graphics.api import qqplot

resid = arma_mod01.resid

fig = plt.figure(figsize=(12,8))

ax = fig.add_subplot(111)

fig = qqplot(resid,line =’q’,ax=ax,fit = True)

残差自相关检验

fig = plt.figure(figsize=(12,8))

ax1 = fig.add_subplot(211)

fig = sm.graphics.tsa.plot_pacf(arma_mod01.resid.values.squeeze(),lags = 10,ax = ax1)

ax2 = fig.add_subplot(212)

fig = sm.graphics.tsa.plot_pacf(arma_mod01.resid,lags = 10,ax = ax2)

德宾-沃森D-W检验

”’

它只使用于检验一阶自相关性。因为自相关系数ρ的值介于-1和1之间,

所以 0≤DW≤4。并且DW=O=>ρ=1   即存在正自相关性

DW=4<=>ρ=-1 即存在负自相关性

DW=2<=>ρ=0  即不存在(一阶)自相关性

因此,当DW值显著的接近于O或4时,则存在自相关性,而接近于2时,则不存在(一阶)自相关性。

”’

print(sm.stats.durbin_watson(arma_mod01.resid.values))

检验结果为1.95,说明不存在自相关性

Ljung-Box检验

import numpy as np

”’

输出有点问题,还未解决

r,q,p = sm.tsa.acf(resid.values.squeeze(), qstat=True)

datap = np.c_[range(1,36), r[1:], q, p]

table = pd.DataFrame(datap, columns=[‘lag’, “AC”, “Q”, “Prob(>Q)”])

print(table.set_index(‘lag’))

”’

###########模型预测

模型确定后,对未来9日的数据进行预测

predict_sunspots = arma_mod01.predict(‘2015-2-07’,’2015-2-15’,dynamic = True)

fig, ax = plt.subplots(figsize = (12,8))

print(predict_sunspots)

predict_sunspots[0] += data[‘2015-02-06’:][u’销量’]

data = pd.DataFrame(data)

for i in range(len(predict_sunspots)-1):

predict_sunspots[i+1] = predict_sunspots[i] + predict_sunspots[i+1]

print(predict_sunspots)

ax = data.ix[‘2015’:].plot(ax=ax)

predict_sunspots.plot(ax=ax)

plt.show()

计算营业额python_ARIMA时间序列分析-----Python实例(一周销售营业额预测)相关推荐

  1. 时间序列分析 | Python时间序列数据统计分布

    时间序列分析 | Python时间序列数据统计分布 目录 时间序列分析 | Python时间序列数据统计分布 基本介绍 分布类型 均匀分布 高斯分布 对数正态分布 泊松分布 指数分布 学生t分布 卡方 ...

  2. 时间序列分析 | Python实现Tsprial时间序列特征提取

    时间序列分析 | Python实现Tsprial时间序列特征提取 目录 时间序列分析 | Python实现Tsprial时间序列特征提取 基本介绍 程序设计 学习小结 基本介绍 tsprial,一个 ...

  3. 时间序列分析 | Python实现时间序列统计分析与建模

    时间序列分析 | Python实现时间序列统计分析与建模 目录 时间序列分析 | Python实现时间序列统计分析与建模 基本介绍 数据准备 程序设计 学习总结 参考资料 基本介绍 本文介绍时间序列P ...

  4. 时间序列分析 | Python时间序列预测理论一览

    时间序列分析 | Python时间序列预测理论一览 目录 时间序列分析 | Python时间序列预测理论一览 基本介绍 特性描述 建模方法 规则介绍 模型分类 传统时序模型 树模型 线性回归 神经网络 ...

  5. 时间序列分析 | Python实现时间序列数据分析

    时间序列分析 | Python实现时间序列数据分析 目录 时间序列分析 | Python实现时间序列数据分析 基本介绍 程序设计 总结 基本介绍 时间序列的处理是传统经济学里面的一个重要篇章,在数据科 ...

  6. 时间序列分析python课程论文_python时间序列分析

    一.什么是时间序列 时间序列简单的说就是各时间点上形成的数值序列,时间序列分析就是通过观察历史数据预测未来的值. 在这里需要强调一点的是,时间序列分析并不是关于时间的回归,它主要是研究自身的变化规律的 ...

  7. 时间序列分析应用实例(使用Eviews软件实现)

    引言 某公司的苹果来货量数据是以时间先后为顺序记录的一组数据,从计量经济学的角度来分类就是一组时间序列数据.为了提高苹果来货量预测的准确度以及预测结果的可信度,下面运用Eviews软件包(即Econo ...

  8. R 语言做时间序列分析的实例(模式识别、拟合、检验、预测)

    文章目录 一.准备工作 1.数据准备 2.基本概念 二.数据处理 1.模式识别 2.参数估计 3.诊断性检验 1 残差序列 2 Ljung-Box 检验 4.预测 一.准备工作 1.数据准备 所使用的 ...

  9. 时间序列分析-python(一、自相关系数的意义)

    最近在学习时间序列预测销量,做一些笔记. 参考: 自相关系数 根据自相关图判断AR/MA/ARMA模型 平稳时间序列 时间序列必须是平稳的才可以做后续分析,差分和log都是为了使时间序列平稳. 一个时 ...

最新文章

  1. 你真的会写二分检索吗?
  2. Skype for Business Server 2015-升级-实战公开课(免费视频)
  3. sensor曝光量和曝光行的区别_4个要点,告诉你拼多多新的产品怎么增加曝光量!...
  4. mysql 数据迁移_mysql实验--不同字符集数据库迁移步骤演示
  5. tp5 引入 没有命名空间的类库的方法(以微信支付SDK为例)
  6. pdf打印机安装程序_CAD快速出打印PDF格式文件
  7. 将一段复杂文本变成字符串的赋值语句
  8. 【华为云技术分享】华为云多元计算+AI 打造企业级智能数据湖
  9. 线上MySQL某个历史数据表的分区笔记
  10. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘s
  11. 解析Java对象的equals()和hashCode()的使用
  12. 装系统时出现获取硬盘分区失败 可能缺少硬盘驱动怎么办
  13. 爬虫-抖音无水印视频下载
  14. 八位颜色代码查询_RGB颜色代码全表
  15. 网上说的白帽子黑帽子都是什么?
  16. NumPy 学习 第三篇:矢量化和广播
  17. 个人邮箱怎么注册,商业人士用哪个邮箱,邮箱使用全攻略!
  18. Chrome | BookMarks
  19. Web.config详解+asp.net优化
  20. ExoPlayer记录学习

热门文章

  1. 喜庆新年春节 祝贺语词 艺术字体PSD分层素材
  2. UI实用素材模板|天气应用app的ui设计
  3. UI展示样机素材|让作品看起来毫无痕迹,还原场景!
  4. linux7配网卡,CentOS 7 配置网卡
  5. saas系统是什么_为什么SAAS食堂管理系统更受人们的欢迎?
  6. Virtio: An I/O virtualization framework for Linux
  7. Kafka和RocketMQ底层存储:零拷贝技术
  8. 3GPP Releases
  9. X Window Messing With The Mouse Cursor
  10. Linux select()