¿Podemos anticipar la demanda turística?
Un modelo de series de tiempo con 20 años de datos
por Jorge Zárate
ARIMA, SARIMA y ETS aplicados a la planeación de un destino turístico ficticio
Durante buena parte de mi carrera en turismo y aviación, he visto decisiones importantes apoyarse en una cifra aislada: el resultado del mes, trimestre o año anterior. El problema es evidente. Un mes o un año no explica una tendencia, no distingue una temporada alta de un cambio estructural y, desde luego, no nos dice qué puede ocurrir después.
Por eso quise comenzar esta sección de Data Science con un ejercicio práctico. No con una demostración académica alejada del negocio, sino con una pregunta que una aerolínea, un hotel, un aeropuerto o una oficina de turismo podría plantearse cualquier semana: ¿cuánta demanda debemos esperar durante los próximos 24 meses y cuánto podemos confiar en esa estimación?
Construí una serie mensual ficticia de 20 años para un destino turístico imaginario. Los datos son sintéticos: no pertenecen a ninguna empresa ni describen un mercado real. Sin embargo, su comportamiento fue diseñado para parecerse a lo que encontramos en la práctica: crecimiento gradual, temporadas fuertes y débiles, ciclos, ruido, choques extraordinarios y recuperación.
El objetivo no es demostrar que una fórmula puede adivinar el futuro. Eso no existe. El objetivo es reducir la incertidumbre, comparar métodos bajo las mismas condiciones y transformar el resultado en decisiones de capacidad, inventario, presupuesto y riesgo.
1. El caso: veinte años de demanda (ficticio)
La base contiene 240 observaciones mensuales, desde enero de 2005 hasta diciembre de 2024. La variable central es el número de pasajeros aéreos que llegan al destino. Incorporé una tendencia creciente, un patrón mensual recurrente, fluctuaciones cíclicas y tres interrupciones. La mayor ocurre en 2020 y 2021; no pretende reproducir exactamente la pandemia, sino mostrar cómo un choque excepcional altera el nivel y la estructura de una serie.
Esta distinción es importante. Datos aleatorios puros producirían una gráfica, pero no un caso útil. Para evaluar ARIMA, SARIMA o ETS necesitamos una serie que tenga memoria, tendencia y estacionalidad. Los valores siguen siendo ficticios, aunque la lógica que los genera es deliberadamente realista.
La primera visualización cuenta casi toda la historia: crecimiento de largo plazo, meses que se repiten y una ruptura evidente. Pero también muestra un riesgo frecuente. Si ajustáramos una línea recta a los veinte años completos, el choque arrastraría el resultado y nos haría confundir un evento extraordinario con una nueva normalidad permanente.

Figura 1. Serie sintética mensual. Elaboración propia con datos ficticios.
2. El heatmap: cuando la estacionalidad deja de ser una abstracción
El heatmap organiza los años en filas y los meses en columnas. Los tonos más intensos representan más pasajeros. A diferencia de una tabla con 240 cifras, aquí se observan en segundos los meses fuertes, los periodos débiles y la profundidad de las interrupciones.
En un caso real, esta gráfica puede descubrir algo incómodo: quizá el destino no está creciendo de manera uniforme, sino dependiendo cada vez más de dos o tres meses. Eso tiene consecuencias para las tarifas, la contratación, el uso de infraestructura y la rentabilidad de las rutas. Crecer con mayor concentración no siempre significa volverse más resistente.

Figura 2. Heatmap de pasajeros por año y mes. Los datos son ilustrativos.
2.1 Del calendario a las relaciones entre variables
El segundo heatmap cambia la pregunta. Ya no organiza la demanda por año y mes, sino que compara pasajeros, asientos programados, búsquedas digitales, ocupación hotelera, tarifa aérea, ADR hotelero, inversión promocional e índice económico. Cada celda contiene una correlación de Pearson entre -1 y 1. Cuanto más oscuro es el azul, mayor es la asociación positiva entre las dos variables; el número conserva el signo y la intensidad exacta.
Una correlación cercana a 1 indica que ambas variables tienden a aumentar o disminuir juntas. Una correlación próxima a 0 señala que no existe una relación lineal clara. Un valor negativo significa que, cuando una variable aumenta, la otra tiende a disminuir. La matriz permite identificar rápidamente cuáles señales podrían merecer una investigación más profunda antes de construir un modelo multivariable.
En este escenario sintético, pasajeros y asientos muestran una relación fuerte porque la capacidad condiciona el volumen que puede transportarse. Búsquedas y ocupación hotelera también acompañan la demanda. Sin embargo, no debemos saltar de asociación a causalidad. Dos variables pueden correlacionarse porque comparten tendencia, estacionalidad o un tercer factor. Inversión promocional y pasajeros, por ejemplo, podrían crecer al mismo tiempo sin que toda la demanda adicional sea atribuible a la campaña.
En una aplicación real, el siguiente paso sería revisar rezagos, eliminar tendencias comunes, controlar estacionalidad y probar relaciones con regresión o modelos dinámicos. El heatmap no dicta una decisión. Funciona como mapa inicial para decidir qué relaciones vale la pena investigar.

