[R] Taking the derivative of a quadratic B-spline

Duncan Murdoch murdoch at stats.uwo.ca
Tue Jul 19 21:07:23 CEST 2005


On 7/19/2005 2:53 PM, James McDermott wrote:
> Hello,
> 
> I have been trying to take the derivative of a quadratic B-spline
> obtained by using the COBS library.  What I would like to do is
> similar to what one can do by using
> 
> fit<-smooth.spline(cdf)
> xx<-seq(-10,10,.1)
> predict(fit, xx, deriv = 1)
> 
> The goal is to fit the spline to data that is approximating a
> cumulative distribution function (e.g. in my example, cdf is a
> 2-column matrix with x values in column 1 and the estimate of the cdf
> evaluated at x in column 2) and then take the first derivative over a
> range of values to get density estimates.
> 
> The reason I don't want to use smooth.spline is that there is no way
> to impose constraints (e.g. >=0, <=1, and monotonicity) as there is
> with COBS.  However, since COBS doesn't have the 'deriv =' option, the
> only way I can think of doing it with COBS is to evaluate the
> derivatives numerically.

Numerical estimates of the derivatives of a quadratic should be easy to 
obtain accurately.  For example, if the quadratic ax^2 + bx + c is 
defined on [-1, 1], then the derivative 2ax + b, has 2a = f(1) - f(0) + 
f(-1), and b = (f(1) - f(-1))/2.

You should be able to generalize this to the case where the spline is 
quadratic between knots k1 and k2 pretty easily.

Duncan Murdoch




More information about the R-help mailing list