2013-08-13 1 views
2

J'essaie de calculer l'écart-type des valeurs d'une série chronologique, mais j'aimerais le faire progressivement en avançant d'un jour à partir de la valeur de la date initiale à chaque fois. Je sais qu'il existe un moyen de faire cela dans R (probablement en utilisant ddply?) Qui n'implique pas une mauvaise boucle for. Merci pour toute aide!Calculer l'écart-type cumulatif

d<-seq(from=as.Date("2013-01-01"), to=as.Date("2013-02-01"), by="day") 
v <-rnorm(32, 10, 5) 
test.df<-data.frame(the_date=d, value=v) 

Voici comment je le fais maintenant.

result <- c() 
for(i in 2:nrow(test.df)){ result[i-1] <- sd(test.df[1:i,]$value)} 

Répondre

4

Utilisation TTR::runSD avec cumulative=TRUE.

library(TTR) 
x <- xts(test.df[,2],test.df[,1]) 
runSD(x, n=1, cumulative=TRUE) 
+3

Autant que nous aimons 'objets xts', vous n'avez pas réellement besoin de se convertir à un ici:' runSD (test.df [2], n = 1, cumulative = TRUE) ' – GSee

+2

@ GSee: Tout le monde qui utilise des séries chronologiques a besoin de xts. –