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")
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)})
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")
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
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.
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
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.
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)