from __future__ import print_function
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.tsa.arima_model import ARIMA"""
ARIMA模型Python实现ARIMA模型基本假设:1.数据平稳性2.白噪声同方差3.数据无周期性参考文献:https://www.cnblogs.com/junge-mike/p/9335054.htmlhttps://support.minitab.com/zh-cn/minitab/18/help-and-how-to/modeling-statistics/time-series/how-to/partial-autocorrelation/interpret-the-results/partial-autocorrelation-function-pacf/https://support.minitab.com/zh-cn/minitab/18/help-and-how-to/modeling-statistics/time-series/how-to/autocorrelation/interpret-the-results/autocorrelation-function-acf/
"""####1.载入数据
#载入为dataframe格式,data列为序列值,sdate列为日期
df = pd.read_csv(r"C:\Users\ld\Desktop\yc18\train1.csv",encoding="cp936")
dta=pd.Series(df["data"])
dta.index = pd.Index(df["sdate"])####2.差分
#对原始数据进行差分,并绘制差分后的折线图观察平稳性
fig = plt.figure(figsize=(12,8))
ax2= fig.add_subplot(111)
diffs = dta.diff(3)
diffs.plot(ax=ax2)
diffs = diffs.dropna()
plt.show()####3.ADF单位根检验
#观察差分图像判断数据平稳性的方式有一定主观性,因此进一步采用.ADF单位根检验;确定d值(差分阶数)
from statsmodels.tsa.stattools import adfuller
result = adfuller(diffs)
print(u'差分序列的ADF平稳性检验结果为:',result)####4.自相关图和偏自相关图
#在差分满足数据平稳性要求后,通过绘制相关图和偏自相关图确定最优p,q值
#判断方法见:https://mp.csdn.net/mp_blog/creation/editor/122997522
fig = plt.figure(figsize=(12,8))
ax1=fig.add_subplot(211)
fig = sm.graphics.tsa.plot_acf(diffs,lags=30,ax=ax1)
ax2 = fig.add_subplot(212)
fig = sm.graphics.tsa.plot_pacf(diffs,lags=30,ax=ax2)
plt.show()####5.对p,q进行定阶
#同样,通过偏/自相关图判断最优p,q值的方式有些主观,下面采样bic方式获取最优p,q值
pmax = int(len(diffs) / 10)    #一般阶数不超过 length /10
qmax = int(len(diffs) / 10)
bic = []
for i in range(pmax +1):item= []for j in range(qmax+1):try:item.append(int(ARIMA(diffs, (i, 1, j)).fit().bic))except:item.append(None)bic .append(item)bic = pd.DataFrame(bic )
bic .fillna(bic .max(),inplace=True)
print("bic :",bic )
p,q = bic .stack().idxmin()
print('best p = %s , q = %s' %(i,j))  ####6.白噪声检验
#对白噪声的平稳性进行检验
from statsmodels.stats.diagnostic import acorr_ljungbox
print(u'白噪声检验:', acorr_ljungbox( diffs, lags=1))####7.周期性检验
#对数据的趋势性周期性进行检验
import statsmodels.api as sm
dfs = pd.read_csv(r"C:\Users\ld\Desktop\yc18\train1.csv",encoding="cp936")[["sdate","data"]]
dfs['sdate'] = pd.to_datetime(dfs['sdate'])
dfs = dfs.set_index(["sdate"])
#data指你自己的时序数据,model='additive'代表是加法模式,multiplicative乘法模型
#extrapolate_trend='freq'表示trend 、resid频率会从最近点开始,并且会对最近点的缺失值进行填充
#更多参数设置请参考官方文档:https://www.statsmodels.org/stable/generated/statsmodels.tsa.seasonal.seasonal_decompose.html
decomposition = sm.tsa.seasonal_decompose(dfs, model='additive', extrapolate_trend='freq')
plt.rc('figure',figsize=(12,8))
fig = decomposition.plot()
plt.show()####8.拟合ARIMA模型
#在确保三个基本假设都满足后,即可开始建模,其中ARIMA的三个参数(p,d,q)选用步骤3和5的最优结果
model = ARIMA(diffs, (p,0,q)).fit()
model.summary2()####9.预测
#forecast()中填入预测期数,开始预测
pre = model.forecast(1)[0]
print("pre:",pre)

