Auto.Arima错误地预测了第一点

时间:2020-08-16 19:25:02

标签: r time-series fft arima

我正在尝试完成一些储层数据的时间序列分析,并使用带有傅里叶分量的auto.arima来考虑季节性,如此处所述https://otexts.com/fpp2/dhr.html#dhr,下面显示了我使用的代码,我使用的数据集可以在https://www.dropbox.com/sh/563nu3daeid0agb/AAB6NSddVUKgBCCbQtuqXPsZa?dl=0

中找到
Reservoir = read.csv("Reservoir1.csv",TRUE,",")
#impute missing data from data set
Reservoir = imputeTS::na_interpolation(Reservoir)
#Create Time Series
Reservoir = ts(Reservoir[,2],frequency = (365.25),start = c(2013,116))

plots = list()
for (i in seq (10)) {
  fit = auto.arima(Reservoir, xreg = fourier(Reservoir, K = i), seasonal = FALSE)
  plots[[i]] = autoplot(forecast(fit, xreg = fourier(Reservoir, K = i, h=10))) + 
    xlab(paste("K=",i,"AICC=",round(fit[["aicc"]],2))) + ylab("")
}

gridExtra::grid.arrange(plots[[1]],plots[[2]],plots[[3]],plots[[4]],plots[[5]],
                        plots[[6]],plots[[7]],plots[[8]],plots[[9]],plots[[10]],
                        nrow=5)
bestfit = auto.arima(Reservoir, xreg=fourier(Reservoir, K=9), seasonal=FALSE)
summary(bestfit)
checkresiduals(bestfit)
plot(Reservoir,col="red")
lines(fitted(bestfit),col="blue")

enter image description here

除了不正确的第一预测外,模型拟合得很好。我迷失了为什么只有这个值如此之遥。或者,这是可以接受的错误吗?

1 个答案:

答案 0 :(得分:2)

残差是使用所有以前的观测值的单步预测误差。在时间1,残差是没有先前观测值的预测误差,因此它仅基于拟合模型。实际上,这是人为的“良好”预测,因为差异意味着在进行观察之前,该模型无法知道数据的位置。但是在R中实现ARIMA模型的方式使首次预测所使用的信息多于应有的信息。