Значения AIC для auto.arima - PullRequest
0 голосов
/ 10 января 2019

У меня проблема с определением, почему auto.arima предлагает конкретные коэффициенты. У меня есть временные ряды с несколькими сезонностями, и я пытаюсь прогнозировать будущие значения, используя STL + ARIMA. Я следил за книгой Хиндмана (https://otexts.org/fpp2/complexseasonality.html). Однако во всех примерах, с которыми я сталкивался, я вижу функцию auto.arima вместо указания параметров Arima.

Я в основном использовал функцию mstl(), чтобы получить остатки от Лесс, а затем попытался оценить параметры 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. или арима (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-значение = 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)
...