在R中使用auto.arima模拟非平稳的每小时温度数据会产生爆炸性过程

时间:2019-10-16 09:07:11

标签: r time-series forecasting arima temperature

问题

我正在模拟中R中的逐年每小时温度数据。创建的时间序列应该继承过去几年的温度特征。同样,模拟必须居住在每年和每天的季节性中也很重要。但是,该模拟导致“爆炸性”过程,因此每日温度范围随时间增加,而过去的数据则不然。

我已经使自己熟悉 Hyndman&Athanasopoulos(2018)的原理。对于温度模拟本身,我遵循在此mathworks-page上找到的说明:

https://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/28056/versions/6/previews/html/ModelTemperature.html


我的脚步

1。摆脱年度季节性因素

我有一系列的五年每小时温度数据。我对数据拟合了sin / cos曲线,以摆脱年度长期趋势。另外,我还使用tsoutliers()函数消除了异常值。

Plot of fitted sin/cos-Model

我已经减去了这种趋势,现在正尝试将季节性(滞后24)Arima模型拟合到残差。

Plot of Residuals

2。使季节性Arima模型适合残差

我将残差转换为频率为24的时间序列(由于每天的温度季节性变化)。我可以看到残差不是固定的。根据我到目前为止所读的内容,区别应该纠正平稳性。我使用了auto.arima()函数,该函数正确地使用了季节性滞后。但是,AR1系数大于1(据我所知),这表明即使是滞后残差也不是平稳的。强制arima使用两个季节滞后,或将auto.arima(..., stepwise=FALSE)设置为仅略微改善结果。

Series: res_ts 
ARIMA(5,0,0)(2,1,0)[24] 

Coefficients:
         ar1      ar2     ar3      ar4     ar5     sar1     sar2
      1.8291  -1.1110  0.3322  -0.1057  0.0385  -0.5267  -0.2620
s.e.  0.0049   0.0101  0.0112   0.0097  0.0046   0.0047   0.0048

sigma^2 estimated as 0.134:  log likelihood=-18127.68
AIC=36271.35   AICc=36271.36   BIC=36340.85

3。模拟

在最后一步中,我将使用simulate()函数来模拟残余温度,并将其添加到我拟合的sin / cos-curve中。但是,随着时间的推移以及其每日范围及其总范围的增加,模拟残差随时间显示出一种“爆炸性”过程(实际残差的范围约为-20至20,而模拟残差的范围为-60至20)。因此,模拟不会产生实际的时间序列。

Plot of Simulated Residuals


我的问题

有人知道我如何改善模拟吗?我知道Box-Cox变换可以使时间序列平稳,但是我不知道如何为模拟反转变换。


参考

Hyndman,R.J.和Athanasopoulos,G.(2018)预测:原理与实践,第二版,OTexts:澳大利亚墨尔本。 OTexts.com/fpp2。在2019年10月16日访问

0 个答案:

没有答案