Como determinar a previsibilidade das séries temporais?

10

Uma das questões importantes que os meteorologistas enfrentam é se a série fornecida pode ser prevista ou não?

Eu me deparei com um artigo intitulado " Entropia como um indicador prioritário de previsibilidade ", de Peter Catt, que usa Entropia aproximada (ApEn) como uma medida relativa para determinar uma determinada série temporal que é previsível.

O artigo diz,

"Valores menores de ApEn indicam uma chance maior de que um conjunto de dados seja seguido por dados semelhantes (regularidade). Por outro lado, um valor maior de ApEn indica uma chance menor de repetição de dados semelhantes (irregularidade). Portanto, valores maiores transmitem mais desordem , aleatoriedade e complexidade do sistema ".

E é seguido por fórmulas matemáticas para calcular ApEn. Essa é uma abordagem interessante, pois fornece um valor numérico que pode ser usado para avaliar a capacidade de previsão em sentido relativo. Não sei o que significa Entropia Aproximada, estou lendo mais sobre isso.

Há um pacote chamado pracma em Rque permite calcular ApEn. Para fins ilustrativos, usei 3 séries temporais diferentes e calculei os números ApEn.

  1. Série 1: A famosa série temporal do AirPassenger - é altamente determinística e devemos poder fazer previsões facilmente.
  2. Série 2: Série temporal das manchas solares - é muito bem definida, mas deve ser menos previsível que a série 1.
  3. Série 3: Número aleatório Não há como prever esta série.

Portanto, se calcularmos o ApEn, a Série 1 deve ser menor que a Série 2 e deve ser muito, muito menor que a Série 3.

Abaixo está o trecho R que calcula o ApEn para todas as três séries.

library("pracma")
> series1 <- approx_entropy(AirPassengers)
> series1
[1] 0.5157758
> series2 <- approx_entropy(sunspot.year)
> series2
[1] 0.762243
> series3 <- approx_entropy(rnorm(1:30))
> series3
[1] 0.1529609

Não é o que eu esperava. A série aleatória tem um número menor que a série AirPassenger bem definida. Mesmo se eu aumentar o número aleatório para 100, ainda assim recebo o que é menor do que a bem definida série 2 / Sunspot.yealry.

> series3 <- approx_entropy(rnorm(1:100))
> series3
[1] 0.747275

Abaixo estão minhas perguntas:

  1. Existem 2 parâmetros no cálculo de ApEn ( me r)? Como determiná-los. Utilizei padrões no Rcódigo acima.
  2. O que estou fazendo incorretamente está mostrando que incorretamente o ApEn é mais baixo para números aleatórios vs. uma série bem definida, como sunspot.yearly.
  3. Devo dessazonalizar / prejudicar a série e depois estimar o ApEn. O autor, no entanto, aplicou o ApEn diretamente à série.
  4. Existe outra maneira de determinar se a série é previsível?
previsor
fonte
Conforme indicado no artigo, a entropia aproximada não deve ser usada em séries temporais curtas, N <200. Mais importante, o artigo usa entropia de amostra e não entropia aproximada. Pracma contém ambos. Graças
Isso explica variáveis ​​explicativas? Por exemplo, se você está prevendo o desgaste da conta de uma empresa, ela pode estar correlacionada com os gastos com marketing, e os gastos são altamente previsíveis; de fato, estão planejados meses à frente. Como isso seria explicado na abordagem proposta?
Aksakal
@ Akksakal, não, não há variáveis ​​explicativas. Eu estava procurando por previsões de séries temporais univariadas em larga escala (sem variável explicativa), nas quais precisamos de uma medida objetiva para avaliar a previsibilidade. Além disso, em muitos casos, a previsão univariada é muito mais precisa do que os modelos criados com variáveis ​​explicativas.
meteorologista
11
Possível duplicata de Avaliando previsibilidade de séries temporais
Tim
11
Minha opinião é que essa é uma pergunta muito mais restrita que a duplicata sugerida. A votação deixa em aberto, mas sugira que o OP considere um título mais específico para evitar confundir os dois. Diga: "Como determinar a previsibilidade de séries temporais usando entropia aproximada ?"
Sean Páscoa

