El método de Higuchi para medir la dimensión fractal de una serie de tiempo

El algoritmo

El siguiente algoritmo está basado en un artículo de T. Higuchi[1] para medir la dimensión fractal de una serie de puntos (t, f(t)).

Sea la serie

X(1), X(2), X(3),...X(N)

Los métodos para determinar la dimensión fractal de un objeto consisten, a grandes rasgos, en tomar una medida del objeto en cuestión a distintas escalas y encontrar la pendiente de la recta que se obtiene en escala doble logarítmica cuando se grafica en un eje el tamaño de la unidad de medida y por el otro la longitud del objeto. Para esto lo que se hace es cambiar el tamaño del patrón de medida. En la serie anterior podríamos tomar un parámetro k como el tamaño de la escala a la que mediremos la serie. Con k = 3 encontraremos la distancia de la serie cuando consideramos sus elementos separados por 3 pasos, con k = 4 la distancia cuando consideramos sus elementos separados por 4 pasos, etcétera.

Más aún, dependiendo del punto de inicio, para cada valor de k podemos tener un conjunto de m subseries X_{k}^{m} de la forma:

X_{k}^{m}: X(m), X(m+k), X(m+2k),...,X(m + [\frac{N-m}{k}]\cdot k)

Por ejemplo, si tenemos originalmente

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20

con k = 3 y m = 3 se tienen las tres subseries siguientes:
X_{3}^{1}; 1, 4, 7, 10, 13, 16, 19
X_{3}^{2}; 2, 5, 8, 11, 14, 17, 20
X_{3}^{3}; 3, 6, 9, 12, 15, 18

Para los valores m y k Higuchi define la longitud de la curva como sigue:

L_{m}(k) = |X(m+ik) - X(m+(i-1)\cdot k)|\frac{N-1}{[\frac{N-m}{k}]k}

El término \frac{N - 1}{[(N - m)/k]k} representa el factor de normalización para la longitud de la curva de la subserie.

Y se define L(k) como la suma de las distancias L_{m}(k) dividida entre k.

L(k) = \sum_{i=1}^{\left[ \frac{N-m}{k} \right]}\frac{L_{m}(k)}{k}.

Si \langle L(k) \rangle \propto k^{-D}, entonces la curva es fractal con dimensión D. Para probar esta dependencia se repite el proceso para distintos valores de k. Esto aparece automatizado en el siguiente programa en python.

#!/usr/bin/python
################################################################################
#                                                                              #
# Este programa utiliza el metodo de Higuchi para encontrar la dimension       #
# fractal de una serie                                                         #
#                                                                              #
# Ultima modificacion: 29 de junio de 2022                                     #
#                                                                              #
################################################################################

################################################################################
# 1) Recibir los datos de la serie de tiempo desde un archivo externo          #
################################################################################

import math

X = [0] #El elemento 0 no sera tomado en cuenta
N = 0

Archivo = open('archivo.dat', 'r')         #El nombre del archivo con los datos

linea = Archivo.readline()
#print(linea)
while "" != linea:
X.append(float (linea))
N += 1
linea = Archivo.readline()

Archivo.close()

################################################################################
# 2) Formula de Higuchi                                                        #
################################################################################

kmaxima = int(math.floor(N/10))
Lm = 0
Lk = 0
for k in range (1, kmaxima + 1):
Lk = 0
for m in range (1, k + 1):
Lm = 0
for i in range (1, int((N-m)/k) + 1):
Lm += abs( X[m + i*k] - X[m + (i-1)*k])

a =  (N-1)/(((N-m)/k)*k)
Lk += (1.0/k)*Lm*a

print( math.log(k), math.log(Lk))

#FIN DEL SCRIPT

Ejemplos

En el siguiente cuadro se muestran respectivamente una serie de 1000 puntos de ruido browniano, ruido rosa y ruido blanco.

El pase de diapositivas requiere JavaScript.

Y en este aparecen los ajustes (en color rojo) a los valores de k y L(k) en escala doble logarítmica.

El pase de diapositivas requiere JavaScript.

Los valores obtenidos para el exponente D son se muestra en la siguiente tabla:

Ruido Exponente teórico Exponente obtenido
Browniano 1.5 1.5789
Rosa 1.9 1.9023
Blanco 2 2.0155

Consideraciones finales

El de Higuchi es quizá el método más utilizado para calcular la dimensión de Hausdorff-Besicovitch cuando los datos consisten en una serie de tiempo. Ha sido utilizado, entre otras, en el estudio de señales sísmicas, encefalogramas y electrocardiogramas. Cualquiera que haya intentado utilizar el método de conteo de cajas para calcular la dimensión fractal de una serie sabe lo complicado y poco práctico que resulta.

Wikipedia presenta la variante en la que en lugar de graficar en el eje horizontal el logaritmo de k, se grafica el logaritmo de 1/k, esto no afecta el valor de la pendiente, salvo en un signo.

Referencias

[1] Higuchi, T. (1988). Approach to an irregular time series on the basis of the fractal theory. Physica D: Nonlinear Phenomena, 31(2), 277-283.
Higuchi1988PhysicaD

Deja Tu Opinión: