Theta Models | R Documentation |
Functions for forecast univariate time series using the Dynamic Optimised Theta Model, Dynamic Standard Theta Model, Optimised Theta Model and Standard Theta Model (Fiorucci et al, 2016). We also provide an implementation for the Standard Theta Method (STheta) of Assimakopoulos and Nikolopoulos (2000).
dotm(y, h=5, level=c(80,90,95), s=NULL, par_ini=c(y[1]/2, 0.5, 2), estimation=TRUE, lower=c(-1e+10, 0.1, 1.0), upper=c(1e+10, 0.99, 1e+10), opt.method="Nelder-Mead", xreg=NULL) dstm(y, h=5, level=c(80,90,95), s=NULL, par_ini=c(y[1]/2, 0.5), estimation=TRUE, lower=c(-1e+10, 0.1), upper=c(1e+10, 0.99), opt.method="Nelder-Mead", xreg=NULL) otm(y, h=5, level=c(80,90,95), s=NULL, par_ini=c(y[1]/2, 0.5, 2), estimation=TRUE, lower=c(-1e+10, 0.1, 1.0), upper=c(1e+10, 0.99, 1e+10), opt.method="Nelder-Mead", xreg=NULL) stm(y, h=5, level=c(80,90,95), s=NULL, par_ini=c(y[1]/2, 0.5), estimation=TRUE, lower=c(-1e+10, 0.1), upper=c(1e+10, 0.99), opt.method="Nelder-Mead", xreg=NULL) stheta(y, h=5, s=NULL)
y |
Object of time series class. |
h |
Number of required forecasting periods. |
level |
Levels for prediction intervals. |
s |
If |
par_ini |
Vector of initialization for |
estimation |
If |
lower |
The lower limit of parametric space. |
upper |
The upper limit of parametric space. |
opt.method |
The numeric optimisation method for |
xreg |
A matrix with the regressor variables including the out-of-sample data. |
By default (s=NULL
), the 90% significance seasonal Z-test, used by Assimakopoulos and Nikolopoulos (2000), is applied for quarterly and monthly time series.
For details of each model see Fiorucci et al, 2016.
If you are looking for the methods presented in the arXiv paper (Fiorucci et al, 2015), see otm.arxiv()
function.
An object of thetaModel
class with one list containing the elements:
$method |
The name of the model/method |
$y |
The original time series. |
$s |
A binary indication for seasonal decomposition. |
type |
Classical seasonal decomposition type. |
opt.method |
The optimisation method used in the |
$par |
The estimated values for |
$weights |
The estimated weights values. |
$fitted |
A time series element with the fitted points. |
$residuals |
A time series element with the residual points. |
$mean |
The forecasting values. |
$level |
The levels for prediction intervals. |
$lower |
Lower limits for prediction intervals. |
$upper |
Upper limits for prediction intervals. |
$tests |
The p.value of Teraesvirta Neural Network test applied on unseasoned time series and the p.value of Shapiro-Wilk test applied on unseasoned residuals. |
Jose Augusto Fiorucci, Francisco Louzada
Fiorucci J.A., Pellegrini T.R., Louzada F., Petropoulos F., Koehler, A. (2016). Models for optimising the theta method and their relationship to state space models, International Journal of Forecasting, 32 (4), 1151–1161, <doi:10.1016/j.ijforecast.2016.02.005>.
Assimakopoulos, V. and Nikolopoulos k. (2000). The theta model: a decomposition approach to forecasting. International Journal of Forecasting 16, 4, 521–530, <doi:10.1016/S0169-2070(00)00066-2>.
forecTheta-package
, otm.arxiv
y1 = 2+ 0.15*(1:20) + rnorm(20) y2 = y1[20]+ 0.3*(1:30) + rnorm(30) y = as.ts(c(y1,y2)) out <- dotm(y, h=10) summary(out) plot(out) #### additive seasonal decomposition ### x = sin(2*pi*seq(0,9,len=300)) + exp((1:300)/150) + rnorm(mean=0,sd=0.5,n=300) y = ts(x, frequency=33) out <- dotm(y, h=50, s='additive') summary(out) plot(out) # ######################################################### # ######### Reproducing the M3 results by DOTM ############ # ######################################################### # # library(Mcomp) # data(M3) # # forec = matrix(NA, nrow=3003, ncol=18) # obs = matrix(NA, nrow=3003, ncol=18) #matrix of the out-sample values # meanDiff <- rep(1, 3003) # # for(i in 1:3003){ # x=M3[[i]]$x # h=M3[[i]]$h # out = dotm(x,h,level=NULL) # forec[i,1:h] = out$mean # obs[i,1:h] = M3[[i]]$xx # meanDiff[i] = mean(abs(diff(x, lag = frequency(x)))) # } # # ############## sMAPE ################### # sAPE_matrix = errorMetric(obs=obs, forec=forec, type="sAPE", statistic="N") # #### Yearly ### # mean( sAPE_matrix[1:645, 1:6] ) # #### QUARTERLY ### # mean( sAPE_matrix[646:1401, 1:8] ) # #### MONTHLY ### # mean( sAPE_matrix[1402:2829, 1:18] ) # #### Other ### # mean( sAPE_matrix[2830:3003, 1:8] ) # #### ALL ### # mean( sAPE_matrix, na.rm=TRUE ) # # # ############# MASE ###################### # AE_matrix = errorMetric(obs=obs, forec=forec, type="AE", statistic="N") # ASE_matrix=AE_matrix/meanDiff # #### Yearly ### # mean( ASE_matrix[1:645, 1:6] ) # #### QUARTERLY ### # mean( ASE_matrix[646:1401, 1:8] ) # #### MONTHLY ### # mean( ASE_matrix[1402:2829, 1:18] ) # #### Other ### # mean( ASE_matrix[2830:3003, 1:8] ) # #### ALL ### # mean( ASE_matrix, na.rm=TRUE ) # ########################################################
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.