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")
library(data.table)
library(ggplot2)
library(caret)
## Loading required package: lattice
Airbnb<-fread("A4.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, y=calculated_host_listings_count )) + geom_bar(stat = "identity")+theme(axis.text.x = element_text(angle=90, vjust=0.7)) + scale_y_continuous(labels=function(n){format(n, scientific = FALSE)})

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))+ 
  geom_point() + facet_wrap(facets ="room_type")

P4

Realice 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 categóricas

table(Airbnb$room_type)
## 
## Entire home/apt    Private room     Shared room 
##           25409           22326            1160
Airbnb$room_type <-factor(Airbnb$room_type, levels = c("Private room", "Entire home/apt", "Shared room" ))
Airbnb[,roomtype:=as.factor(room_type)]

reg1<-lm(data=Airbnb,formula =price~roomtype)

summary(reg1)
## 
## Call:
## lm(formula = price ~ roomtype, data = Airbnb)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -211.8  -59.8  -29.8    9.2 9910.2 
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               89.781      1.554  57.787  < 2e-16 ***
## roomtypeEntire home/apt  122.013      2.130  57.296  < 2e-16 ***
## roomtypeShared room      -19.653      6.991  -2.811  0.00494 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 232.1 on 48892 degrees of freedom
## Multiple R-squared:  0.06561,    Adjusted R-squared:  0.06558 
## F-statistic:  1717 on 2 and 48892 DF,  p-value: < 2.2e-16

P5

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

# El precio aumentará en 122,013 dolares con el uso de una habitación privada.
# El precio bajara en 19.653 dolares con el uso de una habitación compartida.
# Si no usamos ninguna de las dos, el precio sera 89,781 dólares.
# Se puede concluir entonces que ambas variables son significativas, porque podemos estimar de buena forma un posible ingreso.

P6

Realice 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 categóricas.

Airbnb[,NG:=as.factor(neighbourhood_group)]
Airbnb[,NH:=as.factor(neighbourhood)]

reg2<-lm(data=Airbnb,formula =price~roomtype+number_of_reviews+minimum_nights+NG)
summary(reg2)
## 
## Call:
## lm(formula = price ~ roomtype + number_of_reviews + minimum_nights + 
##     NG, data = Airbnb)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -304.3  -63.1  -23.9   11.7 9920.1 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              54.97497    7.04937   7.799 6.39e-15 ***
## roomtypeEntire home/apt 110.94748    2.14630  51.692  < 2e-16 ***
## roomtypeShared room     -23.87699    6.93132  -3.445 0.000572 ***
## number_of_reviews        -0.20908    0.02345  -8.915  < 2e-16 ***
## minimum_nights            0.16007    0.05108   3.134 0.001727 ** 
## NGBrooklyn               21.23645    7.15621   2.968 0.003003 ** 
## NGManhattan              77.83906    7.16043  10.871  < 2e-16 ***
## NGQueens                  9.29678    7.60385   1.223 0.221471    
## NGStaten Island          13.75862   13.79607   0.997 0.318631    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 229.9 on 48886 degrees of freedom
## Multiple R-squared:  0.08336,    Adjusted R-squared:  0.08321 
## F-statistic: 555.7 on 8 and 48886 DF,  p-value: < 2.2e-16

P7

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

# Lo que podemos concluir de la regresión lineal múltiple es:
#El precio aumentará en 110.94748 dólares si se usa toda la casa o departamento
#El precio bajará en 23.87699 dolares si se usa  una habitación compartida
#El precio bajará en 0.20908 dolares si aumenta en 1 el numero de comentario
#El precio subirá en  0.16007 dolares si aumenta en 1 la cantidad mínima de noches
#El precio subirá en 21.23645 dolares si el lugar de arriendo es en Brooklyn
#El precio subirá en 77.83906 dolares si el lugar de arriendo es en Manhattan
#El precio subirá en 9.29678  dolares si el lugar de arriendo es en Queens
#El precio subirá en 13.75862 dolares si el lugar de arriendo es en Staten Island
#Si es que no se utiliza la habitación compartida ni toda la casa/depto y se ubica en el Bronx el precio sera  54.97497 dolares
#Las variables que no son significactivas son el número de noches y el número de comentarios ya que las variaciones son muy pequeñas, todas las otras variables son significativas.

P8

Realice k folds CV para comparar los modelos (P4) y (P6). 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)

k<-9
set.seed(12345)
setupKCV<- trainControl(method = "cv" , number = 9)
predk1<-train(price~roomtype,data=Airbnb,method="lm",trControl= setupKCV)
predk2<-train(price~roomtype+number_of_reviews+minimum_nights+NG,data=Airbnb,method="lm",trControl= setupKCV)

print(predk1)
## Linear Regression 
## 
## 48895 samples
##     1 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (9 fold) 
## Summary of sample sizes: 43462, 43463, 43462, 43462, 43462, 43463, ... 
## Resampling results:
## 
##   RMSE      Rsquared    MAE     
##   228.9655  0.07144239  75.90461
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
print(predk2)
## Linear Regression 
## 
## 48895 samples
##     4 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (9 fold) 
## Summary of sample sizes: 43462, 43462, 43461, 43462, 43461, 43464, ... 
## Resampling results:
## 
##   RMSE      Rsquared    MAE     
##   227.8123  0.08766953  73.70391
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
#Es más conveniente es la segunda regresión porque contiene un error mucho más pequeño que la primera regresión (RMSE y MAE más pequeños en la segunda regresión que en la primera)