From: Ravi Varadhan <rvaradhan_at_jhmi.edu>

Date: Fri, 27 May 2011 11:51:39 -0400

Ravi Varadhan, Ph.D.

Assistant Professor,

Division of Geriatric Medicine and Gerontology School of Medicine Johns Hopkins University

R-help_at_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.

R-help_at_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. Received on Fri 27 May 2011 - 15:54:07 GMT

Date: Fri, 27 May 2011 11:51:39 -0400

Here is a simple demo of how to use it:

n <- 200 x <- sort(runif(n)) y <- exp(-0.2 * sin(2*pi*x)) + rnorm(n, sd=0.05)

ans <- features(x, y, fits.return=TRUE, control=list(plot.it=TRUE))

fits <- attr(ans, "fits")

plot(fits$x, fits$fits1, type="l", xlab="x", ylab="First derivative")

yexact <- -0.2 * 2*pi * cos(2*pi*x) * exp(-0.2 * sin(2*pi*x))

lines(x, yexact, col=2)

# Similarly, you can also look at the smoothed second derivative

Hope this is helpful,

Ravi.

Ravi Varadhan, Ph.D.

Assistant Professor,

Division of Geriatric Medicine and Gerontology School of Medicine Johns Hopkins University

Ph. (410) 502-2619

email: rvaradhan_at_jhmi.edu

-----Original Message-----

From: r-help-bounces_at_r-project.org [mailto:r-help-bounces_at_r-project.org] On Behalf Of nandan amar
Sent: Friday, May 27, 2011 10:44 AM

To: r-help; Dennis Murphy

Subject: Re: [R] finding derivative of a data series in R

However if we have some discrete data set like daily temperature etc
how can we can differentiate it

because as.expression(D()) will not work then

On 27 May 2011 16:52, nandan amar <nandan.amar_at_gmail.com> wrote:

> Thanks Dennis.

*> I got you.
**> My main consern was how to differentiate a series correctly.
**> I think the first procedure is more accurate.
**> Regards.
**>
**> On 27 May 2011 16:27, Dennis Murphy <djmuser_at_gmail.com> wrote:
**>> Hi:
**>>
**>> A function and its spline approximation are not equivalent functions,
**>> hence neither are their corresponding derivatives. I modified an
**>> example from the splinefun() help page to illustrate this.
**>>
**>> op <- par(mfrow = c(2, 1))
**>> x <- seq(1, 9, by = 0.01)
**>> # u is the true function, u1-u3 are its symbolic derivatives wrt x
**>> # u1 = f', u2 = f'', u3 = f'''
**>> u <- expression(sin(pi * (x - 0.5)))
**>> u1 <- as.expression(D(u, 'x'))
**>> u2 <- as.expression(D(u1, 'x'))
**>> u3 <- as.expression(D(u2, 'x'))
**>> plot(x, eval(u), type = 'l', ylim = c(-30, 30),
**>> ylab = "", xlab = "",
**>> main = expression(f(x) == sin(pi * (x - 0.5))))
**>> lines(x, eval(u1), type = 'l', col = 'red')
**>> lines(x, eval(u2), type = 'l', col = 'blue')
**>> lines(x, eval(u3), type = 'l', col = 'green')
**>> # legend('topright', legend = c("f", "f'", "f''", "f'''"),
**>> # col = c('black', 'red', 'blue', 'green'), lwd = 2)
**>>
**>> # y2 is an evaluation of u at each x point
**>> y2 <- sin((x-0.5)*pi)
**>> # Construct the spline function approximation to u
**>> f <- splinefun(x, y2)
**>> # Plot the interpolation function and its first three derivatives
**>> curve(f(x), 1, 10, col = "black", lwd = 1.5, ylim = c(-30, 30),
**>> ylab = "", main = 'Spline interpolation of f')
**>> curve(f(x, deriv=1), 1, 10, col = 'red', lwd = 1.5, add = TRUE)
**>> curve(f(x, deriv=2), 1, 10, col = 'blue', lwd = 1.5, add = TRUE)
**>> curve(f(x, deriv=3), 1, 10, col = 'green', lwd = 1.5, add = TRUE)
**>> par(op)
**>>
**>> Notice that the peaks and troughs of the derivatives of the spline
**>> approximation are not at the same x locations as in the original
**>> function. Also notice the linearity in the derivatives when x is
**>> between 9 and 10.
**>>
**>> I suppose you could improve the approximations by setting some knot
**>> points, but I don't have the time to chase down that hypothesis for
**>> you right now. I'll leave that as homework :)
**>>
**>> Your example is simpler since it is polynomial, but the concept is the
**>> same: the derivative of the interpolator shouldn't necessarily match
**>> the derivative of the function exactly. Obviously, though, you want
**>> them to be close.
**>>
**>> HTH,
**>> Dennis
**>>
**>> On Fri, May 27, 2011 at 1:23 AM, nandan amar <nandan.amar_at_gmail.com> wrote:
**>>> Dear All,
**>>> I tried following for getting derivative of a polynomial in R
**>>>
**>>> i<- -10:10
**>>> x<-i*i*i+3*i*i+2
**>>> fun_spline<-splinefun(i,x)
**>>> plot(x,type="l")
**>>> lines(x,fx_spline(x, deriv=1), col='green')
**>>> lines(x,fx_spline(x, deriv=2), col='green')
**>>>
**>>> Now when I plot
**>>> 3*i*i + 6*i and 6*i + 6
**>>> the plot was not same for first deivative.
**>>> where as the 2nd derivative was same
**>>>
**>>> Is this a correct method for getting derivative.
**>>> where am I doing wrong as first derivative lines(x,fx_spline(x,
**>>> deriv=1), col='green') is not correct.
**>>>
**>>> amar
**>>> --
**>>> Amar Kumar Nandan
**>>>
**>>> ______________________________________________
**>>> R-help_at_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.
**>>>
**>>
**>
**>
**>
**> --
**> Amar Kumar Nandan
**> Karnataka, India, 560100
**> http://aknandan.co.nr
**>
*

--

Amar Kumar Nandan

Karnataka, India, 560100

http://aknandan.co.nr

R-help_at_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.

R-help_at_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. Received on Fri 27 May 2011 - 15:54:07 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Fri 27 May 2011 - 18:10:10 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*