精华内容
下载资源
问答
  • arima模型python代码
    千次阅读
    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模型)项目实战 内容包括: 资料说明:包括数据集+源代码+PDF文档说明+代码视频讲解。 资料内容包括: 1)项目背景; 2)数据收集; 3)数预处理; 4)RBF神经网络...
  • arima预测python程序

    2018-04-10 11:22:38
    资源为python版的arima模型代码,后面也会上传代码中使用的数据集
  • 数学建模之: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:41
    from __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)
    

    展开全文
  • import 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:11
    ARIMA:自回归平均移动模型的MATLAB代码函数实现,可以直接输入参数进行运行。希望能给你带来一些帮助,但我最近下载资源积分不够,收取一些积分希望谅解,代码出什么问题,告诉我,我帮你调。
  •  ARIMA模型:(英语:Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),是时间序列预测分析方法之一。AR是“自回归”,p为自回归...
  • arima模型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:56
    ARIMA模型全称为自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA),是由博克思(Box)和詹金斯(Jenkins)于70年代初提出一著名时间序列(Time-series Approach)预测方法 [1] ,所以...
  • 使用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_...
  • 废话少说,先上代码: # 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....
  • 1、模型识别+ 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 代码编辑器:jupyter notebook 适合想了解ARIMA模型的大致流程以及代码实现的朋友
  • arima python

    2019-03-23 21:53:25
    ARIMA模型(英语:AutoregressiveIntegratedMovingAverage model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),时间序列预测分析方法之一。ARIMA(p,d,q)中,AR是"自回归",...
  • 继专栏上期介绍使用N阶差分项假设检验和Python识别时间序列形态,本期介绍使用ARIMA(整合差分移动自回归模型)和Python建立时间序列模型的方法,以及该方法在批量时间序列建模过程中会遇到的问题。 对于时间序列建模...
  • R语言使用ARIMA模型预测股票收益

    千次阅读 2021-01-30 07:50:40
    在这篇文章中,我们将介绍流行的ARIMA预测模型,以预测股票的收益,并演示使用R编程的ARIMA建模的逐步过程。时间序列中的预测模型是什么?预测涉及使用其历史数据点预测变量的值,或者还可以涉及在给定另一个变量的...
  • python-arima模型statsmodels库实现-有数据集 最近,帮同学做一些任务,碰到了需要用到arima模型,我就把自己的实现代码给大家学习一下,当然也有数据集,可以帮助大家测试代码,有问题的话,可以咨询我 数据集,我...
  • 经济数据预测| Python实现ARIMA模型股票趋势预测 目录经济数据预测| Python实现ARIMA模型股票趋势预测基本介绍数据描述程序设计参考资料 基本介绍 随着人们生活水平的提高,人们的投资方式也在发生着巨大的变化,...
  • Python时间序列分析--ARIMA模型实战案例

    万次阅读 多人点赞 2020-12-22 10:09:46
    本文将介绍使用Python来完成时间序列分析ARIMA模型的完整步骤与流程 时间序列分析概念 **《时间序列分析》**是统计学中的一个非常重要的分支,是以概率论与数理统计为基础、计算机应用为技术支撑,迅速发展起来的...
  • 说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解...目前对非平稳时间序列分析应用最多的模型就是ARIMA模型,本项目也是通过Python程序来进行数据探索性分析、数据预处...
  • 这篇文章主要讲述如何使用python实现时间序列ARIMA预测算法 一、代码 代码如下(示例): #跟着视频学习的代码,记录一下。 import numpy as np import pandas as pd import matplotlib.pyplot as plt import ...
  • 时间序列分析ARIMA及其Python实现

    千次阅读 2022-01-02 19:16:17
    3 ARMIA模型的建立与Python实现 ARIMA模型的建立主要可分为三部分,即预处理,模型拟合和预测。 预处理 3.1 获取时间序列 数据集为风速序列,我们取其中1000个测量值作为原始序列。 """原始序列检验""" sale=pd....
  • ARIMA模型应用示例
  • 利用Python,使用Arima模型对时间序列进行建模预测,结果中包含原始数据、建模全部代码以及预测结果可视化。
  • [Python][pmdarima] 季节性ARIMA模型学习

    千次阅读 多人点赞 2020-08-16 12:48:32
    前段时间参与了一个快消行业需求预测的项目。其中,用到了移动平均法、ARIMA、Xgboost等方法进行预测,现在打算总结一下ARIMA。 因为项目的销售数据属于私密数据,这里用网上找的一份案例数据用于展示。
  • ARIMA--基于python实现的代码

    万次阅读 2018-03-27 16:13:00
    from statsmodels.tsa.arima_model import ARIMA #ARIMA模型 (p,d,q) #p--代表预测模型中采用的时序数据本身的滞后数(lags) ,也叫做AR/Auto-Regressive项 #d--代表时序数据需要进行几阶差分化,才是稳定的,也叫...
  • ARIMA差分自回归模型python代码

    千次阅读 2018-04-17 11:34:28
    1.差分自回归模型的基本思想:将预测对象随时间推移而形成的数据序列视为一个随机序列,用一定的数学模型来近似描述这个序列。这个模型一旦被识别后就可以从时间序列...3.代码: #!/usr/bin/python import nump...
  • ARIMA模型

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,615
精华内容 646
关键字:

arima模型python代码