El análisis exploratorio de datos constituye una etapa fundamental en el proceso de análisis estadístico, ya que permite identificar patrones, tendencias, relaciones entre variables y posibles inconsistencias en las observaciones o registros.
En el caso del sector hotelero, para la comprensión del comportamiento de las reservas, es de gran importancia conocer los factores que se asocian con aspectos como cancelaciones, tarifas y satisfacción por parte de los clientes, para contribuir a la toma de decisiones basadas en datos.
El presente informe tiene como objetivo realizar un análisis exploratorio de una base de datos de las reservas de una cadena hotelera, mediante técnicas de estadística descriptiva y herramientas de visualización. Para ello, se examinan variables relacionadas con la anticipación de las reservas, el número de noches, las tarifas por noche, el tipo de habitación, la ciudad del hotel, el canal de reserva, la frecuencia de los clientes, las cancelaciones y la satisfacción de los huéspedes.
El análisis se desarrolla a partir de un proceso inicial de revisión, estandarización y limpieza de la base de datos contenida en el archivo reservas_hotel_laboratorio.csv; seguido de la exploración de asociaciones entre variables cualitativas y cuantitativas. Se emplean tablas de frecuencia, medidas de tendencia central y dispersión, gráficos y coeficientes de correlación, según las características de cada pregunta de investigación. Además, se tienen en cuenta las limitaciones de cada caso, con el propósito de formular interpretaciones fundamentadas y evitar conclusiones que excedan el alcance del análisis.
Objetivo general: Explorar la relación entre variables de las reservas de una cadena hotelera, con el fin de identificar asociaciones relevantes que soporten la toma de decisiones y guíen análisis complementarios para fortalecer la gestión del servicio hotelero.
Objetivos específicos:
Se utilizó una base de datos de empleados de la empresa, con las siguientes variables:
datos <- read.csv("reservas_hotel_laboratorio.csv",
na.strings = c("", "NA"),
stringsAsFactors = FALSE)
| Variable | Descripcion |
|---|---|
| id_reserva | Número de reserva |
| ciudad_hotel | Ciudad de la sede del hotel |
| tipo_habitacion | Sencilla, Doble o Suite |
| canal_reserva | Web, Agencia, Telefónico o Walk-in |
| cliente_frecuente | Sí/No |
| anticipacion_dias | Días entre la reserva y la fecha de llegada |
| noches | Número de noches de la reserva |
| tarifa_por_noche_miles | Tarifa por noche, en miles de pesos |
| cancelada | Sí/No |
| calificacion_satisfaccion | Calificación de satisfacción (escala 0 a 10) |
La base contiene 668 empleados y 10 variables en total.
Se realizó la inspección inicial para verificar la asignación correcta del tipo de cada variable
head(datos, 10)
str(datos)
summary(datos)
Todas las variables tenían el tipo correcto
Se revisaron las variables cualitativas: “ciudad_hotel”, “tipo_habitación”,“canal_reserva”,“cliente_frecuente” y “cancelada”.
Se encontró que las categorías estaban escritas de forma inconsistente, con espacios, mayúsculas y minúsculas, tildes faltantes y abreviaturas. Todas las variables cualitativas se estandarizaron para que cada categoría se cuente una sola vez.
Se revisaron las variables cuantitativas: “anticipacion_dias”, “noches”,“tarifa_por_noche_miles” y “calificacion_satisfaccion”.
Se encontraron valores imposibles en las variables “anticipacion_dias” (6 valores negativos) y “tarifa_por_noche_miles” (3 valores negativos). Estos valores se reemplazaron por NAs, para no perder el resto de la información de esos registros. Los valores atípicos altos se conservaron porque son posibles, pero se deben tener en cuenta al interpretar los resultados de análisis que involucren esas variables.
La variable “noches” no contiene valores imposibles, pero hay valores atípicos muy altos que se alejan considerablemente del tercer cuartil que es 5.0, por ejemplo el valor máximo (88). Estos valores se deben considerar en las interpretaciones de análisis que involucren esta variable.
La variable “calificacion_satisfaccion” no contiene valores imposibles ni atípicos, pero llama la atención la cantidad de NAs (139), esto se inspecciona en la sección 3.6 “Valores faltantes (NA) en las variables después de la depuración”.
sum(duplicated(datos))
Se identificaron 18 registros duplicados. En este caso el id_reserva es un valor único, no un consecutivo. Por ello, no se excluyó esa columna para la identificación
datos <- distinct(datos, .keep_all = TRUE)
dim(datos)
## [1] 650 10
Se eliminaron los registros duplicados y se comprobó el número de observaciones sin duplicados, que en este caso corresponde a 650.
Los duplicados se identificaron y eliminaron después de la depuración para que registros repetidos no pasaran desapercibidos si inicialmente tenían los mismos datos pero sin estandarizar.
colSums(is.na(datos))
Se identificó que cuatro variables tienen datos faltantes:
Se observó que hay muchos datos faltantes en la variable “calificacion_satisfaccion”, que parece tener relación con la variable “cancelada”. Un registro con reserva cancelada no debería tener registro de calificación de satisfacción.
datos[datos$cancelada == "Sí" & !is.na(datos$calificacion_satisfaccion), ]
Identificamos que no hay ningún registro con la reserva cancelada que tenga un valor diferente a NA en la columna “califiacion_satisfaccion”. Si ese no fuera el caso, las calificaciones asignadas a reservas canceladas tendrían que ser remplazadas por NAs.
Los registros con datos faltantes en la variable “calificacion_satisfaccion” no se deben eliminar, porque se perderían los datos de las otras variables que van a permitir explorar qué factores se asocian con las cancelaciones. Por otra parte, existen datos faltantes (“NA”) en la variable “calificacion_satisfacion” en registros donde la reserva no fue cancelada.
total_na<- rowSums(is.na(datos))
length(total_na[total_na>=1])
## [1] 175
En total hay 175 filas con datos faltantes, estos registros se perderían del estudio si se eliminaran. En este caso se van a conservar y tratar apropiadamente en el análisis.
El archivo de datos crudos tenía 668 registros inicialmente, después de la limpieza quedaron 650.
Se usó una tabla de contingencia para explorar posibles asociaciones entre las dos variables cualitativas “canal_reserva” y “cancelada”.
Exploración frecuencias absolutas
tabla_canal_cancel <- table(datos$canal_reserva, datos$cancelada)
addmargins(tabla_canal_cancel)
Se identificó que el número de observaciones difiere entre los canales de reserva, por ello, resulta más apropiado comparar las frecuencias relativas para identificar relaciones entre las dos variables. Al haber solo cuatro canales de reserva, la tabla de contingencia permite observar los valores exactos de los porcentajes para realizar una interpretación más precisa al comparar las cancelaciones por canal de reserva.
| No cancelada | Cancelada | |
|---|---|---|
| Agencia | 63.16 | 36.84 |
| Telefónico | 82.18 | 17.82 |
| Walk-in | 90.00 | 10.00 |
| Web | 87.98 | 12.02 |
Respuesta:
Las reservas hechas por medio de agencias presentan el mayor porcentaje de cancelaciones, correspondiente al 36.84 %. Este porcentaje es considerablemente mayor al observado en los otros canales, que no superan el 17.82 % de cancelaciones (Tabla 2). Los datos indican que hay una mayor probabilidad de que una reserva se cancele si se realiza por medio de una agencia de viajes. La cadena hotelera debería revisar qué ocurre con las reservas hechas a través de agencias, dada su alta tasa de cancelación.
El gráfico más adecuado para explorar dos variblaes cuantitativas es el diagrama de dispersión, pues permite analizar visualmente la dirección, intensidad y posible forma de la relación.
El diagrama de dispersión no muestra una tendencia clara entre los días de anticipación de la reserva y la tarifa por noche.
La relación se explora también con el coeficiente de correlación de Pearson y Spearman
cor(datos$anticipacion_dias, datos$tarifa_por_noche_miles, method = "pearson", use = "complete.obs")
## [1] -0.02322382
cor(datos$anticipacion_dias, datos$tarifa_por_noche_miles, method = "spearman", use = "complete.obs")
## [1] -0.03714634
Los dos coeficientes de correlación son muy débiles, cercanos a cero. La relacion no es lineal, pero tampoco parece ser de otro tipo.
El diagrama de cajas comparativo es pertienente para este análisis, debido a que el objetivo es comparar una variable cuantitativa (anticipacion_dias) entre dos grupos categóricos de una variable cualitativa (cancelada: Sí/No).
Respuesta:
Reservar con mucha anticipación no parece estar asociado con pagar una tarifa distinta por noche. El diagrama de dispersión no muestra una tendencia clara entre los días de anticipación de la reserva y la tarifa por noche (Figura 1). Esta ausencia de asociación también se refleja en los coeficientes de correlación, cuyos valores son cercanos a cero.
En cuanto a la relación entre las cancelaciones de las reservas con la anticipación de días con los que se realizan, las reservas hechas con mayor anticipación muestran una ligera tendencia a cancelarse más, sin embargo, la relación parece ser débil (Figura 2). El grupo de las reservas canceladas presenta una mediana ligeramente mayor que la del grupo de las reservas no canceladas, el rango intercuartílico es mayor y el bigote superior es mucho más alto que el del grupo de las reservas no canceladas. Es decir,las reservas con anticipaciones mayores son relativamente más frecuentes en las reservas canceladas. Además, las reservas no canceladas con días de anticipación más altos son atípicas.
Un diagrama de cajas es pertinente en este caso, porque permite comparar la distribución de una variable cuantitativa (la tarifa por noche) entre diferentes categorías de una variable cualitativa (tipos de habitaciones), observando sus medianas, dispersión y valores atípicos.
Un diagrama de cajas es pertinente en este caso, porque permite comparar la distribución de una variable cuantitativa (la tarifa por noche) entre diferentes categorías de una variable cualitativa (ciudades), observando sus medianas, dispersión y valores atípicos.
Respuesta:
La tarifa por noche presenta diferencias representativas, según el tipo de habitación y según la ciudad del hotel. Con respecto al tipo de habitación, las medianas muestran un incremento desde la habitación Sencilla, seguida de la Doble y finalmente la Suite, donde se concentran las tarifas más altas (Figura 3). En el caso específico de la Suite, su tarifa mínima es similiar a las tarifas más altas en las habitaciones dobles y sencillas.
En cuanto a las ciudades, las tarifas más altas se concentran en Cartagena y Santa Marta, las cuales muestran medianas superiores a las de las otras tres ciudades (Cali, Medellín y Bogotá) (Figura 4).
Es relevante tener en cuenta las tarifas atípicas altas, en los tres tipos de habitación y especialmente en las ciudades Cali, Cartagena y Medellín, ya que si se analizan indicadores como la media, estos datos extremos podrían sobreestimar la tarifa promedio por noche para cada tipo de habitación y en las ciudades mencionadas. En este caso lo recomendable sería analizar las medianas.
Consideraciones iniciales: análisis de variables mixtas, una cuantitativa y una cualitativa:
“calificacion_satisfaccion”: Variable cuantitativa (escala 0 a 10); “tipo_habitacion”: Variable cualitativa; “canal_reserva”: Variable cualitativa.
El diagrama de cajas comparativo es pertinente para visualizar el comportamiento de la calificación de satisfacción según el tipo de habitación y según el canal de reserva. Esta es la herramienta estándar para análisis bivariado mixto (cuantitativo vs. cualitativo). Permite comparar visualmente simetría, rango intercuartílico y presencia de valores atípicos.
Respuesta:
La satisfacción de los huéspedes presenta una variación considerable según el tipo de habitación (Figura 5), y en menor medida según el canal de la reserva (Figura 6). La habitación tipo “suite” registra mejores calificaciones que las habitaciones tipo doble y sencilla, con una mediana mucho mayor que las demás y, en general, menor dispersión de las calificaciones. Los húespedes reportan una mejor experiencia en las habitaciones tipo “suite” (Figura 5).
En cuanto a los canales de reserva, aunque la diferencia entre las medianas no es tan considerable, las reservas por medio de Web registran calificaciones de satisfacción ligeramente mayores que por los otros canales y tienen una dispersión menor (Figura 6), por lo que la satisfacción de la experiencia parece evaluarse desde el momento en el que se hace la reserva. Las reservas Walk-in presntan la mayor dispersión, lo que refleja una mayor variabilidad en las expectativas de quienes llegan al hotel sin reserva.
Es relevante señalar que existe una concentración alta de datos faltantes en la variable calificación de la satisfacción del servicio, principalmente en habitaciones dobles (68 NAs) y reservas por Agencias (60 NAs). Si las reservas no canceladas que no registran calificación correponden a clientes no encuestados por insatisfacción, los indicadores analizados podrían estar sobreestimando la satisfacción real del servicio.
También se debería analizar el factor de confusión del precio pagado (tarifa_por_noche_miles): Aunque evaluamos la satisfacción según el tipo de habitación, este análisis bivariado no controla la variable tarifa_por_noche_miles presente en el dataset. La mayor satisfacción en Suites podría estar mediada por el mayor nivel de gasto o disposición a pagar del cliente, y no solo por las características físicas de la habitación. Se podría realizar una exploración complementaria para evaluar esa confusión.
Pueden haber factores no registrados que influyen en la satisfacción del servicio como: variables de entorno: temporada (alta/baja); o el motivo del viaje (negocios/placer).
Para comparar el comportamiento de las cancelaciones según el tipo de cliente, resulta más apropiado comparar las frecuencias relativas para identificar relaciones entre las dos variables. En este caso la gráfica permite observar los porcentajes de las cancelaciones para clientes frecuentes y ocasionales.
El diagrama de cajas comparativo es pertinente para visualizar el comportamiento de la calificación de satisfacción según el tipo de cliente, es decir, una variable cuantitativa con una variable cualitativa.
Respuesta:
Los clientes frecuentes muestran un comportamiento muy similar a los clientes ocasionales, con respecto a las cancelaciones de las reservas y a la satisfacción reportada del servicio. Los clientes frecuentes y ocasionales cancelan las reservas casi con la misma frecuencia (menor al 20% de las reservas) (Figura 7). En cuanto a la satisfacción del servicio, ambos tipos de cliente muestran un rango intercuartílico similar y para ambos casos la distribución de las calificaciones es simétrica, con un valor atípico bajo en cada caso, correspondiente a una calificación de 4/10. De allí que los clientes frecuentes y ocasionales reportan la misma calificación promedio (Figura 8). Esto indica que el tipo de cliente no determina la calificación del servicio, y esta depende de la experiencia específica en cada reserva.
El gráfico más adecuado para explorar dos variblaes cuantitativas es el diagrama de dispersión, pues permite analizar visualmente la dirección, intensidad y posible forma de la relación.
El diagrama de dispersión no muestra una tendencia clara entre el número de noches de la reserva y la tarifa por noche.
La relación se explora también con el coeficiente de correlación de Pearson y Spearman
cor(datos$noches, datos$tarifa_por_noche_miles, use = "complete.obs", method = "pearson")
## [1] 0.03671342
cor(datos$noches, datos$tarifa_por_noche_miles, use = "complete.obs", method = "spearman")
## [1] -0.0007716049
Los dos coeficientes de correlación son muy débiles, cercanos a cero. La relacion no es lineal, pero tampoco parece ser de otro tipo.
Respuesta:
El número de noches de la reserva no parece tener relación con la tarifa pagada por noche. El gráfico de dispersión no evidencia una relación lineal entre el número de noches de la reserva y la tarifa por noche (Figura 9), y los índices de correlación confirman que no hay asociación lineal o no lineal entre estas variables. Los registros con los números de noches más altos varían en la tarifa por noche, por lo que no se observa una política de descuento por estadías largas.
Un diagrama de barras apiladas permite comparar las preferencicas en los canales de reserva según el tipo de cliente, ya que muestra las frecuencias relativas (porcentajes) de una forma organizada y visualmente entendible.
Exploración de frecuencias absolutas
tabla_c_h <- table(datos$cliente_frecuente,datos$tipo_habitacion)
addmargins(tabla_c_h)
Teniendo en cuenta que el número de observaciones difiere entre los tipos de cliente por habitación, resulta más apropiado comparar las frecuencias relativas para identificar relaciones entre las dos variables. Al haber solo tres tipos de habitación, la tabla de contingencia permite observar los valores exactos de los porcentajes para realizar una interpretación más precisa al comparar las preferencias del tipo de habitación según el tipo de cliente.
| Doble | Sencilla | Suite | |
|---|---|---|---|
| Clientes ocasionales | 43.62 | 41.06 | 15.32 |
| Clientes frecuentes | 43.33 | 37.22 | 19.44 |
Respuesta:
Los clientes frecuentes tienen una ligera preferencia hacia la habitación Doble sobre la Sencilla, y considerablemente mayor sobre la Suite (Tabla 3). Al explorar la relación entre el tipo de cliente y el tipo de habitación, se observa la misma tendencia en la preferencia de la habitación Doble, seguida de la Sencilla y por último la Suite, tanto para clientes frecuentes como ocasionales.
Para explorar el comportamiento de todas las variables cuantitativas, es pertinente construir una matriz de correlación y visualizarlo en un gráfico de correlaciones con orden por clustering
vars_cuant <- c("anticipacion_dias", "noches", "tarifa_por_noche_miles","calificacion_satisfaccion")
matriz_cor <- cor(datos[, vars_cuant], use = "complete.obs")
round(matriz_cor, 3)
Respuesta:
Al explorar la correlación de todas las variables cuantitativas en conjunto, no se observa ninguna asociación entre ningún par de variables que no se hubiera observado en el análisis bivariado. De acuerdo con los coeficientes de correlación, la relación lineal entre las variables es muy débil o prácticamente nula (Figura 11).
Con base en los resultados del análisis exploratorio, se proponen las siguientes recomendaciones para la cadena hotelera:
Revisar las reservas realizadas a través de agencias. Este canal presenta la mayor tasa de cancelación (36,84 %), considerablemente superior a la de los demás canales, cuyas tasas no superan el 17,8 %. Además, registra la menor mediana de satisfacción. Se recomienda revisar las condiciones comerciales acordadas con las agencias y analizar las características de estas reservas para identificar oportunidades de mejora en la gestión de cancelaciones y en la experiencia de los huéspedes.
Fortalecer el canal Web. Este canal es el más utilizado tanto por clientes frecuentes como ocasionales y las reservas hechas a través de este canal presentan una mediana de satisfacción ligeramente superior, con menor dispersión en la calificación de los clientes. Se recomienda evaluar incentivos para las reservas directas por la página web, como beneficios exclusivos o tarifas diferenciadas, y monitorear su efecto sobre las cancelaciones, la satisfacción y los ingresos de la cadena hotelera.
Evaluar estrategias tarifarias para estadías prolongadas. El análisis exploratorio no evidencia una relación clara entre el número de noches y la tarifa por noche. Por ello, se propone evaluar la viabilidad de ofrecer descuentos por estadías prolongadas, considerando el tipo de habitación, la ciudad y la rentabilidad de las reservas, con el fin de determinar si esta estrategia puede contribuir a mejorar la ocupación y los ingresos.
Mejorar la calidad y la integridad de los datos. Se recomienda implementar listas desplegables, reglas de validación y controles de consistencia en los sistemas de registro para reducir errores e inconsistencias. Asimismo, conviene revisar la cobertura de la encuesta de satisfacción y la distribución de los valores faltantes, con el propósito de identificar posibles sesgos que puedan afectar la interpretación de los resultados.