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 |
... |
Additional arguments to pass to the relevant filter
functions. These are passed to |
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 cyclical 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 |
x |
The original or drift adjusted, if |
Following additional elements may exists depending on the type of filter applied:
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 |
Mehmet Balcilar, mehmet@mbalcilar.net
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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.