2009-07-23 13 views

Respuesta

9

Mientras zoológico es grande, a veces hay formas más simples. Si sus datos se comportan bien, y están espaciados uniformemente, la función embed() efectivamente le permite crear múltiples versiones rezagadas de una serie temporal. Si miras dentro del paquete VARS para la regresión automática de vectores, verás que el autor del paquete elige esta ruta.

Por ejemplo, para calcular el promedio móvil de 3 período de x, donde x = (1 -> 20)^2:

> x <- (1:20)^2 
> embed (x, 3) 
     [,1] [,2] [,3] 
[1,] 9 4 1 
[2,] 16 9 4 
[3,] 25 16 9 
[4,] 36 25 16 
[5,] 49 36 25 
[6,] 64 49 36 
[7,] 81 64 49 
[8,] 100 81 64 
[9,] 121 100 81 
[10,] 144 121 100 
[11,] 169 144 121 
[12,] 196 169 144 
[13,] 225 196 169 
[14,] 256 225 196 
[15,] 289 256 225 
[16,] 324 289 256 
[17,] 361 324 289 
[18,] 400 361 324 
> apply (embed (x, 3), 1, mean) 
[1] 4.666667 9.666667 16.666667 25.666667 36.666667 49.666667 
[7] 64.666667 81.666667 100.666667 121.666667 144.666667 169.666667 
[13] 196.666667 225.666667 256.666667 289.666667 324.666667 361.666667 
1

Me rasqué una buena respuesta de Achim Zeileis en la lista r. Aquí está lo que dijo:

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) 

Achim pasó a decir:

Tenga en cuenta, que la diferencia entre es decir a la rodadura y la serie agregada se debe a diferentes alineaciones. Este se puede cambiar cambiando el argumento 'alinear' en rollmean() o la función nextfri() en la llamada total .

Todo esto vino de Achim, no me la http://tolstoy.newcastle.edu.au/R/help/05/06/6785.html