My problem is most probably trivial. Many books and articles present informations about single and multiple seasonal patterns or single/multiple seasonality. Unfortunately I can't understand the difference. I'd like to ask for a hint to follow.

@EDIT. Picture added for an exercise.

enter image description here


Here's an explanation by example:

  • Weekly fashion retail sales data will usually have a single seasonal pattern: People buy coats in Winter and T-shirts in Summer, so each product will have a single seasonal pattern that repeats over 12 months/52 weeks.

  • Traffic levels will have at least 3 seasonal patterns: A daily pattern of spikes at 8:00 AM and then again at 17:00 PM, a Weekly pattern of dense traffic on Weekdays and light traffic on Weekends, and a yearly pattern of dense traffic during most periods and lighter traffic during annual holidays and vacation periods.

I agree with you that the term seasonality is misleading: Since it comes from "season", one assumes that it denotes yearly patterns by definition. It seems somewhat dissonant to refer to something that repeats every 24 hours as a "seasonal" pattern. But that is the most common term in time series modelling. The word cycle, which would normally be a more logical choice, has a different meaning in time series modelling: It is a pattern that repeats at irregular intervals. I have seen a couple of ML Time Series frameworks use the term periodicity instead of seasonality, which makes more sense. But I haven't seen any widespread adoption of that term.

(Updating answer to respond to a related question in the comments)

The follow up question is effectively: How do I figure if my time series is seasonal or not? If it is how do I figure out the seasonal components?

  • The most common way to determine the seasonal patterns is to use domain knowledge. To elaborate on the fashion retail example I mentioned earlier, we know that warm weather cloths will peak during the summer, cold weather clothes will peak during the winter, and even "weather neutral" items such as accessories will still see spikes around Christmas/New Years. So we just assume Yearly seasonality across the board.

  • If for some reason your are not sure about the seasonal patterns in your series, there are theoretical approaches to trying to estimate them, but from a practical point of view, there are easier ways. Many contemporary forecasting tools include an automatic model selection process that will try to figure out on its own whether a seasonal model is a better fit, or a non seasonal model is a better fit. If you are not sure whether you have no seasonality or at most one seasonal pattern, then ETS() or auto.arima() are good choices. If you think you might have multiple seasonalities, then you can use TBATS or Facebook Prophet. Make sure that you don't force any seasonalities by keeping the default arguments to the fitting method of the package (the default settings are usually the ones that assume automatic model selection is required). Even if the model doesn't perform well overall, using the above mention hack will give you a good baselines for your seasonal patterns on top of which you can build more sophisticated models if required.

  • $\begingroup$ That's a clean answer, thank you. Let's have the plot I added to the main post, so I can say that multiple seasonality is present, more formally double seasonality. Am i right? $\endgroup$ – Tom Jun 19 '20 at 18:27
  • 1
    $\begingroup$ @Tom not sure. Based on the graph alone, that might be either complex seasonal patterns or just a non-seasonal signal with very high variance. The most common way to determine the seasonal patterns is to use domain knowledge (similar to how we determined that fashion retail products will have a single yearly seasonality). If for some reason your are not sure about the seasonal patterns in your series, then I recommend trying to fit a TBATS model or an FB Prophet model to your data. Make sure you don't change any of the default settings, since if no seasonality arguments are provided... $\endgroup$ – Skander H. Jun 19 '20 at 19:08
  • 1
    $\begingroup$ TBATS and Prophet will try to figure out on their own how many seasonalities are present. The goodness of fit criteria they use for that is pretty robust, so that even if your overall model is suboptimal, you at least have a good baseline estimate of the seasonalities. $\endgroup$ – Skander H. Jun 19 '20 at 19:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.