6

我需要对包含大约 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 数据集上执行上述计算,任何人都可以建议我吗?

4

1 回答 1

5

如果可以,请将它们转换为动物园对象。 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 
于 2014-08-24T16:38:34.097 回答