ponthu
ponthu

Reputation: 311

Daily timeseries forecasting, with weekly and annual cycle

My aim is to forecast the daily number of registrations in two different channels.

Week seasonality is quite strong, especially the weekends and also observed annual effects. Moreover, I have a few special event days, which significantly differ from the others days.

First, I applied a TBATS model on these two channels.

x.msts <- msts(Channel1_reg,seasonal.periods=c(7,365.25))
# fit model
fit <- tbats(x.msts)
fit
plot(fit)
forecast_channel1 <- forecast(fit,h=30)

First channel:

TBATS(0, {2,3}, -, {<7,3>, <365.25,2>})

Call: tbats(y = x.msts)

Parameters
  Lambda: 0
  Alpha: 0.0001804516
  Gamma-1 Values: -1.517954e-05 1.004701e-05
  Gamma-2 Values: -3.059654e-06 -2.796211e-05
  AR coefficients: 0.249944 0.544593
  MA coefficients: 0.215696 -0.361379 -0.21082

Second channel:

BATS(0, {2,2}, 0.929, -)

Call: tbats(y = y.msts)

Parameters
  Lambda: 0
  Alpha: 0.1652762
  Beta: -0.008057904
  Damping Parameter: 0.928972
  AR coefficients: -0.586163 -0.676921
  MA coefficients: 0.924758 0.743675

If I forecast the second channel, I only get blank values instead of any forecasts.

  1. Could you please help why is that so?
  2. Do you have any suggestion how to build in the specific event days into this model?

Thank you all!

Upvotes: 2

Views: 676

Answers (1)

Rob Hyndman
Rob Hyndman

Reputation: 31820

tbats and bats are occasionally unstable, and your second model is showing infinite forecasts. There are already some bug reports about similar issues.

In any case, as you want to use event information, you would be better building a harmonic regression model with ARMA errors.

For example, suppose your event information is recorded as a dummy variable event1. Then the model can be fitted as follows:

harmonics <- fourier(x.msts, K=c(2,2))
fit1 <- auto.arima(x.msts, lambda=0, 
   xreg=cbind(harmonics,event1), seasonal=FALSE)
f1 <- forecast(fit1, 
   xreg=cbind(fourierf(x.msts, K=c(2,2), h=200), rep(0,200)))

This assumes that the event will not occur in the next 200 days (hence the 200 0s). I have used harmonics of order 2 for both weeks and years. Adjust these to minimize the AICc of the model.

This model is actually very similar to the TBATS model you are fitting except that the lambda value has been specified rather than estimated, and the seasonality is fixed over time rather than being allowed to evolve. The advantage is that the harmonic regression model tends to be more stable, and allows covariates to be included.

Upvotes: 1

Related Questions