# why is an MA process equivalent to a FIR filter?

John Cook claims that a FIR filter is equivalent to an MA process.

But FIR filter is just a function of the previous inputs:

$$y_t = \phi(B)x_t$$

and an MA process is a function of the previous prediction errors, which is a function of both previous inputs and previous outputs:

$$y_t = \phi(B)\epsilon_t$$

• Don't know anything about FIR. You need to precise about the way that a model "is a function of" the outputs. Moving Average (MA) models don't use the outputs as regressors in the model. They do use the outputs to estimate the model coefficients -- as with all regressions. The more general ARMA may use lagged responses (or "outputs") as regressors in the model. Nov 11, 2019 at 19:50

## 3 Answers

MA process/model definitions slightly change across literatures. Some define it as moving average models with white noise inputs. Some just refer this noise process $$\epsilon_t$$ as input process, i.e. $$x_t$$ (as in John Cook's explanation). But the common thing is that the output depends on previous and current inputs, and nothing more. This is the same property that Finite Impulse Response (FIR) systems have. In FIR systems (just as in MA model), we can write the output as a finite length linear combination of previous and current inputs.

• thanks, but I don't get it: the text by Hyndman I linked to specifically says that MA process can be thought of as a weighted moving average of the past few **forecast errors**. why do you see $\epsilon_t$ as the input process and not the forecast error? Nov 11, 2019 at 21:14
• @ihadanny I think there are definition differences among the literature since a forecast error, as defined here, en.wikipedia.org/wiki/Forecast_error, is $y(t)-\hat{y}(t)$, and is not equal to $\epsilon_t$ because we never observe $\epsilon_t$. What Cook says is that in MA models, the output sequence can be thought of as an FIR filtering operation of a noise input sequence. Nov 12, 2019 at 10:49

I had a long discussion in dsp.stackexchange.com regarding the terminology overlap/confusion between the DSP world and the time series world.

At the end we came to the following common understandings:

1) Filter and process are different things. Filter is something that has an input and output, but it doesn't generate any data by itself. Nor it has a preference regarding what kind of input it expects. It simply filters the input and when used with an inappropriate (not designed to handle) input it simply yields something not very useful.

2) A MA process can be implemented using an FIR filter(with appropriate coefficients) by exciting the filter input with a white noise process. The output of the filter will be the desired process.

3) An AR process can be implemented using an IIR filter(with appropriate coefficients) by exciting the filter input with a white noise process. The output of the filter will be the desired process.

The article you are referring to is incorrect in the sense that it totally ignores how the filter will be excited. Time series guys don't call

$$y[n] = a_1y[n-1]+...+a_py[n-p]$$ an $$AR(p)$$ process(or model) as claimed by the article because the excitation noise of $$\epsilon[n]$$ is missing in its description.

It's true that time series models and signal processing filters are not exactly the same things. However, the same form of equation relates the noise process to the current value of a time series in an MA model as relates the input to the output of an FIR filter. That is,

time_series_or_filter_output(n) = b0 * noise_process_or_filter_input(n) + b1 * noise_process_or_filter_input(n-1) + ... + b_q * noise_process_or_flter_input(n-q)

This means that the impact of a previous value of the noise_process_or_filter_input can be felt on the current value of the time_series_or_filter_output only over finite number of time steps. To see this, consider the following MA/FIR equation:

series_or_output(n) = b0 * noise_or_input(n) + b1 * noise_or_input(n-1)

Then

series_or_output(n+1) = b0 * noise_or_input(n+1) + b1 * noise_or_input(n)

series_or_output(n+2) = b0 * noise_or_input(n+2) + b1 * noise_or_input(n+1)

So by time n+2, the noise_or_input at time n no longer has an impact on the current value of the series_or_output.

Furthermore, the same form of equation relates the past value to the current value of a time series in an AR model as relates the input to the output of an IIR filter. That is,

time_series_or_filter_output(n) = a1 * time_series_or_filter_output(n-1) + a2 * time_series_or_filter_output(n-2) + ... + a_p * time_series_or_filter_output(n-p)

This means that the impact of a previous value of the time_series_or_filter_output can be felt on the current value of the time_series_or_filter_output over infinite number of time steps. To see this, consider the following AR/IIR equation:

series_or_output(n) = a1 * series_or_output(n-1)

Then,

series_or_ouput(n+1) = a1 * series_or_output(n) = a1 * (a1 * series_or_output(n-1))

series_or_ouput(n+2) = a1 * series_or_output(n+1) = a1 * (a1 * a1 * series_or_output(n-1))

So there will never be a time when the series_or_output at time n-1 no longer has an impact on the current value of the series_or_output.