Энтропийный анализ с использованием скользящего окна

Я хочу рассчитать значения энтропии для нескольких временных рядов с размером скользящего окна 500. Я использовал функцию сворачивания с моим кодом, но она не работает.

Пожалуйста, помогите мне рассчитать энтропию (т.е. с помощью приведенного ниже кода) в скользящем окне размером 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)
}

person SUBHAMITRA PATRA    schedule 02.11.2018    source источник


Ответы (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)

Поймите, что когда вы вычисляете функцию скользящего окна, выходные данные будут иметь размер, равный length(ts)-window_length+1. Если это не работает, с вашими данными, опубликуйте пример ваших данных, чтобы увидеть, в чем проблема. Также ваша функция proc_entropy, потому что проблема/ошибка может быть там. Если вы исследуете код с помощью простых функций, это означает, что он работает. Надеюсь поможет!

person Santiago I. Hurtado    schedule 05.11.2018
comment
Большое спасибо за Вашу помощь. Но мне нужно рассчитать скользящее окно для нескольких столбцов. Итак, я применил цикл в предыдущем коде. Следовательно, как рассчитать отдельную энтропию качения для нескольких столбцов листа? - person SUBHAMITRA PATRA; 06.11.2018
comment
Когда я использую функцию среднего значения, вы можете использовать любую функцию, которую вы создали ранее. - person Santiago I. Hurtado; 06.11.2018
comment
Тогда для цикла в скользящей энтропии функция n будет соответствовать следующему коду, верно? for (i in 1:N){ r[i]‹-приближенная_энтропия(ts[,i], edim = 2, r = 0,2*sd (ts[,i]), elag = 1) } - person SUBHAMITRA PATRA; 07.11.2018
comment
петля в функции скользящей энтропии будет такой, верно? для (i в 1:N) {энтропия[i] ‹-функция (ts[,i]){ return(приблизительная_энтропия(ts[,i], edim = 2, r = 0,2*sd (ts[,i]) , элаг = 1)) }} - person SUBHAMITRA PATRA; 07.11.2018
comment
Пожалуйста, предложите команду цикла в коде скользящей энтропии. Верен ли мой предыдущий способ в последнем комментарии, чтобы перейти к циклу в скользящей энтропии? Заранее спасибо. - person SUBHAMITRA PATRA; 07.11.2018
comment
Я действительно не знаю, как вы программируете свою функцию, но теперь сказали: вывод ‹- любая функция или код .... ; туда вы должны поставить свою функцию энтропии, учитывая, что она будет применяться к вектору, заданному в результате одним значением. Затем остальная часть кода сделает для вас скользящее окно для каждого столбца. - person Santiago I. Hurtado; 07.11.2018
comment
Большое спасибо, Сантиго за вашу помощь. Код сработал. Большое спасибо за хорошее объяснение кода. - person SUBHAMITRA PATRA; 18.11.2018
comment
Hii, Кроме того, я хочу построить результаты прокатки, которые хранятся в объекте R. На самом деле, я стал способен на это. Но проблема в том, что мне нужен столбец даты на моей оси X. Когда я планирую, я получаю отказ. наблюдения (т.е. 1000, 2000, 3000, ---------) по оси X. Как определить ежедневный ряд дат и получить этот столбец даты (по крайней мере, название года) по оси X? Пожалуйста, предложите мне. Спасибо. - person SUBHAMITRA PATRA; 15.12.2018