Espartaco

“Is that to say we are against Free Trade? No, we are for Free Trade, because by Free Trade all economical laws, with their most astounding contradictions, will act upon a larger scale, upon the territory of the whole earth; and because from the uniting of all these contradictions in a single group, where they will stand face to face, will result the struggle which will itself eventuate in the emancipation of the proletariat.”

Karl Heinrich Marx · Marx-Engels Collected Works, Vol. VI, p. 290

26,447 views since December 2020

26,447 visitas desde diciembre de 2020

EnglishEspañol

topologyR: Convertir Series Temporales en Patrones Espaciales Para Poner a Prueba Las Hipótesis Ocultas de Tus Modelos

Puedes encontrar esta librería en CRAN y descargarla directamente desde R y RStudio.

Topología · Series temporales · Grafos de visibilidad

Antes de suavizar una serie, preguntá si realmente es una sola pieza

topologyR transforma una serie temporal en un grafo, el grafo en un espacio topológico y su conectividad en una prueba previa sobre la estructura que estamos a punto de modelar.

topologyR · R · Rcpp · Topological Data Analysis · desarrollado por José Mauricio Gómez Julián · GitHub

Hay una costumbre extraordinariamente común en análisis cuantitativo: tomar una serie temporal y ajustarle una curva suave. Puede ser un spline, una interpolación, una tendencia de largo plazo, un kernel o algún método semejante.

Pero todos esos procedimientos comparten una suposición previa: que estamos mirando una sola estructura continua.

¿Y si la serie contiene fracturas estructurales? ¿Y si aquello que el calendario presenta como una secuencia única es, desde la estructura topológica inducida por los datos, una colección de componentes separados?

En ese caso, aplicar una única operación de suavizado global puede imponer una conexión entre regiones que el propio análisis estructural no respalda.

topologyR fue construido alrededor de una idea sencilla: examinar esa estructura antes de elegir el modelo.

La pregunta previa

Antes de preguntar qué spline, tendencia o interpolación se ajusta mejor, topologyR plantea otra pregunta: ¿la topología inducida por nuestra serie aparece como una sola componente conectada o como varias?

De números a formas: el pipeline completo

El procedimiento transforma progresivamente una serie numérica en un objeto topológico.

Serie temporal \(x_1,x_2,\ldots,x_n\)
Grafo de visibilidad relaciones geométricas entre observaciones
Espacio topológico vecindades, base y conectividad

La arquitectura puede resumirse en tres etapas.

Construir un grafo a partir de la geometría de la serie temporal mediante visibilidad horizontal o natural.

Construir una topología sobre los vértices del grafo utilizando vecindades cerradas y la construcción de Nada.

Calcular la conectividad del espacio resultante y utilizar sus componentes para caracterizar la estructura global.

Paso 1: convertir una serie temporal en un grafo

Imaginemos una serie dibujada como una cadena de montañas y valles. Cada observación es un punto a cierta altura.

La pregunta de un visibility graph es literalmente: ¿qué puntos pueden “verse” entre sí?

Horizontal Visibility Graph — HVG

Dos observaciones \(x_i\) y \(x_j\) son horizontalmente visibles cuando todas las observaciones intermedias se encuentran por debajo de ambas.

