1. Realice un filtro a la base de datos e incluya sólo las ofertas de : base1 y casas de la zona norte de la ciudad. Presente los primeros 3 registros de las bases y algunas tablas que comprueben la consulta. (Adicional, un mapa con los puntos de las bases. Discutir si todos los puntos se ubican en la zona correspondiente o se presentan valores en otras zonas, ¿por qué?).
data_vivienda1 = subset(vivienda, tipo == "Casa" & zona == "Zona Norte")
kable(head(data_vivienda1))
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1209 | Zona Norte | 02 | 5 | 320 | 150 | 2 | 4 | 6 | Casa | acopi | -7651341 | 347968 |
| 1592 | Zona Norte | 02 | 5 | 780 | 380 | 2 | 3 | 3 | Casa | acopi | -7651674 | 348721 |
| 4057 | Zona Norte | 02 | 6 | 750 | 445 | 0 | 7 | 6 | Casa | acopi | -765295 | 338527 |
| 4460 | Zona Norte | 02 | 4 | 625 | 355 | 3 | 5 | 5 | Casa | acopi | -7653179 | 34059 |
| 6081 | Zona Norte | 02 | 5 | 750 | 237 | 2 | 6 | 6 | Casa | acopi | -7654044 | 336862 |
| 7824 | Zona Norte | 02 | 4 | 600 | 160 | 1 | 4 | 5 | Casa | acopi | -765521 | 342125 |
base1_table = table(data_vivienda1$zona, data_vivienda1$tipo)
kable(base1_table, caption = "Summary table")
| Apartamento | Casa | |
|---|---|---|
| Zona Centro | 0 | 0 |
| Zona Norte | 0 | 722 |
| Zona Oeste | 0 | 0 |
| Zona Oriente | 0 | 0 |
| Zona Sur | 0 | 0 |
Realizando un análisis correspondiente a la ubicación de las propiedades, se puede evidenciar que, la mayor concentración de éstas se encuentra en la zona norte de la ciudad, sin embargo, hay algunas pocas que están distribuídas de forma atípica por el resto del territorio, esto se debe quizá a errores en los datos, es decir, a su digitación y ubicación dentro del mapa.
2. Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio de la casa) en función del área construida, estrato, número de baños, número de habitaciones y zona donde se ubica la vivienda. Use gráficos interactivos con el paquete plotly e interprete los resultados.
ggplot(data=data_vivienda1, mapping=aes(x=areaconst,y=preciom))+geom_point(colour="#FF1493")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Área de vivienda (m2)")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Área de vivienda")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda1$areaconst, data_vivienda1$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda1$areaconst and data_vivienda1$preciom
## t = 4.5899, df = 720, p-value = 5.231e-06
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.09683435 0.23863612
## sample estimates:
## cor
## 0.1686075
summary(data_vivienda1$areaconst)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 30.0 142.2 240.0 318.8 340.0 14385.0
La información generada por los datos de medida de tendencia central son: Media, con un valor de 319m2 (promedio de todos los valores) y mediana corresponde a 240m2 (valor central).En la gráfica se puede evidenciar que no existe una relación directamente proporcional entre el metro cuadrado y el precio de la pripiedad. A su vez, el coeficiente de correlación existente se mide, para este caso, entre −0.3 < r < 3 , Pearson tiene un valor de 0.17, por ello, se observa que no existe una relación lineal entre el precio y el área de la vivienda.
ggplot(data=data_vivienda1, mapping=aes(x=banios,y=preciom))+geom_point(colour="#FF1493")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Número de Baños")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Número de Baños")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda1$banios, data_vivienda1$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda1$banios and data_vivienda1$preciom
## t = 16.479, df = 720, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.4682514 0.5743680
## sample estimates:
## cor
## 0.5233357
summary(data_vivienda1$banios)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.000 3.000 3.555 4.000 10.000
La información generada por los datos de medida de tendencia central son: Media, con un valor de 3.6 unidades (promedio de todos los valores) y mediana corresponde a 3 unidades (valor central).En la gráfica se puede evidenciar una relación dispersa entre el número de baños y precio de la vivienda. A su vez, el coeficiente de correlación existente se mide, para este caso, entre 0.3 ≤ r < 0.8 , Pearson tiene un valor de 0.52, por ello, se observa que existe una relación débil entre el precio y el baño de la vivienda.
ggplot(data=data_vivienda1, mapping=aes(x=habitaciones,y=preciom))+geom_point(colour="#FF1493")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Número de Habitaciones")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Número de Habitaciones")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda1$habitaciones, data_vivienda1$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda1$habitaciones and data_vivienda1$preciom
## t = 9.1487, df = 720, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2557676 0.3865717
## sample estimates:
## cor
## 0.3227096
summary(data_vivienda1$habitaciones)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 3.000 4.000 4.507 5.000 10.000
La información generada por los datos de medida de tendencia central son: Media, con un valor de 4 unidades (promedio de todos los valores) y mediana corresponde a 3 unidades (valor central).En la gráfica se puede evidenciar una relación dispersa entre el número de habitaciones y el precio de la vivienda. A su vez, el coeficiente de correlación existente se mide, para este caso, entre 0.3 ≤ r < 0.8 , Pearson tiene un valor de 0.32, por ello, se observa que existe una relación débil entre el precio y las habitaciones de la vivienda.
3. Estime un modelo de regresión lineal múltiple con las variables del punto anterior(precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños) e interprete los coeficientes si son estadísticamente significativos. Las interpretaciones deber están contextualizadas y discutir si los resultados son lógicos. Adicionalmente interprete el coeficiente y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).
data_vivienda1$estrato = as.numeric(data_vivienda1$estrato)
modelo1=lm(preciom~ areaconst + parqueaderos + estrato + banios + habitaciones, data_vivienda1)
summary(modelo1)
##
## Call:
## lm(formula = preciom ~ areaconst + parqueaderos + estrato + banios +
## habitaciones, data = data_vivienda1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -595.53 -106.83 -29.95 65.91 1300.93
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -89.26177 24.33401 -3.668 0.000262 ***
## areaconst 0.03369 0.01079 3.121 0.001873 **
## parqueaderos 5.74630 5.22706 1.099 0.271991
## estrato 131.26215 8.50542 15.433 < 2e-16 ***
## banios 42.84108 6.42130 6.672 5.06e-11 ***
## habitaciones 16.74973 4.96712 3.372 0.000786 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 193.6 on 716 degrees of freedom
## Multiple R-squared: 0.4831, Adjusted R-squared: 0.4795
## F-statistic: 133.9 on 5 and 716 DF, p-value: < 2.2e-16
El intercepto es -139.65, lo cuál indica que sería el valor de la vivienda con las demás variables en cero, es decir, cuando el inmueble no tiene área construida, parqueaderos, estrato, baños y habitaciones. Lo anterior es un caso improbable, ya que en la realidad lo más semejante sería un lote, pero aún este tiene ubicación y por ende, estrato, a final no se cumple. Por otro lado está el coeficiente del área construida que es 0.028, este indica que, un aumento en un metro cuadrado en el área, el precio de la vivienda incrementa en 0.028 millones de pesos, sin que haya variabilidad en las demás variables. A su vez, ocurre de forma similiar con el parqueadero, aumentando una unidad de éste para la vivienda, el precio de la misma incrementa en 6.83 millones de pesos, sosteniendo de igual forma una constante en las demás variables. Para el Estrato, aumentado una unidad en él, el precio de la vivienda aumenta en 128.88 millones de pesos, con las demás variables constantes. Los baños tendrán el mismo comportamiento mencionado, una unidad adicional en baño en la propiedad, el precio de la misma aumenta en 44.32 millones de pesos, junto con las demás variables constantes. Por último, una unidad adicional de habitación en el inmueble, el precio de la vivienda aumenta en 26.03 millones, con las demas variables constantes.
El R2 toma un valor es de 0.5172, lo que significa que, en términos porcentuales, el 51.72% de la variabilidad en el precio de las casas en el Norte de la ciudad de Cali, son explicadas por las variables predictoras dadas en el modelo.
Algunas recomendaciones para la mejora del modelo:
Adicionar variables externas a la vivienda que permitan una mayor explicación al precio de la misma, tales como: salón social (con GYM), zona húmeda (piscina, sauna, entre otros), zona de juegos, senderos peatonales, étcétera, teniendo en cuenta que la vivienda esté en unidad residencial; por otro lado, si la propiedad está ubicada en barrio: el estado de la vía, vecinos, seguridad, parques cercanos, entre otros. Por otro lado, se podría pensar en eliminar variables no significativas al modelo para que su efectividad sea más alto.
4. Realice la validación de supuestos del modelo e interprete los resultados (no esnecesario corregir en caso de presentar problemas solo realizar sugerencias de quese podría hacer).
resi=modelo1$residuals
shapiro.test(resi)
##
## Shapiro-Wilk normality test
##
## data: resi
## W = 0.83329, p-value < 2.2e-16
El ajuste de Shapiro Wilks indica si un conjunto de datos siguen una distribución normal o no. Para el ejercicio dado, el p-value de la muestra está por debajo del nivel de alfa = 0.05, lo que significa que se rechaza la hipótsis nula y se determina que, los datos, no siguen una ditribución normal.
bptest(modelo1)
##
## studentized Breusch-Pagan test
##
## data: modelo1
## BP = 55.246, df = 5, p-value = 1.162e-10
Se utiliza la prueba de Breusch-Pagan para determinar si hay homocedasticidad o heterocedasticidad. Si el P-valor es menor de 0.05 (alfa), entonces rechazamos la hipótesis nula y concluimos que hay heterocedasticidad en el modelo. Para el ejercicio dado, el P-value es 1.851e-13, menor al valor de referencia (alfa), por lo tanto, se rechaza la hipótesis nula de homocedasticidad (los residuos se distribuyen con la misma varianza), presentando heterocedasticidad (los residuos no se distribuyen con la misma varianza) en el modelo.
dwtest(modelo1)
##
## Durbin-Watson test
##
## data: modelo1
## DW = 1.5947, p-value = 1.897e-08
## alternative hypothesis: true autocorrelation is greater than 0
El Test de Durbin-Watson permite evaluar si existe autocorrelación en un modelo de Regresión Simple o múltiple; La estadística de prueba siempre varía de 0 a 4 donde:
d = 2 indica que no hay autocorrelación
d < 2 indica correlación serial positiva
d > 2 indica correlación serial negativa
En general, si d es menor que 1,5 o mayor que 2,5, existe un problema de autocorrelación potencialmente grave. De lo contrario, si d está entre 1,5 y 2,5, es probable que la autocorrelación no sea motivo de preocupación.
Para el caso que nos compete, teniendo en cuenta el valor alfa (0.05) la cantidad de variables independientes del modelo (5) y el número de muestras (+200), los valores de referencia son: dL: 1.72 y dU: 1.82, el valor de DW= 1.60, lo cuál indica que hay autocorrelación en el modelo.
5. Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud.
df1= data.frame(
areaconst = 200,
parqueaderos = 1,
estrato = c(4, 5),
banios = 2,
habitaciones = 4
)
df1
## areaconst parqueaderos estrato banios habitaciones
## 1 200 1 4 2 4
## 2 200 1 5 2 4
predict(modelo1,df1)
## 1 2
## 600.9516 732.2138
El resultado indica que, una casa de 200m2, con las caracteristicas especificadas en el punto, en estrato 4, tiene un precio de 601 millones y, si se encuentra en estrato 5 tendría un valor de 702 millones de pesos.
6.Con las predicciones del modelo sugiera potenciales ofertas que responda a lasolicitud de la vivienda 1. Tenga encuentra que la empresa tiene créditopreaprobado de máximo 350 millones de pesos. Realice un análisis y presente enun mapa al menos 5 ofertas potenciales que debe discutir.
casa = filter(data_vivienda1, areaconst <= 200, parqueaderos <= 1, banios <= 2, habitaciones <= 4, zona == "Zona Norte", estrato <= 5, preciom <= 350)
casa
## # A tibble: 116 x 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 141 Zona ~ <NA> 1 230 160 0 2 3
## 2 4511 Zona ~ <NA> 2 275 190 0 2 3
## 3 1666 Zona ~ 02 2 275 120 1 2 4
## 4 4600 Zona ~ 02 1 220 150 1 2 4
## 5 367 Zona ~ <NA> 1 176 75 0 2 3
## 6 911 Zona ~ <NA> 1 240 62 0 2 3
## 7 4598 Zona ~ <NA> 1 154 104 0 2 4
## 8 758 Zona ~ 01 1 135 90 0 2 4
## 9 748 Zona ~ 02 1 153 80 0 2 3
## 10 749 Zona ~ 02 1 155 80 0 2 3
## # i 106 more rows
## # i 4 more variables: tipo <fct>, barrio <fct>, longitud <dbl>, latitud <dbl>
casa = filter(data_vivienda1, areaconst <= 200, parqueaderos <= 1, banios <= 2, habitaciones <= 4, zona == "Zona Norte", estrato <= 4, estrato <= 5, preciom <= 350)
mapa1 = leaflet(casa) %>%
addTiles() %>%
addCircleMarkers(-76.5, 3.43, color = "green", radius = 2)
mapa1
7. Realice los pasos del 1 al 6. Para la segunda solicitud se tiene un créditopreaprobado por valor de $850 millones.
1. Realice un filtro a la base de datos e incluya sólo las ofertas de : base1 y casas de la zona norte de la ciudad. Presente los primeros 3 registros de las bases y algunas tablas que comprueben la consulta. (Adicional, un mapa con los puntos de las bases. Discutir si todos los puntos se ubican en la zona correspondiente o se presentan valores en otras zonas, ¿por qué?).
data_vivienda2 = subset(vivienda, tipo == "Apartamento" & zona == "Zona Sur")
kable(head(data_vivienda2))
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 5098 | Zona Sur | 05 | 4 | 290 | 96 | 1 | 2 | 3 | Apartamento | acopi | -7653464 | 344987 |
| 698 | Zona Sur | 02 | 3 | 78 | 40 | 1 | 1 | 2 | Apartamento | aguablanca | -76501 | 34 |
| 8199 | Zona Sur | NA | 6 | 875 | 194 | 2 | 5 | 3 | Apartamento | aguacatal | -76557 | 3459 |
| 1241 | Zona Sur | NA | 3 | 135 | 117 | 0 | 2 | 3 | Apartamento | alameda | -76514 | 3441 |
| 5370 | Zona Sur | NA | 3 | 135 | 78 | 0 | 1 | 3 | Apartamento | alameda | -76536 | 3436 |
| 6975 | Zona Sur | 06 | 4 | 220 | 75 | 1 | 2 | 3 | Apartamento | alfv©rez real | -7654627 | 339109 |
base1_table = table(data_vivienda2$zona, data_vivienda2$tipo)
kable(base1_table, caption = "Summary table")
| Apartamento | Casa | |
|---|---|---|
| Zona Centro | 0 | 0 |
| Zona Norte | 0 | 0 |
| Zona Oeste | 0 | 0 |
| Zona Oriente | 0 | 0 |
| Zona Sur | 2787 | 0 |
Realizando un análisis correspondiente a la ubicación de las propiedades, se puede evidenciar que, la mayor concentración de éstas se encuentra en la zona sur de la ciudad, sin embargo, hay algunas pocas que están distribuídas de forma atípica por el resto del territorio, esto se debe quizá a errores en los datos, es decir, a su digitación y ubicación dentro del mapa.
2. Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio de la casa) en función del área construida, estrato, número de baños, número de habitaciones y zona donde se ubica la vivienda. Use gráficos interactivos con el paquete plotly e interprete los resultados.
ggplot(data=data_vivienda2, mapping=aes(x=areaconst,y=preciom))+geom_point(colour="#FF1493")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Área de vivienda (m2)")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Área de vivienda")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda2$areaconst, data_vivienda2$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda2$areaconst and data_vivienda2$preciom
## t = 3.2966, df = 2785, p-value = 0.0009911
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.02527452 0.09924437
## sample estimates:
## cor
## 0.06234506
summary(data_vivienda2$areaconst)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 40.0 65.0 85.0 295.6 110.0 29555.0
La información generada por los datos de medida de tendencia central son: Media, con un valor de 296m2 (promedio de todos los valores) y mediana corresponde a 85m2 (valor central).En la gráfica se puede evidenciar que no existe una relación directamente proporcional entre el metro cuadrado y el precio de la pripiedad. A su vez, el coeficiente de correlación existente se mide, para este caso, entre −0.3 < r < 3 , Pearson tiene un valor de 0.06, por ello, se observa que no existe una relación lineal entre el precio y el área de la vivienda.
ggplot(data=data_vivienda2, mapping=aes(x=banios,y=preciom))+geom_point(colour="#FF1493")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Número de Baños")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Número de Baños")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda2$banios, data_vivienda2$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda2$banios and data_vivienda2$preciom
## t = 54.7, df = 2785, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.7012801 0.7371036
## sample estimates:
## cor
## 0.7196705
summary(data_vivienda2$banios)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.000 2.000 2.488 3.000 8.000
La información generada por los datos de medida de tendencia central son: Media, con un valor de 2.5 unidades (promedio de todos los valores) y mediana corresponde a 2 unidades (valor central).En la gráfica se puede evidenciar una relación dispersa entre el número de baños y precio de la vivienda. A su vez, el coeficiente de correlación existente se mide, para este caso, entre 0.3 ≤ r < 0.8 , Pearson tiene un valor de 0.72, por ello, se observa que existe una relación débil entre el precio y el baño de la vivienda.
ggplot(data=data_vivienda2, mapping=aes(x=habitaciones,y=preciom))+geom_point(colour="#FF1493")+geom_smooth(colour="black", method = "lm", level = 0.95,)+theme_classic()+xlab("Número de Habitaciones")+ylab("Precio de vivienda (millones) ")+ggtitle("Diagrama de Puntos - Precio y Número de Habitaciones")
## `geom_smooth()` using formula = 'y ~ x'
cor.test(data_vivienda2$habitaciones, data_vivienda2$preciom)
##
## Pearson's product-moment correlation
##
## data: data_vivienda2$habitaciones and data_vivienda2$preciom
## t = 18.559, df = 2785, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2982991 0.3643944
## sample estimates:
## cor
## 0.3317538
summary(data_vivienda2$habitaciones)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 3.000 3.000 2.966 3.000 6.000
La información generada por los datos de medida de tendencia central son: Media, con un valor de 3 unidades (promedio de todos los valores) y mediana corresponde a 3 unidades (valor central).En la gráfica se puede evidenciar una relación dispersa entre el número de habitaciones y el precio de la vivienda. A su vez, el coeficiente de correlación existente se mide, para este caso, entre 0.3 ≤ r < 0.8 , Pearson tiene un valor de 0.33, por ello, se observa que existe una relación débil entre el precio y las habitaciones de la vivienda.
3. Estime un modelo de regresión lineal múltiple con las variables del punto anterior(precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños) e interprete los coeficientes si son estadísticamente significativos. Las interpretaciones deber están contextualizadas y discutir si los resultados son lógicos. Adicionalmente interprete el coeficiente y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).
data_vivienda2$estrato = as.numeric(data_vivienda2$estrato)
modelo2=lm(preciom~ areaconst + parqueaderos + estrato + banios + habitaciones, data_vivienda2)
summary(modelo2)
##
## Call:
## lm(formula = preciom ~ areaconst + parqueaderos + estrato + banios +
## habitaciones, data = data_vivienda2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -650.91 -56.34 -6.65 35.32 1111.17
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.473e+02 1.128e+01 -13.056 <2e-16 ***
## areaconst -1.658e-03 1.328e-03 -1.248 0.212
## parqueaderos 7.170e+01 3.359e+00 21.347 <2e-16 ***
## estrato 6.524e+01 3.200e+00 20.391 <2e-16 ***
## banios 8.196e+01 3.265e+00 25.102 <2e-16 ***
## habitaciones -5.779e+00 3.853e+00 -1.500 0.134
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 109.4 on 2781 degrees of freedom
## Multiple R-squared: 0.6742, Adjusted R-squared: 0.6737
## F-statistic: 1151 on 5 and 2781 DF, p-value: < 2.2e-16
El intercepto es -147.3, lo cuál indica que sería el valor de la vivienda con las demás variables en cero, es decir, cuando el inmueble no tiene área construida, parqueaderos, estrato, baños y habitaciones. Lo anterior es un caso improbable, ya que en la realidad lo más semejante sería un lote, pero aún este tiene ubicación y por ende, estrato, a final no se cumple. Por otro lado está el coeficiente del área construida que es -0.001658, este indica que, un aumento en un metro cuadrado en el área, el precio de la vivienda incrementa en -0.001658 millones de pesos, sin que haya variabilidad en las demás variables. A su vez, ocurre de forma similiar con el parqueadero, aumentando una unidad de éste para la vivienda, el precio de la misma incrementa en 0.7170 millones de pesos, sosteniendo de igual forma una constante en las demás variables. Para el Estrato, aumentado una unidad en él, el precio de la vivienda aumenta en 0.6524 millones de pesos, con las demás variables constantes. Los baños tendrán el mismo comportamiento mencionado, una unidad adicional en baño en la propiedad, el precio de la misma aumenta en 0.8196 millones de pesos, junto con las demás variables constantes. Por último, una unidad adicional de habitación en el inmueble, el precio de la vivienda aumenta en -5.779 millones, con las demas variables constantes.
El R2 toma un valor es de 0.6742, lo que significa que, en términos porcentuales, el 67.42% de la variabilidad en el precio de las casas en el Norte de la ciudad de Cali, son explicadas por las variables predictoras dadas en el modelo.
Algunas recomendaciones para la mejora del modelo:
Adicionar variables externas a la vivienda que permitan una mayor explicación al precio de la misma, tales como: salón social (con GYM), zona húmeda (piscina, sauna, entre otros), zona de juegos, senderos peatonales, étcétera, teniendo en cuenta que la vivienda esté en unidad residencial; por otro lado, si la propiedad está ubicada en sólo un edificio: el estado de la vía, vecinos, seguridad, parques cercanos, entre otros. Por otro lado, se podría pensar en eliminar variables no significativas al modelo para que su efectividad sea más alto.
4. Realice la validación de supuestos del modelo e interprete los resultados (no esnecesario corregir en caso de presentar problemas solo realizar sugerencias de quese podría hacer).
resi=modelo2$residuals
shapiro.test(resi)
##
## Shapiro-Wilk normality test
##
## data: resi
## W = 0.79198, p-value < 2.2e-16
El ajuste de Shapiro Wilks indica si un conjunto de datos siguen una distribución normal o no. Para el ejercicio dado, el p-value de la muestra está por debajo del nivel de alfa = 0.05, lo que significa que se rechaza la hipótsis nula y se determina que, los datos, no siguen una ditribución normal.
bptest(modelo2)
##
## studentized Breusch-Pagan test
##
## data: modelo2
## BP = 170.56, df = 5, p-value < 2.2e-16
Se utiliza la prueba de Breusch-Pagan para determinar si hay homocedasticidad o heterocedasticidad. Si el P-valor es menor de 0.05 (alfa), entonces rechazamos la hipótesis nula y concluimos que hay heterocedasticidad en el modelo. Para el ejercicio dado, el P-value es 2.2e-16, menor al valor de referencia (alfa), por lo tanto, se rechaza la hipótesis nula de homocedasticidad (los residuos se distribuyen con la misma varianza), presentando heterocedasticidad (los residuos no se distribuyen con la misma varianza) en el modelo.
dwtest(modelo2)
##
## Durbin-Watson test
##
## data: modelo2
## DW = 1.4975, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
El Test de Durbin-Watson permite evaluar si existe autocorrelación en un modelo de Regresión Simple o múltiple; La estadística de prueba siempre varía de 0 a 4 donde:
d = 2 indica que no hay autocorrelación
d < 2 indica correlación serial positiva
d > 2 indica correlación serial negativa
En general, si d es menor que 1,5 o mayor que 2,5, existe un problema de autocorrelación potencialmente grave. De lo contrario, si d está entre 1,5 y 2,5, es probable que la autocorrelación no sea motivo de preocupación.
Para el caso que nos compete, teniendo en cuenta el valor alfa (0.05) la cantidad de variables independientes del modelo (5) y el número de muestras (+200), los valores de referencia son: dL: 1.72 y dU: 1.82, el valor de DW= 1.49, lo cuál indica que hay autocorrelación en el modelo.
5. Con el modelo identificado debe predecir el precio de la vivienda con las características de la primera solicitud.
df2= data.frame(
areaconst = 300,
parqueaderos = 3,
estrato = c(5, 6),
banios = 3,
habitaciones = 5
)
df2
## areaconst parqueaderos estrato banios habitaciones
## 1 300 3 5 3 5
## 2 300 3 6 3 5
predict(modelo2,df2)
## 1 2
## 610.5385 675.7834
El resultado indica que, un apartamento de de 300m2, con las caracteristicas especificadas en el punto, en estrato 5, tiene un precio de 611 millones y, si se encuentra en estrato 6 tendría un valor de 675 millones de pesos.
6.Con las predicciones del modelo sugiera potenciales ofertas que responda a la solicitud de la vivienda 2. Tenga encuentra que la empresa tiene crédito preaprobado de máximo 850 millones de pesos. Realice un análisis y presente enun mapa al menos 5 ofertas potenciales que debe discutir.
apto = filter(data_vivienda2, areaconst <= 300, parqueaderos <= 3, banios <= 3, habitaciones <= 5, zona == "Zona Sur", estrato <= 6, preciom <= 850)
min(apto$preciom)
## [1] 75
max(apto$preciom)
## [1] 850
apto
## # A tibble: 2,360 x 13
## id zona piso estrato preciom areaconst parqueaderos banios habitaciones
## <dbl> <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 5098 Zona ~ 05 2 290 96 1 2 3
## 2 698 Zona ~ 02 1 78 40 1 1 2
## 3 1241 Zona ~ <NA> 1 135 117 0 2 3
## 4 5370 Zona ~ <NA> 1 135 78 0 1 3
## 5 6975 Zona ~ 06 2 220 75 1 2 3
## 6 5615 Zona ~ 08 1 210 72 2 2 3
## 7 6262 Zona ~ <NA> 1 105 68 0 2 3
## 8 7396 Zona ~ <NA> 1 115 58 1 2 2
## 9 6949 Zona ~ <NA> 2 220 84 0 2 3
## 10 7946 Zona ~ 10 1 230 63 1 2 2
## # i 2,350 more rows
## # i 4 more variables: tipo <fct>, barrio <fct>, longitud <dbl>, latitud <dbl>
apto = filter(data_vivienda2, areaconst <= 300, parqueaderos <= 3, banios <= 3, habitaciones <= 5, zona == "Zona Sur", estrato <= 5, estrato <= 6, preciom <= 850)
mapa2 = leaflet(apto) %>%
addTiles() %>%
addCircleMarkers(-76.5, 3.43, color = "green", radius = 2)
mapa2