trfilter {mFilter} | R Documentation |
Trigonometric regression filter of a time series
Description
This function uses trigonometric regression filter for estimating cyclical and trend components of a time series. The function computes cyclical and trend components of the time series using a lower and upper cut-off frequency in the spirit of a band pass filter.
Usage
trfilter(x,pl=NULL,pu=NULL,drift=FALSE)
Arguments
x |
a regular time series. |
pl |
integer. minimum period of oscillation of desired component (pl<=2). |
pu |
integer. maximum period of oscillation of desired component (2<=pl<pu<infinity). |
drift |
logical, |
Details
Almost all filters in this package can be put into the
following framework. Given a time series we are
interested in isolating component of
, denoted
with
period of oscillations between
and
, where
.
Consider the following decomposition of the time series
The component is assumed to have power only in the frequencies
in the interval
.
and
are related to
and
by
If infinite amount of data is available, then we can use the ideal bandpass filter
where the filter, , is given in terms of the lag operator
and defined as
The ideal bandpass filter weights are given by
Let be even and define
and
. The
trigonometric regression filter is based on the following relation
where and
are the coefficients obtained by
regressing
on the indicated sine and cosine
functions. Specifically,
for
for
and
for
for
Let be the trigonometric regression filter. It can
be showed that
, so that
has a unit
root for
. Also, when
is symmetric,
it has a second unit root in the middle of the data for
. 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
where is the undrifted series.
Value
A "mFilter
" object (see mFilter
).
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.
See Also
mFilter
, hpfilter
, cffilter
,
bkfilter
, bwfilter
Examples
## library(mFilter)
data(unemp)
opar <- par(no.readonly=TRUE)
unemp.tr <- trfilter(unemp, drift=TRUE)
plot(unemp.tr)
unemp.tr1 <- trfilter(unemp, drift=TRUE)
unemp.tr2 <- trfilter(unemp, pl=8,pu=40,drift=TRUE)
unemp.tr3 <- trfilter(unemp, pl=2,pu=60,drift=TRUE)
unemp.tr4 <- trfilter(unemp, pl=2,pu=40,drift=TRUE)
par(mfrow=c(2,1),mar=c(3,3,2,1),cex=.8)
plot(unemp.tr1$x,
main="Trigonometric regression filter of unemployment: Trend, drift=TRUE",
col=1, ylab="")
lines(unemp.tr1$trend,col=2)
lines(unemp.tr2$trend,col=3)
lines(unemp.tr3$trend,col=4)
lines(unemp.tr4$trend,col=5)
legend("topleft",legend=c("series", "pl=2, pu=32", "pl=8, pu=40",
"pl=2, pu=60", "pl=2, pu=40"), col=1:5, lty=rep(1,5), ncol=1)
plot(unemp.tr1$cycle,
main="Trigonometric regression filter of unemployment: Cycle,drift=TRUE",
col=2, ylab="", ylim=range(unemp.tr3$cycle,na.rm=TRUE))
lines(unemp.tr2$cycle,col=3)
lines(unemp.tr3$cycle,col=4)
lines(unemp.tr4$cycle,col=5)
## legend("topleft",legend=c("pl=2, pu=32", "pl=8, pu=40", "pl=2, pu=60",
## "pl=2, pu=40"), col=1:5, lty=rep(1,5), ncol=1)
par(opar)