Cadenas de Markov

Una cadena de Markov modela un sistema que se mueve entre un conjunto de estados a lo largo del tiempo, donde la probabilidad de pasar al siguiente estado depende únicamente del estado actual, no de cómo se llegó hasta ahí. Esta propiedad de “sin memoria del pasado” convierte a las cadenas de Markov en uno de los modelos más simples y útiles de procesos aleatorios que evolucionan en el tiempo, y se apoya directamente en los experimentos aleatorios vistos antes en esta sección.

La propiedad de Markov

Para una secuencia de estados \(X_0, X_1, X_2, \ldots\), la propiedad de Markov dice:

\[P(X_{n+1} = j \mid X_n = i, X_{n-1}, \ldots, X_0) = P(X_{n+1} = j \mid X_n = i)\]

Todo lo relevante sobre el futuro ya está capturado por el estado presente. Toda la historia pasada no añade nada más una vez que se conoce dónde está el sistema ahora mismo.

La matriz de transición

Las probabilidades de transición en un paso \(p_{ij} = P(X_{n+1}=j \mid X_n=i)\) se recogen en una matriz \(P\). Cada fila de \(P\) debe sumar 1: desde el estado \(i\), el sistema tiene que ir a algún sitio, posiblemente quedándose en \(i\).

Ejemplo resuelto: un modelo meteorológico simple

Un modelo meteorológico de dos estados

Dos estados, Soleado y Lluvioso. Si hoy hace sol, mañana hace sol con probabilidad 0,8 y llueve con probabilidad 0,2. Si hoy llueve, mañana hace sol con probabilidad 0,4 y llueve con probabilidad 0,6. La matriz de transición (filas y columnas ordenadas Soleado, Lluvioso):

\[P = \begin{pmatrix} 0{,}8 & 0{,}2 \\ 0{,}4 & 0{,}6 \end{pmatrix}\]

Partiendo de un día soleado ($X_0 = $ Soleado, así que la distribución inicial es \((1, 0)\)), se calcula la distribución de probabilidad sobre los siguientes días multiplicando repetidamente por \(P\).

Día 1: \((1,0) \cdot P = (0{,}8,\ 0{,}2)\).

Día 2: \((0{,}8, 0{,}2) \cdot P = (0{,}8 \times 0{,}8 + 0{,}2 \times 0{,}4,\ \ 0{,}8 \times 0{,}2 + 0{,}2 \times 0{,}6) = (0{,}64+0{,}08,\ \ 0{,}16+0{,}12) = (0{,}72,\ 0{,}28)\).

Día 3: \((0{,}72, 0{,}28) \cdot P = (0{,}688,\ 0{,}312)\).

Así, la probabilidad de un día soleado es \(0{,}8 \to 0{,}72 \to 0{,}688\), descendiendo lentamente día a día, aunque hoy fuera seguro que hacía sol.

Example icon

La distribución estacionaria

Cuando \(n \to \infty\), la distribución sobre los estados se estabiliza en una distribución fija a largo plazo \(\pi\) que ya no cambia de un paso al siguiente.

\[\pi P = \pi, \qquad \sum_i \pi_i = 1\]

\(\pi\) es un autovector por la izquierda de \(P\) con autovalor 1, normalizado para que sus componentes sumen 1.

Para el ejemplo meteorológico, la distribución estacionaria es \(\pi = (2/3,\ 1/3) = (0{,}6667,\ 0{,}3333)\): a largo plazo, alrededor de dos tercios de los días son soleados y un tercio lluviosos, sin importar el tiempo que haga hoy. Esto coincide con la tendencia ya visible en la secuencia día a día anterior: \(0{,}8 \to 0{,}72 \to 0{,}688\) va convergiendo lentamente hacia \(0{,}6667\).

Gráfico de líneas que muestra la probabilidad de un día soleado convergiendo al valor estacionario de 2/3 a lo largo de 15 días

La probabilidad de un día soleado decae de forma suave y monótona desde 1 hasta el valor estacionario \(2/3\), sin importar que el día 0 fuera seguro que hacía sol.

Hallar la distribución estacionaria en R

Resolver \(\pi P = \pi\) equivale a encontrar el autovector por la izquierda de \(P\) asociado al autovalor 1 (equivalentemente, el autovector de \(P^T\) para el autovalor 1), y luego normalizarlo para que sume 1.

⚠️ Una distribución estacionaria solo existe, y es única, bajo ciertas condiciones

No toda cadena de Markov tiene una distribución estacionaria única. Se requiere que la cadena sea irreducible (cada estado se puede alcanzar desde cualquier otro) y aperiódica (no cicla entre estados siguiendo un patrón rígido y predecible). El ejemplo meteorológico cumple ambas condiciones trivialmente: se puede llegar a cualquier estado desde cualquier otro, y no hay ningún ciclo forzado. Pero las cadenas con estados absorbentes (un estado al que se puede entrar pero del que nunca se puede salir) o las cadenas que alternan estrictamente entre estados siguiendo un ciclo fijo pueden no converger a una única distribución estacionaria, o tener una pero no llegar a alcanzarla nunca desde todos los puntos de partida.

Dónde aparecen las cadenas de Markov

Las matemáticas abstractas sustentan una sorprendente variedad de aplicaciones reales:

  • PageRank de Google: las páginas web son los estados, los enlaces son las transiciones, y la distribución estacionaria clasifica la importancia de cada página.
  • Markov Chain Monte Carlo (MCMC): se usa constantemente en computación bayesiana para muestrear de distribuciones a posteriori complejas.
  • Generación de texto y autocompletado: probabilidades de transición de palabra a palabra (o de carácter a carácter).
  • Juegos de mesa y modelos de colas: cambios de posición impulsados por dados, clientes que llegan y salen de una cola.
  • Genética: modelar secuencias de nucleótidos a lo largo de una cadena de ADN.

Ejecutarlo en R

P <- matrix(c(0.8, 0.2,
              0.4, 0.6), nrow = 2, byrow = TRUE)
rownames(P) <- colnames(P) <- c("Sunny", "Rainy")

# Transición en n pasos: distribución de probabilidad tras n días partiendo de Sunny
library(expm)
p0 <- c(1, 0)
p0 %*% (P %^% 3)

# Distribución estacionaria mediante autovectores
ev <- eigen(t(P))
pi_vec <- Re(ev$vectors[, which(abs(ev$values - 1) < 1e-8)])
pi_vec / sum(pi_vec)

# Simular un recorrido aleatorio por la cadena
library(markovchain)
mc <- new("markovchain", states = c("Sunny","Rainy"), transitionMatrix = P)
rmarkovchain(n = 20, object = mc, t0 = "Sunny")

💡 Cómo leer rápido una matriz de transición

Las filas son “desde”, las columnas son “hacia”, y cada fila debe sumar exactamente 1, una comprobación rápida al construir o revisar a mano una matriz de transición. Los elementos de la diagonal \(p_{ii}\) indican lo “pegajoso” que es un estado: qué probabilidad hay de que el sistema se quede donde está en lugar de cambiar. En el ejemplo meteorológico, Soleado es más pegajoso (0,8) que Lluvioso (0,6), y por eso precisamente la distribución estacionaria a largo plazo favorece los días soleados.