Procesos Estocásticos y Cadenas de Markov · Tema 05

Procesos en tiempo discreto

Pasos n = 0, 1, 2… con regla de a un paso: la forma más directa de simular con un bucle.

01 · Punto de partida

Cuando el tiempo avanza de a un paso

Muchos sistemas se observan por etapas: cada minuto, cada día, cada cliente. Entre etapas nada cambia; en cada etapa todo puede cambiar. Ese es el tiempo discreto: n = 0, 1, 2…

La ventaja para programar es total: un proceso discreto es un bucle. Con el estado inicial X₀ y la regla de a un paso se genera toda la trayectoria.

  • ¿Cuál es la unidad del paso: minuto, día, evento?
  • ¿Qué vale X₀ y qué regla produce Xₙ₊₁ desde Xₙ?
  • ¿Hasta qué horizonte N simulamos?
  • ¿La regla cambia con n o es siempre la misma?

02 · Definición

¿Qué es un proceso discreto?

Todo proceso discreto combina tres piezas:

₀

Inicio X₀

La distribución inicial: dónde empieza cada trayectoria (fijo o aleatorio).

↻

Regla de paso

Cómo obtener Xₙ₊₁ desde Xₙ (y quizás n): suma un incremento, aplica P, respeta bordes.

N

Horizonte N

Cuántos pasos simulamos. Corto manda X₀; largo manda la regla.

Si f no depende de n, el proceso es homogéneo: la misma moneda en cada paso. Será el caso de casi todo el curso (Poisson homogéneo, Markov homogénea).

Tiempo discreto frente a continuo (adelanto del Tema 6).
AspectoDiscreto (este tema)Continuo (Tema 6)
Índicen = 0, 1, 2… pasos contadost ≥ 0 real, cambios en cualquier instante
SimulaciónBucle for n in range(N)Se generan tiempos de salto (exponenciales)
EjemploClientes cada minuto, stock cada díaArribos segundo a segundo, N(t)

03 · Anatomía

Recursión, homogeneidad y horizonte

Tres distinciones ordenan todos los procesos discretos del curso:

Recursión
Xₙ₊₁ se calcula desde Xₙ. El bucle es la definición ejecutable del proceso.
Homogeneidad
La regla no cambia con n: misma p, misma P. Si cambia (picos horarios), es no homogéneo. (Tema 14)
Horizonte N
N chico: importa X₀. N grande: importa el régimen (deriva, equilibrio, absorción).
Paso unitario
Elegir bien la unidad: ni tan fina que sobre cómputo ni tan gruesa que oculte cambios.

Regla homogénea

Siempre igual

Misma p o P en cada paso. Fácil de simular y de analizar a largo plazo.

Regla no homogénea

Cambia con n

p(n) por hora del día. Más realista, pero exige calendario de parámetros.

04 · Ejemplos

Procesos discretos que programarás

Todos tienen la forma X₀ + bucle. Solo cambia la regla de a un paso:

X₀→for n: Xₙ₊₁→trayectoria
  1. 1
    Bernoulli por intento.

    Xₙ ∈ {0, 1} con P(1) = p. La base de todo conteo discreto.

  2. 2
    Caminata ±1.

    Xₙ₊₁ = Xₙ + 1 con p, −1 si no. Deriva (2p−1)·N.

  3. 3
    Cola por minutos.

    Xₙ₊₁ = máx(0, Xₙ + Aₙ − Sₙ). Bordes en 0.

  4. 4
    Inventario diario.

    Xₙ₊₁ = Xₙ − demandaₙ + pedidoₙ. Paso = 1 día.

  5. 5
    Clima por días.

    Xₙ ∈ {sol, lluvia} con matriz P. Anticipo de Markov.

05 · Representación en Python

Un proceso discreto es un for

En Python, el tiempo discreto es range(N) y el estado es una variable que se actualiza. La lista historia guarda la trayectoria para graficar y analizar.

Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Cambiá N y p y observá el horizonte.

import random

def proceso_discreto(x0, N, p=0.5, semilla=7):
    # X(n+1) = X(n) + 1 con prob. p, -1 si no.
    random.seed(semilla)
    x, historia = x0, [x0]
    for _ in range(N):
        x = x + 1 if random.random() < p else x - 1
        historia.append(x)
    return historia

print(proceso_discreto(0, 10, p=0.5))

Probá N = 100: la lista crece a 101 valores (X₀ más N pasos). El horizonte es el largo menos uno.

Separar regla y bucle

La buena práctica es aislar paso() del bucle: así se prueba la regla sola y se reutiliza en todos los experimentos:

import random

def paso(x, p=0.5):
    return x + 1 if random.random() < p else x - 1

def simular(x0, N, p=0.5, semilla=7):
    random.seed(semilla)
    x, hist = x0, [x0]
    for _ in range(N):
        x = paso(x, p)
        hist.append(x)
    return hist

