A booked place is not an occupied place.
Una plaza reservada no es una plaza ocupada.
Group classes are planned around bookings, but revenue, coaching time and member experience depend on who actually shows up. This lab measures the gap between booked demand and realized attendance, tests which operational variables travel with it, and defines the data a real gym would need to forecast and manage capacity.
Las clases grupales se planifican con base en reservas, pero los ingresos, el tiempo del coach y la experiencia del socio dependen de quién llega de verdad. Este laboratorio mide la brecha entre la demanda reservada y la asistencia real, prueba qué variables operativas la acompañan y define los datos que un gimnasio real necesitaría para predecir y gestionar su capacidad.
The operational problem
El problema operativo
When a class shows full, members join waitlists or give up. When half of those places stay empty, the club has turned members away from capacity it already paid for. Airlines and clinics manage the same tension with no-show forecasting and controlled overbooking, but those tools only work when attendance is measured per session and the forecasts are calibrated.
Cuando una clase aparece llena, los socios entran a lista de espera o desisten. Cuando la mitad de esas plazas queda vacía, el club ha rechazado socios con una capacidad que ya estaba pagando. Aerolíneas y clínicas gestionan esta misma tensión con predicción de no-shows y sobreventa controlada, pero esas herramientas solo funcionan si la asistencia se mide por sesión y las predicciones están calibradas.
This milestone is deliberately descriptive: before predicting anything, establish what the data can and cannot say.
Este hito es deliberadamente descriptivo: antes de predecir nada, hay que establecer qué pueden decir los datos y qué no.
Booked vs. attended
Reservadas vs. asistidas
1,500 public booking records across HIIT, Cycling, Strength, Yoga and Aqua. Non-attendance mixes cancellations and no-shows; the source cannot separate them.
1.500 registros públicos de reserva en HIIT, Ciclismo, Fuerza, Yoga y Aqua. La inasistencia mezcla cancelaciones y no-shows; la fuente no permite separarlos.
What the evidence shows
Lo que muestra la evidencia
Every number below comes with an effect size, a bootstrap interval (1,000 resamples) and a plain-language reading in the dashboard.
Cada número viene con un tamaño del efecto, un intervalo bootstrap (1.000 remuestreos) y una lectura en lenguaje simple dentro del dashboard.
Who attends is mostly about how long they have been a member
Quién asiste depende sobre todo de cuánto tiempo lleva como socio
Point-biserial r = 0.486 (95% bootstrap 0.452–0.525). A gradient this steep is far stronger than most real-world adherence studies report, so it may partly reflect how this educational dataset was built, and survivorship: long-tenure members are, by definition, the ones who stayed.
r punto-biserial = 0,486 (bootstrap 95%: 0,452–0,525). Un gradiente tan marcado es mucho más fuerte que lo reportado por la mayoría de estudios reales de adherencia; puede reflejar en parte cómo se construyó este dataset educativo, y el sesgo de supervivencia: los socios antiguos son, por definición, los que se quedaron.
Class rankings change once you compare like with like
El ranking de clases cambia al comparar grupos equivalentes
Aqua leads the raw rates; HIIT leads after standardization. Category explains little overall (Cramér’s V = 0.05). Part of what looks like a “class effect” is who books the class.
Aqua lidera las tasas brutas; HIIT lidera tras estandarizar. La categoría explica poco en general (V de Cramér = 0,05). Parte de lo que parece un “efecto de la clase” es quién la reserva.
Pick a member’s tenure. Watch who shows up.
Elige la antigüedad del socio. Mira quién llega.
Months of membership
Meses de membresía
The AM advantage shrinks and becomes uncertain
La ventaja de la mañana se reduce y se vuelve incierta
AM 31.6% vs. PM 26.2%. With a common tenure mix the gap falls to 4.0 points and the 95% interval crosses zero. Not enough to move classes.
AM 31,6% vs. PM 26,2%. Con una mezcla común de antigüedad la brecha baja a 4,0 puntos y el intervalo del 95% cruza el cero. No alcanza para mover clases.
Booking further ahead doesn’t predict attendance
Reservar con más anticipación no predice asistencia
r = 0.024 (−0.022 to 0.074). Clinical no-show research finds the opposite, so this is a gap worth testing with real timestamps. Hover a point for its count.
r = 0,024 (−0,022 a 0,074). La investigación clínica de no-shows encuentra lo contrario: una diferencia que vale la pena probar con marcas de tiempo reales. Pasa el cursor por un punto para ver su conteo.
Weekday patterns are small and fragile
Los patrones por día son pequeños y frágiles
Wednesday stands out (20.7%, n = 116), but the overall association is small (V = 0.07) and schedule cohorts are not sessions.
El miércoles destaca (20,7%, n = 116), pero la asociación global es pequeña (V = 0,07) y las cohortes de horario no son sesiones.
Personal training and classes overlap, but not as cross-sell evidence
El PT y las clases se superponen, pero no prueban venta cruzada
1,000 synthetic profiles (CC0). The strongest class pair, Pilates → Yoga, has lift 1.12 with an interval of 0.71–1.53 that includes 1.
1.000 perfiles sintéticos (CC0). El par de clases más fuerte, Pilates → Yoga, tiene lift 1,12 con intervalo 0,71–1,53 que incluye el 1.
Explore every number yourself
Explora cada número por tu cuenta
Filter cohorts by class, weekday and time. Every coefficient comes with a plain-language meaning, an operational implication and the method behind it.
Filtra cohortes por clase, día y franja. Cada coeficiente viene con su significado en lenguaje simple, su implicación operativa y el método detrás.
How it was built
Cómo se construyó
Right statistic for the data
La estadística adecuada a cada dato
Point-biserial correlation for numeric vs. binary; Cramér’s V for categorical, never arbitrary numeric codes for categories. Set-based support, confidence and lift for multi-select preferences.
Correlación punto-biserial para numérica vs. binaria; V de Cramér para categóricas, nunca códigos numéricos arbitrarios. Soporte, confianza y lift sobre conjuntos para preferencias de selección múltiple.
Uncertainty everywhere
Incertidumbre en todo
Deterministic 1,000-resample percentile bootstrap for every coefficient, Wilson intervals for rates, small-cell warnings, and intervals withheld when strata are too sparse.
Bootstrap percentil determinista de 1.000 remuestreos para cada coeficiente, intervalos de Wilson para tasas, alertas de celdas pequeñas e intervalos omitidos cuando los estratos son escasos.
Confounding before conclusions
Confusión antes que conclusiones
Direct standardization over five tenure strata and a linear partial correlation test whether schedule and lead-time patterns survive once member composition is held constant.
Estandarización directa en cinco estratos de antigüedad y una correlación parcial lineal comprueban si los patrones de horario y anticipación sobreviven al fijar la composición de socios.
With more data: the digital-twin roadmap
Con más datos: la hoja de ruta del gemelo digital
Each stage unlocks only when a specific kind of data exists. The literature behind each step is in the scientific discussion.
Cada etapa se desbloquea solo cuando existe un tipo de dato concreto. La literatura detrás de cada paso está en la discusión científica.
- Session IDs + capacity
- IDs de sesión + capacidad
- Stable member IDs
- IDs estables de socio
- Cancellation timestamps
- Marcas de tiempo de cancelación
- Visit history per member
- Historial de visitas por socio
- Calibrated P(attend)
- P(asistir) calibrada
- Temporal validation
- Validación temporal
- Waitlist events
- Eventos de lista de espera
- Cost of empty vs. over-full
- Costo de plaza vacía vs. sobrecupo
- Overbooking scenarios
- Escenarios de sobreventa
- Randomized pilots
- Pilotos aleatorizados
- Reminders, nudges, release rules
- Recordatorios, nudges, reglas de liberación
- Retention outcomes
- Resultados de retención
Reproducible by design
Reproducible por diseño
Python (pandas, pyarrow) builds every table, document and the dashboard from the source CSVs. The dashboard is a single self-contained HTML file with hand-written SVG charts, keyboard-accessible, printable and usable offline. An executed public Kaggle notebook reproduces the association analysis with identical results.
Python (pandas, pyarrow) genera cada tabla, documento y el dashboard a partir de los CSV de origen. El dashboard es un único HTML autocontenido con gráficos SVG hechos a mano, accesible por teclado, imprimible y usable sin conexión. Un notebook público ejecutado en Kaggle reproduce el análisis de asociaciones con resultados idénticos.
Deliverables
Entregables
- Interactive bilingual dashboard with cohort filters
- Dashboard interactivo bilingüe con filtros de cohorte
- Data dictionary, quality report and source provenance
- Diccionario de datos, informe de calidad y procedencia de fuentes
- Association & tenure notebook
- Notebook de asociaciones y antigüedad
- Metric definitions and limitations handoff
- Definiciones de métricas y documento de limitaciones
- Real-gym data contract (YAML) for the next milestone
- Contrato de datos para un gimnasio real (YAML) para el siguiente hito