Figura 2A. Matriz de correlaciones de Pearson entre variables sintéticas. Los tonos azules muestran la intensidad de la asociación; correlación no implica causalidad.
3. Separar la señal del ruido
Una serie observada mezcla varias fuerzas. La descomposición intenta separarlas en tendencia, estacionalidad y residuo. La tendencia muestra la dirección de fondo; la estacionalidad captura el patrón que tiende a repetirse cada doce meses; el residuo reúne lo que esos componentes no explican.
No debemos interpretar el residuo como información inútil. Un residuo grande puede revelar un evento, un error de captura o una variable que el modelo todavía no contempla. En un proyecto comercial, yo revisaría esos puntos antes de aceptar el pronóstico: una nueva ruta, una restricción operativa o una campaña excepcional pueden esconderse detrás de lo que la fórmula llama ruido.

Figura 3. Descomposición multiplicativa de la serie sintética.
4. La temporada no es un detalle: es parte del modelo
Los boxplots comparan la distribución de cada mes a lo largo de veinte años. No solo muestran el promedio: permiten observar dispersión, mediana y valores extremos. Julio y agosto presentan niveles altos; enero y febrero parten de una base menor.
Para una aerolínea, esto puede traducirse en frecuencias, tamaño de aeronave y gestión tarifaria. Para un hotel, en inventario, plantilla y mantenimiento. Para una DMO, en una pregunta estratégica: ¿debemos seguir estimulando los meses que ya están saturados o invertir en demanda incremental durante la temporada baja?

