我需要对包含大约 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.zoo
比更有效rollapply.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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)