Este sitio utiliza cookies de Google para prestar sus servicios y analizar su tráfico. Tu dirección IP y user-agent se comparten con Google, junto con las métricas de rendimiento y de seguridad, para garantizar la calidad del servicio, generar estadísticas de uso y detectar y solucionar abusos.Más información

View site in english Ir a la página de inicio Contacta conmigo
miércoles, 12 de octubre de 2016

Series temporales complejas VI, mapas de recurrencia

Para terminar esta serie sobre series temporales complejas y su caracterización usando herramientas gráficas voy a mostraros una herramienta llamada mapa de recurrencia, que permite obtener una serie de medidas utilizadas en el análisis de recurrencia, o RQA por sus siglas en inglés. La recurrencia es una propiedad característica de los sistemas dinámicos deterministas, y consiste en que dos o más estados del sistema se encuentran arbitrariamente cerca al cabo de cierto tiempo.

Como siempre, si quieres empezar la serie por el principio, este es el enlace al comienzo de la serie de artículos sobre caracterización gráfica de series temporales complejas. En este otro enlace os podéis descargar el ejecutable y el código fuente del proyecto GraphStudy, escrito en CSharp con Visual Studio 2013.

Los mapas de recurrencia son una herramienta gráfica cuya interpretación requiere experiencia, por lo que en un post de un blog no se puede profundizar demasiado en el tema. Para obtener más información sobre este tema, en este enlace tenéis un sitio web dedicado por entero a los mapas de recurrencia, y en este otro un libro que trata sobre los mapas de recurrencia y su análisis.

En el anterior artículo mostré como extender el espacio de fases de una dimensión a dos o tres dimensiones, para intentar reconstruir aproximadamente un atractor del sistema. Con los mapas de recurrencia la idea es similar, obtener una serie de puntos de una dimensión mayor o igual a dos usando valores de la serie desplazados un periodo fijo de tiempo para construirlos. Pero en los mapas de recurrencia no estamos limitados a un espacio de tres dimensiones como máximo, ya que se representan siempre en dos dimensiones, sea cual sea la dimensión que hayamos elegido para estudiar la recurrencia de la serie.

Una vez obtenida una cantidad N de puntos Xi de dimensión m de la serie, cada uno con coordenadas xi, xi+t, xi+2t,…,xi+(m-1)t, lo que hacemos es graficar una matriz cuadrada en la que cada elemento Rij representa la distancia entre los puntos Xi y Xj de la serie m-dimensional. Esta matriz es simétrica con respecto a la diagonal principal. Cuando la distancia entre dos puntos está por debajo de cierto umbral, decimos que el sistema presenta una recurrencia.

Esta matriz se puede representar de dos maneras, por un lado, cada punto puede representarse con un color diferente que depende de la distancia calculada para esa posición, o bien se puede representar en color negro, para indicar que en esa posición existe una recurrencia, o blanco en caso contrario.

Teniendo en cuenta la distribución de los puntos de recurrencia del mapa de recurrencia, se puede realizar una cuantificación de dicho mapa, que consiste en realizar una serie de medidas que nos permitirán caracterizar la dinámica del sistema.

Mapas de recurrencia en GraphStudy

En la aplicación GraphStudy se pueden obtener mapas de recurrencia abriendo un archivo csv o tsd y utilizando las opciones L. Extend o P. Extend como vimos en el artículo anterior sobre el estudio de la autocorrelación de la serie. Como mostré allí, en primer lugar debemos calcular la autocorrelación en la serie y seleccionar una distancia mayor que cero pulsando con el ratón sobre la gráfica de correlación. A continuación, se debe seleccionar la pestaña R. Plot:

Mapa de recurrencia en GraphStudy
Mapa de recurrencia en GraphStudy

Los primeros parámetros que hay que conocer son, Embed, que representa la dimensión embebida m, es decir, la dimensión a la que estamos extendiendo la serie. Window, que es simplemente el ancho y el alto de la matriz, es decir, el número de puntos de la serie que estamos teniendo en cuenta para construir el gráfico. Este número está limitado por la cantidad de valores y por el ancho y el alto de la ventana donde se muestra la gráfica. Por último, Th es el umbral de distancia por debajo del cual se considera que dos puntos son recurrentes, a este parámetro se le llama también radio.

Normalmente, se selecciona un valor para Th aproximadamente de un 10% de la distancia máxima, que se muestra al lado de la gráfica. Si Th vale cero, la gráfica se representa usando una escala de colores. En GraphStudy se utiliza una escala de grises, siendo el negro la distancia mínima y el blanco la máxima.

Si cambiamos alguno de estos parámetros, deberemos hacer doble click sobre la gráfica para ver los resultados. Si se selecciona un valor para Th distinto de cero, además se mostrarán al lado de la gráfica las medidas RQA más usuales:

Mapa de recurrencia con umbral
Mapa de recurrencia con umbral

La distancia que utilizo en el programa es la euclidea, aunque se puede cambiar fácilmente en el código fuente por otra diferente, en la clase que dibuja el mapa, que es RecurrenceMapDrawer.

En cuanto a las medidas, la primera es RR, porcentaje de recurrencia, y es simplemente el porcentaje de puntos en el gráfico que presentan recurrencia. En este programa no estoy contando los puntos de la diagonal principal (recurrencia de un punto consigo mismo). Esta, y todas las demás medidas, dependen, obviamente, del valor que hayamos seleccionado para Th.

