mFilter {mFilter} | R Documentation |
mFilter
is a generic function for filtering
time series data. The function invokes particular
filters which depend on filter type specified via its argument
filter
. The filters implemented in the package mFilter
package are useful for smoothing, and estimating tend and cyclical components.
Some of these filters are commonly used in economics and
finance for estimating cyclical component of time series.
The mFilter
currently applies only to time series
objects. However a default method is available and should work for any
numeric
or vector
object.
mFilter(x, ...) ## Default S3 method: mFilter(x, ...) ## S3 method for class 'ts': mFilter(x, filter=c("HP","BK","CF","BW","TR"), ...)
x |
a regular a time series. |
filter |
filter type, the filter types are "HP"
(Hodrick-Prescott), "BK" (Baxter-King), "CF"
(Christiano-Fitzgerald), "BW" (Butterworth), and "TR"
(trigonometric regression). |
... |
Additional arguments to pass to the relevant filter
functions. These are passed to hpfilter , bkfilter ,
cffilter , bwfilter , and trfilter , respectively for
the "HP" , "BK" , "CF" , "BW" , and "TR" filters. |
The default behaviour is to apply the default filter to
ts
objects.
An object of class "mFilter
".
The function summary
is used to obtain and print a summary of the
results, while the function plot
produces a plot of the original
series, the trend, and the cyclical components. The function print
is also available
for displaying estimation results.
The generic accessor functions fitted
and residuals
extract estimated trend and cylclical componets of an "mFilter
"
object, respectively.
An object of class "mFilter
" is a list containing at least the following elements:
cycle |
Estimated cyclical (irregular) component of the series. |
trend |
Estimated trend (smooth) component of the series. |
fmatrix |
The filter matrix applied to original series. |
method |
The method, if available, for the filter type applied. |
type |
The filter type applied to the series. |
call |
Call to the function. |
title |
The title for displaying results. |
xname |
Name of the series passed to mFilter for filtering. |
x |
The original or drift adjusted, if drift=TRUE , time series passed to the mFilter . |
nfix |
Length or order of the fixed length filters. |
pl |
Minimum period of oscillation of desired component (2<=pl). |
pu |
Maximum period of oscillation of desired component (2<=pl<pu<infinity). |
lambda |
Lambda (smoothness) parameter of the HP filter. |
root |
Whether time series has a unit root, TRUE or FALSE (default). |
drift |
Whether time series has drift, TRUE or FALSE (default). |
theta |
MA coefficients for time series model, used in "CF" filter. |
Mehmet Balcilar, mbalcilar@yahoo.com
Other functions which return objects of class "mFilter"
are
bkfilter
,
bwfilter
,
cffilter
,
bkfilter
,
trfilter
.
Following functions apply the relevant methods to an object of the
"mFilter"
class:
print.mFilter
,
summary.mFilter
,
plot.mFilter
,
fitted.mFilter
,
residuals.mFilter
.
## library(mFilter) data(unemp) opar <- par(no.readonly=TRUE) unemp.hp <- mFilter(unemp,filter="HP") # Hodrick-Prescott filter print(unemp.hp) summary(unemp.hp) residuals(unemp.hp) fitted(unemp.hp) plot(unemp.hp) unemp.bk <- mFilter(unemp,filter="BK") # Baxter-King filter unemp.cf <- mFilter(unemp,filter="CF") # Christiano-Fitzgerald filter unemp.bw <- mFilter(unemp,filter="BW") # Butterworth filter unemp.tr <- mFilter(unemp,filter="TR") # Trigonometric regression filter par(mfrow=c(2,1),mar=c(3,3,2,1),cex=.8) plot(unemp,main="Unemployment Series & Estimated Trend", col=1, ylab="") lines(unemp.hp$trend,col=2) lines(unemp.bk$trend,col=3) lines(unemp.cf$trend,col=4) lines(unemp.bw$trend,col=5) lines(unemp.tr$trend,col=6) legend("topleft",legend=c("series", "HP","BK","CF","BW","TR"), col=1:6,lty=rep(1,6),ncol=2) plot(unemp.hp$cycle,main="Estimated Cyclical Component", ylim=c(-2,2.5),col=2,ylab="") lines(unemp.bk$cycle,col=3) lines(unemp.cf$cycle,col=4) lines(unemp.bw$cycle,col=5) lines(unemp.tr$cycle,col=6) ## legend("topleft",legend=c("HP","BK","CF","BW","TR"), ## col=2:6,lty=rep(1,5),ncol=2) unemp.cf1 <- mFilter(unemp,filter="CF", drift=TRUE, root=TRUE) unemp.cf2 <- mFilter(unemp,filter="CF", pl=8,pu=40,drift=TRUE, root=TRUE) unemp.cf3 <- mFilter(unemp,filter="CF", pl=2,pu=60,drift=TRUE, root=TRUE) unemp.cf4 <- mFilter(unemp,filter="CF", pl=2,pu=40,drift=TRUE, root=TRUE,theta=c(.1,.4)) plot(unemp, main="Christiano-Fitzgerald filter of unemployment: Trend \n root=TRUE,drift=TRUE", col=1, ylab="") lines(unemp.cf1$trend,col=2) lines(unemp.cf2$trend,col=3) lines(unemp.cf3$trend,col=4) lines(unemp.cf4$trend,col=5) legend("topleft",legend=c("series", "pl=2, pu=32", "pl=8, pu=40", "pl=2, pu=60", "pl=2, pu=40, theta=.1,.4"), col=1:5, lty=rep(1,5), ncol=1) plot(unemp.cf1$cycle, main="Christiano-Fitzgerald filter of unemployment: Cycle \n root=TRUE,drift=TRUE", col=2, ylab="", ylim=range(unemp.cf3$cycle)) lines(unemp.cf2$cycle,col=3) lines(unemp.cf3$cycle,col=4) lines(unemp.cf4$cycle,col=5) ## legend("topleft",legend=c("pl=2, pu=32", "pl=8, pu=40", "pl=2, pu=60", ## "pl=2, pu=40, theta=.1,.4"), col=2:5, lty=rep(1,4), ncol=2) par(opar)