使用滚动的熵分析 window

Entropy analysis using rolling window

我想计算滚动 window 大小为 500 的多个时间序列的熵值。我在我的代码中使用了 roll-apply 函数,但它不起作用。

请帮我计算滚动 window 大小为 500 的熵(即使用以下代码)。

为了您的方便,我在这里提供我的熵代码,以便您可以更轻松地建议在熵方法中应用滚动 window 大小为 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)
}

修改版本: 代码:

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)

请注意,当您计算滚动 window 函数时,输出的大小将等于 length(ts)-window_length+1。 如果这不起作用,请使用您的数据 post 一个数据示例,以便查看问题所在。还有你的函数 approx_entropy,因为 problem/error 可能在那里。如果您使用简单的函数来探测代码,则意味着它可以工作。 希望对您有所帮助!