Solved – How to deal with hourly non-stationary time series data with multi-seasonality

arimamultiple-seasonalitiesrseasonalitytime series

I currently have hourly electricity demand data last for 5 years, where I used:

demand <- msts(mydata$DEMAND,seasonal.period=c(24,182.5*24,365*24),start=2012)

The plot of stl shows the data have a clear decreasing trend and seasonality, the data is also not normally distributed.

Stl plot of original time series

I tried:

  1. take seasonal difference, then take first difference
  2. log transform
  3. Box-Cox transform

All of them do not work, I still have a time series with seasonality and trend. (Do you know how to deal with this?). e.g. the plot of 40 days data after seasonal and first difference:
the plot of 40 days data after seasonal and first difference:

Then I use following code to fit the above three times series.

fit <- auto.arima(demand, seasonal=FALSE, xreg=fourier(demand, K=4))

I get ACF plot with clearly seasonal, and significant PACF plot until lag>200.

I also tried:

fit <- tbats(demand)

No improvement in residuals.

Can any one help me with this? Many thanks.

Best Answer

A couple of things.

First, you are doing a good job by including multiple seasonalities. However:

demand <- msts(mydata$DEMAND,seasonal.period=c(24,182.5*24,365*24),start=2012)

Why do you include a seasonal cycle of length 182.5*24 for hourly data, i.e., half a year? Your seasonal cycles of length 24 already match daily cycles (day vs. night), and the ones of length 365*24 match yearly ones (summer vs. winter). I do not see a need for a cycle that repeats every six months.

However, there often is a difference between weekday and weekend electricity consumption, so it would be a good idea to include a cycle of length 7*24.

Next, don't misread the stl plot. Note the grey rectangles on the right. The height is the same across all four panels in terms of y values. That is, what looks like a clear decreasing trend is a far weaker signal than the other components. Imagine rescaling the trend panel by squeezing it vertically until its grey rectangle is the same height as the grey rectangle in, say, the seasonal panel.

Finally, I would typically recommend a tbats model to model electricity demand and/or load, which is exactly what you already did. If your tbats model is not satisfactory, you will need to go farther to the frontiers of electricity load forecasting. For instance, I recommend Hong & Fan (2016). "Probabilistic electric load forecasting: A tutorial review". International Journal of Forecasting, 32(3): 914-938. You could also search for other articles on "load forecasting" in the IJF or elsewhere.

Finally, I took the liberty of adding the tag to your question. Previous posts in this tag may be helpful.