Puedes encontrar esta librería en CRAN y descargarla directamente desde R y RStudio.
ESCUCHA ESTE POST COMO PODCAST
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.
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.
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.
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.
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)\).
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:
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.
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.
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.
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.
Tendencias seculares, medidas sobre toda la trayectoria, sincronización global o estadísticas que dependen simultáneamente del conjunto completo de observaciones.
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:
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.
Compara el número de componentes conectadas de \(\tau^{+}\) y \(\tau^{-}\).
Compara los tamaños de las bases forward y backward.
Conserva el signo de la diferencia y permite identificar en qué dirección temporal aparece mayor conectividad.
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:
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.
La documentación establece además una relación estructural importante:
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:
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
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.
Una sola palabra de 64 bits puede representar el subconjunto completo.
El backend utiliza dos palabras mediante despacho especializado en compilación.
Tres palabras permiten mantener operaciones especializadas sin bucles generales.
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.
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:
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.
El grafo elegido modifica la topología. Como NVG es más denso, normalmente tenderá a producir menos fragmentación que HVG.
Una frecuencia demasiado baja puede hacer aparecer separaciones que reflejen ausencia de observaciones más que una fractura estructural.
Pequeños solapamientos geométricos pueden generar conexiones que desaparecían bajo otra realización o frecuencia de muestreo.
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.
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.


Leave a Comment/Deja un Comentario