2013-08-13 6 views
2

Я пытаюсь рассчитать стандартное отклонение значений во временном ряду, но я хотел бы сделать это постепенно, продвигая один день от значения начальной даты каждый раз. Я знаю, что есть способ сделать это в R (возможно, используя ddply?), Который не включает неприятный цикл for. Спасибо за любую помощь!Вычислить общее стандартное отклонение

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) 

Вот как я это делаю сейчас.

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

ответ

4

Использование TTR::runSD с cumulative=TRUE.

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

Столько, сколько мы любим 'xts' объекты, вы на самом деле не нужно конвертировать в один здесь:' runSD (test.df [2], п = 1, накопленная = TRUE) ' – GSee

+2

@ GSee: Каждый, кто использует временные ряды, нуждается в xts. –

Смежные вопросы