#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)