我想计算R中时间序列上任何类型的“移动统计量”,超出移动平均值。例如,我将如何计算长度为3的时间窗口上的移动标准偏差?在R中移动标准差
我已经试过如下:
#example data
x <- c(3,9,2,8,4,6,5,8)
#moving standard deviation over a time window of length 3
msd3 <- (cumsum(x^2)-cumsum(Lag(x^2,3)))/((1:length(x))-(Lag(1:length(x),3)))-((cumsum(x)-cumsum(Lag(x,3)))/((1:length(x))-(Lag(1:length(x),3))))^2
但它不仅无法正常工作(因为滞后矢量的cumsum给所有NAS的向量),但我不再试图解决最后一个问题因为它似乎不必要的复杂。任何问题的优雅解决方案?
你问的最后一个问题 - http://stackoverflow.com/questions/14926572/moving-average-with-varying-time-window-in-r - (你没有标记答案,我可能会添加)将你指向'zoo'库,这对于这些事情是有用的。请在发布之前仔细阅读并进行搜索 - 您会发现像这样的问题:http://stackoverflow.com/questions/13195442/moving-variance-in-r/13195632#13195632 – thelatemail 2013-02-17 23:05:06
Gavin链接提供的答案指向由thelatemail正确回答你的问题(以及少量的工作,你今天早些时候的问题的答案,也是由电邮指出的):'rollapply(vec,width = 3,FUN = sd)' – Arun 2013-02-17 23:31:29
对不起。我确实做了一些搜索。我想我会删除我的问题。 – cwarny 2013-02-18 15:29:25