Simple Exponential Smoothing: one parameter instead of many weights

SMA vs SES

In one of the comments to my previous post about the Simple Moving Average on LinkedIn, a reader mentioned that they use a Weighted Moving Average with their own weighting scheme. This can work well although defining the weights can be a nuisance: a Weighted Moving Average of order 12 needs 12 weights that someone … Read more

smooth for Python: Automatic order selection for MSARIMA

Multiple seasonal ARIMA selected for the half-hourly electricity demand series

Have you ever tried to identify ARIMA for your data? The old school Box-Jenkins methodology implies analysing ACF/PACF plots and selecting the orders iteratively. This approach has a fundamental flaw I discussed in one of my earlier posts. Brute force does not help either: even p ≤ 3, d ≤ 2, q ≤ 3 gives … Read more

The Menace of ML: Simple Moving Average

Simple Moving Average of order 8

And here is another forecasting method that is hard to beat in practice. In a recent competition, it gave data scientists huge headaches and even outperformed some powerful ML methods. What’s the name of this beast?! Simple Moving Average! The idea behind the Simple Moving Average (SMA) is to take the average of the last … Read more

Five assumptions behind “forecastability”

Example of two time series with exactly the same coefficient of variation

Here is a confession. I don’t like the idea of “forecastability”. I think it does not bring value and can be harmful in some cases. Let me explain. One of the definitions I see on the internet: “A measure of the degree to which something may be forecast with accuracy”. This definition is so disturbing … Read more

On differencing of ARIMA in state space

The model fit of MSARIMA

A reader left a comment under the MSARIMA post on LinkedIn saying that in order to compare ARIMAs via information criteria, we need to make sure that the candidate models have the same order of differencing. They are right — for the conventional ARIMA. BUT! In the state space formulation, the problem disappears. Here is … Read more

smooth in python: Multiple Seasonal ARIMA

MSARIMA model fit and point forecast

ARIMA has been a workhorse for decades. But the standard implementations quietly hard-code assumptions: one seasonal cycle, Gaussian errors, regressors handled separately etc. This is fine for textbook well-behaved data. But what do you do when you face real data? The conventional implementations (statsmodels or pmdarima in Python, stats in R) do their job well: … Read more

Another important Naïve method

Seasonal Naive depiction

There is another forecasting method that is extremely popular, hard to beat, and has no parameters to estimate. It also has “Naïve” in its name. Do you know what I’m talking about? It is called “Seasonal Naïve”. While the simple Naïve copies the last observed actual into the future as a forecast, the seasonal one … Read more

smooth in python: Multistep losses

Example of fits of ETS with several multistep losses

Why train a forecasting model on one-step-ahead errors when you care about 10-step-ahead accuracy? This is the core motivation behind multistep losses in dynamic models. This has connection with the so-called “direct forecasting strategy”. And here what it is and how to work with it in Python. Conventional maximum likelihood estimation minimises one-step-ahead errors. It … Read more