Modelos y Simulación · Tema 37

Calibración

Ajustar parámetros para acercarse a los datos sin maquillar el modelo ni hipotecar el futuro.

01 · Punto de partida

¿Y si el modelo tira para un lado?

En el Tema 36 el veredicto fue «válido con límites» o «rechazado»: el modelo verificado se parecía poco a la realidad. Antes de tirarlo, corresponde calibrar: mover sus parámetros dentro de rangos plausibles hasta que el error contra datos conocidos se achique.

Calibrar no es «tocar hasta que cierra». Es una búsqueda declarada: qué parámetros se mueven, en qué rango, contra qué datos y con qué riesgo de sobreajuste (quedar perfecto en el pasado e inútil en el futuro).

  • ¿Qué parámetros se calibran y cuáles quedan fijos?
  • ¿En qué rango físico tiene sentido moverlos?
  • ¿Contra qué datos se ajusta y contra cuáles se valida?
  • ¿El ajuste mejora el futuro o solo maquilla el pasado?

02 · Vocabulario mínimo

Parámetro, error y sobreajuste

◈

Parámetro

Valor que configura el modelo: caudal, tasa de llegada, capacidad. Calibrar es elegirlo con datos.

±

Error

Distancia a los datos conocidos: MAE o sesgo del Tema 36. Calibrar es achicarlo sin trampas.

◎

Sobreajuste

Modelo que memoriza el pasado: error cero en calibración y fracaso con datos nuevos.

Qué se calibra y qué no.
DecisiónSe calibraNo se calibra
Parámetros físicosDentro de rango medible (caudal 2–4)Valores imposibles que «cierran»
CantidadUno o dos a la vezTodos juntos hasta memorizar ruido
DatosPeríodo de ajuste declaradoEl período reservado para validar
CriterioMAE en unidades realesEl gráfico «que se ve lindo»

03 · Tres técnicas

Cómo se calibra sin maquillar

  1. 1
    Barrido declarado.

    Probar valores en grilla dentro del rango y quedarse con el de menor error. Simple y auditable.

  2. 2
    Un parámetro a la vez.

    Mover de a uno para entender qué hace cada uno antes de combinar.

  3. 3
    Reserva para validar.

    Ajustar con un período y juzgar con otro intacto (backtesting del Tema 36).

Calibrar todo junto

Rápido y frágil

Mueve 6 parámetros hasta empatar el pasado. El error cae a cero porque memoriza ruido, no porque entienda.

Calibrar poco y reservar

Lento y robusto

Mueve 1–2 parámetros en rango físico y valida con datos nuevos. Menos brillo, más futuro.

Calibración
Ajuste de parámetros para acercar el modelo a datos conocidos.
Rango plausible
Intervalo físico o medido donde el parámetro tiene sentido.
Sobreajuste
Ajuste que memoriza ruido y falla con datos nuevos.
Barrido
Búsqueda en grilla de valores con error registrado.

04 · Protocolo

El ajuste en cinco pasos

Elegir→Acotar→Barrer→Reservar→Declarar

Elegir pocos parámetros, acotar su rango, barrer con error registrado, validar con datos reservados y declarar valores finales con su error. El Tema 38 comparará ya calibrado contra la realidad.

05 · En Python

Barrer un parámetro y medir MAE

El barrido es un bucle honesto: cada valor candidato genera su serie y su error. Gana el menor, dentro del rango:

Python en tu navegador. Calibrar es un bucle con error, sin librerías externas.

real = [10, 12, 14, 16, 18]

def sim(base, tasa):
    n, h = 8, []
    for b in base:
        n = n + tasa
        h.append(n)
    return h

def mae(r, s):
    return sum(abs(a - b) for a, b in zip(r, s)) / len(r)


base = [0] * 5
for tasa in [1.0, 1.5, 2.0]:
    print(tasa, round(mae(real, sim(base, tasa)), 2))

Elegir el ganador sin trampas

El mínimo se elige con min sobre la grilla declarada; el rango ya acota lo físicamente posible.

grilla = [1.0, 1.5, 2.0]
errores = [(t, mae(real, sim(base, t))) for t in grilla]
mejor = min(errores, key=lambda par: par[1])
print("mejor tasa:", mejor[0], "MAE:", round(mejor[1], 2))

