Procesos Estocásticos y Cadenas de Markov · Tema 15

Intensidad dependiente del tiempo

Modelar picos y valles con λ(t): por tramos, con jorobas y calibrada desde datos por hora.

01 · Punto de partida

Del concepto al modelo con dos picos

El Tema 14 definió el no homogéneo; el Tema 10 presentó λ(t). Ahora toca construirla: el transporte tiene pico a las 8 y a las 18, el comercio al mediodía y a la tarde. Una sola joroba ya no alcanza.

Modelar λ(t) es elegir una forma paramétrica (tramos, senos, jorobas) y calibrarla con conteos por hora.

  • ¿Cuántos picos tiene el día: uno, dos o tabla libre?
  • ¿Dónde, qué alto y qué ancho tiene cada pico?
  • ¿Qué forma usar: escalones, senos o gaussianas?
  • ¿Cómo se ajusta con datos por hora?

02 · Definición

Tres formas de escribir λ(t)

El mismo día admite tres escrituras, de simple a flexible:

▥

Por tramos

λ constante por turno: 1 de noche, 5 de día. Tabla directa de datos.

〜

Suave

Base + senos o jorobas: transiciones graduales entre valle y pico.

◍

Dos picos

Base + joroba mañana + joroba tarde: el día de transporte y comercio.

Cada pico aporta posición (¿a qué hora?), alto (¿cuánto?) y ancho (¿cuánto dura?). Con eso se dibuja, se integra y se simula.

Qué forma elegir según los datos.
FormaParámetrosCuándo conviene
Por tramosUn λ por turnoPocos datos o decisiones por turno.
Un picoBase + alto, centro, anchoHospital, call center con mediodía.
Dos picosBase + 2 × (alto, centro, ancho)Transporte, comercio mañana/tarde.

03 · Anatomía

Posición, alto, ancho y base

Todo pico se describe con cuatro números:

Base
El piso nocturno: lo que llega aunque no haya pico. Sostiene Λ total.
Posición
La hora del máximo: 8 h, 12 h, 18 h. Mueve la joroba sin cambiar su aporte.
Alto
Cuánto suma sobre la base en el centro. Manda la capacidad del pico.
Ancho
Cuánto dura: pico fino (lanzamiento) o grueso (turno día). Ancho × alto ≈ aporte.

Pico alto y fino

Avalancha breve

Mismo aporte concentrado: exige mucha capacidad por poco tiempo.

Pico bajo y ancho

Ola larga

Mismo aporte repartido: se absorbe con dotación normal.

04 · Ejemplos

Días con uno o dos picos

Reconocé el esqueleto del día antes de ajustar números:

Día observado→base + picos→λ(t)
  1. 1
    Hospital: un pico.

    Base 1 + joroba 10 h. Valle nocturno largo.

  2. 2
    Transporte: dos picos.

    Base 2 + jorobas 8 h y 18 h. Valle mediodía relativo.

  3. 3
    Comercio: dos picos anchos.

    Mediodía y 19 h, ambos gruesos.

  4. 4
    Lanzamiento: pico fino.

    Base baja + aguja de 1 h. Ancho manda el operativo.

  5. 5
    Sensor: sin picos.

    Solo base: no inventes jorobas donde hay ruido.

05 · Representación en Python

λ(t) = base + jorobas gaussianas

En Python, cada pico es una gaussiana con centro, alto y ancho. Sumar base + picos da λ(t); integrar da Λ por ventanas para calibrar.

Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Mové los picos y mirá el reparto.

import math

def lam(t, base=1.0, picos=((4.0, 8.0, 3.0), (5.0, 18.0, 3.0))):
    # Cada pico: (alto, centro, ancho).
    v = base
    for alto, centro, ancho in picos:
        v += alto * math.exp(-((t - centro) ** 2) / (2 * ancho ** 2))
    return v

for t in [0, 8, 12, 18, 23]:
    print(t, round(lam(t), 2))

A las 8 y 18 la curva toca ~5–6; al mediodía baja al valle relativo. Dos picos, un valle intermedio.

Calibrar con promedios por hora

El ajuste práctico: λ̂(hora) = conteo/horas observadas. Así nace la tabla que alimenta λ(t):

