Tarea web scrapping - Análisis de Hoteles en CDMX desde Booking

Author

GRUPO 8: Fabián Celi - Jaime Mosquera - Ana Chacon

Gráfico de precios

highchart() %>%
  hc_chart(type = 'line') %>%
  hc_xAxis(categories = booking$articulo) %>%
  hc_add_series(name = "Precios Actuales", data = booking$precio, dataLabels = list(enabled = TRUE)) %>%
  hc_credits(enabled = TRUE, text = 'booking.com', href = url) %>%
  hc_exporting(enabled = TRUE)
La línea sube y baja, lo que indica que no hay un tendencia constante de precios; hay hoteles baratos y caros distribuidos a lo largo del listado.

Histograma y Boxplot de precios

hist(booking$precio, col = "skyblue", xlab = "USD", border = "white")

Se observa una concentración de precios bajos, especialmente entre 50 y 70 USD, lo cual sugiere que muchos alojamientos económicos están disponibles.
Hay precios más altos que generan la distribución hacia la derecha, aunque son menos frecuentes.
El promedio (91.80 USD) está ligeramente por debajo del valor del tercer cuartil (110.42).
boxplot(booking$precio, horizontal = TRUE, col = "orange")

El 50% central de los precio va del 1er cuartil (60.80) al 3er cuartil (110.42).
Línea dentro de la caja: La mediana (92.59), ligeramente desplazada hacia el extremo inferior, lo que indica una leve concentración de precios bajos.
Extremos (bigotes): Se extienden hacia el mínimo (52.21) y el máximo (159.20).
summary(booking$precio)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  52.21   60.80   92.59   91.80  110.42  159.20 
Hay bastante variación: los precios van desde $52.21 hasta $159.20.
La media (~91.8) está muy cerca de la mediana (~92.6) lo que sugiere que la distribución es más o menos simétrica.
El rango intercuartílico (Q3 - Q1) es de 49.62 USD, indicando dispersión en el 50% central de los hoteles.
Puede haber algunos precios altos que estiran el máximo, pero no son extremos exagerados.

Análisis de texto: Títulos y descripciones con WordCloud

# Preprocesamiento títulos
booking_1 <- booking$articulo %>%
  iconv(to = "ASCII", sub = "") %>%
  tolower() %>%
  removeWords(words = stopwords("spanish")) %>%
  removePunctuation() %>%
  removeNumbers() %>%
  stripWhitespace()

corpus <- Corpus(VectorSource(booking_1)) %>%
  tm_map(removeWords, stopwords("spanish")) %>%
  tm_map(removeNumbers) %>%
  tm_map(stemDocument)

dtm <- DocumentTermMatrix(corpus)
dtm <- dtm[apply(dtm, 1, sum) > 1,]
freq <- colSums(as.matrix(dtm))
plot <- data.frame(words = names(freq), count = freq)
plot <- subset(plot, count > 1)

# Preprocesamiento descripciones
booking_2 <- booking$descripcion %>%
  iconv(to = "ASCII", sub = "") %>%
  tolower() %>%
  removeWords(words = stopwords("spanish")) %>%
  removePunctuation() %>%
  removeNumbers() %>%
  stripWhitespace()

corpus2 <- Corpus(VectorSource(booking_2)) %>%
  tm_map(removeWords, stopwords("spanish")) %>%
  tm_map(removeNumbers) %>%
  tm_map(stemDocument)

dtm2 <- DocumentTermMatrix(corpus2)
dtm2 <- dtm2[apply(dtm2, 1, sum) > 1,]
freq2 <- colSums(as.matrix(dtm2))
plot2 <- data.frame(words = names(freq2), count = freq2)
plot2 <- subset(plot2, count > 1)

Nube de Palabras de Títulos

Las palabras Mexico y Hotel son las que muentran mayor repetición, teniendo 12 cada uno y ciudad con 8.

Nube de Palabras de Descripciones

Las palabras Ciudad y mxico son las que muentran mayor repetición, teniendo 11 cada uno y hotel con 9. Las demas palabras menos de 5 repeticiones