美文网首页
时间序列笔记-ARIMA模型

时间序列笔记-ARIMA模型

作者: 新云旧雨 | 来源:发表于2019-08-01 07:22 被阅读0次

    笔记说明

    在datacamp网站上学习“Time Series with R ”track
    “ARIMA Modeling with R”课程 做的对应笔记。
    学识有限,错误难免,还请不吝赐教。
    学习的课程为“ARIMA Modeling with R”,主要用astsa包。
    如无特殊说明,笔记中所使用数据均来自datacamp课程
    ARIMA模型没比ARMA模型多多少知识点,因此本次笔记以一个真实数据练习为主,分析过程中附带一些在ARMA模型笔记中没有提到的内容。

    ARIMA模型介绍

    在ARMA模型的基础上加上差分就是ARIMA模型(Autoregressive Integrated Moving Average model)了,如果某时间序列的d阶差分符合ARMA(p,q),那么原时间序列符合ARIMA(p,d,q)。

    真实数据练习-全球变暖

    astsa包中自带的globtemp数据包含1880-2015年间每年的全球平均陆地-海洋温度偏差(与1951-1980年均值相比)
    原始数据及其一阶差分情况如下:



    差分后的数据消除了长期趋势,有点像平稳序列了。

    通过ACF和PACF图尝试定阶:

    # Plot the sample P/ACF pair of the differenced data 
    acf2(diff(globtemp))
    

    对于差分后的ACF和PACF的结果,可以有以下解读:

    1. ACF和PACF均拖尾,可以考虑ARIMA(1,1,1)模型
    2. ACF在lag为2处截尾,PACF拖尾,因此可以考虑ARIMA(0,1,2)模型
    3. ACF拖尾,PACF在lag为3处截尾,可以考虑ARIMA(3,1,0)模型。虽然这个模型拟合的也还可以,但实际上是三个模型中表现最差的。对于数据展示出来的比较小的自相关性它用了过多的参数。为节约篇幅我们就把这个模型忽略了。

    拟合第一个模型:

    # Fit an ARIMA(1,1,1) model to globtemp
    sarima(globtemp,1,1,1)
    

    参数估计结果:

      Estimate SE t.value p.value
    ar1 0.3549 0.1314 2.7008 0.0078
    ma1 -0.7663 0.0874 -8.7701 0.0000
    constant 0.0072 0.0032 2.2738 0.0246

    sigma^2估计值为0.009885
    自由度132
    AIC -3.572642
    BIC -4.508392
    残差分析图:


    拟合第二个模型:

    # Fit an ARIMA(0,1,2) model to globtemp
    sarima(globtemp,0,1,2)
    

    参数估计结果:

      Estimate SE t.value p.value
    ma1 -0.3984 0.0808 -4.9313 0.0000
    ma2 -0.2173 0.0768 -2.8303 0.0054
    constant 0.0072 0.0033 2.1463 0.0337

    sigma^2估计值为0.00982
    自由度132
    AIC -3.579224
    BIC -4.514974
    残差分析图:


    模型选择

    两个模型的参数估计结果均有统计学意义,残差分析图也都显示模型均是合理的(reasonable)。根据AIC和BIC的结果,可能ARIMA(0,1,2)模型更好一些。
    另外,forecast包的auto.arima()函数可以自动尝试不同阶数组合模型并建模,也可以帮助我们定阶。auto.arima()的相关内容见:时间序列笔记-auto.arima()自动定阶

    通过模拟过拟合进行模型诊断

    除了残差分析以外,还可以通过模拟过拟合(overfitting)来对建立的模型进行诊断:在建立的模型基础上添加额外的参数,看新的拟合结果。如果模型的参数估计等产生了很大的变化,则需要再考虑;如果模型结果没有发生大变动,那么可以比较肯定之前的模型是正确的。(我理解就是检查是否欠拟合吧)
    我们在ARIMA(0,1,2)的基础上加一个参数,尝试ARIMA(0,1,3)模型的拟合效果:

    # Fit an ARIMA(0,1,3) model to globtemp. 
    sarima(globtemp,0,1,3)
    

    参数估计结果:

      Estimate SE t.value p.value
    ma1 -0.3760 0.0929 -4.0458 0.0001
    ma2 -0.2115 0.0779 -2.7157 0.0075
    ma3 -0.0464 0.0865 -0.5370 0.5922
    constant 0.0072 0.0032 2.2574 0.0256

    sigma^2估计值为0.009798
    自由度131
    AIC -3.566741
    BIC -4.481074
    残差分析图:



    可以看出ma1 ma2的参数估计值变化不大,新加的ma3并没有统计学意义,AIC BIC增大。标明原来的ARIMA(0,1,2)模型并没有欠拟合。

    用ARIMA模型进行预测

    可以用astsa包的sarima.for(data, n.ahead, p, d, q)函数进行ARIMA建模后的预测。n.ahead参数指定往后预测几个时间单位的值。函数会输出对应预测值及其标准误和图像,图像中黑色表示已有数据,红色表示预测值,还会显示预测值加减1倍标准误的预测区间和加减2倍标准误的预测区间。

    # Forecast data 35 years into the future
    sarima.for(globtemp,n.ahead=35,0,1,2)
    

    相关文章

      网友评论

          本文标题:时间序列笔记-ARIMA模型

          本文链接:https://www.haomeiwen.com/subject/ybbarctx.html