精华内容
下载资源
问答
  • 2019-11-23 22:42:14

    1. ARMA模型有用到差分吗?

    没有。ARMA是平稳序列的拟合模型,如果用差分说明原来的序列不平稳。

    2. ARIMA模型对季节成分差分如何选择周期步长?

    依据所给数据的结构,差分的周期步长就是对应同一季度的两个相邻数据的间隔。如果是季度数据,即每季度的观察值,则选择4步差分;如果是月度数据,则选择12步差分。

    3. 季节性预测方法-时间序列分解法?

    《【季节性预测法 - 时间序列分解法】利用excel进行复合型时间序列的分解预测》

    https://blog.csdn.net/weixin_40159138/article/details/90603344

    这篇文章默认是乘法模型了。

    4. X-11过程

    《王燕时间序列课本_季节效应分析与X11过程简介》

    https://wenku.baidu.com/view/9df910d33186bceb19e8bb47.html?rec_flag=default

    步骤很全,但文字描述太少。不明白为什么用周期移动平均消除趋势,我认为应该是周期移动平均消除的周期。

    补充:当序列包含周期性变动时,移动平均的项数k应与周期长度一致。这样才能在消除不规则变动的同时,也消除周期性波动,使移动平均值序列只反映长期趋势。因此,季度数据通常采用四项移动平均,月度数据通常采用十二期移动平均。

    《X11方法--时间序列季节调整》

    https://wenku.baidu.com/view/f3aea0c9da38376baf1faed1.html

    提到了序列的变动包含4个成分:趋势、周期、季节、交易日,需要剔除后三个,只保留长期趋势。但没说明季节如何提出的。分析前进行了月份调整(考虑到节假日)、异常值调整。

    《X11季节调整技术介绍》

    https://wenku.baidu.com/view/1c7a08d5195f312b3169a56f.html?sxts=1573525103506

    没有提到周期成分。

    4.1. X-11如何消除季节成分?

    趋势项是经济的结构性变化引起的长期趋势,如人口增长、技术进步。循环项是随不同时期周期性变化,反映经济的繁荣与衰退的瞬间变化。季节项是不同年份相同季节呈现的周期性变化,如气候、日历。不规则项是不规则影响、异常值等不可预测因素。

    日历效应,如季节效应、闰年、月份长度、季度长度、交易日、工作日、移动假日。其实季节成分和日历效应,都属于季节性成分,只是在此区分开了。

    季节调整:模型;滤波器(如X-11-ARIMA,X-12-ARIMA)。可以通过周期移动平均消除。

    ARIMA是在X-11基础上引入的随机模型。

    《季节调整的基本原理》https://wenku.baidu.com/view/ea2401609b6648d7c1c746fd.html

    非常详细。提到各项独立用加法模型,各项关联用乘法。

    5. 季节与周期的区别与联系?

    季节成分可以理解为周期成分,只是它的周期已知且是固定长度的,如4或12。而周期成分是指循环成分,循环周期可长可短,是不固定周期的波动。

    6. 为什么自回归模型AR(q)的残差序列是一个0均值的纯随机序列?

    这是自回归模型定义中的限制条件决定的,残差序列是一个0均值、方差齐性、纯随机(独立同分布)的白噪声序列,且当期随机干扰(残差)与历史观察值无关。

    自回归模型(AR )https://www.cnblogs.com/super-zhang-828/p/7106970.html

    6.1. 随机游走模型是什么?

    随机游走(random walk)也称随机游动、随机漫步,是指基于过去的表现,无法预测将来的发展步骤方向。可以理解为布朗运动。随机游走模型就是 ARIMA(0,1,0) 即醉汉模型。

    初识随机游走https://www.cnblogs.com/hxsyl/p/5263114.html

    《第十章 时间序列分析》https://wenku.baidu.com/view/50f2fca976c66137ee0619a2.html

    7. GARCH模型的限制条件和假设?

    限制条件:① 无条件方差非负,所以w>0,ηi≥0,λi≥0;② 条件方差平稳,所以∑ηi+∑λi<1。

    假设:残差函数 ξt/√ht 服从正态分布。(对模型口径拟合时,可以进行检验:模型的显著性检验R^2、参数的显著性检验、残差函数的正态性检验。)

    8. AR-GARCH 模型最终得到的哪个残差序列的置信区间?

    最终是用自回归残差序列的置信区间,来表示波动信息的。

    更多相关内容
  • 本文研究乘积季节模型在我校图书借阅预测中的应用,通过对我校2007年1月到2009年12月的月度图书借阅数据来进行实证分析,采用差分方法对序列资料进行平稳化,然后进行模型定阶并估计其参数,建立了我校图书借阅的乘积...
  • 时间序列上机实验-ARIMA模型的建立(季节乘积模型)实用.pdf
  • 时间序列上机实验-ARIMA模型的建立(季节乘积模型)[归纳].pdf
  • ARIMA季节乘积模型在肠道传染病预测中的应用_张翼飞.caj )
  • 为提高煤矿对矿井涌水量预测的准确性,基于ARIMA季节乘积模型,提出一种新的矿井涌水量的预测方法,通过普通差分和季节差分保证矿井涌水量时间序列的平稳化,以模型定阶、参数估计和假设检验等过程建立合适的乘积季节...
  • 本文研究乘积季节模型在我校图书借阅预测中的应用,通过对我校2007年1月到2009年12月的月度图书借阅数据来进行实证分析,采用差分方法对序列资料进行平稳化,然后进行模型定阶并估计其参数,建立了我校图书借阅的乘积...
  • 季节性时间序列模型.pptx
  • 本文研究乘积季节模型在我国煤矿事故总数预测中的应用,通过对我国2006年1月到2010年12月煤矿事故总数数据来进行实证分析,采用差分方法对序列资料进行平稳化,然后进行模型定阶并估计其参数,建立了合适的乘积季节预测...
  • ARIMA乘积季节模型及其在月径流预测中的应用,卢艳,,本文研究了应用ARIMA乘积季节模型在月径流预测中的可行性。以1985年1月至2001年12月汀江观音桥站月流量资料建立模型,以2002年的资料作�
  • ARIMA乘积季节模型理论及其在煤炭出口量,周丽莉,,本文研究ARIMA乘积季节模型及其在煤炭出口量预测中的应用。运用SPSS软件中时间序列模块中的建模方法建立了我国煤炭出口模型。文章首
  • 人工智能-基于乘积季节模型和LSTM神经网络的铁路货运量预测研究.pdf
  • ARIMA模型季节模型

    万次阅读 多人点赞 2017-06-26 20:02:10
    ARIMA模型可以对具有季节效应的序列建模,根据季节效应提取的难易程度可以分为简单季节模型乘积季节模型

    ARIMA模型可以对具有季节效应的序列建模,根据季节效应提取的难易程度可以分为简单季节模型与乘积季节模型。

    简单季节模型

    简单季节模型是指序列中的季节效应和其效应之间是加法关系
    各种效应信息的提取都非常容易,通常简单的周期步长差分即可将序列中的季节信息提取充分,简单的低阶差分即可趋势信息提取充分,提取完季节信息和趋势信息之后的残差序列就是一个平稳序列,可以用ARMA模型拟合。
    R语言中用arima函数中的seasonal选项拟合季节模型,相关命令如下 :
    arima(x,order=,include.mean=,method=,transform.pars=,fixed=,seasonal=)

    -x:要进行模型拟合的序列命。
    -order:指定模型阶数。
    -include.mean:指定是否需要拟合常数项。
    -method:指定参数估计方法。
    -transform.pars:指定是否需要人为干预参数。
    -fixed:对疏系数模型指定疏系数的位置。
    -seasonal:指定季节模型的阶数与季节周期,该选项的命令格式为:
    seasonal = list(order=c(P,D,Q),period = pi)
    (1)加法模型:P=0,Q=0
    (2)乘法模型:P,Q不全为零

    拟合1962-1991年德国工人季度失业率序列

    f<-read.table("D:/R-TT/book4/4R/data/file19.csv",sep=",",header = T)
    x<-ts(f$unemployment_rate,start = c(1962,1),frequency = 4)
    plot(x)

    德国工人季节失业率序列时序图
    德国工人季节失业率序列时序图

    #1阶4步差分,并绘制出差分后序列的时序图
    x.dif<-diff(diff(x),4)
    plot(x.dif)

    1阶4步差分后序列时序图
    差分后序列自相关图与偏自相关图

    #绘制差分后序列自相关图和偏自相关图
    acf(x.dif)
    pacf(x.dif)

    1阶4步差分后序列自相关图
    阶4步差分后序列自相关图
    1阶4步差分后序列偏自相关图
    1阶4步差分后序列偏自相关图
    自相关系数拖尾,而偏自相关系数1阶,4阶显著非零,4阶之后截尾。综合差分与自相关信息。拟合加法模型ARIMA((1,4)(1,4),0)

    #拟合加法季节模型ARIMA((1,4),(1,4),0)
    x.fit<-arima(x,order = c(4,1,0),seasonal = list(order=c(0,1,0),period=4,transform.par=F,fixed = c(NA,0,0,NA)))
    x.fit
    Call:
    arima(x = x, order = c(4, 1, 0), seasonal = list(order = c(0, 1, 0), period = 4, 
    transform.par = F, fixed = c(NA, 0, 0, NA)))
    
    Coefficients:
             ar1     ar2     ar3      ar4
          0.4143  0.0294  0.1257  -0.3300
    s.e.  0.0879  0.0961  0.0952   0.0881
    
    sigma^2 estimated as 0.09072:  log likelihood = -25.51,  aic = 61.02
    #残差白噪声检验
    for(i in 1:2) print(Box.test(x.fit$residual,lag=6*i))
    Box-Pierce test
    
    data:  x.fit$residual
    X-squared = 0.54159, df = 6, p-value = 0.9973
    
    
        Box-Pierce test
    
    data:  x.fit$residual
    X-squared = 6.9427, df = 12, p-value = 0.8614

    做3年期预测

    > library(forecast)
    > x.fore<-forecast(x.fit,h=12)
    > x.fore
            Point Forecast    Lo 80    Hi 80      Lo 95     Hi 95
    1992 Q1       6.660195 6.274201 7.046189  6.0698679  7.250522
    1992 Q2       5.961087 5.292490 6.629683  4.9385564  6.983617
    1992 Q3       6.116229 5.202010 7.030448  4.7180513  7.514406
    1992 Q4       6.034304 4.877448 7.191161  4.2650446  7.803564
    1993 Q1       6.386049 4.840267 7.931831  4.0219788  8.750119
    1993 Q2       5.600664 3.694241 7.507088  2.6850413  8.516287
    1993 Q3       5.721381 3.496132 7.946631  2.3181560  9.124607
    1993 Q4       5.636065 3.119547 8.152583  1.7873832  9.484747
    1994 Q1       6.010340 3.090620 8.930060  1.5450137 10.475666
    1994 Q2       5.258337 1.937603 8.579071  0.1797120 10.336962
    1994 Q3       5.404481 1.707100 9.101863 -0.2501751 11.059138
    1994 Q4       5.334632 1.274994 9.394270 -0.8740483 11.543313

    绘图

    plot(x.fore)

    3年期12季度预测图
    3年期12季度预测图

    乘积季节模型

    序列的季节效应、长期趋势效应和随机波动之间存在复杂的交互影响关系,简单的ARIMA模型不足以提取其中的相关关系,这时通常需要采用乘积季节模型。
    拟合1948-1981年美国女性月度失业率序列

    #读入数据,并绘制时序图
    g<-read.table("D:/R-TT/book4/4R/data/file20.csv",sep=",",header = T)
    x<-ts(g$unemployment_rate,start = c(1948,1),frequency = 12)
    plot(x)

    美国女性月度失业率时序图
    美国女性月度失业率时序图

    #作1阶12步差分,并绘制出差分后序列的时序图
    x.dif<-diff(diff(x),12)
    plot(x.dif)

    1阶12步差分时序图
    1阶12步差分时序图

    #绘制差分后序列自相关图和偏自相关图
    acf(x.dif)
    pacf(x.dif)

    1阶12步差分自相关图
    1阶12步差分自相关图
    1阶12步差分偏自相关图
    1阶12步差分偏自相关图
    差分后序列的自相关图与偏自相关图都显示出拖尾属性,首先尝试拟合加法季节模型ARIMA(1,(1,12),1)。然后进行残差序列的白噪声检测。

    #拟合ARIMA(1,(1,12),1)模型
    x.fit<-arima(x,order = c(1,1,1),seasonal = list(order=c(0,1,0),period=12))
    for(i in 1:2) print(Box.test(x.fit$residual,lag=6*i))
    Box-Pierce test
    
    data:  x.fit$residual
    X-squared = 11.204, df = 6, p-value = 0.08228
    
    
        Box-Pierce test
    
    data:  x.fit$residual
    X-squared = 105.78, df = 12, p-value < 2.2e-16

    残差序列非白噪声,故模型拟合不正确

    自相关系数延迟24阶后,截尾。
    偏自相关系数延迟24阶后,仍拖尾。
    这时以12步为周期的ARMA(0,1)12模型提取差分后序列季节自相关信息。
    我们要拟合的乘积模型为 ARIMA(1,1,1)*(0,1,1)12

    > #拟合ARIMA(1,1,1)*ARIMA(0,1,1)12模型
    > x.fit<-arima(x,order = c(1,1,1),seasonal = list(order=c(0,1,1),period=12))
    > x.fit
    
    Call:
    arima(x = x, order = c(1, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12))
    
    Coefficients:
              ar1     ma1     sma1
          -0.7290  0.6059  -0.7918
    s.e.   0.1497  0.1728   0.0337
    
    sigma^2 estimated as 7444:  log likelihood = -2327.14,  aic = 
    4662.28

    残差序列白噪声检验

     for(i in 1:2) print(Box.test(x.fit$residual,lag=6*i))
    
        Box-Pierce test
    
    data:  x.fit$residual
    X-squared = 4.5564, df = 6, p-value = 0.6018
    
    
        Box-Pierce test
    
    data:  x.fit$residual
    X-squared = 9.6288, df = 12, p-value = 0.6485
    

    残差序列白噪声检验显示,该拟合模型显著成立。

    展开全文
  • 提出了应用ARIMA乘积季节模型对大坝位移监测数据进行分析和预报的新方法,并给出了基于开源R语言建立乘积季节模型的方法步骤和关键技术。结合某大坝径向位移监测数据进行计算分析,结果表明:ARIMA乘积季节模型能较...
  • 第一次尝试使用Python创建季节性ARIMA模型

    千次阅读 多人点赞 2019-04-25 21:26:48
    时间序列之ARIMA模型前言ARIMA模型简介Python实现ARIMA模型预测数据的获取与准备绘制1995-2002年时间序列趋势图去均值化后ADF平稳性检验以及差分绘制自相关函数以及偏相关函数图生成一个适合你的列表创建一个表格...

    前言

    时间:19/04/25,天气晴,心情愉悦。
    大学生活不知不觉已经快要结束了,我才第一次认真的开始检查、审视自己过去两年中究竟学到了些什么?仔细回想,学的东西好像还蛮多的,从我开始懵懂学习C语言后入坑编程系列学习以来,自己慢慢的喜欢上这一领域,开始用C实现一些小小的功能,例如12306抢票、一些经典的小游戏等。后续除了掌握一些基本数据库知识之外我又接触了Java这种oo语言,并且我在自己的课程设计里面独立编写了基于MINA框架的商城Shopping微信小程序,虽然写的有点烂,但是也基本实现了商城的大部分功能(对自己要求有点低)。再后来一次侥幸的机会跟着导师做了一个项目,是基于计算机视觉的智能小车导航避障的,为此,我专门去学习了在MFC框架下用opencv实现图像处理,嗯,opencv图像处理是我学了最长时间也是最系统的学习,从简单的图像形态学处理、图像去燥、图像分割到复杂颇具挑战的模式识别我都有了解过研究过,在做图像处理的过程中,我慢慢的发现自己对图像数据(数据)的各式各样处理计算颇感兴趣。那时候正值大数据的热潮,我从网上找了一些大数据的视频学习了Hadoop、Spark等,掌握了大批量数据下并行处理的方式,但是自己并不知道用什么方法去处理数据,于是,18年的下半年,我开始正式接触机器学习领域,至今学习机器学习时常也有半年的时间了,在这半年里也学习了很多公式推导也有很多算法流程,如今让我回忆一下自己曾经学的这些机器学习的东西,自己的印象其实已经没有那么深刻了,即使在学习当下对算法推导以及应用非常的熟悉,但是没有把自己学的内容整理下来,即使学过随着时间推移也差不多把大部分细节给忘记了。我挺后悔自己当初学习的时候没有做笔记,不过悔在过去、行在当下,从此刻开始记录我的学习,我相信我可以坚持记录下去。

    ARIMA模型简介

    具有如下结构的模型称为求和自回归移动平均(Autoregressive Integrated Moving Average),简记为ARIMA(p,d,q)模型:

    模型
    式中:
    模型解释
    ARIMA模型的数学原理和公式我就不一一解释了,如果有不懂的地方可以参考ARIMA模型,在本篇中我们主要探讨如何用Python对时序进行分析建模。

    Python实现ARIMA模型预测

    数据的获取与准备

    如某市1995-2003年各月的工业生产总值如下表所示,试对1995-2002年数据建模,2003年的数据留做检验模型的预测结果。
    某市1995-2003年各月的工业生产总值
    我们在获取数据时,可能会因为一些客观因素(比如一些表格编辑软件的自动将编码转换UTF-8,默认的时间格式规范不一致,例如19/04/25可能会转换成04/25/19,还有就是本身数据就存在缺失、不合理等问题)导致了数据的异常或缺失,然而在机器学习里,数据的好坏直接决定了模型结果的好坏,所以对数据的预处理必不可少。在我们这个实验数据中,数据并没有出现缺失以及不符逻辑的情况,所以我们可以直接将其作为ARIMA模型的输入数据。(如果数据出现缺失不合理等现象,可以选择性参考 https://blog.csdn.net/zhangyonggang886/article/details/80901290

    Python3:

    import csv
    data_files = csv.reader(open('data.csv','r'))
    dataSet = [] # 训练数据集
    dateSet = [] # 训练年份集
    for data in data_files:
    	if data[0] == '200301': # 将csv文件中验证数据去除
            break
        if data[0] != 'date':
            dateSet.append(data[0])
            dataSet.append(float(data[1]))
    

    绘制1995-2002年时间序列趋势图

    显示一行一行的数据是难以观察数据的趋势走向,这样不利于我们观测数据之间的相互联系,因此画出趋势图有利于数据分析。

    Python3:

    # 利用Pandas库来绘制时间序列趋势图
    import matplotlib.pyplot as plt
    import pandas as pd
    df = pd.DataFrame(dataSet,index=dateSet,columns=['real value'])
    df.plot()
    plt.show()
    

    result:
    时间序列趋势图

    去均值化后ADF平稳性检验以及差分

    ①为什么要去均值化?做数据的去均值化其实就是对数据进行标准化,在很多情况下,我们对数据本身大小并不感兴趣,我们感兴趣的是数据之间的联系,去均值化并不会影响这种联系,因为去均值化后得到的时间序列趋势和没有去均值化得到的时间序列趋势是一样的。
    Python3:

    # 对时间序列进行去均值化
    mean = sum(dataSet)/len(dataSet) # 计算均值
    dataSet_kill_mean = [data - mean for data in dataSet] # 得到去均值后的序列
    

    ②序列平稳是做ARIMA回归的前提条件,所以我们得到的序列必须是平稳的。观测上面的序列趋势图,我们可以很明显的发现数据有逐渐上升的趋势,因此我们判断该段时间序列为非平稳序列。为了得到平稳的时间序列,我们要做差分,因为差分目的是使变量序列平稳。
    Python3:

    # 进行一阶差分并绘制趋势图
    df_kill_mean = pd.DataFrame(dataSet_kill_mean,index=dateSet,columns=['kill mean value'])
    df_kill_mean_1 = dataSet_kill_mean.diff(1).dropna()
    df_kill_mean_1.plot()
    plt.show()
    

    result:
    一阶差分后的趋势图
    ③ADF检验可以让我们判断某段时间序列是否为平稳序列(具体ADF统计学原理可以选择性参考http://www.tinysoft.com.cn/TSDN/HelpDoc/display.tsl?id=12889
    Python3:

    import statsmodels.tsa.stattools as ts
    adf_summary = ts.adfuller(np.array(df_kill_mean_1).reshape(-1)) # 进行ADF检验并打印结果
    print(adf_summary)
    >>> (-3.3635866783352, 0.012264631212932628, 12, 82, {'1%': -3.512738056978279, '5%': -2.8974898650628984, '10%': -2.585948732897085}, 237.8874357065477)
    

    如何观察上面的统计结果来判断序列是否为平稳呢?

    1. 1%、5%、10%不同程度拒绝原假设的统计值和ADF Test result的比较,ADF Test result同时小于1%、5%、10%即说明非常好地拒绝该假设,本数据中,adf结果为-3.3635866783352, 大于1% level的-3.512738056978279,但小于5% level的-2.8974898650628984,如果建模对序列平稳性有相当高的要求,则认为该序列不平稳,若要求并不严格也可认为该序列是平稳序列。如果一阶差分序列不平稳,则继续做二阶差分并检验。
    2. P-value是否非常接近0。本结果中,P-value 为 0.012264631212932628 < 0.05并接近0。

    由此,通过检验观测值,我们认为上述一阶差分后得到的数据满足平稳性检验要求。(一阶差分后的序列平稳性不太好,有可能通不过白噪声检验,在这里忽略白噪声检验环节,若白噪声检验得到的P值大于0.05,那么我们就得对时间序列进行二阶差分)

    绘制自相关函数以及偏相关函数图确定参数p、q

    参数确认规则:(已知序列为一阶差分)
    ① 当偏自相关函数呈现p阶拖尾,自相关函数呈现q阶拖尾时,我们可以选用模型ARIMA(p,1,q)
    ② 当偏自相关函数呈现拖尾,自相关函数呈现q阶截尾时,我们可以选用模型MA(q)
    ③ 当偏自相关函数呈现p阶截尾,自相关函数呈现拖尾时,我们可以选用模型AR(p)
    (备注:如果想要深入了解如何通过PACF和ACF函数图确定模型以及参数,可以参考《ARMA模型的自相关函数和偏自相关函数图谱》链接:https://pan.baidu.com/s/1JqkIIh1gdHqjp9uwwGC87A 提取码:1koe (如果链接失效,联系我重新发链接)

    Python3:

    from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
    # 绘制自相关图
    plot_acf(df_kill_mean_1,lags=24).show() # 其中lags参数是指横坐标最大取值
    # 绘制偏相关图
    plot_pacf(df_kill_mean_1,lags=24).show()
    plt.show()
    

    rusult:
    在这里插入图片描述
    在这里插入图片描述
    我们观测ACF函数图和PACF函数图,我们发现并没有呈现很好的拖尾或截尾情况。出现这个情况的原因有很多种情况,我们观测函数图发现,每隔一个周期,ACF和PACF都出现“尖峰“,例如上述图每隔12个月出现一个"尖峰",由此我们可以很容易的判断,该序列可能存在季节性影响的因素(其实由开始的序列趋势图我们也可以看出序列存在季节性影响)。
    我们可以通过分解的方式将时序数据分离成不同的成分,它主要将时序数据分离为Trend(成长趋势)、seasonal(季节性趋势)、Residuals(随机成分)。然后我们分别对这三个分离的序列进行ARIMA建模得到较好的模型,最后再将模型相加便可以得到最后的ARIMA模型。

    Python3:

    from statsmodels.tsa.seasonal import seasonal_decompose
    decomposition = seasonal_decompose(df_kill_mean_1, freq=12)
    trend = decomposition.trend   # 趋势部分
    seasonal = decomposition.seasonal # 季节性部分
    residual = decomposition.resid # 残留部分
    decomposition.plot()
    

    result:
    序列分解
    这种分解建模的方式有些复杂,接下来我们采用季节性时间序列来对上述具有明显季节性的序列进行建模。

    建立季节性时间序列模型ARIMA(k,D,m)S×(p,d,q)

    我们称ARIMA(k,D,m)S×(p,d,q)为乘积季节模型,也可以写成ARIMA(p,d,q)(k,D,m)S模型,其中S为季节性周期。如果将模型中的AR因子和MA因子分别展开,可以得到类似的ARMA(kS+p,mS+q)的模型。当我们考虑用ARIMA(p,d,q)(k,D,m)S模型的时候,我们需要优化感兴趣度量的是ARIMA(p,d,q)(k,D,m)s各个参数的值。接下来,我们将使用“网格搜索”来迭代地探索参数的不同组合。 对于参数的每个组合,我们使用statsmodels模块的SARIMAX()函数拟合一个新的季节性ARIMA模型,并评估其整体质量。

    Python3:

    # 这段代码借鉴了其他博文的做法
    import itertools
    p = q = range(0, 2) # p、q一般取值不超过2
    d = range(1,2)
    pdq = list(itertools.product(p, d, q))
    seasonal_pdq = [(x[0], x[1], x[2], 12) for x in list(itertools.product(p, d, q))]
    warnings.filterwarnings("ignore") # 忽略警告信息
    for param in pdq:
        for param_seasonal in seasonal_pdq:
            try:
                mod = sm.tsa.statespace.SARIMAX(df_mean_1,
                                                order=param,
                                                seasonal_order=param_seasonal,
                                                enforce_stationarity=False,
                                                enforce_invertibility=False)
    
                results = mod.fit()
                print('ARIMA{}x{} - AIC:{}'.format(param, param_seasonal, results.aic))
            except:
                continue
    >>> 
    ARIMA(0, 1, 0)x(0, 1, 0, 12) - AIC:322.6198841487564
    ARIMA(0, 1, 0)x(0, 1, 1, 12) - AIC:270.20449054798723
    ARIMA(0, 1, 0)x(1, 1, 0, 12) - AIC:279.7073077170952
    ARIMA(0, 1, 0)x(1, 1, 1, 12) - AIC:272.20429383065317
    ARIMA(0, 1, 1)x(0, 1, 0, 12) - AIC:248.2004574618413
    ARIMA(0, 1, 1)x(0, 1, 1, 12) - AIC:209.46795258585362
    ARIMA(0, 1, 1)x(1, 1, 0, 12) - AIC:219.76010995507397
    ARIMA(0, 1, 1)x(1, 1, 1, 12) - AIC:213.63266407486356
    ARIMA(1, 1, 0)x(0, 1, 0, 12) - AIC:292.5090537220262
    ARIMA(1, 1, 0)x(0, 1, 1, 12) - AIC:250.76816771015618
    ARIMA(1, 1, 0)x(1, 1, 0, 12) - AIC:251.43830162843227
    ARIMA(1, 1, 0)x(1, 1, 1, 12) - AIC:251.1402407735711
    ARIMA(1, 1, 1)x(0, 1, 0, 12) - AIC:243.34941237032209
    ARIMA(1, 1, 1)x(0, 1, 1, 12) - AIC:206.44248559031112
    ARIMA(1, 1, 1)x(1, 1, 0, 12) - AIC:211.64269806160195
    ARIMA(1, 1, 1)x(1, 1, 1, 12) - AIC:210.80404367428187
    

    在这里,我们是通过最佳准则函数法来确定具体的参数值的,模型选择的AIC准则越小,我们就大概可以认为该模型越优。通过上述结果我们可以容易得到ARIMA(0, 1, 1)(0, 1, 1,)12模型相对最优。因此我们选择ARIMA(0, 1, 1)(0, 1, 1,)12模型作为我们预测时间序列的最佳模型。

    模型预测

    我们使用我们选取的最佳模型进行预测。

    Python3:

    import statsmodels.api as sm
    df = pd.DataFrame(dataSet,index=dateSet,columns=['real value']) # 原始时间序列
    mod = sm.tsa.statespace.SARIMAX(df,order=(0,1,1),seasonal_order=(1, 1, 1, 12),enforce_stationarity=False,enforce_invertibility=False)
    result = mod.fit()
    predict_sunspots = result.forecast(12)
    forcast = np.array(predict_sunspots[:]).reshape(-1)
    print(forcast)
    >>>
    [19.42912085 17.40614606 21.53290186 22.27891    23.06918964 23.69105707
     22.54036142 23.49219397 24.56108863 24.69965562 26.02344756 26.41517033]
    

    模型指标MAPE

    MAPE
    计算预测值和真实值得MAPE指标,得到MAPE指标值为3.14%,通过这个指标我们可以认为该模型是一个好模型。

    预测值和真实值趋势对比图

    趋势对比图

    结尾

    这是我第一次建立季节性ARIMA模型,如果中间出现错误或者有不合理的地方,还望各位海涵并指正出来,大家一起学习就是要相互纠错,只有这样大家才可以在学习上相互收益、相互进步。同时我也希望这篇文章可以给苦恼于如何用Python建立时间序列模型的朋友指明一条明路。

    展开全文
  • 运用SPSS软件和SAS软件系统中的时间序列建模方法建立了我国城乡居民储蓄存款模型,并认为用最大似然估计法(ML)对结果进行短期预测,用无约束最小二乘估计法(ULS)对结果进行中长期预测,可得到较高的预测精度.
  • 数学建模学习方法-ARIMA乘积季节模型及其在传染病发病预测中的应用
  • 基于时间序列的加法季节模型和乘法季节模型以及两者之间的比较如下: 实验数据来源与1962年到1991年德国工人季度失业率序列: 一、加法季节模型 1、首先加载所需的包: 2、导入数据,并将数据转换为季节...

    基于时间序列的加法季节模型和乘法季节模型以及两者之间的比较如下:

    实验数据来源与1962年到1991年德国工人季度失业率序列:

    一、加法季节模型

    1、首先加载所需的包:

      

    2、导入数据,并将数据转换为季节数据:

    3、得到时序图如下,发现既有季节效应又有上升趋势效应:

    4、接着我们对数据进行一阶四部差分:

    一阶四步差分时序图如下:

    从一阶四步差分时序图可以看出,我们消除了上升趋势效应以及季节效应,即为平稳序列。

    5、接着画出差分后序列相关图和偏自相关图:

     

     结果显示自相关具有拖尾性,偏自相关图在一阶和3阶之后都落入两倍的标准差之内了,综合考虑,最后拟合一个假发季节模型:ARIMA((1,4),(1,4),0))

    6、模型拟合结果及优化结果对比显示:

      结果显示ARIMA((1,4),(1,4),0))模型aic数值较小,ARIMA((1,4),(1,4),0))模型较好。

    7、运用forecast函数进行预测

     8、预测结果可视化:

    9、模型的残差序列白噪声检验:

    p值较大,说明加法季节模型很好的提取了数据信息,模型拟合效果很理想。

    二、乘法季节模型

    数据来源于1948年到1981年美国女性月度事业率序列

    1、读取数据,并将数据转换为时间序列数据2、输出时间序列时序图,发现既有周期性又有上升趋势效应:

     接着我们对数据进行一阶12步差分:

    从一阶12步差分时序图可以看出,我们消除了上升趋势效应以及周期效应,即为平稳序列。

    3、接着画出差分后序列相关图和偏自相关图:

    结果显示自相关和偏自相关都具有拖尾性。

    4、首先拟合一个加法季节模型:ARIMA(1,12),1)

     5、模型残差序列白噪声检验:

     由结果可得6阶时p值为0.08228,12阶时p值为2.2e-16,取α值为0.1时,均拒绝原假设,说明残差为非白噪声序列,说明时间序列选择加法季节效应模型不正确。

    6、接着我们选择乘积季节效应进行拟合,关键在于阶数的选择,结束的选择,我们仍选择用自相关和偏自相关图来观察:

     从短期来看,自相关在短期和偏自相关都是拖尾的,自相关认为时1阶即一个周期截尾的,偏自相关系数1阶拖尾,p取0,q取1。

    7、6期乘法季节序列模型预测:

     8、结果可视化:

     9、模型残差序列白噪声检验:

    p值较大,说明乘法季节模型很好的提取了数据信息,模型拟合效果很理想。

    展开全文
  • 利用ARIMA季节模型预测 目的:某公司业务具有明显的季节性波动,为了提前做好假日部署,需根据历史数据预测未来留存用户数量 1、数据准备 import pmdarima as pm import pandas as pd import matplotlib.pyplot as ...
  • 时间序列分析-------乘法季节模型 实验 名称 乘法季节模型 实验 内容 乘法季节模型 实验 目的 2、熟练建立乘法季节模型 乘法季节...
  • (2)模型定阶 从模型识别中我们看到仅季节差分后的序列已经适合建模,但由于增加了一阶差分后序列的趋势分量得到了比较大的改善,而模型复杂度也并未增加太多,因此也可以对一阶差分和季节差分后的序列进行建模。...
  • 用自回归求和滑动平均(ARIMA)模型将湖北省发电量数据外推,应用中位移动平均法,将其分解成趋势项和周期项,提出了乘积模型.预测结果显示此方法简单有效,对于季节时间序列的辩识、预测有实用价值.
  • 时间序列分析之holtwinters和ARIMA

    千次阅读 2018-07-18 09:47:20
    指数平滑法有几种不同形式:一次指数平滑法针对没有趋势和季节性的序列,二次指数平滑法针对有趋势但没有季节性的序列,三次指数平滑法针对有趋势也有季节性的序列。“Holt-Winters”有时特指三次指数平滑法。 所有...
  • ARIMA模型概述

    千次阅读 2019-12-01 02:17:33
    ARIMA模型(Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),时间序列预测分析方法之一。ARIMA(p,d,q)中,AR是"自回归",p为...
  • 时间序列分析大致可以分成三部分,分别是描述过去,分析规律和预测未来,本次讲将主要介绍时间序列分析中常用的三种模型季节分解、指数平滑方法和ARIMA模型,并将结合SPSS软件对时间序列数据进行建模。...
  • 由于温室效应,气温加速上升,我国西部干旱一半干旱盐湖区盐湖水位出现...本文用Winters线性和季节性指数平滑法、ARIMA乘积季节模型两种时间序列分析方法,根据西藏扎布耶盐湖1991年1月-2003年12月水位变化的时间序列数据,
  • 主要运用时间序列分析的方法及EVicws与SPSS统计软件对时间序列建立乘积季节模型,并搜集了中国1993年1月~2000年12月的民航货运量数据,对其进行分析。根据Box-Jenkins的建模方法,建立了中国民航货运量的模型,并对...
  • 时间序列分析:指数平滑和ARIMA模型

    千次阅读 多人点赞 2020-08-26 01:35:48
    阻尼趋势模型模型五:简单季节模型模型六:温特加法模型模型七:温特乘法模型三、一元时间序列分析的模型1、基本的理解2、一元时间序列分析的模型:AR( P)模型3、一元时间序列分析的模型:MA(Q)模型4、ARMA(p.q)...
  • 在之前的专栏中我们用ARIMA的方法做了时间序列的趋势性预测。 不过我们经常还会遇到一种情况,即某些时间序列中存在明显的周期性变化,这种周期是...一种适用于描述这类序列的模型称作季节时间序列模型(SARIMA, se...
  • S:季节变动 C:循环变动 I:不规则变动 乘法模型假定四个成分对现象发展的影响是相互的。长期趋势成分取与时间序列原始指标值Y相同计量单位的绝对量,以长期趋势为基础,其余成分均以比率表示。 加法模型假定四个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 614
精华内容 245
关键字:

季节乘积模型