[R] Moving average
Achim Zeileis
Achim.Zeileis at wu-wien.ac.at
Thu Jun 16 15:28:05 CEST 2005
On Thu, 16 Jun 2005 08:04:18 -0400 (EDT) Bernard L. Dillard wrote:
> Good morning all!
>
> I am attempting to superimpose a moving-average smoother onto a graph
> of daily plots. These plots (in table[,2] below) span about 350 days
> and looks very noisy. I'd like for this smoother to plot the average
> of each group of 7 consecutive days (weekly) and show a line which
> joins these series of averages. Given the definition of MA, the first
> and last points will generally overlap in the average calculation.
>
> It's probably a one-liner, but I still am having some problems with
> the syntax. The only part I have correct is the "lines" statement to
> ensure it overlays my original graph.
>
> Here's the code I have thus far:
>
> y <- table[,2]
> plot(y,type="l",lty=3)
> lines( ......) {moving average code here to be placed here}
With the zoo package you can do the following:
library(zoo)
## create data
x <- rnorm(365)
## transform to regular zoo series with "Date" index
x <- zooreg(x, start = as.Date("2004-01-01"))
plot(x)
## add rolling/running/moving average with window size 7
lines(rollmean(x, 7), col = 2, lwd = 2)
## if you don't want the rolling mean but rather a weekly
## time series of means you can do
nextfri <- function(x) 7 * ceiling(as.numeric(x - 1)/7) + as.Date(1)
xw <- aggregate(x, nextfri, mean)
## nextfri is a function which computes for a certain "Date"
## the next friday. xw is then the weekly series.
lines(xw, col = 4)
Note, that the differnce between is rolling mean and the aggregated
series is due to different alignments. This can be changed by changing
the `align' argument in rollmean() or the nextfri() function in the
aggregate call.
hth,
Z
> Any time series gurus out there? Be gentle. I'm an R beginner.
>
> Thanx!
>
> Bernard
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
More information about the R-help
mailing list