Respostas:

7

Os parâmetros me renvolvidos no cálculo da entropia aproximada (ApEn) das séries temporais são o comprimento da janela (sequência) e a tolerância (valor do filtro) , correspondentemente. De fato, em termos de m( rbem como N(número de pontos de dados), ApEn é definido como "logaritmo natural da prevalência relativa de padrões repetitivos de comprimento mem comparação com aqueles de comprimento m + 1" (Balasis, Daglis, Anastasiadis & Eftaxias, 2011 215):

ApEn(m,r,N)=Φm(r)Φm+1(r),

where 

Φm(r)=ΣilnCim(r)/(Nm+1)

Portanto, parece que alterar a tolerância rpermite controlar a granularidade (temporal) da determinação da entropia das séries temporais. No entanto, usar os valores padrão para ambos me rparâmetros nas pracmachamadas de função de entropia do pacote funciona bem. A única correção que precisa ser feita para ver a relação correta dos valores de entropia para todas as três séries temporais (entropia mais baixa para séries mais bem definidas, entropia mais alta para mais dados aleatórios) é aumentar o comprimento do vetor de dados aleatórios :

 library(pracma)
 set.seed(10)
 all.series <- list(series1 = AirPassengers,
                    series2 = sunspot.year,
                    series3 = rnorm(500)) # <== size increased
 sapply(all.series, approx_entropy)
  series1   series2   series3 
  0.5157758 0.7622430 1.4741971 

Os resultados são como é esperado - como a previsibilidade das flutuações diminui de mais determinada series1a mais aleatório series 3, o seu entropia, consequentemente, aumenta a: ApEn(series1) < ApEn(series2) < ApEn(series3).

Em relação a outras medidas de previsibilidade , convém verificar os erros médios absolutos de escala (MASE) - consulte esta discussão para obter mais detalhes. A análise de componentes previsíveis também parece ser uma abordagem nova e interessante para determinar a previsibilidade de séries temporais. E, como esperado, também há um Rpacote para isso - o ForeCA .

library(ForeCA)
sapply(all.series,
       Omega, spectrum.control = list(method = "wosa"))
 series1   series2   series3 
 41.239218 25.333105  1.171738 

Aqui é uma medida de previsibilidade em que e .Ω ( w h i t e n o i s de e ) = 0 %Ω[0,1]Ω(whitenoise)=0%Ω(sinusoid)=100%

Referências

Balasis, G., Daglis, IA, Anastasiadis, A. e Eftaxias, K. (2011). Detecção de alterações de complexidade dinâmica no ssteries Dst time usando conceitos de entropia e análise de escala redimensionada. Em W. Liu e M. Fujimoto (Eds.), The Dynamic Magnetosphere, IAGA Special Sopron Book, Série 3, 211. doi: 10.1007 / 978-94-007-0501-2_12. Springer. Disponível em http://members.noa.gr/anastasi/papers/B29.pdf

Georg M. Goerg (2013): Análise de Componentes Previsíveis. JMLR, W&CP (2) 2013: 64-72. http://machinelearning.wustl.edu/mlpapers/papers/goerg13

Aleksandr Blekh
fonte
Também testei a pracma::sample_entropy()função e a relação de resultados corrigidos ao longo das séries temporais também nesse cenário.
Aleksandr Blekh
@ forecaster: De nada.
Aleksandr Blekh
11
Veja também este documento notsoirrational.files.wordpress.com/2015/04/schulz15.pdf, que usa dados experimentais para justificar suas medidas de previsibilidade. Também relaciona parte do trabalho ao trabalho do ForeCA mencionado neste post
Georg M. Goerg
@ GeorgM.Goerg: Obrigado pelas sugestões, link e edições.
Aleksandr Blekh
@ forecaster: O prazer é meu.
Aleksandr Blekh
0

Todas as séries temporais são compostas por 3 componentes: Tendência, Sazonalidade e Aleatória. Se os dados exibirem uma tendência forte e / ou forem altamente sazonais, a previsão será relativamente fácil. Se os dados são aleatórios, então, por definição, você não pode prever nada.

Hidden Markov Model
fonte