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 R
que le permite calcular ApEn. Con fines ilustrativos, utilicé 3 series temporales diferentes y calculé los números de ApEn.
- Serie 1: La famosa serie temporal de AirPassenger: es altamente determinista y deberíamos poder pronosticar fácilmente.
- Serie 2: Serie temporal de manchas solares: está muy bien definida, pero debe ser menos predecible que la serie 1.
- 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:
- Hay 2 parámetros en el cálculo de ApEn (
m
yr
)? Cómo determinarlos. Usé valores predeterminados en elR
código anterior. - ¿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?
- ¿Debo desestacionalizar / eliminar tendencias de la serie y luego estimar ApEn? Sin embargo, el autor aplicó ApEn directamente a la serie.
- ¿Hay alguna otra forma de determinar si la serie es previsible?
fuente
Respuestas:
Los parámetros
m
yr
, 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 dem
,r
así comoN
(número de puntos de datos), ApEn se define como "logaritmo natural de la prevalencia relativa de patrones repetitivos de longitudm
en comparación con los de longitudm + 1
" (Balasis, Daglis, Anastasiadis y Eftaxias, 2011 , p. 215):Por lo tanto, parece que cambiar la tolerancia
r
permite controlar la granularidad (temporal) de determinar la entropía de series de tiempo. Sin embargo, usar los valores predeterminados para ambosm
y losr
parámetros enpracma
las 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 :Los resultados son como se esperaba - como la predictibilidad de las fluctuaciones disminuye desde más decididos
series1
a más aleatoriaseries 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
R
paquete para eso: ForeCA .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
fuente
pracma::sample_entropy()
función y corrige la relación de resultados a través de las series temporales en ese escenario también.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.
fuente