01 · Punto de partida
El zoom que decide
Con el total del día alcanza para pedir mercadería; para poner cajeros hace falta el pico por hora; para rediseñar la fila, cada cliente. El nivel de detalle es el zoom del modelo: cuán finas son sus unidades de tiempo, espacio y población.
- ¿Qué decisión debe tomar este modelo?
- ¿Qué grano ve esa decisión: día, turno, hora, cliente?
- ¿Cada detalle tiene un dato que lo alimente?
- ¿El detalle cambia la decisión o solo el costo?
02 · Definiciones
Grano, resolución y fidelidad
Granularidad
Tamaño de la unidad: día, turno, hora, cliente individual.
Resolución
Finura del recorte: 1 número, 3 turnos, 8 horas, 80 clientes.
Fidelidad
Cuánto se parece al sistema en lo que importa para decidir.
| Zoom | Datos | Decide | No ve |
|---|---|---|---|
| Día (1 número) | Total 80 | Stock a pedir | Picos ni turnos |
| Turnos (3 números) | 19, 36, 25 | Personal por turno | Pico horario |
| Horas (8 números) | 5…15 por hora | Cajas por hora | Nada (cuesta más) |
03 · El punto dulce
Utilidad marginal del detalle
- 1Empezá grueso.
El modelo de 1 número orienta y cuesta casi nada.
- 2Refiná lo que decide.
Si el pico cambia cajeros, pasá a horas. Si no, quedate.
- 3Exigí dato por detalle.
Cada parámetro nuevo necesita medición o estimación declarada.
- 4Frená cuando la decisión se estabiliza.
Si más zoom no cambia la elección, el detalle sobra.
Muy grueso
Ciego a lo crítico
El total esconde el pico: faltan cajeros justo a las 11.
Muy fino
Caro y frágil
Cada cliente modelado pide datos imposibles y el modelo se vuelve imposible de calibrar.
- Parsimonia
- Preferir el modelo más simple que decide igual de bien.
- Agregación
- Subir de zoom combinando detalle en totales.
- Desagregación
- Bajar de zoom repartiendo totales con supuestos.
- Sensibilidad
- La prueba de si el detalle importa (Tema 40).
04 · Regla de oro
Cada detalle con dueño
Sin dato que lo alimente ni decisión que lo necesite, el detalle es decoración: sale.
05 · En Python
Un día, tres zooms
Python en tu navegador. Mismos datos brutos, tres agregaciones: mirá qué decide cada una.
horas = [5, 8, 6, 9, 12, 15, 14, 11]
total = sum(horas)
turnos = [sum(horas[0:3]), sum(horas[3:6]), sum(horas[6:8])]
print("día:", total)
print("turnos:", turnos)
print("horas:", horas)
El zoom cambia la decisión
def cajeros(promedio_horario, por_cajero=8):
return max(1, round(promedio_horario / por_cajero))
print("con el día:", cajeros(80 / 8))
print("con turnos:", cajeros(36 / 3))
print("con horas:", cajeros(15))
06 · Exploración
Laboratorio: el zoom que cambia cajeros
Las barras agregan las ventas en bloques. La línea marca la capacidad por hora de un cajero: si el pico la supera, hacen falta más. Cambiá el bloque y mirá cuándo aparece el pico.
Zoom y decisión
8 horas · bloques configurables
Con bloques de 2 h el pico de 13,5 pide 2 cajeros con 4 parámetros.
Bloques grandes esconden el pico; bloques chicos lo muestran pero piden más datos.
Preguntas para explorar
- Con bloque 8, ¿cuántos cajeros pide? ¿Y con bloque 1?
- Sumá demanda extra 10. ¿El zoom grueso reacciona igual que el fino?
- ¿Qué zoom contratarías para decidir el personal del sábado?
Ver respuestas sugeridas
- Bloque 8: promedio 10 → 1 cajero. Bloque 1: pico 15 → 2 cajeros. El zoom cambia la decisión.
- No: el grueso reparte el extra en el promedio; el fino muestra en qué horas pega.
- El fino (bloque 1–2): el sábado se decide en el pico, y el pico vive en el grano fino.
07 · Comprensión
Confusiones frecuentes
«Más fino siempre decide mejor»
Solo hasta que la decisión se estabiliza. Después, el zoom fino solo suma costo y fragilidad.
«El total alcanza para todo»
Para stock sí; para capacidad no. El pico vive en el grano fino.
«Desagregar es gratis»
Repartir totales sin datos inventa precisión: el pico «parejo» es una ficción con decimales.
«Detalle es lo mismo que precisión»
Detalle es granularidad; precisión es cercanía a lo real. Un modelo grueso bien calibrado supera a uno fino inventado.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: tres zooms
Agregá estas 8 horas en día y turnos. ¿Qué ve cada zoom?
horas = [5, 8, 6, 9, 12, 15, 14, 11]
print("día:", sum(horas))
print("turnos:", [sum(horas[0:3]), sum(horas[3:6]), sum(horas[6:8])])
print("pico horario:", max(horas))
Ver solución razonada
Día 80, turnos [19, 36, 25], pico 15: el día pide stock, los turnos arman personal y el pico dimensiona cajas.
Ejercicio 2: la decisión cambia
¿Cuántos cajeros pide cada zoom con capacidad 8 por hora?
def cajeros(promedio_horario, por_cajero=8):
return max(1, round(promedio_horario / por_cajero))
print(cajeros(80 / 8), cajeros(36 / 3), cajeros(15))
Ver solución
Da 1, 2, 2: el zoom día pide 1 cajero y esconde el pico; los zooms finos piden 2. El detalle cambió la decisión.
Ejercicio 3: auditar el zoom
Un informe usa el promedio diario para dimensionar cajas. Escribí la objeción con números.
Ver una posible respuesta
horas = [5, 8, 6, 9, 12, 15, 14, 11]
promedio = sum(horas) / len(horas)
print("promedio:", promedio, "pico:", max(horas))
print("cajeros con promedio:", max(1, round(promedio / 8)))
print("cajeros con pico:", max(1, round(max(horas) / 8)))
Promedio 10.0 pide 1 caja; pico 15 pide 2. Dimensionar con el promedio deja la hora pico desbordada.
09 · Síntesis
Ideas para recordar
- El zoom justo es el más grueso que decide bien.
- Cada detalle necesita dato y debe cambiar la decisión.
- El total esconde picos: la capacidad vive en el grano fino.
- Desagregar sin datos inventa precisión.
- En Python: guardar el grano fino y agregar por código.
En el próximo tema escribiremos lo innegociable: supuestos y restricciones.