Modelos Continuos · Tema 44

Decidir con el modelo

Del laboratorio a la acción: umbrales, días excedidos y decisiones que aguantan.

01 · Punto de partida

La curva no decide: informa la decisión

El hospital tiene 150 camas y el pico base es 301: 40 días por encima. Con −50 % el pico es 70: cero días excedidos. La decisión no es «el modelo dice»: es umbral + días excedidos + costo + robustez. El modelo pone los números; la mesa pone los valores.

Este tema cierra el loop: de la EDO a la métrica operativa que dispara la acción.

  • ¿Cuál es el umbral operativo (camas, techo, dosis)?
  • ¿Cuántos días lo excede cada escenario?
  • ¿Qué cuesta cada medida y qué evita?
  • ¿La decisión aguanta si β era otro?

02 · Definición

¿Qué es decidir con un modelo?

Del laboratorio a la orden:

━

Umbral

La línea que no se cruza: 150 camas, techo 20, 3 % residuo. Lo pone la operación.

◷

Excedencia

Días sobre el umbral por escenario: 40 vs 0. La métrica que dispara.

$

Costo-robustez

Precio de la medida y aguante en el abanico: barata que falla no sirve.

Sin umbral no hay decisión: hay curvas lindas. El umbral convierte la trayectoria en semáforo.

SIR con camas = 150: días excedidos deciden.
EscenarioPicoDías > 150
Base β = 0,3≈ 301≈ 40 (colapsa).
−30 % (0,21)≈ 180≈ 12 (respira).
−50 % (0,15)≈ 700 (aguanta).
Lectura—Solo −50 % baja del umbral.

03 · Anatomía

Umbral, excedencia y gatillo

La decisión operativa en cuatro piezas:

Umbral operativo
Camas, techo, stock mínimo: número con dueño (jefe de guardia, galpón).
Días excedidos
Cuánto tiempo I(t) > umbral: 40, 12, 0. La métrica del semáforo.
Gatillo
Regla de acción: «si excede 7 días, intervenir». Automática y auditable.
Revisión
Recalibrar con datos nuevos: el umbral se mantiene, los parámetros se actualizan.

Decisión con umbral

Semáforo auditable

150 camas, 0 días excedidos con −50 %: se actúa y se verifica. Trazable.

Decisión sin umbral

Opinión con curvas

«La joroba se ve alta»: nadie sabe cuándo actuar ni si funcionó.

04 · Decisiones del curso

El mismo semáforo, cinco tableros

Cada modelo termina en un gatillo:

Umbral→Excedencia→Gatillo
  1. 1
    Camas.

    I > 150 por 7 días → intervenir. El semáforo epidémico.

  2. 2
    Galpón.

    N > 20 → adelantar camión. El techo manda.

  3. 3
    Pesca.

    P < 30 % K → vedar. El piso protege.

  4. 4
    Fármaco.

    M < umbral → redosificar. El valle avisa.

  5. 5
    Motor.

    T > 90 → cortar carga. El térmico cuida.

05 · Representación en Python

Días excedidos en una función

En Python, la decisión es contar días sobre el umbral en cada escenario con la misma historia.

Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Subí el umbral a 200 y observá que hasta la base respira.

def dias_excedidos(beta=0.3, gamma=0.1, umbral=150, n=1000, i0=10, dias=160, dt=0.5):
    s, i, t, d = n - i0, float(i0), 0.0, 0
    while t < dias - 1e-9:
        c = beta * s * i / n
        s, i = s - c * dt, i + (c - gamma * i) * dt
        t += dt
        if i > umbral:
            d += dt
    return round(d, 1)


for beta in [0.30, 0.21, 0.15]:
    print(beta, dias_excedidos(beta))

40 → 12 → 0 días: el semáforo decide con un número por escenario.

Gatillo automático

La regla se escribe y se audita:

def gatillo(beta, umbral=150, max_dias=7):
    d = dias_excedidos(beta, umbral=umbral)
    return f"{d} días → {'INTERVENIR' if d > max_dias else 'aguantar'}"


