我在确定为什么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)