# Conteos de 5 días por franja: calibrar base y picos.
datos = {(0, 6): 15, (6, 10): 110, (10, 16): 90, (16, 20): 130, (20, 24): 20}
dias = 5
for (a, b), total in datos.items():
    print(a, b, round(total / dias / (b - a), 2))

06 · Exploración

Laboratorio: armar el día con dos picos

λ(t) = base + pico mañana (8 h) + pico tarde (18 h). Mové los altos: la curva amarilla se deforma y los ticks (5 réplicas) la persiguen. Las franjas sombreadas separan mañana, mediodía y tarde.

EXPERIMENTO 15

Dos picos calibrables

λ(t) = base + picoM(8h) + picoT(18h)

Los resultados numéricos aparecen debajo.
Media por día0,00
Teoría Λ(24)0,00
Mañana 6–100 %
Tarde 16–200 %

Con picos 4 y 5, mañana y tarde concentran el día.

Cada pico aporta según alto × ancho. Apagar un pico (0) lo borra del día: el modelo pasa de dos picos a uno.

Preguntas para explorar

  1. Apagá el pico tarde (0). ¿El % de mañana sube aunque su alto no cambie? ¿Por qué?
  2. Igualá ambos picos en 5. ¿Reparten mitad y mitad? ¿Qué rol juega la base?
  3. Subí la base a 2 con picos fijos. ¿Los picos se notan más o menos en %?
Ver respuestas sugeridas
  1. Sí: el % es relativo al total. Menos tarde implica más peso de mañana y base.
  2. Casi, salvo la base que reparte parejo y achata la diferencia relativa.
  3. Menos: la base diluye los picos en %. El total sube pero el contraste baja.

07 · Comprensión

Confusiones frecuentes

«Más picos = mejor modelo»

Cada pico suma 3 parámetros. Sin datos por hora que los sostengan, son adornos que sobreajustan.

«El centro del pico es donde más hay»

Donde más ritmo hay. El conteo por hora vecina también pesa por el ancho.

«Ancho no importa»

Importa tanto como el alto: el aporte es área, no altura.

«Calibrar es copiar un día»

Calibrar es promediar varios días por hora. Un solo día trae ruido, no λ(t).

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: comparar picos

Con base 1 y anchos 3, ¿qué pico aporta más: alto 4 a las 8 o alto 5 a las 18? Integrá 6–10 y 16–20.

import math

def lam(t):
    v = 1.0
    v += 4.0 * math.exp(-((t - 8) ** 2) / 18)
    v += 5.0 * math.exp(-((t - 18) ** 2) / 18)
    return v

def integral(a, b, dt=0.05):
    total, t = 0.0, a
    while t < b:
        total += lam(t) * dt
        t += dt
    return total

print("6-10:", round(integral(6, 10), 1))
print("16-20:", round(integral(16, 20), 1))
Ver solución razonada

Da ≈ 17 y 21: el pico tarde aporta más (más alto, igual ancho). La base aporta 4 en cada ventana de 4 h.

Ejercicio 2: apagar un pico

Sin ejecutar primero: si el pico tarde vale 0, ¿el total baja en cuánto (ancho 3)? Estimá antes de correr.

import math
# Aporte ≈ alto * ancho * sqrt(2π) truncado al día.
print(round(5 * 3 * math.sqrt(2 * math.pi), 1))
Ver solución

Da ≈ 37,6 teórico completo; en el día recortado aporta ≈ 30. Apagarlo baja el total en esa área.

Ejercicio 3: calibrar por hora

Con estos totales de 4 días, estimá λ̂ por franja y decidí si hacen falta dos picos.

Ver una posible respuesta
datos = {(6, 10): 88, (10, 16): 60, (16, 20): 104}
dias = 4
for (a, b), tot in datos.items():
    print(a, b, round(tot / dias / (b - a), 2))

Da 5,5 – 2,5 – 6,5: mañana y tarde duplican el mediodía. Sí hacen falta dos picos (o tabla por tramos).

09 · Síntesis

Ideas para recordar

  • λ(t) = base + picos (posición, alto, ancho).
  • El aporte es área: alto × ancho, no solo alto.
  • Se calibra con promedios por hora de varios días.
  • En Python: tupla de picos + integral por ventanas.
  • Menos picos bien calibrados valen más que muchos inventados.

En el próximo tema combinaremos flujos: superposición de procesos.