This function extracts signals from time series by means of Repeated Median regression in a moving time window.
rm.filter(y, width, minNonNAs = 5, online = FALSE, extrapolate = TRUE)
rm.filter
returns an object of class robreg.filter
.
An object of class robreg.filter
is a list containing the
following components:
a data frame containing the extracted signal level.
a data frame containing the corresponding slope within each time window.
In addition, the original input time series is returned as list
member y
, and the settings used for the analysis are
returned as the list members width
, minNonNAs
,
online
and extrapolate
.
Application of the function plot
to an object of class
robreg.filter
returns a plot showing the original time series
with the filtered output.
a numeric vector or (univariate) time series object.
a positive integer defining the window width used for fitting.
If online=FALSE
(see below) this needs to be an odd integer.
a positive integer defining the minimum number of non-missing observations within one window which is required for a ‘sensible’ estimation.
a logical indicating whether the current level estimate is
evaluated at the most recent time within each time window
(TRUE
) or centred within each window (FALSE
).
Setting online=FALSE
requires the width
to be odd.
Default is online=FALSE
.
a logical indicating whether the level
estimations should be extrapolated to the edges of the time series.
If online=FALSE
the extrapolation consists of the
fitted values within the first half of the first window and the
last half of the last window; if online=TRUE
the
extrapolation consists of the fitted values within the first
time window.
Roland Fried, Karen Schettlinger and Matthias Borowski
rm.filter
is suitable for extracting low
frequency components (the signal) from a time series which
may be contaminated with outliers and can contain level shifts.
For this, robust Repeated Median regression is applied to a moving
window, and the signal level is estimated by the fitted value
either at the end of each time window for online signal
extraction without time delay (online=TRUE
) or in the
centre of each time window (online=FALSE
).
Davies, P.L., Fried, R., Gather, U. (2004)
Robust Signal Extraction for On-Line Monitoring Data,
Journal of Statistical Planning and Inference 122,
65-78.
Gather, U., Schettlinger, K., Fried, R. (2006)
Online Signal Extraction by Robust Linear Regression,
Computational Statistics 21(1),
33-51.
Schettlinger, K., Fried, R., Gather, U. (2006) Robust Filters for Intensive Care Monitoring: Beyond the Running Median, Biomedizinische Technik 51(2), 49-56.
robreg.filter,scarm.filter,adore.filter,madore.filter
# Generate random time series:
y <- cumsum(runif(500)) - .5*(1:500)
# Add jumps:
y[200:500] <- y[200:500] + 5
y[400:500] <- y[400:500] - 7
# Add noise:
n <- sample(1:500, 30)
y[n] <- y[n] + rnorm(30)
# Online filtering with RM filter:
y.rr <- rm.filter(y,width=41,online=TRUE)
plot(y.rr)
Run the code above in your browser using DataLab