This may be overkill for your application, but you might be interested in the "fda" package, for which a new book appeared a couple of months ago: "Functional Data Analysis with R and Matlab" (Springer Use R! series, by Ramsay, Hooker and Graves; I'm the third author). The package includes a "scripts" subdirectory with R code to recreate all but one of the 76 figures in the book. [To find this "scripts" directory, use "system.file('scripts', package='fda')".]

Functional data analysis generalizes spline smoothing in two important ways:

(1) It supports the use of an arbitrary finite basis set to approximate elements of a function space; spline smoothing uses splines only, usually cubic splines. The first derivative of a cubic spline is piecewise quadratic, and the second derivative is piecewise linear. If you want something smoother than linear, you need at least a quartic spline, and Ramsay has recommended quintics -- degree 5 polynomials = order 6 spline.

(2) It allows the curve to be smoothed using an arbitrary linear differential operator, not just the second derivative. This can be important if you have theory saying that the "truth" should follow a particular differential equation. Otherwise, if you want to estimate the second derivative, Ramsay has recommended smoothing with the fourth derivative rather than the second. (In any event, smoothing is achieved by penalized least squares with the penalty being proportional to the integral of the square of the chosen linear differential operator.)

To reinforce this second point, chapter 11 of "Functional Data Analysis with R and Matlab" describes "functional differential analysis", which will estimate non-constant coefficients in a differential equation model.

Hope this helps. Spencer Graves


Liaw, Andy wrote:
From: Rolf Turner
On 8/09/2009, at 9:07 PM, FMH wrote:

Dear All,

I'm looking for a way on computing the derivative of first and second order of a smoothing curve produced by a nonprametric regression. For instance, if we run the R script below, a smooth nonparametric regression curve is produced.

provide.data(trawl)
Zone92   <- (Year == 0 & Zone == 1)
Position <- cbind(Longitude - 143, Latitude)
dimnames(Position)[[2]][1] <- "Longitude - 143"
sm.regression(Longitude, Score1, method = "aicc", col = "red", model = "linear")

Could someone please give some hints on the way to find the derivative on the curve at some points ?
See

        ?smooth.spline
and
        ?predict.smooth.spline

Since sm.regression() (from the sm package, I presume) uses kernel
methods, a kernel-based estimator of derivatives is available in the
KernSmooth package.

Andy
        cheers,

                Rolf Turner

######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Notice:  This e-mail message, together with any attachme...{{dropped:12}}

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



--
Spencer Graves, PE, PhD
President and Chief Operating Officer
Structure Inspection and Monitoring, Inc.
751 Emerson Ct.
San José, CA 95126
ph:  408-655-4567

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to