Saltar al contenido

# procesos-estocasticos-discretos-simulacion-estados-y-tiempos-de-absorcion-con-pydtmc

Procesos Estocásticos Discretos: Simulación, Estados y Tiempos de Absorción con PyDTMC

Volver a la portada del curso
Lectura (Markdown)

Clasificación de Estados en Cadenas de Markov

Sección 3 · Estados de una Cadena de Markov

Clasificación de estados en cadenas de Markov

Antes de calcular nada sobre una cadena de Markov conviene saber qué tipo de estados tiene. La respuesta decide qué preguntas tienen sentido: en una cadena ergódica preguntas por la distribución de largo plazo; en una cadena con estados absorbentes preguntas dónde termina el sistema y cuánto tarda. Clasificar estados es leer la estructura de la matriz de transición $P$ antes de hacer cuentas.

Accesibilidad y clases comunicantes

El estado $j$ es accesible desde $i$ si existe algún $n \ge 0$ con $(P^n)_{ij} > 0$: hay un camino con probabilidad positiva de $i$ a $j$. Dos estados se comunican si cada uno es accesible desde el otro. La comunicación es una relación de equivalencia, así que parte el conjunto de estados en clases comunicantes. Si toda la cadena forma una sola clase, la cadena es irreducible.

Una clase es cerrada si ninguna transición sale de ella. Una vez que el proceso entra, se queda ahí para siempre.

Recurrentes, transitorios y absorbentes

Sea $f_{ii}$ la probabilidad de regresar alguna vez a $i$ partiendo de $i$. El estado es recurrente si $f_{ii} = 1$ y transitorio si $f_{ii} < 1$. Un estado transitorio se visita un número finito de veces; tarde o temprano el proceso lo abandona para siempre.

En una cadena finita la regla es simple: una clase es recurrente si y solo si es cerrada. Todas las demás clases son transitorias. El caso extremo de clase cerrada es un solo estado con $p_{ii} = 1$: un estado absorbente. Una cadena es absorbente cuando tiene al menos un estado absorbente y desde cualquier estado se puede llegar a alguno.

Periodo y ergodicidad

El periodo de un estado es $d(i) = \gcd\{n \ge 1 : (P^n)_{ii} > 0\}$. Si $d(i) = 1$ el estado es aperiódico; si $d(i) = 2$, el proceso solo puede volver a $i$ en un número par de pasos. Todos los estados de una clase comparten el mismo periodo. Una cadena finita irreducible y aperiódica es ergódica: tiene una única distribución estacionaria y converge a ella desde cualquier punto de partida.

Aplicación: clasificar con PyDTMC

Esta cadena de seis estados mezcla todos los casos: una clase transitoria $\{A, B\}$, un ciclo cerrado $\{C, D\}$, un estado absorbente $E$ y un estado transitorio $F$ que puede caer en $A$ o en $E$.

from pydtmc import MarkovChain

P = [[0.5, 0.5, 0.0, 0.0, 0.0, 0.0],
     [0.3, 0.4, 0.3, 0.0, 0.0, 0.0],
     [0.0, 0.0, 0.0, 1.0, 0.0, 0.0],
     [0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
     [0.0, 0.0, 0.0, 0.0, 1.0, 0.0],
     [0.2, 0.0, 0.0, 0.0, 0.3, 0.5]]
mc = MarkovChain(P, ["A", "B", "C", "D", "E", "F"])
print(mc.communicating_classes)  # [['A','B'], ['C','D'], ['E'], ['F']]
print(mc.recurrent_classes)      # [['C','D'], ['E']]
print(mc.transient_states)       # ['A', 'B', 'F']
print(mc.absorbing_states)       # ['E']
print(mc.periods, mc.is_absorbing)  # [1, 2, 1, 1] False

La salida confirma la teoría. $\{C, D\}$ es cerrada, así que es recurrente, y tiene periodo 2 porque alterna $C \to D \to C$. $E$ es absorbente. $A$, $B$ y $F$ son transitorios: desde $B$ se puede ir a $C$ y nunca volver. Observa que is_absorbing es False aunque existe un estado absorbente: desde $A$ y $B$ el proceso puede quedar atrapado en $\{C, D\}$, que es cerrada pero no absorbente. Además, mc.pi devuelve dos distribuciones estacionarias, una por cada clase recurrente.

Por qué importa la clasificación

  • Cadena ergódica: usa pi, mean_recurrence_times() y mixing_time. La pregunta es el largo plazo.
  • Cadena absorbente: usa absorption_probabilities() y mean_absorption_times(). La pregunta es dónde termina y cuándo.
  • Cadena reducible sin ser absorbente: el resultado depende del estado inicial. Conviene estudiar cada clase cerrada por separado con to_subchain o rediseñar los estados.

Trampas comunes

  • Creer que "tener un estado absorbente" equivale a "cadena absorbente". También hace falta que todos los estados puedan llegar a uno.
  • Leer el periodo de toda la cadena. En una cadena reducible, period de PyDTMC es el mínimo común múltiplo de los periodos de las clases recurrentes (aquí da 2). Para diagnosticar usa periods, que da un valor por clase comunicante.
  • Confundir "transitorio" con "poco frecuente". Un estado transitorio puede visitarse muchas veces al principio. Lo que lo define es que el proceso termina por abandonarlo.
  • Olvidar los ceros estructurales. Si en tus datos nunca observaste una transición, la matriz estimada tiene un cero y puede crear clases cerradas artificiales.

Cierre

Cada vez que construyas una cadena, imprime communicating_classes, recurrent_classes y absorbing_states antes de cualquier cálculo. Si la estructura no coincide con lo que esperas del sistema real, el error está en la matriz, no en las fórmulas.

Recursos