New York AIRBNB
A continuación se presentan el número de datos obtenidos de la base de datos y se clasifican por ciudad.
ny<-AB_NYC_2019
ny<-data.frame(ny$neighbourhood_group,ny$room_type,
ny$price,ny$minimum_nights, ny$number_of_reviews)
table(ny$ny.neighbourhood_group)##
## Bronx Brooklyn Manhattan Queens Staten Island
## 1091 20104 21661 5666 373
Se realiza una subdivisión respecto al tipo de habitación dentro del AIRBNB donde para trabajar con los datos ahora se tendrán la renta de casa o aprtamento, cuarto privado y cuarto compartido, que van a representar nuestras variables explicativas para el modelo a desarrollar.
table(ny$ny.room_type)##
## Entire home/apt Private room Shared room
## 25409 22326 1160
Renta casa/apartamento
Para este apartado se presentan las comparaciones de los 5 vecindarios analizados tomando en cuenta sólo la renta casa/apartamento
Precio vs mínimo de noches
A continuación estamos comparando el precio de renta casa/apartamento de los cinco vecindarios con el mínimo de noches, para este caso se está aplicando el inverso multiplicativo porque queremos mantener el precio real. Podemos ver que no hay una relación lineal notoria entre las variables pero sí podemos sacar conclusiones respecto de éstas ya que entre más noches la persona rente la habitación el precio irá diminuyendo y por lo contrario entre menos noches el precio aumentará, es importante notar que para cada caso la mayor concentración de los datos se encuentra en un precio accesible acorde a la zona de estudio pues los rangos por vecindario varían notablemente, destacando el hecho de que para Bronx está un máximo de 600 dólares mientras que para Brooklyn este mismo excede los 2000 dólares.
Precio vs número de comentarios
Ahora la comparación se realizará sobre precio vs número de comentarios, nuevamente se está realizando sobre los 5 vecindarios,se está usando la transformación de la raíz cuadrada sobre los comentarios ya que se busca tener el precio real, la línea se ajusta mejor a los datos a pesar de no obtener por completo una relación lineal, aquí podemos decir que para precios altos se encuentran menos comentarios lo cual hace sentido pues son pocas las personas que adquieren habitaciones en este rango de precios, mientras que la mayoría de nuestros datos están concentrados en un rango donde los precios son más accesibles y por ello se tiene un mayor número de comentarios tomando en cuenta que esto dependerá de la zona y el rango de precios será distinto para cada vecindario, los precios más altos están en Brooklyn con 10000 dólares, mientras que para Staten Island el precio mayor está alrededor de los 400-500 dólares. Es importante mecionar que en la categoría de cuartos compartidos se encuentra la mayor parte de nuestra información.
Cuarto privado
Para este apartado se presentan las comparaciones de los 5 vecindarios analizados tomando en cuenta sólo cuarto privado.
Precio vs mínimo de noches
Ahora estamos comparando el precio de los cuartos privados de los cinco vecindarios con el mínimo de noches, para este caso se está aplicando el inverso multiplicativo porque nuevamente queremos mantener el precio real. Podemos ver que no hay una relación lineal notoria entre las variables pero sí podemos sacar conclusiones respecto de éstas ya que entre más noches la persona rente la habitación el precio irá diminuyendo y por lo contrario entre menos noches el precio aumentará, es importante notar que para cada caso la mayor concentración de los datos se encuentra en un precio accesible acorde a la zona de estudio pues los rangos por vecindario varían notablemente, destacando el hecho de que para Bronx está un máximo de 300 dólares mientras que para Brooklyn y Manhattaan este mismo excede los 2000 dólares. Además de que a pesar del vecindario el comportamiento de los datos es similar.
Precio vs comentarios
Ahora la comparación se realizará sobre precio vs número de comentarios, nuevamente se está¡ realizando sobre los 5 vecindarios,se está usando la transformación de la raíz cuadrada sobre los comentarios ya que se busca tener el precio real, la línea se ajusta mejor a los datos a pesar de no obtener por completo una relación lineal, aquí podemos decir que para precios altos se encuentran menos comentarios lo cual hace sentido pues son pocas las personas que adquieren habitaciones en este rango de precios, mientras que la mayoría de nuestros datos están concentrados en un rango donde los precios son más accesibles y por ello se tiene un mayor número de comentarios tomando en cuenta que esto dependerá de la zona y el rango de precios será distinto para cada vecindario, los precios más altos están en Brooklyn y Manhattan con 400 dólares,mientras que para Staten Island el precio mayor es de 150 dólares.
Cuartos compartidos
Para este apartado se presentan las comparaciones de los 5 vecindarios analizados tomando en cuenta sólo los cuartos compartidos.
Precio vs mínimo de noches
Por último se compara el precio de los cuartos compartidos de los cinco vecindarios con el mínimo de noches, para este caso se está aplicando el inverso multiplicativo porque nuevamente queremos mantener el precio real. Podemos ver que no hay una relación lineal notoria entre las variables pero sí podemos sacar conclusiones respecto de éstas ya que entre más noches la persona rente la habitación el precio irá diminuyendo y por lo contrario entre menos noches el precio aumentará, es importante notar que para cada caso la mayor concentración de los datos se encuentra en un precio accesible acorde a la zona de estudio pues los rangos por vecindario varóan notablemente, destacando el hecho de que para Bronx está un máximo de 160 dólares mientras que para Brooklyn y Manhattaan este mismo excede los 400 dólares. Además de que a pesar del vecindario el comportamiento de los datos es similar. Aquí resulta interesante que la diferencia de precios no es tan amplia comparado con otro tipo de habitación, además de que se cuenta con una proporción menor de los datos.
Precio vs número de comentarios
Ahora la comparación se realizará sobre precio vs número de comentarios, nuevamente se está realizando sobre los 5 vecindarios,se está usando la transformación de la raíz cuadrada sobre los comentarios ya que se busca tener el precio real, la línea se ajusta mejor a los datos a pesar de no obtener por completo una relación lineal, aquí podemos decir que para precios altos se encuentran menos comentarios lo cual hace sentido pues son pocas las personas que adquieren habitaciones en este rango de precios, mientras que la mayoría de nuestros datos están concentrados en un rango donde los precios son más accesibles y por ello se tiene un mayor número de comentarios tomando en cuenta que esto dependerá de la zona y el rango de precios será distinto para cada vecindario, los precios más altos están en Brooklyn y Manhattan con 400 dólares,mientras que para Staten Island el precio mayor es de 150 dólares.
Análisis de Residuales
Dada la extensión de los datos por la separación en las variables categóricas, y porque en cada uno de los barrios hemos realizado las mismas transformaciones dependiendiendo de las variables explicativas, decidimos hacer el Análisis de residuales solo para 2 barrios de New York.
Elegimos Bronx y Staten Island, elegidos para hacer un análisis con los condados de menos datos, ya que son los lugares más alejados de la zona del turismo de la Gran Manzana; por lo que queremos analizar de una manera más detallada su comportamiento.
Para hacer el análisis correspondiente, decidimos tomar el 75% de los datos que elegimos del condado y el tipo de habitación.
Bronx
Habitación - Departamento
summary(MBHx)##
## Call:
## lm(formula = BronxPH2 ~ BronxH2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -123.19 -43.45 -23.09 14.43 448.81
##
## Coefficients:
## Estimate Std. Error t value
## (Intercept) 124.910 9.927 12.583
## BronxH2X1..HABnx.ny.minimum_nights. 26.284 16.053 1.637
## BronxH2sqrt.HABnx.ny.number_of_reviews. -3.087 1.368 -2.257
## Pr(>|t|)
## (Intercept) <2e-16 ***
## BronxH2X1..HABnx.ny.minimum_nights. 0.1027
## BronxH2sqrt.HABnx.ny.number_of_reviews. 0.0248 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 80.38 on 279 degrees of freedom
## Multiple R-squared: 0.02288, Adjusted R-squared: 0.01588
## F-statistic: 3.267 on 2 and 279 DF, p-value: 0.0396
confint(MBHx,level = 0.90)## 5 % 95 %
## (Intercept) 108.5271860 141.2931667
## BronxH2X1..HABnx.ny.minimum_nights. -0.2086448 52.7770759
## BronxH2sqrt.HABnx.ny.number_of_reviews. -5.3440884 -0.8292586
El R^{2}, obtiene un valor muy pequeño, entonces, el modelo no asemeja la variabilidad de los datos, podemos empezar a pensar que los residuales no tienen una distribución normal.
Se observa que en los intervalos de confianza obtenidos no se encuentra el cero, por lo que decimos que el precio si esta relacionado con las variables del mínimo de noches y los comentarios.
ResBH<-MBHx$residuals
plot(ResBH)
abline(a=0,b=0)hist(ResBH)ks.test(ResBH,"pnorm",0,sd(ResBH))## Warning in ks.test(ResBH, "pnorm", 0, sd(ResBH)): ties should not be
## present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: ResBH
## D = 0.19236, p-value = 1.726e-09
## alternative hypothesis: two-sided
Podemos observar que los residuales no distribuyen como una normal 0, con la desviación estandar correspondiente.
Por lo que decidimos hacer un análisis sobre las proyecciones de los precios, con la información obtenida y con el 25% restante de la base original.
plot(BronxPH2)ks.test(DifBH,"pnorm",0,sd(DifBH))## Warning in ks.test(DifBH, "pnorm", 0, sd(DifBH)): ties should not be
## present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: DifBH
## D = 0.064441, p-value = 0.1921
## alternative hypothesis: two-sided
Entonces, decidimos graficar las difercias entre los precios que hemos predecido con los precios que ya tenemos.
Podemos ver que las diferencias si son significativas dada la gráfica que generan, pero si hacemos el análisis para ver que estas diferencias se distribuyen como una normal 0 con varianza estimada, obtenemos el p-valor y con un alpha de 10% podemos ver que si se distribuyen de esta manera.
Cuarto Privado
summary(MBPx)##
## Call:
## lm(formula = BronxPP2 ~ BronxP2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -64.746 -17.628 -6.247 10.664 239.544
##
## Coefficients:
## Estimate Std. Error t value
## (Intercept) 55.8377 3.3685 16.576
## BronxP2X1..PRBnx.ny.minimum_nights. 18.9087 4.4245 4.274
## BronxP2sqrt.PRBnx.ny.number_of_reviews. -1.6120 0.4206 -3.833
## Pr(>|t|)
## (Intercept) < 2e-16 ***
## BronxP2X1..PRBnx.ny.minimum_nights. 2.32e-05 ***
## BronxP2sqrt.PRBnx.ny.number_of_reviews. 0.000143 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 31.75 on 483 degrees of freedom
## Multiple R-squared: 0.06491, Adjusted R-squared: 0.06104
## F-statistic: 16.76 on 2 and 483 DF, p-value: 9.147e-08
confint(MBPx,level = 0.90)## 5 % 95 %
## (Intercept) 50.286371 61.3890261
## BronxP2X1..PRBnx.ny.minimum_nights. 11.616976 26.2003871
## BronxP2sqrt.PRBnx.ny.number_of_reviews. -2.305116 -0.9189141
El R^{2}, obtiene un valor muy pequeño, entonces, el modelo no asemeja la variabilidad de los datos, podemos empezar a pensar que los residuales no tienen una distribución normal.
Se observa que en los intervalos de confianza obtenidos no se encuentra el cero, por lo que decimos que el precio si esta relacionado con las variables del minimo de noches y los comentarios.
ResBP<-MBPx$residuals
plot(ResBP)
abline(a=0,b=0)hist(ResBP)ks.test(ResBP,"pnorm",0,sd(ResBP))## Warning in ks.test(ResBP, "pnorm", 0, sd(ResBP)): ties should not be
## present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: ResBP
## D = 0.1262, p-value = 3.784e-07
## alternative hypothesis: two-sided
Podemos observar que los residuales no distribuyen como una normal 0, con la desviación estandar correspondiente.
Por lo que decidimos hacer un análisis sobre las proyecciones de los precios, con la información obtenida y con el 25% restante de la base original.
plot(BronxPP2)ks.test(DifBP,"pnorm",0,sd(DifBP))## Warning in ks.test(DifBP, "pnorm", 0, sd(DifBP)): ties should not be
## present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: DifBP
## D = 0.035514, p-value = 0.5721
## alternative hypothesis: two-sided
Entonces, decidimos graficar las difercias entre los precios que hemos predecido con los precios que ya tenemos.
Podemos ver que las diferencias si son significativas dada la gráfica que generan, pero si hacemos el análisis para ver que estas diferencias se distribuyen como una normal 0 con varianza estimada, obtenemos el p-valor y con un alpha de 10% podemos ver que si se distribuyen de esta manera.
Cuarto Compartido
summary(MBSx)##
## Call:
## lm(formula = BronxPS2 ~ BronxS2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -38.750 -17.753 -8.269 9.803 91.250
##
## Coefficients:
## Estimate Std. Error t value
## (Intercept) 37.264 11.705 3.184
## BronxS2X1..SRBnx.ny.minimum_nights. 21.486 12.598 1.705
## BronxS2sqrt.SRBnx.ny.number_of_reviews. -5.961 2.064 -2.888
## Pr(>|t|)
## (Intercept) 0.00278 **
## BronxS2X1..SRBnx.ny.minimum_nights. 0.09567 .
## BronxS2sqrt.SRBnx.ny.number_of_reviews. 0.00617 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 26.55 on 41 degrees of freedom
## Multiple R-squared: 0.2014, Adjusted R-squared: 0.1624
## F-statistic: 5.17 on 2 and 41 DF, p-value: 0.009949
confint(MBSx,level = 0.90)## 5 % 95 %
## (Intercept) 17.5657058 56.961703
## BronxS2X1..SRBnx.ny.minimum_nights. 0.2848283 42.686871
## BronxS2sqrt.SRBnx.ny.number_of_reviews. -9.4345806 -2.487067
El R^{2}, obtiene un valor pequeño, pero es mayor que los anteriores, entonces, el modelo no asemeja completamente la variabilidad de los datos, como es una R pequeña, podemos pensar que los residuales no tienen una distribución normal.
En el intervalo de confianza se encuentra el cero, por lo que se puede pensar que el precio no depende del mínimo de noches, pero, en el intervalo de confianza del numero de comentarios no se encuentra el cero, por lo que el precio sí depende del numero de comentarios.
ResBS<-MBSx$residuals
plot(ResBS)
abline(a=0,b=0)hist(ResBS)ks.test(ResBS,"pnorm",0,sd(ResBS))## Warning in ks.test(ResBS, "pnorm", 0, sd(ResBS)): ties should not be
## present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: ResBS
## D = 0.17431, p-value = 0.1379
## alternative hypothesis: two-sided
Los Residuales si pueden tener una distribución normal, en casos especificos en la selección de los datos observados.
plot(BronxPS2)ks.test(DifBS,"pnorm",0,sd(DifBS))## Warning in ks.test(DifBS, "pnorm", 0, sd(DifBS)): ties should not be
## present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: DifBS
## D = 0.18822, p-value = 0.08852
## alternative hypothesis: two-sided
También decidimos hacer predicciones sobre los precios y podemos ver que los residuales si tienen una distribución normal.
Staten Island
Habitación - Departamento
summary(MSTH)##
## Call:
## lm(formula = STPH2 ~ STH2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -91.70 -51.63 -27.31 23.57 309.87
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 141.998 14.088 10.079 <2e-16
## STH2X1..HAST.ny.minimum_nights. -9.330 21.961 -0.425 0.672
## STH2sqrt.HAST.ny.number_of_reviews. -2.362 1.777 -1.329 0.186
##
## (Intercept) ***
## STH2X1..HAST.ny.minimum_nights.
## STH2sqrt.HAST.ny.number_of_reviews.
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 72.01 on 124 degrees of freedom
## Multiple R-squared: 0.01738, Adjusted R-squared: 0.001527
## F-statistic: 1.096 on 2 and 124 DF, p-value: 0.3373
confint(MSTH,level = 0.90)## 5 % 95 %
## (Intercept) 118.650951 165.3452353
## STH2X1..HAST.ny.minimum_nights. -45.724591 27.0638257
## STH2sqrt.HAST.ny.number_of_reviews. -5.307415 0.5835534
El R^{2}, obtiene un valor muy pequeño, entonces, el modelo no asemeja la variabilidad de los datos, podemos empezar a pensar que los residuales no tienen una distribución normal.
En el intervalo de confianza se encuentra el cero, por lo que se puede pensar que el precio no depende del mínimo de noches ni de los comentarios.
ResSTH<-MSTH$residuals
plot(ResSTH)
abline(a=0,b=0)hist(ResSTH)ks.test(ResSTH,"pnorm",0,sd(ResSTH))## Warning in ks.test(ResSTH, "pnorm", 0, sd(ResSTH)): ties should not be
## present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: ResSTH
## D = 0.16816, p-value = 0.00152
## alternative hypothesis: two-sided
Los residuales no tienen una distribución normal
plot(STPH2)ks.test(DifSTH,"pnorm",0,sd(DifSTH))## Warning in ks.test(DifSTH, "pnorm", 0, sd(DifSTH)): ties should not be
## present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: DifSTH
## D = 0.060915, p-value = 0.7336
## alternative hypothesis: two-sided
Los nuevos residuales de los precios que queremos predecir con los que ya teniamos si tienen una distribución normal.
Private Room
summary(MSTP)##
## Call:
## lm(formula = STPP2 ~ STP2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -43.723 -17.420 -5.572 14.237 82.496
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 51.9782 5.0446 10.304 < 2e-16
## STP2X1..PRST.ny.minimum_nights. 18.7848 6.3120 2.976 0.00346
## STP2sqrt.PRST.ny.number_of_reviews. -1.0997 0.5877 -1.871 0.06349
##
## (Intercept) ***
## STP2X1..PRST.ny.minimum_nights. **
## STP2sqrt.PRST.ny.number_of_reviews. .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 23.79 on 135 degrees of freedom
## Multiple R-squared: 0.08243, Adjusted R-squared: 0.06884
## F-statistic: 6.064 on 2 and 135 DF, p-value: 0.003007
confint(MSTP,level = 0.90)## 5 % 95 %
## (Intercept) 43.623222 60.333278
## STP2X1..PRST.ny.minimum_nights. 8.330754 29.238789
## STP2sqrt.PRST.ny.number_of_reviews. -2.073142 -0.126299
El R^{2} es pequeño, por lo que no refleja gran variabilidad del sistema.
Los intervalos de confianza no incluyen al cero, por lo que podemos pensar que el precio si depende de estas variables.
ResSTP<-MSTP$residuals
plot(ResSTP)
abline(a=0,b=0)hist(ResSTP)ks.test(ResSTP,"pnorm",0,sd(ResSTP))## Warning in ks.test(ResSTP, "pnorm", 0, sd(ResSTP)): ties should not be
## present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: ResSTP
## D = 0.13834, p-value = 0.01016
## alternative hypothesis: two-sided
Utilizando la prueba de Kolmogorov podemos ver que los residuales no tienen una distribución normal.
plot(STPP2)ks.test(DifSTP,"pnorm",0,sd(DifSTP))## Warning in ks.test(DifSTP, "pnorm", 0, sd(DifSTP)): ties should not be
## present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: DifSTP
## D = 0.057441, p-value = 0.7527
## alternative hypothesis: two-sided
Obteniendo los residuales para los precios que hemos predecido, hacemos la prueba de la normalidad y se concluye que sí tienen una distrubución normal.
Para Staten Island solo podemos hacer el análisis para los primero 2 tipos de habitaciones, para los cuartos compartidos tenemos muy poca información que no es posible hacer una estimación de los precios estimados con los que si se tiene un valor.
Conclusión
En conclusión, podemos observar en todos los casos que las diferencias entre los residuales de los valores que tenemos, no distribuyen como una normal con sus parámetros correspondientes, por lo que decidimos hacer el análisis de residuales con valores que hemos predecido sobre el precio de las habitaciones con los datos que decidimos apartar, y vemos que estas diferencias sí tienen una distribución normal con un nivel de confianza del 10%.
Podemos decir que sí, el modelo no se ajusta para los residuales principales, el modelo sí funciona para los residuales de las estimaciones de los precios de las habitaciones, por lo que se tiene un error en la parte teórica, pero el modelo sí funciona.