ARIMA模型的Python实现相关推荐

  1. python时间序列分析航空旅人_时间序列分析-ARIMA模型(python)

    时间序列概念:在生产和科学研究中,对某一个或者一组变量 进行观察测量,将在一系列时刻 所得到的离散数字组成的序列集合,称之为时间序列.时间序列分析是根据系统观察得到的时间序列数据,通过曲线拟合和参数估 ...

  2. 一文搞懂时间序列预测模型(2):ARIMA模型的理论与实践

    本文通过一段时间的长江流量数据集来实战演示ARIMA模型的理论.建模及调参选择过程,其中包括数据准备.随机性.稳定性检验.本文旨在通过实践的操作过程,完成ARIMA模型的分享,相信大家也会通过此文而有 ...

  3. python画不出来图是什么原因-完美解决ARIMA模型中plot_acf画不出图的问题

    问题描述:在画时间序列ACF时,调用 from statsmodels.graphics.tsaplots import plot_acf, plot_pacf plot_acf(data, lags ...

  4. python arima模型_Python时间序列处理之ARIMA模型的使用讲解

    ARIMA模型 ARIMA模型的全称是自回归移动平均模型,是用来预测时间序列的一种常用的统计模型,一般记作ARIMA(p,d,q). ARIMA的适应情况 ARIMA模型相对来说比较简单易用.在应用A ...

  5. python交通流预测代码_使用ARIMA模型进行的短时交通流预测和结果分析

    首先要讲的是,在短时交通流预测领域,ARIMA模型是一种相当粗糙的基于时间序列的预测方法,相应地,这种预测方法的准确性也不高.同时,ARIMA方法也不在我的研究范围内,所以本次实验就直接使用网络上现成 ...

  6. Python、MATLAB股票投资:ARIMA模型最优的选股、投资组合方案与预测

    全文链接:http://tecdat.cn/?p=31651 我们基于当前统计的股票数据为客户选择最优的选股方案和投资组合方案,以及预测股票价格未来一段时间的走向趋势以及波动程度,具有很大的实用价值. ...

  7. Python通过ARIMA模型进行时间序列分析预测

    ARIMA模型预测 时间序列分析预测就是在已有的和时间有关的数据序列的基础上构建其数据模型并预测其未来的数据,例如航空公司的一年内每日乘客数量.某个地区的人流量,这些数据往往具有周期性的规律.如下图所 ...

  8. python用ARIMA模型预测CO2浓度时间序列实现

    全文下载链接:http://tecdat.cn/?p=20424 时间序列为预测未来数据提供了方法.根据先前的值,时间序列可用于预测经济,天气的趋势.时间序列数据的特定属性意味着通常需要专门的统计方法 ...

  9. 经济数据预测 | Python实现ARIMA模型股票趋势预测

    经济数据预测 | Python实现ARIMA模型股票趋势预测 目录 经济数据预测 | Python实现ARIMA模型股票趋势预测 基本介绍 数据描述 程序设计 参考资料 基本介绍 随着人们生活水平的提 ...

最新文章

  1. 三、Bean的初始化
  2. Kotlin极简教程
  3. HappyAA服务器部署笔记1(nginx+tomcat的安装与配置)
  4. Python 进阶——从 list 到 NumPy 的多维数组
  5. TCP / UDP测试工具——tcpudptest使用总结
  6. 使用matlab计算 洛伦兹方程 的李雅普诺夫指数
  7. OpenCV的车道线检测
  8. 数字绘画技术,从数位板到数位屏
  9. Win10(11)下Qt6.2编译Qtxlsx库
  10. 冯·诺依曼,天才中的天才
  11. OpenGL ES FBO
  12. 白嫖画师原作训练Stable Diffusion引正主不满:未经同意,说用就用?
  13. 分析器错误信息 未能加载类型 命名空间 类 ---小结
  14. matlab里怎么计算期望,§7.4.2 利用MATLAB计算随机变量的期望和方差.pdf
  15. 感染神经网络模型的病毒 AI malware EvilModel: Hiding Malware Inside of Neural Network Models
  16. 本地idea 调试Hadoop的mr任务(Windows环境)以及对应安装包的下载
  17. 数据库bigint转为JAVA中的String
  18. 工作八年然是个二流的程序员
  19. 结婚五年后( 嗯~ 这个 我确实看哭了...)
  20. Netlogo笔记07:蚁群算法实现TSP问题可视化

热门文章

  1. Git 多仓库管理及代码同步
  2. 浅谈H5音频处理(更多谈谈录音方向的内容)
  3. BZOJ1018: [SHOI2008]堵塞的交通traffic
  4. python实验收获与反思 100字_实验心得体会及收获
  5. 我们改如何定义零一科技节来临时的深圳?
  6. 2021 OWASP TOP 10 漏洞指南
  7. 科普篇|法治宣传线上答题活动小程序界面功能全介绍
  8. 2017武汉国际绿色建筑建材博览会 (武汉建博会)会刊(参展商名录)
  9. 数学 | 你不了解的一元二次方程求解解法
  10. 技术沙龙系列之:Scala method(方法) 和 functio(函数) 的区别