R长时间序列的动态时间扭曲

时间:2015-02-12 10:07:29

标签: r

我正在尝试计算非常长时间序列的dtw距离,但是我得到一个错误,表明我无法为矩阵分配内存。

我在这做什么:

library(dtw)

set.seed(1234)
N <- 300000
x <- rnorm(N)
y <- rnorm(N)

dtw(x,y,distance.only=TRUE)$distance

Error: cannot allocate vector of size 670.6 Gb

有没有另一种方法来计算不需要分配如此多内存的dtw距离?

1 个答案:

答案 0 :(得分:1)

我不知道这个包,但是来自你的包的companion paper

  

较大的问题可以通过近似策略来解决,例如,   计算下采样时间序列之间的初步对齐   (Salvador and Chan 2004);索引(Keogh and Ratanamahatana 2005);要么   将其中一个序列分成块然后迭代   子序列匹配。

后一种选择可以通过以下方式实现:

  lapply(split(y,1:100),                      ## I split y in 100 chnucks
       function(z)dtw(x,z,distance.only=TRUE)$distance)

PS:这里的大一点,意味着超过8000×8000点(接近虚拟内存限制)的问题,这就是你的情况。