Hi, Savitzky and Golay were indeed pioneers of local least squares methods. However the SG smoother is hard to implement in practice because of missing values and problems at the boundary. Paul Eilers at Leiden has presented a very nice method for smoothing series based on penalized least squares known as Whittaker smoothing, develeoped in 1923 for life tables. Look at Analytical Chemistry (2003) 75, 3299-3304. Here is an R implementation that requires the SparseM package.
The smoothing parameter lambda, controls the amount of smoothing, and "good" values can be found by cross validation. difsm <- function(y, lambda, d){ # Smoothing with a finite difference penalty # y: signal to be smoothed # lambda: smoothing parameter # d: order of differences in penalty (generally 2) # Paul Eilers, 2002, ported from matlab by Nicholas Lewin-Koh require(SparseM) m <- length(y) E <- as(m,"matrix.diag.csr") D <- diff(E,differences=d) B <- E + (lambda * t(D)%*%D) z <- solve(B,y) z } ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html