Indique claramente el nombre y apellidos en la primera página del informe. Resuelva los ejercicios usando R siempre que sea necesario, es importante mostrar cada uno de los pasos realizados para llegar al resultado final. Indique en cada caso qué instrucciones de R ha usado y las salidas que se obtienen.
El informe final se entregará a través del moodle en un archivo con formato “pdf” o “html”.
(4 puntos) Los datos del archive LasVegas.csv, obtenidas del repositorio UCI (https://archive-beta.ics.uci.edu/ml/datasets) contienen información sobre las reseñas redactadas en TripAdvisor por clientes de 21 hoteles de Las Vegas. Importe los datos al programa R y observe los nombres de las variables.
#Cargar datos
data <- read.csv("LasVegas.csv", sep= ";", header = TRUE)
#Observamos los nombres de las variables
names(data)
## [1] "User.country" "Nr..reviews" "Nr..hotel.reviews"
## [4] "Helpful.votes" "Score" "Period.of.stay"
## [7] "Traveler.type" "Pool" "Gym"
## [10] "Tennis.court" "Spa" "Casino"
## [13] "Free.internet" "Hotel.name" "Hotel.stars"
## [16] "Nr..rooms" "User.continent" "Member.years"
## [19] "Review.month" "Review.weekday"
#Espacio para solución
#Recordamos que una tabla de contingencia es una tabla con las columnas y las filas ciertas variables y en la intersección de cada fila y columna la probabilidad de la intersección de los correspondientes sucesoss.En la última columna y en la última fila aparecen las llamadas probabilidades marginales, que son las probabilidades de cada suceso de las particiones involucradas.
#Usaremos la función table() para crear una tabla donde las filas representan los distintos tipos de viajero y las columnas representan los trimestres en que se realizó el viaje. Cada celda de la tabla contiene el número de observaciones que corresponden a la combinación de tipo de viajero y trimestre.
tabla_contingencia <- table(data$Traveler.type, data$Period.of.stay)
#Para calcular las probabilidades de cada intersección, podemos utilizar la función prop.table().
probabilidades <- prop.table(tabla_contingencia)
#Para agregar las probabilidades marginales, podemos utilizar la función addmargins().
tabla_con_marginales <- addmargins(probabilidades, margin = 1)
tabla_con_marginales <- addmargins(tabla_con_marginales, margin = 2)
#Finalmente redondeamos los resultados a 3 decimales.
round(tabla_con_marginales, 3)
##
## Dec-Feb Jun-Aug Mar-May Sep-Nov Sum
## Business 0.048 0.020 0.040 0.040 0.147
## Couples 0.101 0.099 0.107 0.117 0.425
## Families 0.054 0.073 0.048 0.044 0.218
## Friends 0.030 0.042 0.048 0.044 0.163
## Solo 0.014 0.016 0.012 0.006 0.048
## Sum 0.246 0.250 0.254 0.250 1.000
#Espacio para solución
#Para saber la probabilidad de que un cliente seleccionado al azar se haya hospedado Solo y entre Junio y Agosto, podemos utilizar la tabla de contingencia.
round(tabla_con_marginales["Solo", "Jun-Aug"], 3)
## [1] 0.016
#La probabilidad es del 1.6%.
#Espacio para solución
#Para saber la probabilidad de que un cliente que viaja por negocios se haya hospedado entre Diciembre y Febrero hay que calcular la probabilidad condicional P(Dec-Feb|Business), esta se calculca con la siguiente fórmula: P(Dec-Feb|Business) = P(Dec-Feb y Business) / P(Business).
#En este caso nos apoyamos en la tabla_con_marginales para sacar los datos y sustituimos: P(Dec-Feb|Business) = P(0.048) / P(0.147).
Dec_Feb_Business <- round(0.048/0.147, 3)
Dec_Feb_Business
## [1] 0.327
#En este caso la probabilidad de que dicho evento ocurre es de 32.7%.
#Espacio para solución
#Al igual que antes nos preguntan por la probabilidad condicional de un evento habiendo pasado otro.Para saber la probabilidad de que un cliente que se ha hospedado entre Marto y Mauo y viaje en pareja hay que calcular la probabilidad condicional P(Couples|Mar-May), esta se calculca con la siguiente fórmula: P(Couples|Mar-May) = P(Couples y Mar-May) / P(Mar-May).
#En este caso nos apoyamos en la tabla_con_marginales para sacar los datos y sustituimos: P(Couples|Mar-May) = P(0.107) / P(0.254).
Couples_Mar_May <- round(0.107/0.254, 3)
Couples_Mar_May
## [1] 0.421
#En este caso la probabilidad de que dicho evento ocurre es de 42.1%.
(3 puntos) Continuamos con los datos del problema anterior.
#Espacio para solución
#Para saber la probabilidad de que un cliente seleccionado al azar se haya hospedado entre Septiembre y Noviembre, podemos utilizar la tabla de contingencia.
round(tabla_con_marginales["Sum", "Sep-Nov"], 3)
## [1] 0.25
#En este caso buscamos la columna Sep-Nov correspondiente al periodo de viaje y la fila "Sum" que contiene la probabilidad marginal de ese periodo. La probabilidad es del 25%.
Escogemos al azar 5 clientes de la base de datos, con reposición. Consideramos la variable que nos indica el número de clientes, entre los 5, que viajan entre Septiembre y Noviembre.
i.) ¿Qué distribución sigue esta variable? ¿De qué parámetros?
#Espacio para solución
#En este caso lo que nos pide es que consideremos una variable que indique de entre los 5 viajeros escogidos al azar y con reposicion, cuántos viajan entre Septiembre y Noviembre. Esta variable seguirá una distribución binomial ya que la selección se hace al azar y solo hay dos tipos de posibles resultados, que viaje en ese periodo o no, por lo tanto éxito o fracaso.
#En este caso, los parámetros serán:
#1. El número de ensayos es 5 (n=5), ya que seleccionamos 5 viajeros al azar
#2. La probabilidad de éxito que es la probabilidad de que un cliente seleccionado al azar haya viajado entre Septiembre y Noviembre (p).
#Podemos calcular esta probabilidad (p) utilizando la tabla de contingencia que hemos creado anteriormente:
p <- tabla_con_marginales["Sum", "Sep-Nov"]
n <- 5
ii.) ¿Cuál es la probabilidad que ninguno de los clientes seleccionados viaje entre Septiembre y Noviembre?
#Espacio para solución
#Una vez determinados los parámetros de la distribución binomial (n = 5 y p), si queremos sber la probabilidad de que ninguno de los 5 clientes seleccionados viaje entre Septiembre y Noviembre, entonces deberemos usar la función de masa de probabilidad de la distribución binomial. En este caso la función será dbinom() y ajustaremos al parámetro 0 indicando que el número de clientes que viajan entre Septiembre y Noviembre sea igual a 0.
probabilidades <- dbinom(0, size = n, prob = p) # Probabilidades de cada posible valor de la variable
round(probabilidades, 3)
## [1] 0.237
#Como vemos la probabiliad de qu entre los 5 ningún cliente haya viajado entre Septiembre y Noviembre es del 23.7%.
iii.) ¿Cuál es la probabilidad que exactamente 3 de los 5 viajen entre Septiembre y Noviembre?
#Espacio para solución
#Usaremos el mismo razonamiento que antes, en este caso ajustando el parámetro de la función a 3 para indicar que 3 de los viajeros vuelen entre el Septiembre y Noviembre.
probabilidades <- dbinom(3, size = n, prob = p) # Probabilidades de cada posible valor de la variable
round(probabilidades, 3)
## [1] 0.088
#En este caso la probabilidad es más baja siendo del 8.8%.
(3 puntos) Supongamos ahora que sabemos que la edad de los clientes de uno de estos hoteles se distribuye siguiendo una distribución normal de media 52 y desviación típica 11. Escogemos un cliente al azar:
#Espacio para solución
#Para responder esta pregunta vamos a usar la función de distribución acumulada pnorm() para calcular la probabilidad de que un cliente seleccionado al azar tenga más de 40 años. Como nos pide que tenga más de 40 años esto lo podemos calcular o ajustando el parámetro lower.tail=FALSE o restando de 1 la probabilidad acumulada hasta 40.
#Opción 1:
round(pnorm(40, mean = 52, sd = 8, lower.tail = FALSE), 3)
## [1] 0.933
#Opción 2:
round(1 - pnorm(40, mean = 52, sd = 8), 3)
## [1] 0.933
#La respuesta es la misma, si escogemos un cliente al azar la probabilidad que tenga más de 40 años es de 93.3%.
#Espacio para solución
#Al contrario que antes ahora no tenemos que ajustar el parámetro lower.tail ya que de por sí lo tiene en TRUE.
round(pnorm(63, mean = 52, sd = 8), 3)
## [1] 0.915
#En este caso la respuesta es del 91.5%.
#Espacio para solución
#Esta pregunta lo que nos pide es un cálculo de cuantiles. Para responder a esta pregunta, tenemos que calcular el percentil 0.25, el cual nos divide el área total en dos partes(<25 y >75 %).
#La función qnorm() calcula el cuantil correspondiente que sería la edad que estamos buscando. En este caso, estamos buscando el valor de edad que divide el area entre un 0.25 y 0.75, es decir, el valor tal que el el 25% de los viajeros sean más jovenes y el 75% de los viajeros sean mayores.
round(qnorm(c(0.25), mean = 52, sd = 11))
## [1] 45
#Hemos puesto como parámetro 0.25 lo que nos devuelve que el 25% de los clientes son menores de 45 años. Por otro lado el 75% de los clientes son mayores de 45 años.