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)

Relevancia de los Procesos Estocásticos en la Ciencia de Datos

Sección 1 · Introducción a Procesos Estocásticos

Relevancia de los procesos estocásticos en la ciencia de datos

Muchos datos no son una foto, sino una secuencia: un cliente pasa de lead a prospecto y luego compra o se pierde; un usuario alterna entre activo e inactivo; el clima de mañana depende del de hoy. Si modelas esas secuencias como filas independientes, pierdes justo lo que importa: el orden. Un proceso estocástico es la herramienta para describir sistemas que cambian de estado al azar a lo largo del tiempo.

Qué es un proceso estocástico discreto

Un proceso estocástico es una colección de variables aleatorias $X_0, X_1, X_2, \dots$ indexadas por el tiempo. En este curso el tiempo es discreto (pasos: días, sesiones, meses) y el conjunto de estados es finito, por ejemplo $S = \{\text{Lead}, \text{Prospecto}, \text{Cliente}, \text{Perdido}\}$. Cada realización del proceso es una trayectoria: una lista de estados visitados.

El caso más útil en la práctica es la cadena de Markov de tiempo discreto. Su supuesto central es la propiedad de Markov: el siguiente estado depende solo del estado actual, no de la historia completa.

$$P(X_{t+1} = j \mid X_t = i, X_{t-1}, \dots, X_0) = P(X_{t+1} = j \mid X_t = i) = p_{ij}$$

Las probabilidades $p_{ij}$ forman la matriz de transición $P$. Cada fila suma 1, porque desde el estado $i$ el sistema tiene que ir a algún lado. Si la distribución actual es el vector fila $\pi_t$, la distribución dentro de $n$ pasos es $\pi_{t+n} = \pi_t P^n$. Con una matriz y una multiplicación ya puedes hacer pronósticos.

Dónde aparece en ciencia de datos

  • Embudos de conversión y churn: estados del cliente con estados finales (compra, baja). Las preguntas típicas son qué fracción termina comprando y cuántos pasos tarda.
  • Riesgo de crédito: las matrices de migración de calificaciones (AAA, AA… incumplimiento) son cadenas de Markov con un estado absorbente: el incumplimiento.
  • Ranking y navegación web: PageRank es la distribución estacionaria de un paseo aleatorio por los enlaces.
  • Texto y secuencias: los modelos de n-gramas y los modelos ocultos de Markov (HMM) generalizan la misma idea.
  • Simulación y MCMC: los muestreadores bayesianos construyen cadenas de Markov cuya distribución estacionaria es la posterior.

Aplicación: pronóstico de un embudo en cinco líneas

Con NumPy basta para ver la mecánica. Supón que de cada 10 leads, 5 siguen siendo leads la semana siguiente, 3 pasan a prospecto y 2 compran:

import numpy as np

estados = ["Lead", "Prospecto", "Cliente", "Perdido"]
P = np.array([[0.5, 0.3, 0.2, 0.0],
              [0.2, 0.4, 0.2, 0.2],
              [0.0, 0.0, 1.0, 0.0],
              [0.0, 0.0, 0.0, 1.0]])
pi0 = np.array([1.0, 0.0, 0.0, 0.0])  # todos empiezan como Lead
for n in (1, 4, 12):
    pin = pi0 @ np.linalg.matrix_power(P, n)
    print(n, dict(zip(estados, pin.round(3))))

Después de 12 semanas casi toda la masa está en Cliente (0.74) o en Perdido (0.24). Esos dos estados son absorbentes: una vez que llegas, no sales. Calcular esas probabilidades finales y el tiempo esperado hasta llegar es el objetivo central del curso, y lo harás con PyDTMC, una biblioteca de Python dedicada a cadenas de Markov de tiempo discreto.

Simular contra calcular

Hay dos formas de responder preguntas sobre una cadena. La analítica usa álgebra lineal: potencias de $P$, la distribución estacionaria o la matriz fundamental. La simulación genera miles de trayectorias aleatorias y promedia. La analítica es exacta y rápida; la simulación es flexible (permite agregar costos, reglas de negocio o horizontes finitos) y sirve para verificar que tus fórmulas están bien. En el curso usarás las dos y compararás resultados.

Trampas comunes

  • Asumir Markov sin revisarlo. Si el siguiente estado depende de los dos anteriores, una cadena de primer orden se equivoca. Más adelante verás pruebas estadísticas para esto.
  • Filas que no suman 1. Es el error más frecuente al construir $P$ a mano. PyDTMC lo valida y lanza un error.
  • Confundir vector fila con vector columna. La convención es $\pi_{t+1} = \pi_t P$, con $\pi_t$ como fila. Escribir P @ pi da otro resultado.
  • Ignorar que las probabilidades cambian. La cadena homogénea supone que $P$ es la misma en todo momento. Si tu negocio tiene estacionalidad fuerte, el modelo necesita ajustes.

Cierre

Antes de modelar, escribe tus estados y pregúntate dos cosas: ¿el siguiente paso depende solo del estado actual? ¿Hay estados de los que no se sale? Con esas dos respuestas ya sabes si una cadena de Markov absorbente es el modelo adecuado.