-
2022-01-24 17:27:55
# pip install pmdarima from pmdarima.arima import auto_arima import pandas as pd #1.然后,输入数据,可根据实际情况读取数据文件 data=pd.DataFrame({'gdp':[1.21,1.34,1.47,1.66,1.96,2.29,2.75,3.55,4.59,5.1,6.09,7.55,8.53,9.57,10.44,11.02,11.14,12.14,13.61], 'year':[2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018]}) data=data.set_index('year') print("查看数据data:",data) #2.对数据进行分割,按照7:3的比例分割训练集和测试集 train=data[:int(0.7*len(data))] print("训练集",train) test=data[int(0.7*len(data)):] print("测试集",test) #3.绘图查看训练集合测试集 import matplotlib.pyplot as plt train.plot() plt.title('train') test.plot() plt.title('test') plt.show() # 使用前7成数据创建模型,对训练集数据进行模型训练。 model=auto_arima(train,trace=True,error_action="ignore",suppress_warnings=True) model.fit(train) # 代码中trace表示是否显示尝试过的模型,这些选择TRUE,可以看到auto_arima的自动定阶过程。 # 结果中根据自动比较,找到AIC最小时对应的ARIMA(p,d,q)参数值,这里得到的结果是ARIMA(2,2,1)。如图所示 # 5.利用刚才建立的ARIMA(2,2,1)模型,对测试集数据进行预测。 gdp_pre=model.predict(n_periods=len(test)) gdp_pre=pd.DataFrame(gdp_pre,index=test.index,columns=["Prediction"]) print("forecast:",gdp_pre) #绘制拟合曲线 plt.plot(train,label="模型数据") plt.plot(test,label="测试数据") plt.plot(gdp_pre,label="预测数据") plt.legend() plt.show() # 从拟合图可以看出,Arima模型对短期的预测能力较好,但是在较远的时期则具有一定偏差。 # 6.评价模型,计算均方根误差。 from math import sqrt from sklearn.metrics import mean_squared_error rms=sqrt(mean_squared_error(test,gdp_pre)) print("均方根误差rms:",rms) # 根据结果可知,本次建模的均方根误差为3
更多相关内容 -
基于Python实现时间序列分析建模(ARIMA模型)项目实战
2021-10-31 22:56:50【项目实战】基于Python实现时间序列分析建模(ARIMA模型)项目实战 内容包括: 资料说明:包括数据集+源代码+PDF文档说明+代码视频讲解。 资料内容包括: 1)项目背景; 2)数据收集; 3)数预处理; 4)RBF神经网络... -
arima预测python程序
2018-04-10 11:22:38资源为python版的arima模型代码,后面也会上传代码中使用的数据集 -
数学建模之:ARIMA时间预测模型Python代码
2022-04-25 23:20:26数学建模之:ARIMA时间预测模型Python代码import pandas # 读取数据,指定日期为索引列 data = pandas.read_csv( 'D:\\DATA\\pycase\\number2\\9.3\\Data.csv' , index_col='日期' ) # 绘图过程中 import matplotlib.pyplot as plt # 用来正常显示中文标签 plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示负号 plt.rcParams['axes.unicode_minus'] = False # 查看趋势图 data.plot() #有增长趋势,不平稳 # 附加:查看自相关系数合片自相关系数(查分之后),可以用于平稳性的检测,也可用于定阶系数预估 #自相关图() from statsmodels.graphics.tsaplots import plot_acf plot_acf(data).show() #自相关图既不是拖尾也不是截尾。以上的图的自相关是一个三角对称的形式,这种趋势是单调趋势的典型图形,说明这个序列不是平稳序列 # 1 平稳性检测 from statsmodels.tsa.stattools import adfuller as ADF def tagADF(t): result = pandas.DataFrame(index=[ "Test Statistic Value", "p-value", "Lags Used", "Number of Observations Used", "Critical Value(1%)", "Critical Value(5%)", "Critical Value(10%)" ], columns=['销量'] ); result['销量']['Test Statistic Value'] = t[0] result['销量']['p-value'] = t[1] result['销量']['Lags Used'] = t[2] result['销量']['Number of Observations Used'] = t[3] result['销量']['Critical Value(1%)'] = t[4]['1%'] result['销量']['Critical Value(5%)'] = t[4]['5%'] result['销量']['Critical Value(10%)'] = t[4]['10%'] return result; print('原始序列的ADF检验结果为:',tagADF(ADF(data[u'销量']))) # 添加标签后展现 # 平稳判断:得到统计量大于三个置信度(1%,5%,10%)临界统计值,p值显著大于0.05,该序列为非平稳序列。 # 备注:得到的统计量显著小于3个置信度(1%,5%,10%)的临界统计值时,为平稳 此时p值接近于0 此处不为0,尝试增加数据量,原数据太少 # 2 进行数据差分,一般一阶差分就可以 D_data = data.diff(1).dropna() D_data.columns = [u'销量差分'] #差分图趋势查看 D_data.plot() plt.show() # 附加:查看自相关系数合片自相关系数(查分之后),可以用于平稳性的检测,也可用于定阶系数预估 #自相关图 plot_acf(D_data).show() plt.show() #偏自相关图 from statsmodels.graphics.tsaplots import plot_pacf plot_pacf(D_data).show() # 3 平稳性检测 print(u'差分序列的ADF检验结果为:', tagADF(ADF(D_data[u'销量差分']))) # 解释:Test Statistic Value值小于两个水平值,p值显著小于0.05,一阶差分后序列为平稳序列。 # 4 白噪声检验 from statsmodels.stats.diagnostic import acorr_ljungbox #返回统计量和p值 print(u'差分序列的白噪声检验结果为:', acorr_ljungbox(D_data, lags=1)) # 分别为stat值(统计量)和P值 # P值小于0.05,所以一阶差分后的序列为平稳非白噪声序列。 # 5 p,q定阶 from statsmodels.tsa.arima_model import ARIMA #一般阶数不超过length/10 pmax = int(len(D_data)/10) #一般阶数不超过length/10 qmax = int(len(D_data)/10) #bic矩阵 bic_matrix = [] for p in range(pmax+1): tmp = [] for q in range(qmax+1): #存在部分报错,所以用try来跳过报错。 try: tmp.append(ARIMA(data, (p,1,q)).fit().bic) except: tmp.append(None) bic_matrix.append(tmp) #从中可以找出最小值 bic_matrix = pandas.DataFrame(bic_matrix) #先用stack展平,然后用idxmin找出最小值位置。 p,q = bic_matrix.stack().idxmin() print(u'BIC最小的p值和q值为:%s、%s' %(p,q)) # 取BIC信息量达到最小的模型阶数,结果p为0,q为1,定阶完成。 # 6 建立模型和预测 model = ARIMA(data, (p,1,q)).fit() #给出一份模型报告 model.summary2() #作为期5天的预测,返回预测结果、标准误差、置信区间。 model.forecast(5)
-
ARIMA模型的Python实现
2022-02-18 17:25:41from __future__ import print_function import pandas as pd import matplotlib.pyplot as plt ...ARIMA模型Python实现 ARIMA模型基本假设: 1.数据平稳性 2.白噪声同方差 3.数据无周期性 参考文献: https:.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.html https://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代码
2021-07-21 17:23:24import pandas # 读取数据,指定日期为索引... # 6 建立模型和预测 model = ARIMA(data, (p,1,q)).fit() #给出一份模型报告 model.summary2() #作为期5天的预测,返回预测结果、标准误差、置信区间。 model.forecast(5)import pandas # 读取数据,指定日期为索引列 data = pandas.read_csv( 'D:\\DATA\\pycase\\number2\\9.3\\Data.csv' , index_col='日期' ) # 绘图过程中 import matplotlib.pyplot as plt # 用来正常显示中文标签 plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示负号 plt.rcParams['axes.unicode_minus'] = False # 查看趋势图 data.plot() #有增长趋势,不平稳 # 附加:查看自相关系数合片自相关系数(查分之后),可以用于平稳性的检测,也可用于定阶系数预估 #自相关图() from statsmodels.graphics.tsaplots import plot_acf plot_acf(data).show() #自相关图既不是拖尾也不是截尾。以上的图的自相关是一个三角对称的形式,这种趋势是单调趋势的典型图形,说明这个序列不是平稳序列 # 1 平稳性检测 from statsmodels.tsa.stattools import adfuller as ADF def tagADF(t): result = pandas.DataFrame(index=[ "Test Statistic Value", "p-value", "Lags Used", "Number of Observations Used", "Critical Value(1%)", "Critical Value(5%)", "Critical Value(10%)" ], columns=['销量'] ); result['销量']['Test Statistic Value'] = t[0] result['销量']['p-value'] = t[1] result['销量']['Lags Used'] = t[2] result['销量']['Number of Observations Used'] = t[3] result['销量']['Critical Value(1%)'] = t[4]['1%'] result['销量']['Critical Value(5%)'] = t[4]['5%'] result['销量']['Critical Value(10%)'] = t[4]['10%'] return result; print('原始序列的ADF检验结果为:',tagADF(ADF(data[u'销量']))) # 添加标签后展现 # 平稳判断:得到统计量大于三个置信度(1%,5%,10%)临界统计值,p值显著大于0.05,该序列为非平稳序列。 # 备注:得到的统计量显著小于3个置信度(1%,5%,10%)的临界统计值时,为平稳 此时p值接近于0 此处不为0,尝试增加数据量,原数据太少 # 2 进行数据差分,一般一阶差分就可以 D_data = data.diff(1).dropna() D_data.columns = [u'销量差分'] #差分图趋势查看 D_data.plot() plt.show() # 附加:查看自相关系数合片自相关系数(查分之后),可以用于平稳性的检测,也可用于定阶系数预估 #自相关图 plot_acf(D_data).show() plt.show() #偏自相关图 from statsmodels.graphics.tsaplots import plot_pacf plot_pacf(D_data).show() # 3 平稳性检测 print(u'差分序列的ADF检验结果为:', tagADF(ADF(D_data[u'销量差分']))) # 解释:Test Statistic Value值小于两个水平值,p值显著小于0.05,一阶差分后序列为平稳序列。 # 4 白噪声检验 from statsmodels.stats.diagnostic import acorr_ljungbox #返回统计量和p值 print(u'差分序列的白噪声检验结果为:', acorr_ljungbox(D_data, lags=1)) # 分别为stat值(统计量)和P值 # P值小于0.05,所以一阶差分后的序列为平稳非白噪声序列。 # 5 p,q定阶 from statsmodels.tsa.arima_model import ARIMA #一般阶数不超过length/10 pmax = int(len(D_data)/10) #一般阶数不超过length/10 qmax = int(len(D_data)/10) #bic矩阵 bic_matrix = [] for p in range(pmax+1): tmp = [] for q in range(qmax+1): #存在部分报错,所以用try来跳过报错。 try: tmp.append(ARIMA(data, (p,1,q)).fit().bic) except: tmp.append(None) bic_matrix.append(tmp) #从中可以找出最小值 bic_matrix = pandas.DataFrame(bic_matrix) #先用stack展平,然后用idxmin找出最小值位置。 p,q = bic_matrix.stack().idxmin() print(u'BIC最小的p值和q值为:%s、%s' %(p,q)) # 取BIC信息量达到最小的模型阶数,结果p为0,q为1,定阶完成。 # 6 建立模型和预测 model = ARIMA(data, (p,1,q)).fit() #给出一份模型报告 model.summary2() #作为期5天的预测,返回预测结果、标准误差、置信区间。 model.forecast(5)
-
ARIMA_MATLAB代码
2015-10-19 22:41:11ARIMA:自回归平均移动模型的MATLAB代码函数实现,可以直接输入参数进行运行。希望能给你带来一些帮助,但我最近下载资源积分不够,收取一些积分希望谅解,代码出什么问题,告诉我,我帮你调。 -
ARIMA模型 – [SPSS & Python]
2021-01-20 02:18:02ARIMA模型:(英语:Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),是时间序列预测分析方法之一。AR是“自回归”,p为自回归... -
arima模型python_Python中的Arima模型进行温度预测
2020-08-31 13:55:48arima模型pythonTime Series forecasting is one of the most in-demand techniques of data science, be it in stock trading, predicting business sales or weather forecasting. It is clearly a very handy ... -
arima 模型 源代码
2018-11-24 13:11:56ARIMA模型全称为自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA),是由博克思(Box)和詹金斯(Jenkins)于70年代初提出一著名时间序列(Time-series Approach)预测方法 [1] ,所以... -
ARIMA模型时间序列数据分析(附python代码)
2022-06-27 16:55:08使用ARIMA模型进行时间序列数据分析 编程语言:python 代码编辑器:jupyter notebook 适合想了解ARIMA模型的大致流程以及代码实现的朋友 -
ARIMA模型简介以及Python示例
2018-12-21 10:56:02考虑季节周期的影响,需要在ARIMA模型中引入季节差分,例如下文示例中,当前11月的客流量不仅与10月相关,还与去年的12月相关。因此我们需要考虑两个相关性,即周期内相关性( Z t , Z t − 1 , . . . , Z t − p Z_... -
python简单实现一个ARIMA模型(模型构建、绘图、预测结果、评估)
2021-02-09 17:45:44废话少说,先上代码: # ACF2 plot_acf(diff1) # PACF plot_pacf(diff1) # MODEL model = sm.tsa.ARIMA(dta, order=(4, 1, 2)) results = model.fit(disp=0) print('The detail of the model:') print(results.... -
python时间序列预测(ARIMA模型案例代码)
2020-11-23 05:24:511、模型识别+ C0 `1 u- t. y2 G2 x1 p01 主要的模型$ [/ _( }7 L9 P" j6 {$ b4 aAR(P)模型(Autoregressive Model)0 l. \8 ?. Y. Y& `1 I8 _' l! W" J# K( Z+ R1 Z 自回归模型描述的是当前值与历史值之间的关系l2... -
ARIMA模型时间序列数据分析python代码
2022-06-27 17:04:17使用ARIMA模型进行时间序列数据分析 编程语言:python 代码编辑器:jupyter notebook 适合想了解ARIMA模型的大致流程以及代码实现的朋友 -
arima python
2019-03-23 21:53:25ARIMA模型(英语:AutoregressiveIntegratedMovingAverage model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),时间序列预测分析方法之一。ARIMA(p,d,q)中,AR是"自回归",... -
使用ARIMA和Python建立时间序列模型及其问题
2021-12-02 14:53:06继专栏上期介绍使用N阶差分项假设检验和Python识别时间序列形态,本期介绍使用ARIMA(整合差分移动自回归模型)和Python建立时间序列模型的方法,以及该方法在批量时间序列建模过程中会遇到的问题。 对于时间序列建模... -
R语言使用ARIMA模型预测股票收益
2021-01-30 07:50:40在这篇文章中,我们将介绍流行的ARIMA预测模型,以预测股票的收益,并演示使用R编程的ARIMA建模的逐步过程。时间序列中的预测模型是什么?预测涉及使用其历史数据点预测变量的值,或者还可以涉及在给定另一个变量的... -
python-arima模型statsmodels库实现-有数据集
2022-04-24 13:44:51python-arima模型statsmodels库实现-有数据集 最近,帮同学做一些任务,碰到了需要用到arima模型,我就把自己的实现代码给大家学习一下,当然也有数据集,可以帮助大家测试代码,有问题的话,可以咨询我 数据集,我... -
经济数据预测 | Python实现ARIMA模型股票趋势预测
2022-04-28 20:01:43经济数据预测| Python实现ARIMA模型股票趋势预测 目录经济数据预测| Python实现ARIMA模型股票趋势预测基本介绍数据描述程序设计参考资料 基本介绍 随着人们生活水平的提高,人们的投资方式也在发生着巨大的变化,... -
Python时间序列分析--ARIMA模型实战案例
2020-12-22 10:09:46本文将介绍使用Python来完成时间序列分析ARIMA模型的完整步骤与流程 时间序列分析概念 **《时间序列分析》**是统计学中的一个非常重要的分支,是以概率论与数理统计为基础、计算机应用为技术支撑,迅速发展起来的... -
【项目实战】基于Python实现时间序列分析建模(ARIMA模型)项目实战
2021-10-31 22:58:24说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解...目前对非平稳时间序列分析应用最多的模型就是ARIMA模型,本项目也是通过Python程序来进行数据探索性分析、数据预处... -
python学习日志3--ARIMA时间序列模型预测
2022-03-16 19:05:37这篇文章主要讲述如何使用python实现时间序列ARIMA预测算法 一、代码 代码如下(示例): #跟着视频学习的代码,记录一下。 import numpy as np import pandas as pd import matplotlib.pyplot as plt import ... -
时间序列分析ARIMA及其Python实现
2022-01-02 19:16:173 ARMIA模型的建立与Python实现 ARIMA模型的建立主要可分为三部分,即预处理,模型拟合和预测。 预处理 3.1 获取时间序列 数据集为风速序列,我们取其中1000个测量值作为原始序列。 """原始序列检验""" sale=pd.... -
【数据挖掘】使用ARIMA模型预测股票的收盘价(python)
2022-06-17 15:12:09ARIMA模型应用示例 -
作品展示_python作品展示_arima_python、时间序列预测_python预测_
2021-10-02 17:10:03利用Python,使用Arima模型对时间序列进行建模预测,结果中包含原始数据、建模全部代码以及预测结果可视化。 -
[Python][pmdarima] 季节性ARIMA模型学习
2020-08-16 12:48:32前段时间参与了一个快消行业需求预测的项目。其中,用到了移动平均法、ARIMA、Xgboost等方法进行预测,现在打算总结一下ARIMA。 因为项目的销售数据属于私密数据,这里用网上找的一份案例数据用于展示。 -
ARIMA--基于python实现的代码
2018-03-27 16:13:00from statsmodels.tsa.arima_model import ARIMA #ARIMA模型 (p,d,q) #p--代表预测模型中采用的时序数据本身的滞后数(lags) ,也叫做AR/Auto-Regressive项 #d--代表时序数据需要进行几阶差分化,才是稳定的,也叫... -
ARIMA差分自回归模型python代码
2018-04-17 11:34:281.差分自回归模型的基本思想:将预测对象随时间推移而形成的数据序列视为一个随机序列,用一定的数学模型来近似描述这个序列。这个模型一旦被识别后就可以从时间序列...3.代码: #!/usr/bin/python import nump... -
Python实现时间序列中的ARIMA模型(学习笔记)
2020-07-27 09:42:33ARIMA模型
收藏数
1,615
精华内容
646