簡體   English   中英

更快的替代功能“rollapply”

[英]Faster alternative to function 'rollapply'

我需要在包含大約 7,000 行和 11,000 列的 xts 數據上運行滾動窗口函數。 我做了以下事情:

require(PerformanceAnalytics)
ssd60<-rollapply(wddxts,width=60,FUN=function(x) SemiDeviation(x),by.column=TRUE)

我等到了 12 個小時,但計算沒有完成。 但是,當我嘗試使用小數據集時,如下所示:

sample<-wddxts[,1:5]
ssd60<-rollapply(sample,width=60,FUN=function(x) SemiDeviation(x),by.column=TRUE)

計算是在 60 秒內完成的。 我在配備 Intel i5-2450M CPU、Windows 7 操作系統和 12 GB RAM 的計算機上運行它們。

任何人都可以建議我是否有更快的方法在大型 xts 數據集上執行上述計算?

如果可以,將它們轉換為動物園對象。 rollapply.zoorollapply.xts更有效(在這種情況下。我不確定哪個更有效):

R> require(PerformanceAnalytics)
R> set.seed(21)
R> x <- .xts(rnorm(7000,0,0.01), 1:7000)
R> system.time({
+   r <- rollapply(x, 60, SemiDeviation, by.column=TRUE, fill=NA)
+ })
   user  system elapsed 
  9.936   0.111  10.075 
R> system.time({
+   z <- rollapplyr(as.zoo(x), 60, SemiDeviation, by.column=TRUE, fill=NA)
+ })
   user  system elapsed 
  1.950   0.010   1.964 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM