Анализ энтропии с использованием скользящего окна - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу вычислить значения энтропии для нескольких временных рядов с размером скользящего окна, равным 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 голосов
/ 05 ноября 2018

Изменить версию: код:

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. Если это не работает с вашими данными, пожалуйста, опубликуйте пример ваших данных, чтобы увидеть, в чем проблема. Кроме того, ваша функция ок. _Entropy, потому что проблема / ошибка может быть там. Если вы прощупываете код с помощью простых функций, это означает, что он работает. Надеюсь, это поможет!

...