Learn R Programming

ptw (version 1.9-16)

asysm: Trend estimation with asymmetric least squares

Description

Estimates a trend based on asymmetric least squares. In this case used to estimate the baseline of a given spectrum.

Usage

asysm(y, lambda = 1e+07, p = 0.001, eps = 1e-8, maxit = 25)

Arguments

y

data: either a vector or a data matrix containing spectra as rows

lambda

smoothing parameter (generally 1e5 - 1e8)

p

asymmetry parameter

eps

numerical precision for convergence

maxit

max number of iterations. If no convergence is reached, a warning is issued.

Value

An estimated baseline

Details

Asymmetric least squares (not to be confused with alternating least squares) assigns different weights to the data points that are above and below an iteratively estimated trendline, respectively. In this case, the asymmetry parameter p (0 <= p <= 1) is the weight for points above the trendline, whereas 1-p is the weight for points below it. Naturally, p should be small for estimating baselines. The parameter lambda controls the amount of smoothing: the larger it is, the smoother the trendline will be.

References

Eilers, P.H.C. Eilers, P.H.C. (2004) "Parametric Time Warping", Analytical Chemistry, 76 (2), 404 -- 411.

Boelens, H.F.M., Eilers, P.H.C., Hankemeier, T. (2005) "Sign constraints improve the detection of differences between complex spectral data sets: LC-IR as an example", Analytical Chemistry, 77, 7998 -- 8007.

Examples

Run this code
# NOT RUN {
data(gaschrom)
plot(gaschrom[1,], type = "l", ylim = c(0, 100))
lines(asysm(gaschrom[1,]), col = 2)
# }

Run the code above in your browser using DataLab