Skip to contents

Baseline estimation with asymmetric least squares smoothing.

Usage

baseline_asls(x, y, ...)

# S4 method for numeric,numeric
baseline_asls(x, y, p = 0.01, lambda = 10^4, stop = 100)

# S4 method for ANY,missing
baseline_asls(x, p = 0.01, lambda = 10^4, stop = 100)

Arguments

x, y

A numeric vector. If y is missing, an attempt is made to interpret x in a suitable way (see grDevices::xy.coords()).

...

Currently not used.

p

A length-one numeric vector giving the asymmetry (\(0.001 < p < 0.1\) is a good choice for a signal with positive peaks).

lambda

A length-one numeric vector giving the smoothing parameter.

stop

An integer giving the stopping rule (i.e. maximum number of iterations).

Value

Returns a list with two components x and y.

References

Eilers, P. H. C. & Boelens, H. F. M. (2005). Baseline Correction with Asymmetric Least Squares Smoothing.

Author

P. H. C. Eilers and H. F. M. Boelens (original Matlab code)

Examples

## X-ray diffraction
data("XRD")

## Subset from 20 to 70 degrees
XRD <- signal_select(XRD, from = 20, to = 70)

## Plot spectrum
plot(XRD, type = "l", xlab = expression(2*theta), ylab = "Count")

## Polynomial baseline
baseline <- baseline_asls(XRD, p = 0.005, lambda = 10^7)

lines(baseline, type = "l", col = "red")