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("data.table")
install.packages("ggplot2")
install.packages("caret")
install.packages("jtools")
library(data.table)
library(ggplot2)
library(caret)
library(jtools)


airbnb<-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(data=airbnb, aes(x=neighbourhood_group,fill=neighbourhood_group))+geom_bar()+labs(x="Grupo de vecindario", y="Oferta de arriendos", title="Oferta de arriendos para cada grupo de vecindario")+scale_fill_discrete(name=NULL, breaks=NULL)

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. Pista: Recuerde la función facet_wrap.

ggplot(data=airbnb, aes(x=price, y=number_of_reviews, color=room_type))+geom_point()+facet_wrap(facets="room_type")+labs(x="Precio", y="N° de visitass", title="Relación entre precio y N° de visitas, según tipo de habitación")+scale_color_discrete(name=NULL, breaks=NULL)

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. Pista: Recuerde que para las regresiones hay que transformar las variables character en variables categóricas.

airbnb[,roomt:=as.factor(room_type)]

reg1<-lm(data=airbnb,formula =price~roomt)
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
## --------------------------------------------------------

P4b

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

P4c

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

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

P4d

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

errorespred1<-data.table(RMSE=RMSE(airbnb[,pred1],airbnb[,price]),
                         MAE=MAE(airbnb[,pred1],airbnb[,price]))
errorespred1
##        RMSE      MAE
## 1: 232.1394 75.89648

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 Pista: Recuerde que para las regresiones hay que transformar las variables character en variables categóricas.

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

reg2<-lm(data=airbnb,formula =price~roomt+number_of_reviews+minimum_nights+nbhg)
summ(reg2)
## MODEL INFO:
## Observations: 48895
## Dependent Variable: price
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(8,48886) = 555.72, p = 0.00
## R² = 0.08
## Adj. R² = 0.08 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                              Est.    S.E.   t val.      p
## ----------------------- --------- ------- -------- ------
## (Intercept)                165.92    7.13    23.26   0.00
## roomtPrivate room         -110.95    2.15   -51.69   0.00
## roomtShared room          -134.82    6.92   -19.49   0.00
## number_of_reviews           -0.21    0.02    -8.92   0.00
## minimum_nights               0.16    0.05     3.13   0.00
## nbhgBrooklyn                21.24    7.16     2.97   0.00
## nbhgManhattan               77.84    7.16    10.87   0.00
## nbhgQueens                   9.30    7.60     1.22   0.22
## nbhgStaten Island           13.76   13.80     1.00   0.32
## ---------------------------------------------------------

P5b

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

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

P5c

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

errorespred2<-data.table(RMSE=RMSE(airbnb[,pred2],airbnb[,price]),
                         MAE=MAE(airbnb[,pred2],airbnb[,price]))
errorespred2
##        RMSE      MAE
## 1: 229.9244 73.68691

P6

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

El modelo 2 es mejor que el modelo 1, ya que los errores de predicción RMSE y MAE son menores, por tanto predice de mejor manera el precio.

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.

airbnb[,nbh:=as.factor(neighbourhood)]

reg3<-lm(data=airbnb,formula =price~roomt+nbh)

airbnb[,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)

predkfolds1<-train(price~roomt+number_of_reviews+minimum_nights+nbhg,data=airbnb,method="lm",trControl= setupKCV)

predkfolds2<-train(price~roomt+nbh,data=airbnb,method="lm",trControl= setupKCV)

print(predkfolds1)
## Linear Regression 
## 
## 48895 samples
##     4 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (9 fold) 
## Summary of sample sizes: 43462, 43463, 43462, 43462, 43462, 43463, ... 
## Resampling results:
## 
##   RMSE      Rsquared    MAE     
##   226.7153  0.09033125  73.70971
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
print(predkfolds2)
## Linear Regression 
## 
## 48895 samples
##     2 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (9 fold) 
## Summary of sample sizes: 43462, 43462, 43461, 43462, 43461, 43464, ... 
## Resampling results:
## 
##   RMSE      Rsquared   MAE     
##   225.6774  0.1055182  70.60149
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE

Vemos que el Modelo 2 (propuesto por nosotras) tiene errores de predicción MAE y RMSE más pequeños .Por tanto, estima de mejor forma el precio de arriendo.