El estudio de las líneas diagonales en el gráfico, nos permite hacernos una idea del grado de determinismo o predictibilidad de la serie. Estas medidas dependen del parámetro L min, que indica el mínimo número de puntos que debe tener una línea diagonal para ser tenida en cuenta en estas medidas (la diagonal principal no se tiene en cuenta en ningún caso), que son las siguientes:

  • DET, o porcentaje de determinismo, que no es más que el porcentaje de puntos de recurrencia que se encuentran formando líneas diagonales.
  • L o línea diagonal media, es el tamaño promedio de las líneas diagonales.
  • LMAX, es el tamaño de la línea diagonal más larga.
  • DIV, o divergencia, es el inverso de LMAX, y está relacionado con la suma de exponentes de Lyapunov positivos.
  • RATIO, se trata de la relación entre DET y RR.
  • ENTR o entropía de Shannon de la distribución de frecuencias de las longitudes de las líneas diagonales, definida como –Σp(l)log(p(l)), siendo p(l) la probabilidad de encontrar una línea diagonal de longitud l.

Con las líneas verticales se obtienen medidas similares, dependientes del parámetro V min, que indica el tamaño mínimo de dichas líneas:

  • LAM, o porcentaje de laminaridad, que es el porcentaje de puntos de recurrencia que forman líneas verticales.
  • VMAX, que es el tamaño máximo de las líneas verticales.
  • TT, que indica el tamaño medio de las líneas verticales.

Por último, relacionado con el parámetro Ñ está la medida TREND, este parámetro Ñ representa una distancia en líneas diagonales a partir de la diagonal principal. Se calcula el coeficiente de regresión lineal de la densidad de puntos en las diagonales paralelas a la principal hasta esta distancia, y nos da una medida de la estacionariedad del sistema dinámico.

Aquí tenéis un ejemplo de mapa de recurrencia para una serie aleatoria:

Mapa de recurrencia de una serie aleatoria
Mapa de recurrencia de una serie aleatoria

Podéis ver que la medida DET es muy baja, el mapa está compuesto prácticamente solo de puntos aislados. Sin embargo, una serie procedente de una señal senoidal presenta un mapa totalmente distinto:

Mapa de recurrencia para una señal senoidal
Mapa de recurrencia para una señal senoidal

En cualquier caso, la interpretación de las medidas y el trabajo con mapas de recurrencia requieren experiencia y unas explicaciones que exceden las posibilidades de un simple post, por lo que os remito a los enlaces anteriores si queréis profundizar en el estudio del tema.

Mapas de recurrencia con R

Con el programa R también se pueden realizar análisis usando mapas de recurrencia, existiendo varios paquetes para trazar los mapas y obtener medidas RQA. Como ejemplo podéis descargar la serie de 1000 términos de la variable X del sistema de Henon.

Podemos cargar la serie temporal con el siguiente comando:

rhen<-as.ts(read.csv("henon-x.csv",F))

Con el paquete fNonlinear se puede trazar un mapa de recurrencia, aunque algo rudimentario, con el siguiente comando:

recurrencePlot(rhen,3,1,333,0.3)

Los parámetros son, en este orden, la serie de valores, la dimensión embebida, el retardo temporal, el ancho de la ventana y el umbral o radio. El resultado es como este:

Función recurrencePlot en el paquete fNonlinear
Función recurrencePlot del paquete fNonlinear

En el paquete tseriesChaos existe otra función para dibujar un mapa de recurrencia, usando tonos de gris:

recurr(rhen,3,1,0,333)

Donde los parámetros son, en orden, la serie de valores, la dimensión embebida, el retardo temporal, el valor inicial y el valor final de la ventana. El resultado es como sigue:

Función recurr en el paquete tseriesChaos
Función recurr en el paquete tseriesChaos

Para obtener las medidas RQA, podemos usar el paquete crqa, que nos permite también calcular medidas para mapas de recurrencia cruzados, en los que se comparan dos series diferentes en lugar de una serie consigo misma.

La función es la siguiente:

rqa<-crqa(rhen,rhen,delay=1,embed=3,radius=0.3,normalize=0,
rescale=0,mindiagline=2,minvertline=2,side="lower")

Los dos primeros parámetros son la serie de valores, esta función está pensada para comparar dos series diferentes, para calcular las medidas de recurrencia cruzadas, pero también podemos obtener las medidas para una sola serie de esta manera.

A continuación tenemos el retardo temporal (delay) y la dimensión embebida (embed), el umbral o radio (radius), un valor para indicar el tipo de normalización a realizar (normalize), que pasamos a cero para que no realice ninguna acción, un valor de re escalado (rescale) que pasamos a cero también para que no realice ninguna acción, los valores mínimos para las líneas diagonales y verticales (mindiagline y minvertline) y el parámetro side, para indicar que parte de la matriz se debe tener en cuenta para realizar los cálculos. Con lower indicamos el triángulo inferior, con both ambos, teniendo en cuenta la diagonal principal en los cálculos.

Estas son las medidas calculadas:

summary(rqa)
Length Class Mode
RR 1 -none- numeric
DET 1 -none- numeric
NRLINE 1 -none- numeric
maxL 1 -none- numeric
L 1 -none- numeric
ENTR 1 -none- numeric
rENTR 1 -none- numeric
LAM 1 -none- numeric
TT 1 -none- numeric

NRLINE es el número total de líneas en el mapa, rENTR es la entropía normalizada por el número de líneas en el mapa y el resto son las que he mencionado anteriormente.

Creo que la medida RR está dividida por la mitad, lo cual quizás sea un error de la función, al calcular usando solo la mitad de la matriz, es posible que divida por el número total de puntos, en lugar de por el número de puntos de esa mitad.

Comparte este artículo: Compartir en Twitter Compártelo en Facebook Compartir en Google Plus Compartir en LinkedIn
Comentarios (0):
* (Su comentario será publicado después de la revisión)

E-Mail


Nombre


Web


Mensaje


CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code