lms.filter: Least Median of Squares (LMS) filter

View source: R/lms.filter.R

lms.filterR Documentation

Least Median of Squares (LMS) filter

Description

This function extracts signals from time series by means of Least Median of Squares regression in a moving time window.

Usage

lms.filter(y, width, online = FALSE, extrapolate = TRUE)

Arguments

y

a numeric vector or (univariate) time series object.

width

a positive integer defining the window width used for fitting.
If online=FALSE (see below) this needs to be an odd integer.

online

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.

extrapolate

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.

Details

lms.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 Least Median of Squares 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).

Value

lms.filter returns an object of class robreg.filter. An object of class robreg.filter is a list containing the following components:

level

a data frame containing the extracted signal level.

slope

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, 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.

Author(s)

Roland Fried, Karen Schettlinger and Matthias Borowski

References

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.

See Also

robreg.filter

Examples

# 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 LMS filter:
y.rr <- lms.filter(y,width=41,online=FALSE)
plot(y.rr)

robfilter documentation built on Nov. 10, 2022, 5:41 p.m.