#Setup set.seed(1) library(fpp) # To load the data set a10 HZ <- 12 myControl <- list( minObs=60, stepSize=1, maxHorizon=HZ, fixedWindow=FALSE, summaryFunc=tsSummary ) #Linear model LM <- cv.ts(a10, lmForecast, tsControl=myControl, lambda=0) LM plot(LM[1:HZ,'MAE'],col=1,type='l',ylim=c(0.65,10), ylab='MAE', xlab='Horizon') legend("topleft",legend=c('LM','Arima','ETS','RW','Theta','STS','stlETS','stlAR','Mean'), col=1:9,lty=1) #Arima AR <- cv.ts(a10, arimaForecast, tsControl=myControl, order=c(3,0,1), seasonal=list(order=c(0,1,1), period=12), include.drift=TRUE, lambda=0, method="ML") AR lines(AR[1:HZ,'MAE'],col=2,type='l') #ETS ETS <- cv.ts(a10, etsForecast, tsControl=myControl, model="MMM", damped=TRUE) ETS lines(ETS[1:HZ,'MAE'],col=3,type='l') #Random Walk model RW <- cv.ts(a10, rwForecast, tsControl=myControl, lambda=0) RW lines(RW[1:HZ,'MAE'],col=4,type='l', ylab='MAE', xlab='Horizon') #Theta model TM <- cv.ts(a10, thetaForecast, tsControl=myControl) TM lines(TM[1:HZ,'MAE'],col=5,type='l', ylab='MAE', xlab='Horizon') #StructTS sts <- cv.ts(a10, stsForecast, tsControl=myControl) sts lines(sts[1:HZ,'MAE'],col=6,type='l', ylab='MAE', xlab='Horizon') #stl (ets) stlETS <- cv.ts(a10, stl.etsForecast, tsControl=myControl) stlETS lines(stlETS[1:HZ,'MAE'],col=7,type='l', ylab='MAE', xlab='Horizon') #stl (arima) stlAR <- cv.ts(a10, stl.arimaForecast, tsControl=myControl) stlAR lines(stlAR[1:HZ,'MAE'],col=8,type='l', ylab='MAE', xlab='Horizon') #Mean model MM <- cv.ts(a10, meanForecast, tsControl=myControl, lambda=0) MM lines(MM[1:HZ,'MAE'],col=9,type='l', ylab='MAE', xlab='Horizon') #Smaller Plot #http://robjhyndman.com/researchtips/tscvexample/ plot(LM[1:HZ,'MAE'],col=1,type='l',ylim=c(0.65,1.15), ylab='MAE', xlab='Horizon') lines(AR[1:HZ,'MAE'],col=2,type='l') lines(ETS[1:HZ,'MAE'],col=3,type='l') lines(sts[1:HZ,'MAE'],col=6,type='l', ylab='MAE', xlab='Horizon') lines(stlETS[1:HZ,'MAE'],col=7,type='l', ylab='MAE', xlab='Horizon') lines(stlAR[1:HZ,'MAE'],col=8,type='l', ylab='MAE', xlab='Horizon') legend("topleft",legend=c('LM','Arima','ETS','STS','stlETS','stlAR'), col=c(1:3,6:8),lty=1) #Replicate RH plot #http://robjhyndman.com/researchtips/tscvexample/ plot(1:12,LM[1:HZ,'MAE'], type="l", col=2, xlab="horizon", ylab="MAE", ylim=c(0.65,1.05)) lines(1:12, AR[1:HZ,'MAE'], type="l",col=3) lines(1:12, ETS[1:HZ,'MAE'], type="l",col=4) legend("topleft",legend=c("LM","ARIMA","ETS"),col=2:4,lty=1)