print(simular(5, 6, p=1.0))

06 · Exploración

Laboratorio: el horizonte N manda a largo plazo

Caminata ±1. Movete el horizonte N: con N chico las trayectorias apenas se separan de X₀; con N grande aparece la deriva (2p−1)·N. La línea blanca punteada es la teoría; la sólida, la media simulada.

EXPERIMENTO 05

Pasos, horizonte y deriva

Xₙ₊₁ = Xₙ ± 1 · media(N) ≈ (2p−1)·N

Los resultados numéricos aparecen debajo.
Media simulada0,00
Teoría (2p−1)·N0,00
Diferencia0,00
LecturaDeriva +

Con p 0,60 y N 40, la teoría predice 8,00.

Cada línea es una sucesión X₀…Xₙ. Alargar N estira el eje y separa la media del inicio: el corto plazo recuerda X₀, el largo plazo revela la regla.

Preguntas para explorar

  1. Con p = 0,5 y N = 10, ¿la media simulada coincide con la teoría? ¿Y con 8 réplicas?
  2. Con p = 0,6, duplicá N de 20 a 40. ¿La teoría se duplica? ¿La simulada más o menos?
  3. ¿Qué pasa si p = 1? ¿Sigue siendo aleatorio el proceso?
Ver respuestas sugeridas
  1. La teoría es 0, pero con 8 réplicas la media fluctúa (±3). Pocas réplicas ≠ teoría: falta muestra.
  2. Sí: de 4 a 8. La simulada también, salvo ruido. La deriva escala lineal con N.
  3. No: siempre +1, trayectoria 0, 1, 2… Es el límite determinístico: útil para depurar el bucle.

07 · Comprensión

Confusiones frecuentes

«N es la cantidad de valores»

N es la cantidad de pasos; la historia tiene N+1 valores (incluye X₀). Error típico de índices.

«Discreto significa finito»

Discreto habla del tiempo (pasos), no del espacio. Hay procesos discretos con S infinito (cola sin tope).

«El bucle es solo implementación»

El bucle es el modelo discreto ejecutado: X₀ + regla + N. Cambiar el for cambia el proceso.

«Más pasos siempre es mejor»

Más N muestra el largo plazo pero acumula varianza y cómputo. Elegí N según la pregunta, no por ambición.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: contar pasos y valores

Ejecutá y verificá la relación largo = N + 1. Luego cambiá N a 3 y anticipá el largo.

def simular(x0, N):
    x, hist = x0, [x0]
    for n in range(N):
        x = x + 1  # p = 1 para verificar
        hist.append(x)
    return hist

h = simular(0, 5)
print(h, "largo:", len(h))
Ver solución razonada

Con N = 5 salen 6 valores. Con N = 3 saldrían 4: el índice llega a X₃. El range(N) da los pasos; la lista suma X₀.

Ejercicio 2: teoría vs simulación

Sin ejecutar primero: con p = 0,75 y N = 20, ¿qué media predice la teoría? Comprobala con réplicas.

import random

random.seed(2)
p, N, R = 0.75, 20, 4000
tot = 0
for _ in range(R):
    x = 0
    for _ in range(N):
        x += 1 if random.random() < p else -1
    tot += x
print("teórica:", (2*p - 1) * N)
print("simulada:", round(tot / R, 2))
Ver solución

La teórica es 0,5 × 20 = 10. La simulada cae cerca (9,5–10,5): coincide dentro del ruido muestral.

Ejercicio 3: escribir paso() reutilizable

Generalizá el paso con deriva d: Xₙ₊₁ = Xₙ + d + ruido ±1. Probalo con d = 0 y d = 0,5.

Ver una posible respuesta
import random

def paso_con_deriva(x, d=0.0, p=0.5):
    ruido = 1 if random.random() < p else -1
    return x + d + ruido

random.seed(4)
print([paso_con_deriva(0, d=0.0) for _ in range(5)])
print([paso_con_deriva(0, d=0.5) for _ in range(5)])

Con d = 0 el paso vale ±1; con d = 0,5 vale 1,5 o −0,5. Separar deriva y ruido aclara el modelo y anticipa la media (2p−1+d)·N.

09 · Síntesis

Ideas para recordar

  • Discreto = pasos n con regla Xₙ₊₁ = f(Xₙ, azar).
  • Todo discreto es X₀ + bucle hasta N: inicio, regla y horizonte.
  • Homogéneo = misma regla cada paso; es el caso base del curso.
  • La historia tiene N+1 valores para N pasos.
  • En Python: paso() aislado + for n in range(N).

En el próximo tema veremos los procesos en tiempo continuo: cuando los cambios pueden ocurrir en cualquier instante t ≥ 0.