print(gatillo(0.30), "|", gatillo(0.15))

06 · Exploración

Laboratorio: el semáforo de camas

SIR base (dorada tenue) contra tu medida con eficacia (teal) y tu umbral de camas (punteada). El área sombreada marca los días excedidos de cada una. Subí la eficacia y observá cómo la mancha base se achica hasta desaparecer: ese es el momento de actuar.

EXPERIMENTO 44

Días que deciden

Base β = 0,3 · medida −50 % · camas 150

Los resultados numéricos aparecen debajo.
Días excedidos base40,00
Días excedidos medida0,00
Días evitados40,00
SemáforoActuar ya

Base 40 días sobre 150, medida 0: se evitan 40.

El área sobre la punteada es la crisis: camas faltantes por días. Achicarla a cero es el objetivo operativo.

Preguntas para explorar

  1. Con camas 300, ¿la base excede? ¿La medida sigue haciendo falta?
  2. Con eficacia 30 %, ¿los días de la medida llegan a cero?
  3. Si β base fuera 0,5, ¿tu medida del 50 % alcanza el semáforo verde?
Ver respuestas sugeridas
  1. Apenas (pico 301): 1–2 días. La medida pasa de vital a preventiva: el umbral decide.
  2. No: quedan ≈ 12 días. Eficacia media alivia, no resuelve.
  3. No: β = 0,25 efectivo, R₀ = 2,5, pico ≈ 230. Hay que subir eficacia o camas.

07 · Comprensión

Confusiones frecuentes

«El modelo dice qué hacer»

Dice consecuencias por escenario: el hacer pondera costos y valores que no están en la EDO.

«Cero días es el único éxito»

Bajar de 40 a 12 ya es éxito parcial: el semáforo tiene verde, ámbar y rojo, no solo verde.

«El umbral es técnico»

Es operativo y político: 150 camas las pone el hospital, no la EDO. Declarar quién lo puso es honestidad.

«Decidido, se archiva»

Se revisa con datos nuevos: β cambia, el umbral se mantiene y la decisión se recalcula.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: semáforo a mano

Con días base 40 y medida 12, ¿cuántos se evitan? ¿En qué % cae la crisis?

print("evita:", 40 - 12, "→", round((40 - 12) / 40 * 100, 1), "%")
Ver solución

Evita 28 días (70 %): ámbar en vez de rojo. Éxito parcial que compra tiempo.

Ejercicio 2: umbral que cambia todo

Si las camas suben a 200, ¿la base con pico 301 excede? Calculá el margen.

print("margen:", 301 - 200, "→ excede" if 301 > 200 else "aguanta")
Ver solución

Excede en 101: más camas alivian pero no resuelven. El umbral se negocia con la curva.

Ejercicio 3: gatillo versionado

Escribí decidir(beta, eficacia, camas) que devuelva días y acción con versión. Probalo en base y −50 %.

Ver una posible respuesta
def decidir(beta=0.3, eficacia=0.5, camas=150):
    base = dias_excedidos(beta, umbral=camas)
    med = dias_excedidos(beta * (1 - eficacia), umbral=camas)
    accion = "INTERVENIR" if base > 7 else "aguantar"
    return {"base": base, "medida": med, "evita": round(base - med, 1), "acción": accion}


print(decidir())

Base 40, medida 0, evita 40: INTERVENIR. Decisión versionada y auditable.

09 · Síntesis

Ideas para recordar

  • Decidir = umbral + días excedidos + costo + robustez: el modelo informa, la mesa decide.
  • Sin umbral no hay semáforo: la trayectoria se vuelve opinión.
  • En Python: dias_excedidos() + gatillo() versionado por escenario.
  • Éxito parcial (40 → 12) también cuenta: semáforo ámbar.
  • Recalibrar con datos nuevos: el umbral queda, los parámetros se actualizan.

En el tema final integraremos todo: el proyecto de simulación continua.