auto.arima的AIC值

时间:2019-01-10 05:21:36

标签: r forecasting arima

我在确定为什么auto.arima建议使用特定系数时遇到问题。我有多个季节性的时间序列,我正在尝试使用STL + ARIMA预测未来价值。我一直在关注Hyndman的书(https://otexts.org/fpp2/complexseasonality.html)。但是,在所有示例中,我都看到使用auto.arima函数而不是指定Arima参数。

我基本上已经使用mstl()函数从Loess中获取余数,然后尝试估计这些余数的ARIMA参数。我不确定我在做什么是否正确。我只想查看auto.arima的建议。

auto.arima建议(0,1,2)参数:AIC = 6759.638 SSE = 4774186 p-VALUE = 0.616866。但是,大多数其他模型的AIC值较小,例如arima(8,0,7):AIC = 6691.219 SSE = 3820932 p-VALUE = 0.9947854。或arima(3,1,7):AIC = 6709.794 SSE = 4177168 p-VALUE = 0.9993566。

我不知道我在做什么是否正确以及为什么会这样。我还检查了残差(来自STL + ARIMA(0,1,2)的残差 Q * = 39.068,df = 18,p值= 0.00279模型df:2。使用的总延迟:20)。 (STL + ARIMA(3,1,7 Q * = 5.5735,df = 10,p-value = 0.8497模型df的残差:10.使用的总滞后时间:20)任何建议如何处理这种情况?代码在下面

data.hourly.msts=msts(ts.data,seasonal.periods = 
c(24,168),start=c(1,1))
fixed.nValid=48
fixed.nTrain=length(ts.data)-fixed.nValid

datatrain.msts=window(data.hourly.msts,start=c(1,1),end=c(1,fixed.nTrain))

a <-  mstl(datatrain.msts)

b<-a[,5]


for(p in 1:10){
for(q in 1:10){
for(d in 1:2){
  if(p+d+q<=20){
    model<-arima(x=b, order = c((p-1),(d-1),(q-1)),optim.control = list(maxit = 2500),method="ML")
    pval<-Box.test(model$residuals, lag=log(length(model$residuals)))
    sse<-sum(model$residuals^2)
    cat(p-1,d-1,q-1, 'AIC=', model$aic, ' SSE=',sse,' p-VALUE=', pval$p.value,'\n')
   }
  }
 }
}


data.hourly.stlm=stlm(data.hourly.msts,s.window="periodic", 
modelfunction=Arima,order=c(8,0,7))
data.hourly.stlm.pred=forecast(data.hourly.stlm,h=48)

0 个答案:

没有答案