arima模型_arima模型表达式 - CSDN
精华内容
参与话题
  • 时间序列分析之ARIMA模型预测

    万次阅读 2017-01-12 17:45:37
    今天学习ARIMA预测时间序列。  指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之间相关性没有要求。但是,如果你想使用指数平滑法计算出预测区间, 那么预测误差必须是不相关的, ...

    转载自 http://blog.sina.com.cn/s/blog_70f632090101bnd8.html#cmt_3111974

    今天学习ARIMA预测时间序列。

     指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之间相关性没有要求。但是,如果你想使用指数平滑法计算出预测区间, 那么预测误差必须是不相关的, 而且必须是服从零均值、 方差不变的正态分布。即使指数平滑法对时间序列连续数值之间相关性没有要求,在某种情况下, 我们可以通过考虑数据之间的相关性来创建更好的预测模型。自回归移动平均模型( ARIMA) 包含一个确定(explicit) 的统计模型用于处理时间序列的不规则部分,它也允许不规则部分可以自相关。

    首先,先确定数据的差分。

    ARIMA 模型为平稳时间序列定义的。 因此, 如果你从一个非平稳的时间序列开始, 首先你就需要做时间序列差分直到你得到一个平稳时间序列。如果你必须对时间序列做 d 阶差分才能得到一个平稳序列,那么你就使用ARIMA(p,d,q)模型,其中 d 是差分的阶数。 

    我们以每年女人裙子边缘的直径做成的时间序列数据为例。从 1866 年到 1911 年在平均值上是不平稳的。 随着时间增加, 数值变化很大。  

    > skirts <- scan("http://robjhyndman.com/tsdldata/roberts/skirts.dat",skip=5)

    Read 46 items

    > skirtsts<- ts(skirts,start = c(1866))

     

    > plot.ts(skirtsts)

    R学习日记——时间序列分析之ARIMA模型预测

    我们可以通过键入下面的代码来得到时间序列(数据存于“skirtsts”) 的一阶差分, 并画出差分序列的图:

    > skirtstsdiff<-diff(skirtsts,differences=1)

     

    > plot.ts(skirtstsdiff)

    R学习日记——时间序列分析之ARIMA模型预测
    从一阶差分的图中可以看出,数据仍是不平稳的。我们继续差分。

    > skirtstsdiff2<-diff(skirtsts,differences=2)

    > plot.ts(skirtstsdiff2)

    R学习日记——时间序列分析之ARIMA模型预测

    二次差分(上面)后的时间序列在均值和方差上确实看起来像是平稳的, 随着时间推移, 时间序列的水平和方差大致保持不变。因此, 看起来我们需要对裙子直径进行两次差分以得到平稳序列。

    第二步,找到合适的ARIMA模型

     如果你的时间序列是平稳的,或者你通过做 n 次差分转化为一个平稳时间序列, 接下来就是要选择合适的 ARIMA模型,这意味着需要寻找 ARIMA(p,d,q)中合适的 p 值和 q 值。为了得到这些,通常需要检查[平稳时间序列的(自)相关图和偏相关图。 

     我们使用 R 中的“acf()”和“pacf” 函数来分别( 自) 相关图和偏相关图。“acf()”和“pacf 设定“plot=FALSE” 来得到自相关和偏相关的真实值。 

    > acf(skirtstsdiff2,lag.max=20)

     

    > acf(skirtstsdiff2,lag.max=20,plot=FALSE)

    R学习日记——时间序列分析之ARIMA模型预测

    Autocorrelations of series ‘skirtstsdiff2’, by lag


         0      1      2      3      4      5      6      7      8     9     10 

     1.000 -0.303  0.096  0.009  0.102 -0.453  0.173 -0.025 -0.039  0.073 -0.094 

        11     12     13     14     15     16     17     18     19     20 

     0.133 -0.089 -0.027 -0.102  0.207 -0.260  0.114  0.101  0.011 -0.090 

    自相关图显示滞后1阶自相关值基本没有超过边界值,虽然5阶自相关值超出边界,那么很可能属于偶然出现的,而自相关值在其他上都没有超出显著边界, 而且我们可以期望 1 到 20 之间的会偶尔超出 95%的置信边界。  

    > pacf(skirtstsdiff2,lag.max=20)

    > pacf(skirtstsdiff2,lag.max=20,plot=FALSE)

    R学习日记——时间序列分析之ARIMA模型预测

    Partial autocorrelations of series ‘skirtstsdiff2’, by lag


         1      2      3      4      5      6      7      8      9    10     11 

    -0.303  0.005  0.043  0.128 -0.439 -0.110  0.073  0.028  0.128 -0.355  0.095 

        12     13     14     15     16     17     18     19     20 

     0.052 -0.094 -0.103 -0.034 -0.021 -0.002  0.074  0.020 -0.034 

    偏自相关值选5阶。

    故我们的ARMIA模型为armia(1,2,5)

    > skirtsarima<-arima(skirtsts,order=c(1,2,5))

    > skirtsarima

    SSeries: skirtsts 

    ARIMA(1,2,5)                    


    Coefficients:

              ar1     ma1     ma2     ma3     ma4      ma5

          -0.4345  0.2762  0.1033  0.1472  0.0267  -0.8384

    s.e.   0.1837  0.2171  0.2198  0.2716  0.1904   0.2888


    sigma^2 estimated as 206.1:  log likelihood=-183.8

    AIC=381.6   AICc=384.71   BIC=394.09

    预测后5年裙子的边缘直径

    >  skirtsarimaforecast<-forecast.Arima(skirtsarima,h=5,level=c(99.5))

    > skirtsarimaforecast

         Point Forecast  Lo 99.5  Hi 99.5

    1912       548.5762 507.1167 590.0357

    1913       545.1793 459.3292 631.0295

    1914       540.9354 396.3768 685.4940

    1915       531.8838 316.2785 747.4892

    1916       529.1296 233.2625 824.9968

    plot.forecast(skirtsarimaforecast$residuals)   #谢谢@忆水如烟的指正

    R学习日记——时间序列分析之ARIMA模型预测第三步,检验

    在指数平滑模型下, 观察 ARIMA 模型的预测误差是否是平均值为 0 且方差为常数的正态分布(服从零均值、方差不变的正态分布) 是个好主意,同时也要观察连续预测误差是否(自)相关。  

    > acf(skirtsarimaforecast$residuals,lag.max=20)

    R学习日记——时间序列分析之ARIMA模型预测> Box.test(skirtsarimaforecast$residuals, lag=20, type="Ljung-Box")


            Box-Ljung test


    data:  skirtsarimaforecast$residuals 

    X-squared = 8.5974, df = 20, p-value = 0.9871

    既然相 关图显示出在1 - 20 l a g s 1 - 20 )中样本自相关值都没有超出显著(置信界,Ljung-Box检验p值为0.99,所我们推断在1-20lags1-20)中明显据说明预测误差是非零自相关的。 

    为了调查预测误差是否是平均值为零且方差为常数的正态分布(服从零均值、方差不变的正态分布),我们可以做预测误差的时间曲线图和直方图(具有正态分布曲线)

    > plot.ts(skirtsarimaforecast$residuals)

    R学习日记——时间序列分析之ARIMA模型预测> plotForecastErrors(skirtsarimaforecast$residuals)
    R学习日记——时间序列分析之ARIMA模型预测

    上图预测中的时间曲线图显示出对着时间增加,方差大致为常数(大致不变)(尽管上半部分的时间序

    列方差看起来稍微高一些)。时间序列的直方图显示预测误大致是正态分布的且平均值接近于 0(服从零均值的正态分布的)。因此,把预测误差看作平均值为0方差为常数正态分布(服从零均值、方差不变的正态分布)是合理的。 

     

    既然依次连续的预测误差看起来不是相关,而且看起来是平均值为 0 方差为常数的正态分布(服从零均值、方差不变的正态分布),那么对于裙子直径的数据, ARIMA(1,2,5)看起来是可以提供非常合适预测的模型。 

    至此,时间序列的学习结束

    展开全文
  • ARIMA模型原理及实现

    万次阅读 多人点赞 2020-03-30 09:53:18
    1、数据介绍 再介绍本篇的内容之前,我们先来看一下本文用到的数据。本文用到的中国银行股票数据下载:... 我们先来导入一下我们的数据,顺便画出收盘价数据的折线图: ...import pandas as pd import matplotlib...

    https://www.jianshu.com/p/305c4961ee06

    1、数据介绍

    再介绍本篇的内容之前,我们先来看一下本文用到的数据。本文用到的中国银行股票数据下载:http://pan.baidu.com/s/1gfxRFbH,提取码d3id。

    我们先来导入一下我们的数据,顺便画出收盘价数据的折线图:

    import pandas as pd
    import matplotlib.pyplot as plt
    ChinaBank = pd.read_csv('ChinaBank.csv',index_col = 'Date',parse_dates=['Date'])
    
    #ChinaBank.index = pd.to_datetime(ChinaBank.index)
    sub = ChinaBank['2014-01':'2014-06']['Close']
    train = sub.ix['2014-01':'2014-03']
    test = sub.ix['2014-04':'2014-06']
    plt.figure(figsize=(10,10))
    print(train)
    plt.plot(train)
    plt.show()
    

    数据如下:

    介绍了数据,我们接下来进入今天的正题。

    2、时间序列平稳性

    2.1 平稳性

    平稳性就是要求经由样本时间序列所得到的拟合曲线在未来一段时间内仍能顺着现有的形态惯性地延续下去。平稳性要求序列的均值和方差不发生明显变化。

    严平稳
    严平稳表示的分布不随时间的改变而改变。如白噪声(正太),无论怎么取,都是期望为0,方差为1

    宽平稳
    期望与相关系数(依赖性)不变。未来某时刻的t的值Xt就要依赖于它的过去信息,所以需要依赖性。这种依赖性不能有明显的变化。

    2.2 差分法

    使用差分法可以使得数据更平稳,常用的方法就是一阶差分法和二阶差分法。

    时间序列差分值的求解可以直接通过pandas中的diff函数得到:

    ChinaBank['Close_diff_1'] = ChinaBank['Close'].diff(1)
    ChinaBank['Close_diff_2'] = ChinaBank['Close_diff_1'].diff(1)
    fig = plt.figure(figsize=(20,6))
    ax1 = fig.add_subplot(131)
    ax1.plot(ChinaBank['Close'])
    ax2 = fig.add_subplot(132)
    ax2.plot(ChinaBank['Close_diff_1'])
    ax3 = fig.add_subplot(133)
    ax3.plot(ChinaBank['Close_diff_2'])
    plt.show()
    

    绘制的图如下所示:

    可以看到,基本上时间序列在一阶差分的时候就已经接近于平稳序列了。

    3、ARIMA模型介绍

    3.1 自回归模型AR

    自回归模型描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测。自回归模型必须满足平稳性的要求。

    自回归模型首先需要确定一个阶数p,表示用几期的历史值来预测当前值。p阶自回归模型的公式定义为:

    上式中yt是当前值,u是常数项,p是阶数 ri是自相关系数,et是误差。

    自回归模型有很多的限制:
    1、自回归模型是用自身的数据进行预测
    2、时间序列数据必须具有平稳性
    3、自回归只适用于预测与自身前期相关的现象

    3.2 移动平均模型MA

    移动平均模型关注的是自回归模型中的误差项的累加 ,q阶自回归过程的公式定义如下:

    移动平均法能有效地消除预测中的随机波动。

    3.3 自回归移动平均模型ARMA

    自回归模型AR和移动平均模型MA模型相结合,我们就得到了自回归移动平均模型ARMA(p,q),计算公式如下:

    3.4 差分自回归移动平均模型ARIMA

    将自回归模型、移动平均模型和差分法结合,我们就得到了差分自回归移动平均模型ARIMA(p,d,q),其中d是需要对数据进行差分的阶数。

    4、建立ARIMA模型的过程

    一般来说,建立ARIMA模型一般有三个阶段,分别是模型识别和定阶、参数估计和模型检验,接下来,我们一步步来介绍:

    4.1 模型识别和定阶

    模型的识别问题和定阶问题,主要是确定p,d,q三个参数,差分的阶数d一般通过观察图示,1阶或2阶即可。这里我们主要介绍p和q的确定。我们首先介绍两个函数。

    自相关函数ACF(autocorrelation function)
    自相关函数ACF描述的是时间序列观测值与其过去的观测值之间的线性相关性。计算公式如下:

    其中k代表滞后期数,如果k=2,则代表yt和yt-2

    偏自相关函数PACF(partial autocorrelation function)
    偏自相关函数PACF描述的是在给定中间观测值的条件下,时间序列观测值预期过去的观测值之间的线性相关性。

    举个简单的例子,假设k=3,那么我们描述的是yt和yt-3之间的相关性,但是这个相关性还受到yt-1和yt-2的影响。PACF剔除了这个影响,而ACF包含这个影响。

    拖尾和截尾
    拖尾指序列以指数率单调递减或震荡衰减,而截尾指序列从某个时点变得非常小:

    出现以下情况,通常视为(偏)自相关系数d阶截尾:
    1)在最初的d阶明显大于2倍标准差范围
    2)之后几乎95%的(偏)自相关系数都落在2倍标准差范围以内
    3)且由非零自相关系数衰减为在零附近小值波动的过程非常突然

    出现以下情况,通常视为(偏)自相关系数拖尾:
    1)如果有超过5%的样本(偏)自相关系数都落入2倍标准差范围之外
    2)或者是由显著非0的(偏)自相关系数衰减为小值波动的过程比较缓慢或非常连续。

    p,q阶数的确定
    根据刚才判定截尾和拖尾的准则,p,q的确定基于如下的规则:

    根据不同的截尾和拖尾的情况,我们可以选择AR模型,也可以选择MA模型,当然也可以选择ARIMA模型。接下来,我们就来画一下我们数据的拖尾和截尾情况:

    import statsmodels.api as sm
    fig = plt.figure(figsize=(12,8))
     
    ax1 = fig.add_subplot(211)
    fig = sm.graphics.tsa.plot_acf(train, lags=20,ax=ax1)
    ax1.xaxis.set_ticks_position('bottom')
    fig.tight_layout()
     
    ax2 = fig.add_subplot(212)
    fig = sm.graphics.tsa.plot_pacf(train, lags=20, ax=ax2)
    ax2.xaxis.set_ticks_position('bottom')
    fig.tight_layout()
    plt.show()
    

    结果如下:

    哈哈,咱们这个数据自相关系数4阶拖尾,偏自相关系数2阶截尾,因此可以选择的是AR(2)模型。

    4.2 参数估计

    通过拖尾和截尾对模型进行定阶的方法,往往具有很强的主观性。回想我们之前在参数预估的时候往往是怎么做的,不就是损失和正则项的加权么?我们这里能不能结合最终的预测误差来确定p,q的阶数呢?在相同的预测误差情况下,根据奥斯卡姆剃刀准则,模型越小是越好的。那么,平衡预测误差和参数个数,我们可以根据信息准则函数法,来确定模型的阶数。预测误差通常用平方误差即残差平方和来表示。

    常用的信息准则函数法有下面几种:
    AIC准则
    AIC准则全称为全称是最小化信息量准则(Akaike Information Criterion),计算公式如下:
    AIC = =2 *(模型参数的个数)-2ln(模型的极大似然函数)

    BIC准则
    AIC准则存在一定的不足之处。当样本容量很大时,在AIC准则中拟合误差提供的信息就要受到样本容量的放大,而参数个数的惩罚因子却和样本容量没关系(一直是2),因此当样本容量很大时,使用AIC准则选择的模型不收敛与真实模型,它通常比真实模型所含的未知参数个数要多。BIC(Bayesian InformationCriterion)贝叶斯信息准则弥补了AIC的不足,计算公式如下:

    BIC = ln(n) * (模型中参数的个数) - 2ln(模型的极大似然函数值),n是样本容量

    好了,我们通过类似于网格搜索的方式来寻找我们模型最佳的p,q组合吧,这里我们使用BIC进行试验,AIC同理:

    #遍历,寻找适宜的参数
    import itertools
    import numpy as np
    import seaborn as sns
     
    p_min = 0
    d_min = 0
    q_min = 0
    p_max = 5
    d_max = 0
    q_max = 5
     
    # Initialize a DataFrame to store the results,,以BIC准则
    results_bic = pd.DataFrame(index=['AR{}'.format(i) for i in range(p_min,p_max+1)],
                               columns=['MA{}'.format(i) for i in range(q_min,q_max+1)])
     
    for p,d,q in itertools.product(range(p_min,p_max+1),
                                   range(d_min,d_max+1),
                                   range(q_min,q_max+1)):
        if p==0 and d==0 and q==0:
            results_bic.loc['AR{}'.format(p), 'MA{}'.format(q)] = np.nan
            continue
     
        try:
            model = sm.tsa.ARIMA(train, order=(p, d, q),
                                   #enforce_stationarity=False,
                                   #enforce_invertibility=False,
                                  )
            results = model.fit()
            results_bic.loc['AR{}'.format(p), 'MA{}'.format(q)] = results.bic
        except:
            continue
    results_bic = results_bic[results_bic.columns].astype(float)
    
    fig, ax = plt.subplots(figsize=(10, 8))
    ax = sns.heatmap(results_bic,
                     mask=results_bic.isnull(),
                     ax=ax,
                     annot=True,
                     fmt='.2f',
                     )
    ax.set_title('BIC')
    plt.show()
    

    绘制的热力图如下:

    我们上面采用了循环的方式,其实可以用更简单的方法得到p和q的最优值:

    train_results = sm.tsa.arma_order_select_ic(train, ic=['aic', 'bic'], trend='nc', max_ar=8, max_ma=8)
     
    print('AIC', train_results.aic_min_order)
    print('BIC', train_results.bic_min_order)
    

    结果为:

    AIC (1, 0)
    BIC (1, 0)
    

    表明我们应该选择AR(1)模型。

    一般来说,BIC准则得到的ARMA模型的阶数较AIC的低。

    4.3 模型检验

    这里的模型检验主要有两个:
    1)检验参数估计的显著性(t检验)
    2)检验残差序列的随机性,即残差之间是独立的

    残差序列的随机性可以通过自相关函数法来检验,即做残差的自相关函数图:

    model = sm.tsa.ARIMA(train, order=(1, 0, 0))
    results = model.fit()
    resid = results.resid #赋值
    fig = plt.figure(figsize=(12,8))
    fig = sm.graphics.tsa.plot_acf(resid.values.squeeze(), lags=40)
    plt.show()
    

    结果如下:

    这里很明显的检测是通过的。

    4.4 模型预测

    预测主要有两个函数,一个是predict函数,一个是forecast函数,predict中进行预测的时间段必须在我们训练ARIMA模型的数据中,forecast则是对训练数据集末尾下一个时间段的值进行预估。

    model = sm.tsa.ARIMA(sub, order=(1, 0, 0))
    results = model.fit()
    predict_sunspots = results.predict(start=str('2014-04'),end=str('2014-05'),dynamic=False)
    print(predict_sunspots)
    fig, ax = plt.subplots(figsize=(12, 8))
    ax = sub.plot(ax=ax)
    predict_sunspots.plot(ax=ax)
    plt.show()
    

    结果如下:

    预估下一个值:

    results.forecast()[0]
    

    参考文献

    https://blog.csdn.net/weixin_41988628/article/details/83149849

    展开全文
  • ARIMA模型

    万次阅读 2017-06-26 17:07:50
    差分运算具有强大的确定性信息提取能力,许多非平稳序列差分后显示出平稳序列性质,这时我们称这个非平稳序列为差分平稳序列,对差分平稳序列可以使用ARIMA模型ARIMA模型的结构简记为ARIMA(p,d,q),名称为求和自...

    差分运算具有强大的确定性信息提取能力,许多非平稳序列差分后显示出平稳序列性质,这时我们称这个非平稳序列为差分平稳序列,对差分平稳序列可以使用ARIMA模型。

    ARIMA模型的结构

    简记为ARIMA(p,d,q),名称为求和自回归移动平均模型。
    ARIMA的实际就是差分运算与ARMA模型的组合,这意义关系重大,这说明任何非平稳序列如果能够通过适当阶数的差分实现差分后平稳,就可以对差分序列进行ARMA拟合了。而ARMA模型的分析方法非常成熟,这意味着对差分平稳序列的分析也将是非常简单、非常可靠的。
    特别地:
    当d=0,ARIMA(p,d,q)模型实际上就是ARMA(p,q)模型。
    当p=0,ARIMA(0,d,q)模型可以简记为IMA(d,q)模型。
    当q=0,ARIMA(p,d,0)模型可以简记为ARI(d,q)模型。
    当d=1,p=q=0时,ARIMA(0,1,0)模型为:游走模型或称醉汉模型, 这是一个最简单的ARIMA模型,随机游走模型目前广泛应用于计量经济学领域,传统的经济学家普遍认为投机价格的走势类似于随机游走模型,随机游走模型也是有效市场理论(efficient market theory)。

    ARIMA模型的性质

    1.平稳性
    ARIMA(p,d,q)模型共有p+d个特征根,p个单位圆内,d个单位圆上。因为有d个特征根在单位圆上而非单位圆内,所以当d不等于0,ARIMA(p,d,q)模型不平稳。
    拟合随机游走模型

    x<-arima.sim(n=1000,list(order=c(0,1,0)),sd=10)
    plot(x)
    

    这里写图片描述
    2.方差奇性
    对于ARIMA(p,d,q)模型,当d不等于0,不仅均值非齐性,序列方差也非齐性。以最简单的随机游走模型ARIMA(0,1,0),这是一个时间t的递增函数,随着时间趋向无穷,序列{Xt}的方差也趋向无穷。

    ARIMA模型建模

    建模流程
    建模流程
    对我国1952年到1988年中国农业实际国民收入指数序列

    #读入数据,并绘制时序图
    d<-read.table("D:/R-TT/book4/4R/data/file17.csv",sep=",",header = T)
    x<-ts(d$index,start = 1952)
    plot(x)

    农业国民收入指数
    农业国民收入指数

    acf(x,lag.max = 1000)

    自相关图非平稳
    自相关图非平稳
    非平稳,所以在进行差分

    pacf(x)

    偏相关图
    偏相关图
    偏相关图一阶截尾
    进行1阶差分

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

    农业收入1阶差分时序图
    农业收入1阶差分时序图

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

    1阶差分自相关图
    1阶差分自相关图
    1阶差分偏相关图
    1阶差分偏相关图
    一阶差分时序图显示序列在均值附近比较稳定的地波动,借助差分后序列自相关图进一部考察差分后序列的平稳性,可以显示出一阶差分后序列平稳。最后,可以认为自相关系数1阶截尾,偏自相关系数拖尾。所以对对原序列拟合ARIMA(0,1,1)模型。
    拟合ARIMA(0,1,1)

    x.fit<-arima(x,order=c(0,1,1))
    x.fit
    Call:
    arima(x = x, order = c(0, 1, 1))
    
    Coefficients:
             ma1
          0.7355
    s.e.  0.1545
    
    sigma^2 estimated as 61.95:  log likelihood = -125.74,  aic = 255.49
     #残差白噪声检验
    > for(i in 1:2) print(Box.test(x.fit$residual,lag=6*i))
    
        Box-Pierce test
    
    data:  x.fit$residual
    X-squared = 3.3169, df = 6, p-value = 0.7681
    
    
        Box-Pierce test
    
    data:  x.fit$residual
    X-squared = 6.0284, df = 12, p-value = 0.9146
    

    残差序列白噪声检验说明该模型显著成立,这说明ARIMA(0,1,1)模型对该序列拟合成功。

    ARIMA模型预测

    对1952年-1988年农业国民收入做指数序列做10期预测

    library(zoo)
    library(forecast)
    d<-read.table("D:/R-TT/book4/4R/data/file17.csv",sep=",",header = T)
    x<-ts(d$index,start = 1952)
    x.fit<-arima(x,order=c(0,1,1))
    x.fore<-forecast(x.fit,h=10)
    plot(x.fore)
    x.fore
         Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
    1989       283.0082 272.9213 293.0950 267.5816 298.4347
    1990       283.0082 262.8045 303.2118 252.1094 313.9070
    1991       283.0082 256.2756 309.7407 242.1243 323.8921
    1992       283.0082 251.0540 314.9624 234.1384 331.8779
    1993       283.0082 246.5731 319.4432 227.2856 338.7308
    1994       283.0082 242.5860 323.4304 221.1878 344.8286
    1995       283.0082 238.9582 327.0581 215.6396 350.3767
    1996       283.0082 235.6073 330.4090 210.5149 355.5015
    1997       283.0082 232.4782 333.5382 205.7292 360.2871
    1998       283.0082 229.5318 336.4845 201.2231 364.7932

    农业国民收入指数序列预测图
    农业国民收入指数序列预测图

    疏系数模型

    ARIMA(p,d,q)模型是指d阶差分后自相关最高阶数为p,移动平均最高阶数为q的模型。
    这里写图片描述
    arima(x,order=,include.mean=,method=,transform.pars=,fixed=)

    -x:要进行模型拟合的序列名
    -order:指定模型阶数。order = c(p,d,q),p为自回归系数,d为差分阶数,q为移动平均数。
    -include.mean:include.mean = T,需要拟合常数项。include.mean = F,不需要拟合常数项。
    -method:指定参数估计方法。
    -transform.pars = T: 系统默认设置是系统根据order选项设置的模型阶数自动完成参数的估计。
    -transform.pars = F: 需要拟合疏系数模型,不能让系统根据模型的最高阶数自动完成所有的参数估计,我们需要进行人工干扰。
    -fixed:对疏系数模型指定疏系数的位置。
    对1917年-1975年美国23岁妇女每万人生育率序列建模

    #读入数据,并绘制时序图
    e<-read.table("D:/R-TT/book4/4R/data/file18.csv",sep=",",header = T)
    x<-ts(e$fertility,start = 1917)
    plot(x)

    每万人生育率序列时序图
    每万人生育率序列时序图

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

    1阶差分后的时序图
    1阶差分后的时序图

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

    1阶差分后序列自相关图
    1阶差分后序列自相关图
    1阶差分后序列偏相关图
    1阶差分后序列偏相关图
    1阶差分序列时序图没有明显的趋势或者周期特征,自相关图与5阶之后都在2倍标准差范围内,满足短期自相关属性。所以可以认为1阶差分序列平稳。自相关图与偏相关图都呈现出截尾特征,可以尝试拟合多个模型。在此根据偏自相关系数1阶和4阶显著非零。
    acf截尾,pacf截尾
    arima函数指定:
    (1)order = c(4,1,0):构造1阶差分后AR(4)模型
    (2)transform.pars = F :指定系数要进行人工干预
    (3)fixed = c(NA,0,0,NA),意味着AR部分四个参数只有1,4两个参数非零,2、3两个参数恒等于0。
    于是构造ARIMA((1,4),1,0)疏系数模型。

    #拟合疏系数模型ARIMA(4,1,0)
    x.fit<-arima(x,order = c(4,1,0),transform.pars = F,fixed = c(NA,0,0,NA))
    x.fit
    Call:
    arima(x = x, order = c(4, 1, 0), transform.pars = F, fixed = c(NA, 0, 0, NA))
    
    Coefficients:
             ar1  ar2  ar3     ar4
          0.2583    0    0  0.3408
    s.e.  0.1159    0    0  0.1225
    
    sigma^2 estimated as 118.2:  log likelihood = -221,  aic = 448.01
    > #残差白噪声检验
    > for(i in 1:2) print(Box.test(x.fit$residual,lag=6*i))
    
        Box-Pierce test
    
    data:  x.fit$residual
    X-squared = 4.0909, df = 6, p-value = 0.6644
    
    
        Box-Pierce test
    
    data:  x.fit$residual
    X-squared = 5.3742, df = 12, p-value = 0.9443

    通过了检验

    #做5期预测,并绘制预测图
    x.fore<-forecast(x.fit,h=5)
    x.fore
     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
    1976      109.18385 95.25187 123.1158 87.87673 130.4910
    1977      103.43765 81.04480 125.8305 69.19075 137.6846
    1978      100.93090 71.90947 129.9523 56.54645 145.3154
    1979       98.64765 64.12267 133.1726 45.84624 151.4491
    1980       94.88318 53.11326 136.6531 31.00160 158.7648
    plot(x.fore)

    未来5年预测
    未来5年预测

    展开全文
  • ARIMA模型(一)定义与介绍

    万次阅读 2018-10-30 10:45:37
    了解ARIMA模型,就需要先了解数据的一个平稳性。 1. 平稳性: 平稳性就是要求经由样本时间序列所得到的拟合曲线,在未来的一段时间内仍能顺着现有状态“惯性”地延续下去; 平稳性要求序列的均值和方差不发生明显...

    了解ARIMA模型,就需要先了解数据的一个平稳性。

    1. 平稳性:

    • 平稳性就是要求经由样本时间序列所得到的拟合曲线,在未来的一段时间内仍能顺着现有状态“惯性”地延续下去;
    • 平稳性要求序列的均值方差不发生明显变化;

            方差越大,数据波动越大,方差计算公式如下式所示:

           

           方差等于1,那么标准差也就是1,表示概率函数在对称轴左右偏差1的位置导数为0,即为拐点。期望为0,表示概率函数以y轴为对称轴。

    平稳性分为严平稳和弱平稳

    • 严平稳:严平稳表示的分布不随时间的改变而改变,如:白噪声(正态),无论怎么取,都是期望为0,方差为1;
    • 弱平稳:期望与相关系数(依赖性)不变,未来某时刻的t值Xt就要依赖于它的过去信息,所以需要依赖性;

    那么如果我们拿到的数据波动很大,那么需要平稳这个数据,如何平稳这个数据呢?

    2. 差分法:时间序列在t与t-1时刻的差值

                                         

                 差分法:(t5-t4),(t4-t3),(t3-t2),(t2-t1),在一阶差分后就可以得到二阶差分。

    明白了平稳数据方法,于是下面介绍几个定义:

    3. 自回归模型(AR)

    • 描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测
    • 自回归模型必须满足平稳性的要求
    • p阶自回归过程的公式定义:
    • 是当前值,是常数项,P是阶数(需要我们自己指定),是自相关系数,是误差

    3.1 自回归模型(AR)的限制

    • 自回归模型是用自身的数据来进行预测
    • 必须具有平稳性
    • 必须具有自相关性,如果自相关系数小于0.5,则不宜采用
    • 自回归只适用于预测与自身前期相关的现象

    4. 移动平均模型(MA)

    • 移动平均模型关注的是自回归模型中误差项的累加
    • q阶自回归过程的公式定义:
    • 移动平均法能有效消除预测中的随机波动

    5. 自回归移动平均模型(ARMA)

            自回归与移动平均结合,公式定义如下,由下述公式我们可以得到,当拿到ARMA模型时,我们仅需要指定三个参数(p,d,q)d是阶数,d=1即为一阶差分,d=2为二阶差分,以此类推。

                                                  

    6. 差分自回归移动平均模型

            ARIMA (p, d, q)模型全称为差分自回归移动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA)。

            AR是自回归,p为自回归项;MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数。

             原理:将非平稳时间序列转换为平稳时间序列。然后将因变量仅对它滞后值(阶数)以及随机误差项的现值和滞后值进行回归所建立的模型。

    6.1 自相关函数ACF(autocorrelation function)

            相关性:有序的随机变量序列与其自身相比较,自相关函数反映了自身数据在同一序列在不同时序之间的相关性

             公式:

                                 

            普通的相关性是,如左图,是一个正相关概念,右图是一个负相关概念,那自相关函数说的是什么呢?

                          

            自相关函数ACF(k) = Pk的取值范围为[-1,1],这个取值范围的定义如下,-1为负相关,+1为正相关,0为无相关性。如下图,是一个阶数与自相关函数ACF之间的关系:

                        

            我们一般会取95%的置信区间,意思如下,也就是100个点有95%个点是落在我们的区间里面,这就是95%的置信区间。

    6.2 偏自相关函数(PACF)(partial autocorrelation function)

            对于一个平稳AR(p)模型,求出滞后k自相关系数p(k)时实际上得到的并不是x(t)与x(t-k)之间单纯的相关关系:

    • x(t)同时还会受到中间k-1个随机变量x(t-1)、x(t-2)、......、x(t-k+1)的影响,而这k-1个随机变量又都和x(t-k)具有相关关系,所以自相关系数p(k)里实际掺杂了其他变量对x(t)与x(t-k)的影响;
    • ACF还包含了其他变量的影响,而偏自相关系数PACF是严格这两个变量之间的相关性;

    6.3 ARIMA建模流程

    1. 将序列平稳(差分法确定d)
    2. p和q阶数确定:ACF与PACF
    3. ARIMA(p,d,q)
    模型 ACF PACF
    AR(p) 衰减趋于零(几何型或振荡型) p阶后截尾
    MA(q) q阶后结尾 衰减趋于零(几何型或振荡型)
    ARMA(p,q) q阶后衰减趋于零(几何型或振荡型) p阶后衰减趋于零(几何型或振荡型)

           截尾:落在置信区间内(95%的点都符合该规则)

    6.4 模型参数选择

          模型选择AIC与BIC:选择更简单的模型

    AIC:赤池信息准则(Akaike Information Criterion,AIC)

                                        

    BIC:贝叶斯信息准则(Bayesian Information Criterion,BIC)

                                        

           k为模型参数个数,n为样本数量,L为似然函数

    6.5 模型残差检验

    • ARIMA模型的残差是否是平均值为0且方差为常熟的正态分布
    • QQ图:线性即正态分布

     

    展开全文
  • ARIMA模型介绍

    万次阅读 2018-04-08 21:52:10
    什么是 ARIMA模型ARIMA模型的全称叫做自回归移动平均模型,全称是(ARIMA, Autoregressive Integrated Moving Average Model)。也记作ARIMA(p,d,q),是统计模型(statistic model)中最常见的一种用来进行时间序列 预测...
  • ARIMA模型学习心得

    万次阅读 多人点赞 2018-07-31 19:20:15
    ARIMA”实际上并不是一整个单词,而是一个缩写。其全称是:Autoregressive Integrated Moving Average Model,即自回归移动平均模型。它属于统计模型中最常见的一种,用于进行时间序列的预测。其原理在于:在将非...
  • 时间序列预测——ARIMA(差分自回归移动平均模型ARIMA(p,d,q)中,AR是"自回归",p为自回归项数;I为差分,d为使之成为平稳序列所做的差分次数(阶数);MA为"滑动平均",q为滑动平均项数,。ACF自相关系数能...
  • ARIMA模型是一种流行且广泛使用的时间序列预测统计方法。 ARIMA是AutoRegressive Integrated Moving Average的缩写。它是一类模型,它捕获时间序列数据中的一套不同的标准时间结构。 在本教程中,您将了解如何使用...
  • ARIMA模型(股价趋势预测)

    万次阅读 2018-07-26 13:13:00
    一、ARIMA模型的含义  ARIMA模型包括了三部分: AR+ I + MA ,ARIMA模型针对非平稳时间序列模型,如果非平稳时间序列要建立ARMA模型,首先必须经过差分转换为平稳时间序列,然后建立ARMA模型。  AR--auto ...
  • 时间序列预测--ARIMA、LSTM

    千次阅读 2018-10-16 14:45:18
    ARIMA模型全称为差分自回归移动平均模型(Auto regressive Integrated Moving Average Model,简记ARIMA)。ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,...
  • R语言 时间序列之ARIMA模型

    万次阅读 2018-04-02 18:49:59
    ARIMA模型的本质和ARMA是一样的,只是ARIMA针对不平稳的序列进行建模的,将ARMA模型里的序列值进行差分就可以。定阶以及参数说明acf值pcf值模型拖尾(逐渐为0)p阶截尾ARIMA(p,d,0)q阶截尾拖尾ARIMA(0,d,q)拖尾拖尾...
  • 时间序列分析--ARIMA模型

    万次阅读 多人点赞 2017-06-01 15:33:01
    指数平滑法对时间序列上连续的值之间的相关性没有要求。但是,如果你想使用指数平滑法计算出预测区间, 那么预测误差必须是不相关的, 且必须是服从零均值、 方差不变的正态分布。即使指数平滑法对时间序列连续数值...
  • ARMA模型和ARIMA模型一种误差检验

    千次阅读 2017-09-11 11:12:59
    ARMA模型和ARIMA模型误差检验这里对上面 数学建模中的ARMA模型和ARIMA模型的使用是否可靠提出一种误差的检验方法。
  • Arima预测模型(R语言)

    万次阅读 多人点赞 2015-02-05 18:28:29
    所谓ARIMA模型,是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。ARIMA模型根据原序列是否平稳以及回归中所含部分的不同,包括移动平均过程...
  • 时间序列预测之--ARIMA模型

    千次阅读 2018-03-16 15:05:10
    什么是 ARIMA模型 ARIMA的优缺点 判断是时序数据是稳定的方法 ARIMA的参数与数学形式 ARIMA模型的几个特例 ARIMA(0,1,0) ARIMA(1,0,0) ARIMA(1,1,0) ARIMA(0,1,1) ARIMA(2,1,2) ARIMA(2,2,2) ARIMA建模基本步骤 ...
  • 简单的Arima模型自动最优拟合与预测

    千次阅读 2012-07-27 16:33:14
    昨天用R折腾了一个简单的时间序列数据Arima自动拟合与预测。过程不复杂,但由于用得不多,为了防止忘记,撰文记录。 打开R,安装一个叫做"Forecast"的包。每次开启R后,使用之前用  library('forecast')  ...
  • Eviews做ARIMA模型

    万次阅读 多人点赞 2018-05-05 14:02:21
    时间序列分析模型——ARIMA模型时间序列分析模型——ARIMA模型一、研究目的传统的经济计量方法是以经济理论为基础来描述变量关系的模型。但经济理论通常不足以对变量之间的动态联系提供一个严密的说明,而且内生变量...
  • ARIMA 全称为自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA)。核心函数是ARIMA(p,d,q)称为差...所谓ARIMA模型,是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它
  • 时间序列分析之AR、MA、ARMA和ARIMA模型

    万次阅读 多人点赞 2018-07-02 15:51:36
    在统计学中,通常是建立一个线性模型来拟合该时间序列的趋势,其中,AR、MA、ARMA、ARIMA都是较为常用的模型。1、AR(Auto Regressive Model)自回归模型AR是线性时间序列分析模型中最简单的模型。通过自身前面部分的...
  • 构建ARIMA模型,利用R里面的auto.arima()函数,自动筛选p、d、q # 构建ARIMA模型################################## library(forecast) library(tseries) library(fUnitRoots) terrorism_num=c(1534,1295,1183,1277...
1 2 3 4 5 ... 20
收藏数 3,048
精华内容 1,219
关键字:

arima模型