我想计算滚动窗口大小为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)
}
答案 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,因为可能存在问题/错误。如果您使用简单的函数来探究代码,那么它就可以工作。 希望对您有所帮助!