Figura 4. Distribución mensual de la demanda ficticia.
5. ¿Qué significan ARIMA, SARIMA y ETS sin convertir esto en una clase de álgebra?
Los tres modelos intentan aprender del pasado, pero no observan la serie de la misma manera. ARIMA estudia su memoria y la estructura de sus errores; SARIMA añade el calendario; ETS actualiza nivel, tendencia y estacionalidad conforme llega nueva información. Entender esa diferencia es más importante que memorizar sus siglas.
ARIMA: memoria, cambios y errores anteriores
ARIMA significa Autoregressive Integrated Moving Average y se expresa como ARIMA(p,d,q). La parte autorregresiva, AR, mide cuánto depende el valor actual de sus valores anteriores. Si p=2, el modelo permite que los dos periodos recientes aporten información directa al pronóstico. La pregunta de fondo es: ¿cuánta memoria conserva la demanda?
La I corresponde a Integrated. Muchas series crecen con el tiempo y, si analizamos solamente sus niveles, podemos confundir tendencia con dependencia estadística. La diferenciación transforma niveles en cambios: Δyₜ = yₜ-yₜ₋₁. Si enero registró 100,000 pasajeros y febrero 108,000, la primera diferencia es 8,000. El parámetro d indica cuántas veces se aplica esta transformación para conseguir una serie más estable.
MA significa Moving Average, pero aquí no es simplemente un promedio de los últimos meses. Este componente utiliza errores anteriores. Si el modelo subestimó la demanda durante varios periodos consecutivos, esa secuencia puede contener información útil para corregir el siguiente pronóstico. El parámetro q indica cuántos errores rezagados se incorporan.
Su forma compacta es φ(B)(1-B)^d yₜ = c + θ(B)εₜ. En lenguaje ordinario, ARIMA pregunta cuánto del presente puede explicarse por la historia reciente, por el cambio entre periodos y por errores que todavía conservan información. Un ARIMA(2,1,1), como el de este ejercicio, combina dos valores anteriores, una diferenciación y un error rezagado.
SARIMA: cuando la demanda también conserva memoria del calendario
SARIMA significa Seasonal Autoregressive Integrated Moving Average. Amplía ARIMA para reconocer patrones que se repiten con una frecuencia conocida y se expresa como SARIMA(p,d,q)(P,D,Q)ₛ. Los parámetros en minúsculas describen la dinámica reciente; P, D y Q representan la memoria, diferenciación y errores estacionales; s define la longitud del ciclo.
En información mensual normalmente usamos s=12. De esta manera, el pronóstico de julio puede relacionarse no solo con junio y mayo, sino también con julio del año anterior. El modelo utilizado aquí, SARIMA(1,1,1)(1,1,1)₁₂, combina memoria y errores mensuales con memoria y errores separados por doce meses.
Esta capacidad resulta útil en turismo, aviación y hotelería, donde vacaciones, Semana Santa, Navidad, clima, congresos y calendarios escolares producen ciclos recurrentes. Sin embargo, añadir componentes no garantiza un mejor pronóstico. Un SARIMA demasiado complejo puede explicar magníficamente el pasado y fallar al enfrentar información nueva. Eso es sobreajuste.
ETS: nivel, tendencia y estacionalidad que se actualizan
ETS significa Error, Trend and Seasonality: error, tendencia y estacionalidad. Su lógica consiste en actualizar tres componentes conforme llega cada observación. El nivel representa la base actual de la serie; la tendencia indica si esa base crece o disminuye; la estacionalidad mide cuánto se aparta cada temporada del comportamiento normal.
La tendencia puede ser amortiguada. En vez de suponer que el crecimiento continuará indefinidamente a la misma velocidad, su efecto se modera con el horizonte. Esto resulta razonable cuando un mercado se aproxima a su madurez o enfrenta límites de capacidad.
La estacionalidad puede ser aditiva o multiplicativa. En una estructura aditiva, julio podría añadir aproximadamente 30,000 pasajeros todos los años. En una multiplicativa, julio podría mantenerse alrededor de 20% por encima del nivel y, por tanto, crecer junto con el mercado. Para esta serie utilizamos estacionalidad multiplicativa.
En una formulación aditiva sencilla, el nivel se actualiza con ℓₜ = α(yₜ-sₜ₋ₘ)+(1-α)(ℓₜ₋₁+bₜ₋₁); la tendencia con bₜ = β(ℓₜ-ℓₜ₋₁)+(1-β)bₜ₋₁; y la estacionalidad con sₜ = γ(yₜ-ℓₜ₋₁-bₜ₋₁)+(1-γ)sₜ₋ₘ. No necesitamos memorizar las ecuaciones. Lo importante es comprender qué comportamiento intenta aprender cada componente.
ACF y PACF: observar la memoria antes de elegir rezagos
La función de autocorrelación, ACF, muestra la relación entre la serie y sus valores anteriores. La autocorrelación parcial, PACF, intenta aislar la contribución directa de cada rezago después de descontar los intermedios. Los picos en los rezagos 12, 24 y 36 son una señal de memoria anual. Estas gráficas orientan la selección de parámetros; no sustituyen la validación fuera de muestra.

