Tuning an exponential moving average to a moving window mean?

The alpha parameter of an exponential moving average defines the smoothing that the average applies to a time series. In a similar way, the window size of a moving window mean also defines the smoothing.

Is there some way to tune the alpha parameter such that the smoothing is approximately the same as that of a moving window mean of a given size? (Not looking for identical results, obviously, and offsets are OK). So, say tune alpha such that the resultant time series is as close as possible in shape to the result provided by a 3-month moving window?

edit: context: I'm trying to generate multiple proxy for soil moisture, from rainfall data, which abstractly represent different depths (which I'm assuming are related to long-term rainfall averages). A moving window allows me to calculate e.g total rainfall in the past 3 days, 3 months, or year, which might correspond to top few centimetres of soil, the top meter, and the extended soil column, respectively. However, a moving window requires data from the past, which isn't always available (e.g. at the start of a series). If an exponential average is used instead, then I only need to store one value for each average (the average from the previous time step), and this value can be initialised with the long-term mean.

• What kind of offset are you referring to? Jul 12, 2016 at 3:13
• @Glen_b: as in, if the peaks and troughs in the two means are shifted relative to each other. I don't have a reason to expect them to be, but I'm not sure that they wouldn't be, either. Jul 12, 2016 at 3:24
• Oh, sorry, I had assumed you meant you wanted to find an alpha parameter that implied close-together fitted(/predicted) values (close in conditional mean). Do you intend instead an alpha parameter that implies a similar level of smoothing even though the values may be quite different? (in effect, something like being close in conditional variance rather than close in conditional mean) Jul 12, 2016 at 3:42
• Oh, with your moving window mean, is that backward-looking or centered on the observation? (i.e. $\hat{y}_y=\frac{1}{k}\sum_{i=0}^{k-1} y_{t-i}$ vs $\hat{y}_y=\frac{1}{2k+1}\sum_{i=-k}^{k} y_{t-i}$) (keeping in mind that exponential smoothing is generally only looking backward) Jul 12, 2016 at 4:08
• Added some context, just in case it might help clarify the intent of the question. However, now that I think about it, I'm wondering if an exponential moving average is even valid on (exponential) rainfall data... Jul 13, 2016 at 2:37

Let $x$ be the original time series and $x_m$ be the result of smoothing with a simple moving average with some window width. Let $f(x, \alpha)$ be a function that returns a smoothed version of $x$ using smoothing parameter $\alpha$.

Define a loss function $L$ that measures the dissimilarity between the windowed moving average and the exponential moving average. A simple choice would be the squared error:

$$L(\alpha) = \|x_m - f(x, \alpha)\|^2$$

If you want the error to be invariant to shift/scaling, you could define $L$ to be something like the negative of the peak height of the normalized cross correlation.

Find the value of $\alpha$ that minimizes $L$:

$$\underset{\alpha}{\min} L(\alpha)$$

Here's an example using a noisy sinusoidal signal and the mean squared error as the loss function:

Another example using white noise as the signal:

The loss function appears to be well behaved and have a single global minimum for these two different signals, suggesting a standard 1d optimization solver could work (as I used to select $\alpha$ here). But, I haven't verified that this must be the case. If in doubt, plot the loss function and use a more sophisticated optimization method if necessary.

Edit:

Here's a plot of the optimal alpha (for exponential smoothing) as a function of window size (for simple moving average). Plotted for each of the signals shown above.

• Hrmm. So, this is a fair enough approach, but it kind of assumes that the alpha will be different for each time series, for a given window size. Is that necessarily the case? I was thinking that there might be some general analytic solution... Jul 12, 2016 at 3:27
• I hoped so too. This is just an empirical argument, but I tried for some different signals and the value of alpha could be different, even when window width was the same. Jul 12, 2016 at 3:34
• What is the window you used for these plots? Pandas' exponential moving window has a "centre of mass (com)" argument that is defined as: $\alpha = 1 / (1 + com)$, which seems to roughly match the window length in a normal moving window. Do your plots also have this relationship? Jul 14, 2016 at 5:19
• I edited the post to show the optimal alpha as a function of window size. The function is indeed smooth, but can can differ depending on the signal. The optimization took only ~1ms for 1000 samples and ~160ms for 1e6 samples, so it's not all that burdensome. But if you want to avoid it, you could generate an alpha vs. window size curve for a single, prototype signal, then use it to choose alpha for further signals. Jul 18, 2016 at 17:15
• Alternatively, you might be able to derive a closed for expression for a simple signal w/ well-defined statistics, then just accept any small innacuracies that arise from differences between the model signal and your actual signals. Jul 18, 2016 at 17:15

If I understand the question correctly, the issue is one of trying to make an exponentially decreasing weight series fit to a discrete uniform (constant weight with cutoff):

Clearly either an EWMA decreases quickly (fitting badly at older lags where the ordinary moving average still has high weight) or has a tail much further into the past, fitting the weight-distribution badly where the ordinary moving average has no weight).

Exactly which choice of $\alpha$ will do best at matching the results from uniform-weights will depend crucially on how you measure performance and (naturally) on the characteristics of the series (both ordinary moving average and EWMA would only be reasonably suitable for weakly-stationary series for example, but that covers a lot of cases with potentially different relative performance for different $\alpha$ values)

The question leaves both of these things vague, so I suspect there's not a lot more to be said than "it depends" - about either the similarity of the conditional mean or the size of the conditional variance, here.

An exponential moving average ($$EMA$$) is an IIR filter: Infinite impulse response, meaning that, technically, the "weights" vector of the $$EMA$$ is of infinite length, because an $$EMA$$ uses its own output in the previous time step as an input in the current one:

$$EMA =$$ $$\alpha$$ $$*$$ $$Close$$ $$+$$ $$(1 –$$ $$\alpha$$) $$*$$ $$EMA[1]$$

with:

• $$EMA[1]$$ the value of the EMA in the previous step
• $$Close$$ the value of your input signal in the current time step.

However, you can approximate an $$EMA$$ with a finite window length $$n$$, depending on the number of decimals you require: I refer to this thread.

It is known that the $$\alpha$$ of the $$EMA$$ is associated with window length $$n$$ like this:

$$\alpha$$ $$= 2 / (n + 1)$$

or

$$n =$$ $$(2 /$$ $$\alpha)-1$$

So an $$\alpha$$ of i.e. $$0.1$$ would correspond to a window $$n$$ of $$19$$, a window of i.e. $$n=10$$, would correspond to an $$\alpha$$ of $$0.181818...$$

And the general shape of the $$EMA$$ weights will look like this (although I would plot them in reverse order, because a window slides over a time series from left to right, if it's a causal filter).

The interesting aspect about this question is that all these different types of moving averages (SMA, EMA, LWMA, HMA, ...) are more or less the same once you express them in function of lag. I refer to this thread.

We can think of this as a hyperparameter optimization problem.

We have a target X_mean which is the target value.

We also have a loss function e.g. L2 (X_exponential - X_mean).

We are searching for a hyperparameter (alpha) for the exponential moving average to minimize loss.