06 · Exploración

Laboratorio: buscar la tasa justa

La curva oscura es el sistema real (tasa verdadera 2,0 más ruido). Tu modelo usa la tasa que elijas. Movela y observá cómo el MAE baja hasta el mínimo… y vuelve a subir si te pasás.

EXPERIMENTO 37

Calibrar la tasa

verdadera 2,0 · rango 0,5–3,5

Los resultados numéricos aparecen debajo.
MAE0
Sesgo0
Distancia a 2,00
LecturaSubestima

Con tasa 1,0 el modelo subestima: el MAE avisa que falta calibrar.

Curva oscura con puntos: datos reales. Curva clara: modelo con tu tasa. El mínimo del error está cerca de la tasa verdadera.

Preguntas para explorar

  1. Bar ré la tasa de 0,5 a 3,5. ¿Dónde está el mínimo del MAE? ¿Coincide con la verdadera 2,0?
  2. Subí el ruido a 2. ¿El mínimo se vuelve más playo o más nítido? ¿Qué riesgo trae?
  3. Si calibrás con estos 12 días y validás con los mismos, ¿el MAE te dice la verdad sobre el futuro?
Ver respuestas sugeridas
  1. Cerca de 2,0: el error cae hasta ahí y vuelve a subir al pasarse. La curva en U es la firma de una calibración sana.
  2. Más playo: con mucho ruido varias tasas «empatan» y cualquiera parece buena. Ahí conviene calibrar poco y reservar datos.
  3. No: con los mismos datos el error es optimista. La prueba honesta usa días nuevos, como en el Tema 36.

07 · Comprensión

Confusiones frecuentes

«Calibrar es validar»

No: calibrar ajusta con datos conocidos; validar juzga con datos nuevos. Mezclarlos invalida el juicio.

«Más parámetros, mejor ajuste»

Mejor ajuste al pasado, peor futuro: cada parámetro extra memoriza un poco más de ruido.

«El mínimo de la grilla es la verdad»

Es el mejor dentro del rango y con esos datos. Con otro ruido u otro período, el mínimo se mueve.

«Si cierra, el parámetro es real»

Solo si cayó en rango plausible y sobrevive a datos nuevos. Un valor imposible que «cierra» es maquillaje.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: medir el error de cada tasa

Barré tres tasas y anotá el MAE de cada una.

real = [10, 12, 14, 16, 18]

def sim(tasa):
    n, h = 8, []
    for _ in real:
        n = n + tasa
        h.append(n)
    return h

for tasa in [1.0, 1.5, 2.0]:
    err = sum(abs(a - b) for a, b in zip(real, sim(tasa))) / len(real)
    print(tasa, round(err, 2))
Ver solución razonada

Da 5.0, 2.5 y 0.0: la tasa 2,0 empata perfecto porque el ejemplo no tiene ruido. Con ruido, el mínimo sería aproximado.

Ejercicio 2: elegir el ganador

Elegí la mejor tasa con min sobre errores ya calculados.

errores = [(1.0, 5.0), (1.5, 2.5), (2.0, 0.0)]
mejor = min(errores, key=lambda par: par[1])
print("mejor:", mejor)
Ver solución

Da mejor: (2.0, 0.0): el mínimo declarado, reproducible y auditable.

Ejercicio 3: partir ajuste y validación

Calibrá con los primeros 8 días y reservá los últimos 4 para el juicio.

Ver una posible respuesta
dias = list(range(12))
ajuste, reserva = dias[:8], dias[8:]
print("ajuste:", len(ajuste), "reserva:", len(reserva))

La calibración toca solo el ajuste; la reserva queda intacta hasta la validación del Tema 36.

09 · Síntesis

Ideas para recordar

  • Calibrar es mover pocos parámetros, en rango plausible, para achicar el error.
  • El barrido en grilla con errores guardados es simple y auditable.
  • Se ajusta con unos datos y se juzga con otros: sin reserva no hay validez.
  • Más parámetros es más sobreajuste: el mínimo perfecto desconfía.
  • En Python: bucle sobre la grilla, MAE y min con criterio.

En el próximo tema contrastaremos ya calibrados: la comparación con el sistema real.