Figura 5. Funciones de autocorrelación y autocorrelación parcial.
6. La comparación justa: esconder dos años al modelo
Reservé enero de 2023 a diciembre de 2024 como periodo de prueba. Los modelos solo recibieron información hasta diciembre de 2022. Después generaron 24 pronósticos que se compararon contra valores que, para efectos del ejercicio, todavía no conocían.
El ganador fue ETS, con un MAPE de 4.5%. El resultado no debe generalizarse. En otra serie, ETS o incluso un promedio estacional podrían superar a SARIMA. Precisamente por eso hay que competir los modelos fuera de muestra y no elegir al que produce la curva más elegante.
Para interpretar la comparación debemos partir del error eₜ = yₜ-ŷₜ, donde yₜ es el valor real y ŷₜ el pronóstico. Si hubo 100,000 pasajeros y proyectamos 95,000, el error es 5,000: el modelo subestimó la demanda.
MAE: ¿cuántos pasajeros nos equivocamos en promedio?
MAE significa Mean Absolute Error o error absoluto medio: MAE = (1/n)Σ|yₜ-ŷₜ|. Ignora la dirección del error y conserva la unidad original. Un MAE de 10,550 significa que el pronóstico se separó de la realidad en aproximadamente 10,550 pasajeros por mes. Es intuitivo, aunque trata un error de 20,000 como exactamente el doble de uno de 10,000.
MPE: ¿pronosticamos sistemáticamente por arriba o por abajo?
MPE significa Mean Percentage Error o error porcentual medio: MPE = (100/n)Σ[(yₜ-ŷₜ)/yₜ]. Su principal función es detectar sesgo. Con esta convención, un MPE positivo indica que el modelo tiende a quedarse por debajo de la realidad; uno negativo señala sobreestimación. Es indispensable declarar la convención, porque algunos programas invierten el orden de la resta.
MPE no mide bien la precisión total. Los errores positivos y negativos pueden cancelarse: un modelo podría equivocarse mucho en ambas direcciones y terminar cerca de cero. Por eso lo utilizaría como indicador de sesgo, acompañado por otras métricas. No formó parte del ranking central de este ejercicio, pero sí sería recomendable en un sistema de monitoreo.
MAPE: ¿qué porcentaje representa el error?
MAPE significa Mean Absolute Percentage Error o error porcentual absoluto medio: MAPE = (100/n)Σ|(yₜ-ŷₜ)/yₜ|. Como utiliza valores absolutos, las sobreestimaciones y subestimaciones no se cancelan. Un MAPE de 4.5% significa que, durante los 24 meses de prueba, el pronóstico de ETS se separó de los valores reales aproximadamente 4.5% en promedio. No significa que todos los meses tuvieran exactamente ese error.
MAPE facilita comparar series de distinto tamaño, pero se vuelve problemático cuando el valor real es cero o muy pequeño. Un error de 500 pasajeros equivale a 50% si la base es 1,000 y a solo 0.5% si la base es 100,000. La misma diferencia absoluta recibe un peso completamente distinto.
RMSE: ¿qué tanto nos perjudican los errores grandes?
RMSE significa Root Mean Squared Error o raíz del error cuadrático medio: RMSE = √[(1/n)Σ(yₜ-ŷₜ)²]. Al elevar cada error al cuadrado, penaliza con mucha mayor fuerza las desviaciones grandes. Un error de 20,000 es cuatro veces uno de 5,000, pero su contribución cuadrática es dieciséis veces mayor.
Esta sensibilidad es útil cuando un error extraordinario puede generar capacidad insuficiente, inventario sin vender, personal sobredimensionado o pérdida de ingresos. Su debilidad es la misma: unos pocos meses atípicos pueden dominar el resultado. La sigla correcta es RMSE, no RSMSE.

Figura 6. Pronósticos frente al periodo de prueba no observado.
7. Resultados: el menor error gana, pero no decide solo
El ranking facilita la comparación, aunque no debe convertirse en un piloto automático. También revisaría estabilidad, residuos, facilidad de actualización y sensibilidad a choques. Un modelo ligeramente menos preciso, pero más transparente y estable, puede ser preferible para un comité ejecutivo.
Las métricas responden preguntas diferentes. MAE expresa el error en pasajeros; MPE revela su dirección; MAPE lo convierte en porcentaje; RMSE destaca las desviaciones grandes. Un modelo puede tener MAPE bajo y sesgo constante, MPE cercano a cero porque sus errores se cancelan o MAE razonable junto con RMSE alto por unos cuantos meses desastrosos.
Existe además una diferencia entre precisión estadística y utilidad económica. Equivocarse 8,000 pasajeros en febrero puede ser manejable; cometer el mismo error durante Semana Santa quizá obligue a rechazar demanda o a sostener capacidad improductiva. El costo del error cambia según el mes y la decisión.
Por eso la pregunta final no es solamente cuál obtuvo el menor porcentaje. Debemos preguntar si el error es aceptable para el uso previsto. Un MAPE de 4.5% puede ser excelente para un presupuesto anual y, al mismo tiempo, insuficiente para programar capacidad diaria en una fecha crítica. La precisión solo adquiere sentido cuando se relaciona con el costo económico de equivocarse.
La conclusión profunda de esta comparación es que los modelos no compiten por explicar el pasado de manera elegante. Compiten por pronosticar información que todavía no habían visto y por mejorar una decisión real.

Figura 7. Comparación del MAPE; un valor menor indica mayor precisión en esta prueba.
8. El pronóstico: una distribución de posibilidades, no una cifra exacta
Después de identificar el modelo con mejor desempeño, lo reestimé con los 240 meses y proyecté 2025 y 2026. El escenario base anticipa aproximadamente 5,366,159 pasajeros acumulados durante los siguientes 24 meses y una variación de -1.6% en 2025 frente a 2024.
La banda sombreada es tan importante como la línea central. Representa un intervalo de predicción de 95% bajo los supuestos del modelo. Conforme avanzamos en el horizonte, la incertidumbre se amplía. Presentar solo la línea central daría una sensación de precisión que no existe.
Tampoco debemos confundir el intervalo estadístico con todos los riesgos posibles. Un cierre de espacio aéreo, una recesión, una nueva regulación o la entrada de capacidad no observada pueden colocar la demanda fuera de la banda. El modelo aprende del pasado; no recibe noticias del futuro.

