Procesos Estocásticos y Cadenas de Markov · Tema 26

Evolución de probabilidades

Cómo avanza el vector π(n+1) = π(n)·P desde π(0) hacia el equilibrio.

01 · Punto de partida

De historias a chances por paso

Simular trayectorias (Temas 19–25) muestra historias; pero para decidir conviene la distribución π(n): ¿con qué chance está la cadena en cada estado en el paso n?

Esa distribución evoluciona con una regla exacta: multiplicar por P. Sin azar, sin réplicas: puro cálculo.

  • ¿Dónde empieza π(0): estado seguro o reparto?
  • ¿Cómo se obtiene π(1), π(2)… desde π(0)?
  • ¿Hacia dónde tiende π(n) con n grande?
  • ¿Cuántos pasos faltan para estabilizar?

02 · Definición

¿Qué es π(n)?

Tres ideas la fijan:

π

Vector fila

π(n) = [P(Xₙ=0), …, P(Xₙ=K−1)]. Entradas ≥ 0 que suman 1.

×P

Paso

π(n+1) = π(n)·P: repartir cada masa según su fila.

→

Límite

Si converge, va a π con π = πP: la estacionaria (Tema 39).

En 2×2 con a = 0,3 y b = 0,5, la chance de estar en 1 sigue πₙ₊₁ = a + πₙ·(1−a−b): converge a a/(a+b) = 0,375.

Evolución desde π(0) = [1, 0] (seguro en 0).
nπ(n) en 0π(n) en 1
01,0000,000
10,7000,300
20,6400,360
∞0,6250,375

03 · Anatomía

Inicio, paso y velocidad

Cuatro lecturas de la evolución:

π(0)
El inicio: seguro en un estado o reparto. Manda los primeros pasos. (Tema 27)
Paso πP
Cada multiplicación mezcla según P. N pasos = π(0)·Pⁿ. (Tema 28)
Velocidad
Qué tan rápido se olvida π(0): con a+b grande, en 3–5 pasos; con diagonales ≈ 1, lento.
Límite π
Si existe, cumple π = πP y ya no cambia. (Temas 39–40)

Trayectorias

Historias con azar

Muestran ruido y casos. Para promediar hacen falta réplicas.

π(n)

Chances exactas

Sin azar: el cálculo da la distribución de todas las historias.

04 · Ejemplos

Evoluciones que anticipan el equilibrio

La misma P, distintos inicios, mismo destino:

π(0)→×P ×P…→π
  1. 1
    Clima desde sol seguro.

    π(0) = [1, 0] converge al reparto nublado medio.

  2. 2
    Servidor desde caído.

    π(0) = [0, 0, 1]: la reparación lo lleva al régimen.

  3. 3
    Desde el equilibrio.

    Si π(0) = π, nada cambia: ya está estable.

  4. 4
    Cadena lenta.

    Diagonales 0,99: tarda cientos de pasos en olvidar.

  5. 5
    Cadena rápida.

    Filas casi iguales: en 2–3 pasos ya está.

05 · Representación en Python

Multiplicar vector por matriz

En Python, π es una lista y el paso es suma ponderada por columnas: π'(j) = Σᵢ π(i)·P(i,j). Repetir N veces da π(N).

Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Cambiá π(0) y mirá la convergencia.

P = [[0.7, 0.3], [0.5, 0.5]]

def paso(pi):
    K = len(pi)
    return [sum(pi[i] * P[i][j] for i in range(K)) for j in range(K)]

pi = [1.0, 0.0]
for n in range(4):
    print(n, [round(x, 3) for x in pi])
    pi = paso(pi)

Desde [1, 0] la chance de 1 sube 0 → 0,3 → 0,36 → 0,372: se acerca a 0,375 sin simular historias.

Evolución en N pasos de una vez

Encapsular el bucle para comparar inicios:

P = [[0.7, 0.3], [0.5, 0.5]]

def paso(pi):
    return [sum(pi[i] * P[i][j] for i in range(len(pi))) for j in range(len(pi))]

def evolucionar(pi0, N):
    pi = pi0[:]
    for _ in range(N):
        pi = paso(pi)
    return pi

print([round(x, 4) for x in evolucionar([1.0, 0.0], 10)])
print([round(x, 4) for x in evolucionar([0.0, 1.0], 10)])

