Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to calculate first derivative of time series

Tags:

r

derivative

I would calculate the first derivative (dpH/dtime) of time series using two variables, time and pH.

Are there any kind of functions to do this in R or should I compute an extra function to do this?

like image 328
alexmulo Avatar asked Dec 29 '12 14:12

alexmulo


2 Answers

Assuming pH and time are plain vectors try this:

library(pspline)
predict(sm.spline(time, pH), time, 1)
like image 50
G. Grothendieck Avatar answered Oct 18 '22 18:10

G. Grothendieck


You might want to start with stats::deriv or diff.ts as Matt L suggested. Just keep in mind what a professor of mine used to tell all his students: numeric differentiation is known as "error multiplier."

EDIT: To clarify -- what he was warning about was that any noise in your data can throw the derivative estimate way off. It's been said that integration is a low-pass filter and differentiation is a high-pass filter. So, the important thing is to do some smoothing on your data before calculating a derivative. Hence Gabor's excellent suggestion to use predict.spline . But keep in mind that modifying the spline parameters will smooth your data to different levels, so always look at the results to make sure you removed apparent noise but not desired features.

like image 29
Carl Witthoft Avatar answered Oct 18 '22 17:10

Carl Witthoft