使用滚动窗口进行熵分析

时间:2018-11-02 09:56:42

标签: r time-series entropy rolling-computation

我想计算滚动窗口大小为500的多个时间序列的熵值。我在代码中使用了roll-apply函数,但无法正常工作。

请帮助我计算滚动窗口大小为500时的熵(即以下代码)。

为方便起见,我在这里提供我的熵代码,以便您可以更轻松地建议在熵方法中建议使用滚动窗口大小为500的应用程序。

N<-nrow(ts)
r<-matrix(0, nrow = N, ncol = 1)
for (i in 1:N){
    r[i]<-approx_entropy(ts[,i], edim = 2, r = 0.2*sd(ts[,i]), elag = 1)
}

1 个答案:

答案 0 :(得分:0)

修改版本: 代码:

library('zoo')
ts <- matrix(rnorm(100000),1000,100)
library('zoo')
ts <- matrix(rnorm(100000),1000,100)
roll <- function(x){
  entropy <- function(x){
    output <- any function or code you like to put hear
    return(output)
  }
  r <- rollapply(x,width=500,by=1,FUN=entropy)
  return(r)
}
res <- apply(ts ,2,roll)

旧版本: avobe代码应该可以工作,这是如何执行的示例:

library('zoo')
ts <- rnorm(10000)
entropy <- function(x){
   return(approx_entropy(x,edim = 2, r = 0.2*sd(x), elag = 1))
}
r <- rollapply(ts,width=500,by=1,FUN=entropy)

认识到在计算滚动窗口函数时,输出的大小将等于length(ts)-window_length + 1。 如果这对您的数据不起作用,请发布您的数据示例,以查看问题出在哪。还有您的函数roximate_entropy,因为可能存在问题/错误。如果您使用简单的函数来探究代码,那么它就可以工作。 希望对您有所帮助!