\[ x_k < \min(x_i,x_j) \qquad \forall\, i

Es una regla simple que captura la arquitectura de máximos y mínimos de la serie.

El HVG puede construirse en tiempo lineal y produce un grafo relativamente parsimonioso.

Natural Visibility Graph — NVG

El NVG utiliza una condición geométrica más permisiva. Dos puntos están conectados si todas las observaciones situadas entre ambos quedan por debajo de la recta que los une.

El resultado suele ser un grafo más denso y rico en conexiones.

Según la arquitectura del paquete, el NVG contiene al HVG como subgrafo y presenta complejidad esperada del orden de \(O(n\log n)\).

Una propiedad importante

HVG y NVG son construcciones sin parámetros de escala que ajustar: no requieren escoger un bandwidth, un \(\varepsilon\), un radio ni un threshold arbitrario para decidir qué observaciones están conectadas. La estructura proviene de la geometría de la propia serie.

Paso 2: del grafo a una topología

Hasta aquí seguimos en teoría de grafos. Un grafo nos dice qué vértices están unidos mediante aristas.

topologyR da un paso adicional y construye un espacio topológico finito.

La construcción sigue el enfoque atribuido en la documentación a Nada, El Atik y Atef.

Para cada vértice \(v\), se forma su vecindad cerrada:

\[ N[v] = \{v\} \cup \{u : u\sim v\}. \]

Es decir: el vértice y todos sus vecinos directos.

Esas vecindades forman una subbase.

Después:

  • las intersecciones finitas generan una base;
  • las uniones arbitrarias de elementos de esa base forman la topología.

El resultado es una familia de subconjuntos que satisface los axiomas topológicos estándar.

¿Qué significa eso en lenguaje plano?

Podemos pensar en las vecindades como una primera descripción de qué puntos pertenecen estructuralmente cerca de cuáles.

Las intersecciones refinan esa información: conservan aquello en lo que distintas vecindades coinciden.

Las uniones permiten construir regiones mayores a partir de esos bloques.

topologyR utiliza así la arquitectura local del grafo para construir una noción global de proximidad y separación.

Paso 3: ¿una componente o varias?

El objetivo final es estudiar la conectividad topológica.

Un espacio es conectado cuando no puede separarse en dos conjuntos abiertos disjuntos, no vacíos, cuya unión sea todo el espacio.

\[ X \neq U\sqcup V \qquad \text{con } U,V\neq\varnothing \text{ abiertos} \]

Para espacios finitos, la documentación se apoya en resultados clásicos de McCord y Stong y utiliza el preorden de especialización para obtener los componentes.

Lo decisivo computacionalmente es que la conectividad puede calcularse directamente a partir de la base, sin enumerar necesariamente toda la topología.

La regla de decisión

Dentro del marco metodológico propuesto por el paquete, la conectividad se transforma en una puerta previa a la modelización.

Topología conectada

La estructura inducida por la serie es compatible con tratar los datos como una unidad global dentro de este criterio. Métodos continuos globales pueden considerarse metodológicamente admisibles.

Topología desconectada

La estructura aparece fragmentada. El paquete propone respetar los componentes resultantes y considerar modelización, imputación o análisis separados por régimen.

Entre los métodos cuyo uso puede depender de esta decisión se encuentran splines, kriging, interpolaciones polinomiales, kernels y determinadas técnicas globales de suavizado.

Global y local no son la misma cosa

Una fragmentación global no vuelve inútil toda propiedad calculada sobre la serie.

La documentación distingue entre propiedades globales y propiedades locales.

Propiedades globales

Tendencias seculares, medidas sobre toda la trayectoria, sincronización global o estadísticas que dependen simultáneamente del conjunto completo de observaciones.

Propiedades locales

Volatilidad de ventanas cortas, cambios punto a punto o autocorrelaciones locales pueden seguir estudiándose dentro de cada componente.

La información topológica sirve entonces no sólo para decir “sí” o “no”, sino también para indicar dónde termina una región y comienza otra.

El tiempo tiene dirección

Hasta ahora hemos tratado las aristas del grafo como no dirigidas.

Pero una serie temporal no es una nube de puntos. Existe un antes y un después.

Con directed = TRUE, topologyR orienta las aristas desde la observación anterior hacia la posterior.

El resultado es un directed acyclic graph —DAG— cuyo orden natural viene dado por el tiempo.

Una serie, dos topologías

Sobre ese grafo dirigido pueden construirse dos estructuras de vecindad:

\(\tau^{+}\) topología forward: qué estructura vemos mirando hacia el futuro
\(\tau^{-}\) topología backward: qué estructura vemos mirando hacia el pasado

El par \[ (X,\tau^{+},\tau^{-}) \] constituye, dentro de esta construcción, un espacio bitopológico.

La documentación conecta esta arquitectura con la noción de bitopología introducida por Kelly.

Irreversibilidad como asimetría topológica

Si un proceso temporal fuese perfectamente simétrico hacia adelante y hacia atrás, esperaríamos que ambas topologías fueran estructuralmente muy similares.

Si la dinámica posee una flecha temporal, pueden divergir.

topologyR cuantifica esa divergencia mediante varias medidas.

Component irreversibility

Compara el número de componentes conectadas de \(\tau^{+}\) y \(\tau^{-}\).

Base irreversibility

Compara los tamaños de las bases forward y backward.

Asymmetry direction

Conserva el signo de la diferencia y permite identificar en qué dirección temporal aparece mayor conectividad.

Reversibilidad ideal

Una dinámica perfectamente simétrica debería producir estructuras forward y backward equivalentes bajo el criterio considerado.

Un ejemplo intuitivo: expansiones lentas y contracciones bruscas

Pensemos en un ciclo económico donde la producción crece gradualmente durante años y luego cae violentamente en pocos trimestres.

Geométricamente, ambas direcciones temporales no “ven” exactamente lo mismo.

Durante una expansión gradual, la visibilidad hacia adelante puede mantenerse durante trayectorias relativamente largas.

Después de una caída abrupta, la geometría hacia atrás puede quedar más fragmentada.

Dentro de la interpretación propuesta por topologyR, esto debería generar:

\[ C_{+} < C_{-}, \]

es decir, menos componentes forward que backward y, por tanto, una dirección de asimetría positiva bajo la convención del paquete.

Una tercera capa: la topología de Alexandrov

El grafo dirigido permite construir también una topología basada en alcanzabilidad.

Si desde un vértice \(v\) podemos llegar a otro vértice siguiendo las aristas dirigidas, ambos quedan relacionados por el orden inducido por el DAG.

La topología de Alexandrov, \(\tau_A\), utiliza precisamente esa relación.

Para cada vértice, su abierto mínimo contiene los puntos alcanzables desde él.

\[ U_v = \{u : v \leadsto u\}. \]

La documentación establece además una relación estructural importante:

\[ \tau_A \subseteq \tau^{+}_{\text{Nada}}. \]

La topología de Alexandrov captura principalmente la estructura de orden; la construcción de Nada puede generar información adicional mediante el cierre por intersecciones.

¿Cuánta información adicional aporta Nada?

Una forma muy simple de verlo es comparar los tamaños de ambas bases:

\[ \left|B_{\text{Nada}}\right| – \left|B_A\right|. \]

Una diferencia grande indica que las operaciones de cierre de la construcción de Nada están generando una estructura sustancialmente más rica que la mera relación de alcanzabilidad.

Una diferencia pequeña indica que la estructura de orden ya captura buena parte de la información topológica disponible bajo esta construcción.

¿Pero no puede explotar el número de conjuntos abiertos?

Sí. Enumerar una topología finita completa puede resultar exponencial.

Ésta no es una peculiaridad de R ni una implementación deficiente: es una propiedad combinatoria del problema.

topologyR evita depender de esa enumeración para su decisión principal.

Según la documentación, la conectividad se calcula sobre la base mediante el preorden de especialización con complejidad del orden de

\[ O\!\left( n^2 \left\lceil \frac{B}{64} \right\rceil \right). \]

Bitsets, C++ y operaciones a nivel de máquina

El backend utiliza Rcpp y representa subconjuntos como arrays compactos de palabras de 64 bits.

De ese modo, operaciones de conjuntos pueden ejecutarse como instrucciones binarias de bajo nivel.

Hasta 64 puntos

Una sola palabra de 64 bits puede representar el subconjunto completo.

Hasta 128

El backend utiliza dos palabras mediante despacho especializado en compilación.

Hasta 192

Tres palabras permiten mantener operaciones especializadas sin bucles generales.

Tamaños mayores

Una ruta dinámica permite manejar series arbitrariamente mayores, complementada con OpenMP donde esté disponible.

El paquete incorpora además límites como max_base_sets y max_open_sets para detener de forma transparente operaciones de cierre que entren en regiones demasiado costosas.

El caso de prueba: el ciclo económico estadounidense

El trabajo acompañante aplica la metodología a 129 observaciones trimestrales de crecimiento real del PIB de Estados Unidos entre 1992 y 2024.

El análisis bitopológico reporta una dirección de asimetría positiva, consistente con la hipótesis de expansiones más graduales y contracciones más abruptas.

La topología no dirigida divide además la serie en seis componentes conectadas.

Un detalle particularmente interesante aparece alrededor de la pandemia: la contracción de COVID-19 y el rebote posterior forman un único episodio topológico dentro de ese análisis.

La geometría de visibilidad interpreta así la caída y recuperación en V como una sola estructura, en lugar de dos cambios completamente independientes.

Qué produce topologyR

No intenta pronosticar el próximo trimestre. No intenta estimar una elasticidad. Su resultado central es una clasificación estructural de la serie y de sus posibles fronteras internas.

topologyR no es un sustituto de persistent homology

El paquete se sitúa en una región específica de Topological Data Analysis.

Bibliotecas como GUDHI, Ripser, TDAstats o scikit-TDA estudian estructuras multiescala mediante homología persistente.

Allí interesan invariantes como:

\[ \beta_0,\qquad \beta_1,\qquad \beta_2,\ldots \]

donde \(\beta_0\) describe componentes conectadas, \(\beta_1\) ciclos o agujeros unidimensionales y \(\beta_2\) cavidades de dimensión superior.

topologyR se concentra deliberadamente en \(\beta_0\): conectividad, aplicada a series unidimensionales mediante topologías inducidas por grafos.

Pregunta Herramienta más natural
¿La serie aparece estructuralmente como una o varias componentes? topologyR
¿Existen ciclos, cavidades o estructuras persistentes a múltiples escalas? Persistent homology / TDA general
¿Existe una asimetría topológica entre pasado y futuro? Modo dirigido de topologyR
¿Queremos profundizar después de identificar componentes? Flujo híbrido: topologyR + persistent homology

Los límites importan

La documentación también identifica explícitamente dónde debe tenerse cuidado.

HVG y NVG pueden discrepar

El grafo elegido modifica la topología. Como NVG es más denso, normalmente tenderá a producir menos fragmentación que HVG.

El muestreo importa

Una frecuencia demasiado baja puede hacer aparecer separaciones que reflejen ausencia de observaciones más que una fractura estructural.

El ruido también importa

Pequeños solapamientos geométricos pueden generar conexiones que desaparecían bajo otra realización o frecuencia de muestreo.

Sólo \(\beta_0\)

La metodología está orientada a conectividad y fragmentación, no a capturar todas las estructuras topológicas posibles.

Por eso, la propia documentación recomienda interpretar la conectividad como evidencia prima facie, especialmente en casos cercanos a la frontera.

La matemática también fue formalizada

Una característica poco habitual del proyecto es que el teorema central relacionado con la extensión dirigida de la construcción de Nada fue formalizado en Lean 4 utilizando Mathlib.

Eso significa que una parte central de la arquitectura matemática no se apoya únicamente en una demostración escrita convencional, sino que también ha sido codificada en un sistema de demostración formal y verificada por el kernel del asistente.

La documentación señala además que la implementación es compatible con CRAN, pasa R CMD check --as-cran y contiene 68 pruebas unitarias que abarcan los grafos de visibilidad, construcción topológica, conectividad, topología dirigida, Alexandrov y análisis bitopológico.

Instalación y recursos

El paquete requiere R 4.0.0 o posterior junto con Rcpp y ggplot2.

El proyecto dispone de repositorio, wiki y artículo acompañante:

El artículo acompañante se titula “Bitopological Spaces from Directed Graphs: Extending the Nada Construction to Capture Temporal Irreversibility”.

La cuestión metodológica de fondo

Gran parte de la modelización cuantitativa comienza después de una decisión que raramente se formula en voz alta: tratar los datos como una unidad coherente.

Ajustamos una curva. Interpolamos un hueco. Calculamos una tendencia secular. Aplicamos un kernel a toda la muestra.

topologyR intenta trasladar esa decisión desde el terreno de la costumbre al de una prueba estructural explícita.

Primero observa las relaciones geométricas. Después construye la topología. Finalmente pregunta qué componentes emergen.

Sólo entonces llega la discusión sobre qué modelo utilizar.

Ésa es la propuesta central de topologyR: antes de imponer continuidad, suavidad o una estructura global sobre una serie, examinar si la topología inducida por sus relaciones de visibilidad respalda tratarla como una sola pieza. Y cuando incorporamos la dirección temporal, la misma maquinaria permite comparar la estructura hacia el futuro y hacia el pasado, convirtiendo la asimetría entre ambas en una caracterización topológica de irreversibilidad. No reemplaza a toda la topological data analysis; ocupa un lugar mucho más concreto: servir como guardián estructural antes de modelar.

topologyR es desarrollado por José Mauricio Gómez Julián y distribuido bajo licencia MIT. El código, la documentación, la wiki y el artículo acompañante están disponibles en GitHub.


Descubre más de Marxist Philosophy of Science

Suscríbete para recibir las últimas entradas en tu correo electrónico.

Follow the blogSeguí al blog

Comments

Leave a Comment/Deja un Comentario

Descubre más de Marxist Philosophy of Science

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Continuar leyendo