06 · Exploración

Laboratorio: π(n) persigue al equilibrio

Cadena 2×2 (a = 0,3, b = 0,5, equilibrio 0,375 en 1). Elegí el inicio π₀(1) y el paso n: la curva muestra P(Xₙ=1) y el punto marca tu n. Cambiá el inicio: todas las curvas van al mismo 0,375.

EXPERIMENTO 26

De π(0) a π

π(n+1) = π(n)·P · π₁ = 0,375

Los resultados numéricos aparecen debajo.
π(n) en 10,000
Equilibrio π₁0,375
Distancia |π−π₁|0,000
LecturaLejos

Desde 0, en n 2 la chance de 1 es 0,360: casi en equilibrio.

La curva parte de tu π₀(1) y se pega a 0,375. La distancia cae geométrica: cada paso multiplica el error por (1−a−b) = 0,2.

Preguntas para explorar

  1. Desde π₀ = 0 y desde π₀ = 1, ¿a qué valor tienden ambas? ¿En cuántos pasos se juntan?
  2. En n = 0, ¿la distancia es 0? ¿Qué significa empezar lejos?
  3. Si π₀ = 0,375, ¿la curva se mueve? ¿Por qué?
Ver respuestas sugeridas
  1. A 0,375; en ~4–5 pasos ya coinciden. El inicio se olvida rápido (1−a−b = 0,2).
  2. No: es |π₀ − 0,375|. Empezar lejos solo cuesta unos pasos.
  3. No: es el equilibrio (π = πP). Empezar ahí es quedarse.

07 · Comprensión

Confusiones frecuentes

«π(n) es la trayectoria n»

No: π(n) es la distribución de todas las trayectorias en n. Una lista de chances, no de estados.

«Multiplicar por P es como simular»

Es mejor: da la distribución exacta sin ruido. Simular estima lo que πP calcula.

«El orden da igual: P·π»

Con vectores fila es π·P. P·π es para columnas: mezclarlos transpone el resultado.

«Siempre converge»

No: periódicas oscilan y absorbentes múltiples dependen del inicio. Convergencia se estudia (Tema 40).

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: un paso a mano

Con π = [0,5 – 0,5] y P 2×2 (a = 0,3, b = 0,5), calculá π(1) a mano y verificá.

P = [[0.7, 0.3], [0.5, 0.5]]
pi = [0.5, 0.5]
pi1 = [pi[0]*P[0][0] + pi[1]*P[1][0], pi[0]*P[0][1] + pi[1]*P[1][1]]
print([round(x, 3) for x in pi1])
Ver solución razonada

Da [0,6 – 0,4]: cada columna pondera las filas por π. La suma sigue 1,0.

Ejercicio 2: olvidar el inicio

Sin ejecutar primero: desde [1, 0] y [0, 1], ¿π(5) será igual o distinto? Comprobalo.

P = [[0.7, 0.3], [0.5, 0.5]]

def evolucionar(pi0, N):
    pi = pi0[:]
    for _ in range(N):
        pi = [sum(pi[i] * P[i][j] for i in range(2)) for j in range(2)]
    return pi

print([round(x, 4) for x in evolucionar([1, 0], 5)])
print([round(x, 4) for x in evolucionar([0, 1], 5)])
Ver solución

Ambos dan ≈ [0,625 – 0,375]: en 5 pasos el inicio ya se olvidó (error ×0,2⁵).

Ejercicio 3: velocidad del olvido

Compará el error en n = 3 con (a+b) = 0,8 vs 0,2. ¿Cuál olvida más rápido?

Ver una posible respuesta
print("rápida:", round(0.2**3, 4))
print("lenta:", round(0.8**3, 4))

0,008 vs 0,512: con 1−a−b = 0,2 el error se esfuma; con 0,8 persiste. Diagonales altas = memoria larga.

09 · Síntesis

Ideas para recordar

  • π(n) es la distribución en n; evoluciona con πP.
  • π(n) exacto reemplaza miles de réplicas para chances.
  • El inicio manda al principio; P manda al final.
  • En Python: listas fila + bucle de pasos con assert de suma 1.
  • Si converge, va a π = πP.

En el próximo tema detallaremos el punto de partida: distribución inicial.