Procesos Estocásticos y Cadenas de Markov · Tema 24

Matriz de transición

La tabla P que gobierna la cadena: filas que suman 1, lectura por filas y mapa de calor.

01 · Punto de partida

Todas las chances en una tabla

Las pᵢⱼ sueltas (Tema 23) se ordenan en una tabla P de K×K: la fila i es el futuro estando en i. Con P y el estado actual se simula; con P y π(n) se predice (Tema 26).

Leer P es leer la cadena: diagonales altas = quietud, filas iguales = independencia, ceros = grafo (Tema 22).

  • ¿Qué dice la fila i: a dónde va desde i?
  • ¿Suman 1 todas las filas?
  • ¿Dónde están los ceros y qué grafo dibujan?
  • ¿Qué fila es más ruidosa (repartida) y cuál más segura?

02 · Definición

¿Qué es P?

Tres condiciones la definen:

▦

Tabla K×K

Casillero (i, j) = pᵢⱼ. Orden de S fija filas y columnas.

1

Filas = 1

Cada fila suma 1 y sus entradas son ≥ 0. Matriz estocástica.

→

Fila = futuro

Estando en i, la fila i sortea el próximo. P es el motor de un paso.

Convención del curso: vectores fila π con π(n+1) = π(n)·P. Las columnas no suman 1 (salvo doble estocástica).

Ejemplo 3×3: servidor libre/ocupado/caído.
Desde \ hacia0 libre1 ocupado2 caído
00,600,350,05
10,400,500,10
20,900,000,10

03 · Anatomía

Diagonal, ceros y filas

Cuatro lecturas rápidas de cualquier P:

Diagonal pᵢᵢ
Chance de quedarse. Cerca de 1 = quietud; 0 = movimiento obligado.
Ceros
Flechas ausentes del grafo. Estructurales: no se estiman.
Filas iguales
El próximo no depende del actual: rachas independientes (caso límite).
Filas concentradas
Un 0,95 en una columna = destino casi seguro desde esa fila.

P densa

Todo conecta

Sin ceros: cualquier salto en 1 paso. Muchos parámetros.

P rala

Caminos obligados

Ceros estructurales (colas ±1). Pocos parámetros, grafo visible.

04 · Ejemplos

Matrices que leerás de un vistazo

Antes de calcular, mirá la forma:

Matriz P→filas y ceros→comportamiento
  1. 1
    Identidad.

    Diagonal 1: cada estado absorbente. Nada se mueve.

  2. 2
    Filas iguales.

    Cada fila [0,5 – 0,5]: el pasado no importa en absoluto.

  3. 3
    Cola ±1.

    Solo diagonal y vecinas: escalera rala con bordes.

  4. 4
    Absorbente en 2.

    Fila 2 = [0, 0, 1]: del 2 no se sale (Tema 32).

  5. 5
    Ciclo 0→1→2→0.

    Unos rotando: determinista en sentido, aleatorio en espera.

05 · Representación en Python

P es lista de listas con filas = 1

En Python, P es lista de listas y el paso sortea la fila actual por acumulada. La validación recorre filas sumando.

Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Rompé una fila y mirá el validador.

P = [[0.6, 0.35, 0.05],
     [0.4, 0.5, 0.1],
     [0.9, 0.0, 0.1]]

def validar(P):
    return all(abs(sum(f) - 1) < 1e-9 and all(x >= 0 for x in f) for f in P)

print("filas:", [round(sum(f), 9) for f in P])
print("válida:", validar(P))

Cambiá un 0,35 por 0,45: la fila suma 1,1 y el validador la rechaza. Así se atrapan bugs de tipeo.

Sortear la fila actual

El motor de un paso que usará todo el bloque Markov:

import random

P = [[0.6, 0.35, 0.05],
     [0.4, 0.5, 0.1],
     [0.9, 0.0, 0.1]]

def paso(x, P=P):
    u, ac = random.random(), 0.0
    for j, p in enumerate(P[x]):
        ac += p
        if u < ac:
            return j

