¿Cómo determinar la previsibilidad de las series de tiempo?

10

Uno de los problemas importantes que enfrentan los pronosticadores es si las series dadas se pueden pronosticar o no.

Me topé con un artículo titulado "La entropía como un indicador prioritario de previsibilidad " de Peter Catt que utiliza la entropía aproximada (ApEn) como una medida relativa para determinar que una serie temporal dada es previsible.

El artículo dice:

"Los valores más pequeños de ApEn indican una mayor probabilidad de que un conjunto de datos sea seguido por datos similares (regularidad). Por el contrario, un valor mayor de ApEn indica una menor probabilidad de que se repitan datos similares (irregularidad). Por lo tanto, los valores más grandes transmiten más desorden , aleatoriedad y complejidad del sistema ".

Y es seguido por fórmulas matemáticas para calcular ApEn. Este es un enfoque interesante porque proporciona un valor numérico que se puede utilizar para evaluar la capacidad de predicción previa en sentido relativo. No sé lo que significa Entropía aproximada, estoy leyendo más al respecto.

Hay un paquete llamado pracma en Rque le permite calcular ApEn. Con fines ilustrativos, utilicé 3 series temporales diferentes y calculé los números de ApEn.

  1. Serie 1: La famosa serie temporal de AirPassenger: es altamente determinista y deberíamos poder pronosticar fácilmente.
  2. Serie 2: Serie temporal de manchas solares: está muy bien definida, pero debe ser menos predecible que la serie 1.
  3. Serie 3: Número aleatorio No hay forma de pronosticar esta serie.

Entonces, si calculamos ApEn, la Serie 1 debería ser menor que la Serie 2, debería ser muy, muy menor que la Serie 3.

A continuación se muestra el fragmento R que calcula ApEn para las tres series.

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

Esto no es lo que esperaba. La serie aleatoria tiene un número menor que la serie AirPassenger bien definida. Incluso si aumento el número aleatorio a 100, sigo obteniendo lo siguiente, que es menor que la serie bien definida 2 / Sunspot.yealry series.

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

A continuación están mis preguntas:

  1. Hay 2 parámetros en el cálculo de ApEn ( my r)? Cómo determinarlos. Usé valores predeterminados en el Rcódigo anterior.
  2. ¿Qué estoy haciendo incorrectamente que muestra que incorrectamente que ApEn es más bajo para números aleatorios frente a una serie bien definida como sunspot.yearly?
  3. ¿Debo desestacionalizar / eliminar tendencias de la serie y luego estimar ApEn? Sin embargo, el autor aplicó ApEn directamente a la serie.
  4. ¿Hay alguna otra forma de determinar si la serie es previsible?
pronosticador
fuente
Como se indica en el artículo, la entropía aproximada no debe usarse en series de tiempo cortas, N <200. Más importante aún, el artículo usa entropía de muestra, no entropía aproximada. Pracma contiene ambos. Gracias
¿Tiene en cuenta las variables explicativas? Por ejemplo, si está pronosticando el abandono de la cuenta de una empresa, puede estar correlacionado con el gasto de marketing, y el gasto es muy previsible, de hecho, se planea con meses de anticipación. ¿Cómo se explicaría esto en el enfoque propuesto?
Aksakal
@ Aksakal, no, no hay variables explicativas. Estaba buscando predicciones de series de tiempo univariadas a gran escala (sin variable explicativa) donde necesitamos una medida objetiva para evaluar la capacidad de predicción. Además, en muchos casos, el pronóstico univariado es mucho más preciso que los modelos construidos con variables explicativas.
pronosticador
1
Posible duplicado de Evaluación
Tim
1
Mi sensación es que esta es una pregunta mucho más estrecha que el duplicado sugerido. La votación se deja abierta, pero sugiere que el OP considere un título más específico para evitar confundir a los dos. Diga: "¿Cómo determinar la capacidad de predicción de series de tiempo usando entropía aproximada ?"
Sean Easter

Respuestas:

7

Los parámetros my r, involucrados en el cálculo de la entropía aproximada (ApEn) de las series de tiempo, son la longitud de la ventana (secuencia) y la tolerancia (valor del filtro) , correspondientemente. De hecho, en términos de m, rasí como N(número de puntos de datos), ApEn se define como "logaritmo natural de la prevalencia relativa de patrones repetitivos de longitud men comparación con los de longitud m + 1" (Balasis, Daglis, Anastasiadis y Eftaxias, 2011 , p. 215):

UNApagminorte(metro,r,norte)=Φmetro(r)-Φmetro+1(r),

dónde 

Φmetro(r)=ΣyolnorteCyometro(r)/ /(norte-metro+1)

Por lo tanto, parece que cambiar la tolerancia rpermite controlar la granularidad (temporal) de determinar la entropía de series de tiempo. Sin embargo, usar los valores predeterminados para ambos my los rparámetros en pracmalas llamadas a la función de entropía del paquete funciona bien. La única solución que debe hacerse para ver la relación correcta de valores de entropía para las tres series de tiempo (entropía inferior para series más bien definidas, mayor entropía para datos más aleatorios) es aumentar la longitud del vector de datos aleatorios :

 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 

Los resultados son como se esperaba - como la predictibilidad de las fluctuaciones disminuye desde más decididos series1a más aleatoria series 3, su entropía aumenta en consecuencia: ApEn(series1) < ApEn(series2) < ApEn(series3).

Con respecto a otras medidas de previsibilidad , es posible que desee verificar los errores medios de escala absoluta (MASE) ; consulte esta discusión para obtener más detalles. El análisis de componentes predecibles también parece ser un enfoque nuevo e interesante para determinar la previsibilidad de las series de tiempo. Y, como era de esperar, también hay un Rpaquete para eso: ForeCA .

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

Ω[0 0,1]Ω(whyotminorteoyosmi)=0 0%Ω(syonortetusoyore)=100%

Referencias

Balasis, G., Daglis, IA, Anastasiadis, A. y Eftaxias, K. (2011). Detección de cambios de complejidad dinámica en la serie de tiempo Dst utilizando conceptos de entropía y análisis de rango reescalado. En W. Liu y M. Fujimoto (Eds.), The Dynamic Magnetosphere, IAGA Special Sopron Book, Series 3, 211. doi: 10.1007 / 978-94-007-0501-2_12. Saltador. Recuperado de http://members.noa.gr/anastasi/papers/B29.pdf

Georg M. Goerg (2013): Análisis de componentes previsibles. JMLR, W&CP (2) 2013: 64-72. http://machinelearning.wustl.edu/mlpapers/papers/goerg13

Aleksandr Blekh
fuente
También probé la pracma::sample_entropy()función y corrige la relación de resultados a través de las series temporales en ese escenario también.
Aleksandr Blekh
@forecaster: De nada.
Aleksandr Blekh
1
Consulte también este documento notsoirrational.files.wordpress.com/2015/04/schulz15.pdf que utiliza datos experimentales para justificar sus medidas de previsibilidad. También relaciona parte del trabajo con el trabajo de ForeCA mencionado en esta publicación
Georg M. Goerg el
@ GeorgM.Goerg: Gracias por las sugerencias, enlaces y ediciones.
Aleksandr Blekh
@forecaster: Un placer.
Aleksandr Blekh
0

Cada serie de tiempo se compone de 3 componentes: tendencia, estacionalidad y aleatorio. Si los datos muestran una tendencia fuerte o son altamente estacionales, entonces la predicción será relativamente fácil. Si los datos son mayormente aleatorios, entonces, por definición, no puede predecir nada.

Modelo oculto de Markov
fuente