hpfilter {mFilter} | R Documentation |
Hodrick-Prescott filter of a time series
Description
This function implements the Hodrick-Prescott for estimating cyclical and trend component of a time series. The function computes cyclical and trend components of the time series using a frequency cut-off or smoothness parameter.
Usage
hpfilter(x,freq=NULL,type=c("lambda","frequency"),drift=FALSE)
Arguments
x |
a regular time series. |
type |
character, indicating the filter type,
|
freq |
integer, if |
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
The Hodrick-Prescott filter obtains the filter weights
as a solution to
The Hodrick-Prescott filter is a finite data approximation with following moving average weights
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
, bwfilter
, cffilter
,
bkfilter
, trfilter
Examples
## library(mFilter)
data(unemp)
opar <- par(no.readonly=TRUE)
unemp.hp <- hpfilter(unemp)
plot(unemp.hp)
unemp.hp1 <- hpfilter(unemp, drift=TRUE)
unemp.hp2 <- hpfilter(unemp, freq=800, drift=TRUE)
unemp.hp3 <- hpfilter(unemp, freq=12,type="frequency",drift=TRUE)
unemp.hp4 <- hpfilter(unemp, freq=52,type="frequency",drift=TRUE)
par(mfrow=c(2,1),mar=c(3,3,2,1),cex=.8)
plot(unemp.hp1$x, ylim=c(2,13),
main="Hodrick-Prescott filter of unemployment: Trend, drift=TRUE",
col=1, ylab="")
lines(unemp.hp1$trend,col=2)
lines(unemp.hp2$trend,col=3)
lines(unemp.hp3$trend,col=4)
lines(unemp.hp4$trend,col=5)
legend("topleft",legend=c("series", "lambda=1600", "lambda=800",
"freq=12", "freq=52"), col=1:5, lty=rep(1,5), ncol=1)
plot(unemp.hp1$cycle,
main="Hodrick-Prescott filter of unemployment: Cycle,drift=TRUE",
col=2, ylab="", ylim=range(unemp.hp4$cycle,na.rm=TRUE))
lines(unemp.hp2$cycle,col=3)
lines(unemp.hp3$cycle,col=4)
lines(unemp.hp4$cycle,col=5)
## legend("topleft",legend=c("lambda=1600", "lambda=800",
## "freq=12", "freq=52"), col=1:5, lty=rep(1,5), ncol=1)
par(opar)