random.seed(7)
x = 1
for _ in range(6):
    x = paso(x)
    print(x, end=" ")

06 · Exploración

Laboratorio: leer P como mapa de calor

Anillo 0–1–2–3 con quedarse q, avanzar f y retroceder el resto (como el Tema 22, ahora con números). El color marca la chance: amarillo = casi seguro, oscuro = casi imposible. Movete q y f y mirá filas, diagonal y ceros.

EXPERIMENTO 24

Mapa de calor de P 4×4

fila i = futuro desde i · filas = 1

Los resultados numéricos aparecen debajo.
Filas suman1, 1, 1, 1
Ceros4
Máximo0,40
LecturaAnillo mixto

Con q 0,40 y f 0,40, cada fila reparte 0,40/0,40/0,20.

Filas = desde, columnas = hacia. La diagonal es quedarse; las vecinas, avanzar/retroceder; el resto, ceros del anillo.

Preguntas para explorar

  1. Con q = 0,9, ¿de qué color es la diagonal? ¿Y las vecinas?
  2. Con q = 0 y f = 1, ¿cómo queda cada fila? ¿Cuántos ceros hay?
  3. ¿Alguna fila deja de sumar 1 al mover los sliders? ¿Por qué no?
Ver respuestas sugeridas
  1. Diagonal amarilla (≈ 0,9), vecinas casi negras: quietud.
  2. Cada fila [0, 1, 0, 0] rotada: 12 ceros de 16. Anillo determinista.
  3. No: el resto va a retroceder por construcción. La estocasticidad se preserva.

07 · Comprensión

Confusiones frecuentes

«Las columnas suman 1»

No (salvo doble estocástica). Suman las filas: son distribuciones de salida.

«P simétrica = P cualquiera»

La simetría es un caso especial (reversibilidad futura). La mayoría de P no es simétrica.

«Un 0,9 en (i,j) dice que j es frecuente»

Dice que dado i casi seguro va a j. Si i casi no se visita, j no hereda frecuencia.

«El orden de S no importa»

Importa para leer: permutar S sin permutar P cambia qué fila es qué estado.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: validar y leer filas

Verificá esta P y leé en voz alta qué hace la fila 2.

P = [[0.6, 0.35, 0.05],
     [0.4, 0.5, 0.1],
     [0.9, 0.0, 0.1]]
print([sum(f) for f in P])
print("fila 2: 90% a 0, 0% a 1, 10% se queda")
Ver solución razonada

Filas = [1,0 – 1,0 – 1,0]: válida. La fila 2 casi siempre vuelve a 0 (reparación) y nunca va a 1: el cero es estructural.

Ejercicio 2: fila rota

Sin ejecutar primero: ¿esta P es válida? Detectá la fila rota.

P = [[0.5, 0.5], [0.3, 0.6]]
print([sum(f) for f in P])
Ver solución

No: la fila 1 suma 0,9. Falta 0,1 (tipeo o probabilidad perdida).

Ejercicio 3: contar ceros

Contá ceros estructurales de una cola 0…4 (±1 con lazos) y calculá la densidad.

Ver una posible respuesta
K = 5
P = [[1 if abs(i - j) <= 1 else 0 for j in range(K)] for i in range(K)]
ceros = sum(1 for i in range(K) for j in range(K) if P[i][j] == 0)
print("ceros:", ceros, "| densidad:", 1 - ceros / K**2)

Ceros = 12 de 25, densidad 0,52. La escalera es rala por construcción.

09 · Síntesis

Ideas para recordar

  • P es K×K estocástica: ≥ 0 y filas = 1.
  • La fila i es el futuro desde i.
  • Diagonal = quietud; ceros = grafo; filas iguales = independencia.
  • En Python: lista de listas + validador de filas.
  • S fijo ordena filas y columnas para siempre.

En el próximo tema dibujaremos P: diagramas de transición.