我想計算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