P1

Instale el paquete de data.table, ggplot2 y caret y abra la base de datos que contiene la información de arriendos de airbnb de New York para el año 2019.

install.packages("ggplot2")
install.packages("data.table")
install.packages("caret")
install.packages("jtools")
library(ggplot2)
library(data.table)
library(caret)
## Loading required package: lattice
library(jtools)
NYC <- fread("AB_NYC_2019.csv")

P2

Muestre en un gráfico de barras la oferta de arriendos para cada grupo de vecindario, es decir, cuántos departamentos/casas se arriendan por grupo de vecindario.

ggplot(NYC,aes(x= neighbourhood_group)) + geom_bar()

P3

Muestre con un scatter plot la relación entre el precio (eje x) y el número de visitas (eje y) según el tipo de habitación que se está arrendando.

ggplot(NYC,aes(x=price, y=number_of_reviews)) + geom_point()+  facet_wrap(facets = "room_type")+labs(x="Precio", y="Número de visitas", title = "Relacion Precio y Numero de Visitas segun el tipo de habitación", caption = "Fuente: Airbnb 2019")

P4a

Nuestro primer modelo de predicción será una regresión lineal simple que explique el precio de los arriendos de airbnb según el tipo de habitación.

NYC[,roomt:=as.factor(room_type)]
reg1 <- lm(data = NYC, formula = price~roomt)

P4b

Interprete los coeficientes de su regresión anterior. ¿Son estadísticamente significativos?

summ(reg1)
## MODEL INFO:
## Observations: 48895
## Dependent Variable: price
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(2,48892) = 1716.63, p = 0.00
## R² = 0.07
## Adj. R² = 0.07 
## 
## Standard errors: OLS
## --------------------------------------------------------
##                              Est.   S.E.   t val.      p
## ----------------------- --------- ------ -------- ------
## (Intercept)                211.79   1.46   145.43   0.00
## roomtPrivate room         -122.01   2.13   -57.30   0.00
## roomtShared room          -141.67   6.97   -20.33   0.00
## --------------------------------------------------------

#Interpretacion

El intercepto b0 (contastnte), es 211.79. Este significa que cuando no hay ningun tipo de habitacion, es decir, es la casa completa (Entire home/apt), el precio sera de U$ 211.79.

El intercepto B1 (roomtPrivate room), es -122.01. Esto seginfica que cuando el tipo de habitacion es privada, el precio disminuye en -U$ 122.01.

El intercepto B2 (), es -141.67. Esto significa que cuando el tipo de habitacion es compartida (shared), el precio cae disminuye -U$ 141.67.

Dado que los 3 coeficientes presetna un P =0.00, podemos decir que son significativos en todos los niveles (1%,5%, 10%).

Cabe mencionar que el R2 nos indica que las variables del modelo explican solo en un 0.07 (7%) el precio. Por lo que no es un modelo que se ajuste tanto a la realidad.

P4c

Calcule el precio predicho para todas las observaciones de la muestra. E inclúyalo en la base original.

NYC[,pred1:=predict(reg1, na.action = na.exclude)]

P4d

Calcule los errores de predicción (RMSE y MAE) de nuestro modelo. Muestre sus resultados.

predicciones<- data.table(RMSE=RMSE(NYC[,pred1],NYC[,price]),
                         MAE=MAE(NYC[,pred1],NYC[,price]))

P5a

Nuestro segundo modelo de predicción será una regresión lineal múltiple que explique el precio de los arriendos de airbnb según el tipo de habitación, el número de visitas, la cantidad mínima de noches y el grupo de vecindario en el que se encuentra. No olvide mostrar los resultados.

NYC[,nbhg:=as.factor(neighbourhood_group)]

reg2<-lm(data=NYC,formula =price~roomt+number_of_reviews+minimum_nights+nbhg)

P5b

Calcule el precio predicho para todas las observaciones de la muestra. E inclúyalo en la base original.

NYC[,pred2:=predict(reg2,na.action = na.exclude)]

P5c

Calcule los errores de predicción (RMSE y MAE) de nuestro modelo. Muestre sus resultados.

predicciones2<-data.table(RMSE=RMSE(NYC[,pred2],NYC[,price]),
                         MAE=MAE(NYC[,pred2],NYC[,price]))

P6

Interprete la diferencia en los errores de predicción entre el Modelo 1 y el Modelo 2.

Interpretación

Existe una diferencia entre los errores del modelo 1 y el modelo 2, debido a que el error del modelo 2 es más pequeño que el error del modelo 1, podemos concluír que el segundo modelo se ajusta mejor a la realidad y puede precedir de manera más exacta el precio de un departamento o habitación de airbnb.

P7

Proponga un modelo de predicción (distinto a los anteriores) que le permita predecir el precio de los arriendos de airbnb y calcule precio predicho para todas las observaciones.

reg3<-lm(data=NYC,formula =price~roomt+number_of_reviews+availability_365+minimum_nights+calculated_host_listings_count)
NYC[,pred3:=predict(reg3, na.action = na.exclude)]

P8

Ahora realice k folds CV para comparar su modelo con el de la pregunta 5. Muestre los resultados de errores en la predicción y determine cuál modelo es más conveniente en base al error de predicción. Utilice k=9 y set.seed(12345)

set.seed(12345)
setupKCV <- trainControl(method = "cv" , number = 9)

predkfolds0<-train(price~roomt+number_of_reviews+availability_365+minimum_nights+calculated_host_listings_count,data=NYC,method="lm",trControl= setupKCV)
 
predkfolds5<-train(price~roomt+number_of_reviews+minimum_nights+nbhg,data=NYC,method="lm",trControl= setupKCV)
 
print(predkfolds0)
## Linear Regression 
## 
## 48895 samples
##     5 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (9 fold) 
## Summary of sample sizes: 43462, 43463, 43462, 43462, 43462, 43463, ... 
## Resampling results:
## 
##   RMSE      Rsquared    MAE     
##   227.6159  0.08281063  76.50176
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE

Interpretación

Si bien, el RSME de nuestro modelo es un poco más pequeño, el MAE es sustancialmente más grande que el arrojado por el modelo de la pregunta 5, por lo tanto concluímos que el modelo más conveniente para precedir el precio de un departamento o habitación en airbnb es el modelo de la pregunta 5.