Moving Average
I wrote a little code using Fourier filtering if you would like to
take a look at this:
library(StreamMetabolism)
library(mFilter)
x <- read.production(file.choose())
#contiguous.zoo(data.frame(x[,"RM202DO.Conc"], coredata(x[,"RM202DO.Conc"])))
#contiguous.zoo(data.frame(x[,"RM61DO.Conc"], coredata(x[,"RM61DO.Conc"])))
short <- x[42685:48535,"RM202DO.Conc"]
#short <- x[53909:59957,"RM61DO.Conc"]
short.ts <- ts(coredata(short), frequency=96)
#fourier filtering
short.fft <- fft(short.ts)
plot(Re(short.fft), xlim=c(0,10), ylim=c(-1000, 1000))
short.fft[789:5563] = 0+0i
short.ifft = fft(short.fft, inverse = TRUE)/length(short.fft)
#zoo series
filt <- zoo(coredata(Re(short.ifft)) , index(short))
par(mfrow=c(2,1))
plot(short)
plot(filt)
window.plot <- function(x, y, a, b, s, d){
par(mfrow=c(2,1))
plot(window.chron(x, a, b, s, d))
plot(window.chron(y, a, b, s, d))
}
window.plot(short, filt, "04/17/2007", "00:01:00", "04/17/2007", "23:46:00")
plot.e <- function(b, w, x, y, z){
a <- window.chron(b, w, x, y, z)
plot(a, ylim=range(a)+0.06*c(-1, 1))
lines(a*0.98, col="blue")
lines(a*1.02, col="red")
}
it may not be exactly what you want, but you will have a handle on
what spectral properties that you have removed.
On Thu, Feb 26, 2009 at 9:54 AM, Ted Harding
<Ted.Harding at manchester.ac.uk> wrote:
On 26-Feb-09 13:54:51, David Winsemius wrote:
I saw Gabor's reply but have a clarification to request. You say you want to remove low frequency components but then you request smoothing functions. The term "smoothing" implies removal of high-frequency components of a series.
If you produce a smoothed series, your result of course contains
the low-frequency comsponents, with the high-frequency components
removed.
But if you then subtract that from the original series, your result
contains the high-frequency components, with the low-frequency
compinents removed.
Moving-average is one way of smoothing (but can introduce periodic
components which were not there to start with).
Filtering a time-series is a very open-ended activity! In many
cases a useful start is exploration of the spectral properties
of the series, for which R has several functions. 'spectrum()'
in the stats package (loaded bvy default) is one basic function.
help.search("time series") will throw up a lot of functions.
You might want to look at package 'ltsa' (linear time series
analysis).
Alternatively, if yuou already have good information about the
frequency-structure of the series, or (for instance) know that
it has a will-defined seasonal component, then you could embark
on designing a transfer function specifically tuned to the job.
Have a look at RSiteSearch("{transfer function}")
Hoping this helps,
Ted.
If smoothing really is your goal then additional R resource would be smooth.spline, loess (or lowess), ksmooth, or using smoothing terms in regressions. Venables and Ripley have quite a few worked examples of such in MASS. -- David Winsemius On Feb 26, 2009, at 7:07 AM, <mauede at alice.it> wrote:
I am looking for some help at removing low-frequency components from
a signal, through Moving Average on a sliding window.
I understand thiis is a smoothing procedure that I never done in my
life before .. sigh.
I searched R archives and found "rollmean", "MovingAverages {TTR}",
"SymmetricMA".
None of the above mantioned functions seems to accept the smoothing
polynomial order and the sliding window with as input parameters.
Maybe I am missing something.
I wonder whether there is some building blocks in R if not even a
function which does it all (I do not expect that much,though).
Even some literature references and/or tutorials are very welcome.
Thank you so much,
Maura
tutti i telefonini TIM!
? ? ?[[alternative HTML version deleted]]
______________________________________________ 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.
-------------------------------------------------------------------- E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk> Fax-to-email: +44 (0)870 094 0861 Date: 26-Feb-09 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Time: 14:54:43 ------------------------------ XFMail ------------------------------
______________________________________________ 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.
Stephen Sefick Let's not spend our time and resources thinking about things that are so little or so large that all they really do for us is puff us up and make us feel like gods. We are mammals, and have not exhausted the annoying little problems of being mammals. -K. Mullis