Figura 8. Pronóstico base e intervalo de predicción a 24 meses.
9. Del pronóstico a tres escenarios ejecutivos
Para la decisión comercial traduje la trayectoria central en tres escenarios. El conservador se ubica 9% por debajo del base y el optimista 9% por encima. Estos porcentajes son ilustrativos; en un proyecto real se estimarían con riesgos específicos, elasticidad, capacidad programada y señales adelantadas.
El valor práctico aparece cuando cada escenario tiene una respuesta. Si se materializa el conservador, ¿qué frecuencias, promociones o gastos debemos ajustar? Si aparece el optimista, ¿existe suficiente capacidad hotelera y aérea? ¿Qué parte del inventario conviene proteger para vender a mejor tarifa? Un escenario sin una decisión asociada es solamente otra gráfica.

Figura 9. Escenarios ilustrativos conservador, base y optimista.
10. Cómo se construyó en Python
El ejercicio utiliza pandas para estructurar la serie; NumPy para generar la variación sintética; statsmodels para estimar ETS, ARIMA y SARIMA; y Seaborn y Matplotlib para las visualizaciones. El código siguiente resume la lógica del experimento, no cada ajuste de producción.
En una aplicación real añadiría validación cruzada de origen rodante, búsqueda sistemática de hiperparámetros, variables externas, pruebas de estabilidad y monitoreo del error después del despliegue. También conservaría un modelo básico como benchmark. Si el modelo avanzado no logra superarlo de manera consistente, su complejidad no está justificada.
# Separar los últimos 24 meses
train, test = serie.iloc[:-24], serie.iloc[-24:]
# ETS con tendencia amortiguada y estacionalidad mensual
ets = ExponentialSmoothing(
train, trend=’add’, damped_trend=True,
seasonal=’mul’, seasonal_periods=12
).fit()
# ARIMA y SARIMA
arima = ARIMA(train, order=(2, 1, 1), trend=’t’).fit()
sarima = SARIMAX(
train, order=(1, 1, 1),
seasonal_order=(1, 1, 1, 12), trend=’t’
).fit(disp=False)
# Comparar 24 pronósticos contra el periodo reservado
mape = np.mean(np.abs((test – pronostico) / test)) * 100
Conclusión: pronosticar no es adivinar
Las series de tiempo ayudan a descubrir patrones que una comparación mensual no puede mostrar. Permiten separar tendencia y estacionalidad, evaluar cuánto pesa el pasado y construir rangos plausibles para el futuro. Pero no eliminan el juicio profesional. Lo vuelven más disciplinado.
Mi principal conclusión de este ejercicio es sencilla: antes de preguntar cuál es el mejor algoritmo, debemos definir qué decisión queremos mejorar, cuánto cuesta equivocarnos y qué información estará disponible cuando llegue el momento de actuar.
Un buen pronóstico no es el que impresiona por su complejidad. Es el que reconoce su incertidumbre, supera una referencia razonable y cambia una decisión. Pronosticar no significa adivinar el futuro. Significa reducir la incertidumbre lo suficiente para tomar una mejor decisión hoy.
Nota metodológica
Nota metodológica. Todos los datos, eventos, resultados y escenarios de este artículo son sintéticos y fueron creados con fines educativos. No representan pasajeros ni desempeño de un destino, aeropuerto, aerolínea u hotel real. La semilla aleatoria se fijó para que el ejercicio sea reproducible. Las cifras deben sustituirse por datos observados antes de utilizar el modelo para una decisión comercial.
Referencias
Hyndman, R. J., & Athanasopoulos, G. (2021). Forecasting: Principles and Practice (3rd ed.). OTexts. https://otexts.com/fpp3/
Seabold, S., & Perktold, J. (2010). Statsmodels: Econometric and statistical modeling with Python. Proceedings of the 9th Python in Science Conference, 92-96. https://www.statsmodels.org/
The Matplotlib Development Team. (2026). Matplotlib documentation. https://matplotlib.org/stable/
Waskom, M. L. (2021). seaborn: Statistical data visualization. Journal of Open Source Software, 6(60), 3021. https://doi.org/10.21105/joss.03021