# mFilter-package: Getting started with the mFilter package In mFilter: Miscellaneous Time Series Filters

## Description

Getting started with the mFilter package

## Details

This package provides some tools for decomposing time series into trend (smooth) and cyclical (irregular) components. The package implements come commonly used filters such as the Hodrick-Prescott, Baxter-King and Christiano-Fitzgerald filter.

library(mFilter)

A good place to start learning the package usage is to examine examples for the mFilter function. At the R prompt, write:

example("mFilter")

For a full list of functions exported by the package, type:

ls("package:mFilter")

Each exported function has a corresponding man page (some man pages are common to more functions). Display it by typing

help(functionName).

Almost all filters in this package can be put into the following framework. Given a time series \{x_t\}^T_{t=1} we are interested in isolating component of x_t, denoted y_t with period of oscillations between p_l and p_u, where 2 ≤ p_l < p_u < ∞.

Consider the following decomposition of the time series

x_t = y_t + \bar{x}_t

The component y_t is assumed to have power only in the frequencies in the interval \{(a,b) \cup (-a,-b)\} \in (-π, π). a and b are related to p_l and p_u by

a=\frac{2 π}{p_u}\ \ \ \ \ {b=\frac{2 π}{p_l}}

If infinite amount of data is available, then we can use the ideal bandpass filter

y_t = B(L)x_t

where the filter, B(L), is given in terms of the lag operator L and defined as

B(L) = ∑^∞_{j=-∞} B_j L^j, \ \ \ L^k x_t = x_{t-k}

The ideal bandpass filter weights are given by

B_j = \frac{\sin(jb)-\sin(ja)}{π j}

B_0=\frac{b-a}{π}

The finite sample approximation to the ideal bandpass filter uses the alternative filter

y_t = \hat{B}(L)x_t=∑^{n_2}_{j=-n_1}\hat{B}_{t,j} x_{t+j}

Here the weights, \hat{B}_{t,j}, of the approximation is a solution to

\hat{B}_{t,j}= \arg \min E \{ (y_t-\hat{y}_t)^2 \}

The Christiano-Fitzgerald filter is a finite data approximation to the ideal bandpass filter and minimizes the mean squared error defined in the above equation.

Several band-pass approximation strategies can be selected in the function cffilter. The default setting of cffilter returns the filtered data \hat{y_t} associated with the unrestricted optimal filter assuming no unit root, no drift and an iid filter.

If theta is not equal to 1 the series is assumed to follow a moving average process. The moving average weights are given by theta. The default is theta=1 (iid series). If theta=(θ_1, θ_2, …) then the series is assumed to be

x_t = μ + 1_{root} x_{t-1} + θ_1 e_t + θ_2 e_{t-1} + …

where 1_{root}=1 if the option root=1 and 1_{root}=0 if the option root=0, and e_t is a white noise.

The Baxter-King filter is a finite data approximation to the ideal bandpass filter with following moving average weights

y_t = \hat{B}(L)x_t=∑^{n}_{j=-n}\hat{B}_{j} x_{t+j}=\hat{B}_0 x_t + ∑^{n}_{j=1} \hat{B}_j (x_{t-j}+x_{t+j})

where

\hat{B}_j=B_j-\frac{1}{2n+1}∑^{n}_{j=-n} B_{j}

The Hodrick-Prescott filter obtains the filter weights \hat{B}_j as a solution to

\hat{B}_{j}= \arg \min E \{ (y_t-\hat{y}_t)^2 \} = \arg \min ≤ft\{ ∑^{T}_{t=1}(y_t-\hat{y}_{t})^2 + λ∑^{T-1}_{t=2}(\hat{y}_{t+1}-2\hat{y}_{t}+\hat{y}_{t-1})^2 \right\}

The Hodrick-Prescott filter is a finite data approximation with following moving average weights

\hat{B}_j=\frac{1}{2π}\int^{π}_{-π} \frac{4λ(1-\cos(ω))^2}{1+4λ(1-\cos(ω))^2}e^{i ω j} d ω

The digital version of the Butterworth highpass filter is described by the rational polynomial expression (the filter's z-transform)

\frac{λ(1-z)^n(1-z^{-1})^n}{(1+z)^n(1+z^{-1})^n+λ(1-z)^n(1-z^{-1})^n}

The time domain version can be obtained by substituting z for the lag operator L.

Pollock (2000) derives a specialized finite-sample version of the Butterworth filter on the basis of signal extraction theory. Let s_t be the trend and c_t cyclical component of y_t, then these components are extracted as

y_t=s_t+c_t=\frac{(1+L)^n}{(1-L)^d}ν_t+(1-L)^{n-d}\varepsilon_t

where ν_t \sim N(0,σ_ν^2) and \varepsilon_t \sim N(0,σ_\varepsilon^2).

Let T be even and define n_1=T/p_u and n_2=T/p_l. The trigonometric regression filter is based on the following relation

{y}_t=∑^{n_1}_{j=n_2}≤ft\{ a_j \cos(ω_j t) + b_j \sin(ω_j t) \right\}

where a_j and b_j are the coefficients obtained by regressing x_t on the indicated sine and cosine functions. Specifically,

a_j=\frac{T}{2}∑^{T}_{t=1}\cos(ω_j t) x_t,\ \ \ for j=1,…,T/2-1

a_j=\frac{T}{2}∑^{T}_{t=1}\cos(π t) x_t,\ \ \ for j=T/2

and

b_j=\frac{T}{2}∑^{T}_{t=1}\sin(ω_j t) x_t,\ \ \ for j=1,…,T/2-1

b_j=\frac{T}{2}∑^{T}_{t=1}\sin(π t) x_t,\ \ \ for j=T/2

Let \hat{B}(L) x_t be the trigonometric regression filter. It can be showed that \hat{B}(1)=0, so that \hat{B}(L) has a unit root for t=1,2,…,T. Also, when \hat{B}(L) is symmetric, it has a second unit root in the middle of the data for t. Therefore it is important to drift adjust data before it is filtered with a trigonometric regression filter.

If drift=TRUE the drift adjusted series is obtained as

\tilde{x}_{t}=x_t-t≤ft(\frac{x_{T}-x_{1}}{T-1}\right), \ \ t=0,1,…,T-1

where \tilde{x}_{t} is the undrifted series.

## Author(s)

Mehmet Balcilar, mehmet@mbalcilar.net

## References

M. Baxter and R.G. King. Measuring business cycles: Approximate bandpass filters. The Review of Economics and Statistics, 81(4):575-93, 1999.

L. Christiano and T.J. Fitzgerald. The bandpass filter. International Economic Review, 44(2):435-65, 2003.

J. D. Hamilton. Time series analysis. Princeton, 1994.

R.J. Hodrick and E.C. Prescott. Postwar US business cycles: an empirical investigation. Journal of Money, Credit, and Banking, 29(1):1-16, 1997.

R.G. King and S.T. Rebelo. Low frequency filtering and real business cycles. Journal of Economic Dynamics and Control, 17(1-2):207-31, 1993.

D.S.G. Pollock. Trend estimation and de-trending via rational square-wave filters. Journal of Econometrics, 99:317-334, 2000.

mFilter-methods for listing all currently available mFilter methods. For help on common interface function "mFilter", mFilter. For individual filter function usage, bwfilter, bkfilter, cffilter, hpfilter, trfilter.