Data
vivienda
# A tibble: 8,322 × 13
id zona piso estrato preciom areaconst parqueaderos banios habitaciones
<dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1147 Zona … <NA> 3 250 70 1 3 6
2 1169 Zona … <NA> 3 320 120 1 2 3
3 1350 Zona … <NA> 3 350 220 2 2 4
4 5992 Zona … 02 4 400 280 3 5 3
5 1212 Zona … 01 5 260 90 1 2 3
6 1724 Zona … 01 5 240 87 1 3 3
7 2326 Zona … 01 4 220 52 2 2 3
8 4386 Zona … 01 5 310 137 2 3 4
9 1209 Zona … 02 5 320 150 2 4 6
10 1592 Zona … 02 5 780 380 2 3 3
# ℹ 8,312 more rows
# ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>
Realice un filtro a la base de datos e incluya solo las ofertas de : base1: casas, de la zona norte de la ciudad.
data_casa <- subset(vivienda, tipo == 'Casa'& zona == "Zona Norte")
tabla <- (head(data_casa))
tabla %>%
kbl() %>%
kable_paper("hover",
full_width = F)
| 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 | -76.51341 | 3.47968 |
| 1592 | Zona Norte | 02 | 5 | 780 | 380 | 2 | 3 | 3 | Casa | acopi | -76.51674 | 3.48721 |
| 4057 | Zona Norte | 02 | 6 | 750 | 445 | NA | 7 | 6 | Casa | acopi | -76.52950 | 3.38527 |
| 4460 | Zona Norte | 02 | 4 | 625 | 355 | 3 | 5 | 5 | Casa | acopi | -76.53179 | 3.40590 |
| 6081 | Zona Norte | 02 | 5 | 750 | 237 | 2 | 6 | 6 | Casa | acopi | -76.54044 | 3.36862 |
| 7824 | Zona Norte | 02 | 4 | 600 | 160 | 1 | 4 | 5 | Casa | acopi | -76.55210 | 3.42125 |
mapa <- leaflet(data = data_casa) %>%
addTiles() %>%
addMarkers(lng = ~longitud, lat = ~latitud, popup = ~zona)
mapa
Existe algunos puntos que se alejan de la zona norte la ciudad de cali, por lo que se infiere que este fenomeno se presenta porque los puntos de latitud y longitud no fueron bien capturados en el momento de digitación o extración de la información, para una futura ocación se recomienda incluir la variable dirección dado que con la misma se podria tener una mayor aproximación a las variables longitud y laltitud.
boxplot(data_casa$preciom~data_casa$estrato,
main = "Distribución del precio por Estrato",
ylab="Precio",
xlab = "Estrato", las=1,
col=c("seagreen","royalblue","#ee964b","pink"))
Considerando que el estrato socioeconómico se define como la clasificación de la población en grupos o estratos según su situación económica y social, donde se consideran factores como el nivel de ingresos, se puede observar que las viviendas con mayor valor tienden a encontrarse en los estratos 5 y 6.
plot(data_casa$preciom~data_casa$areaconst,
xlab = "Área Construida",
ylab = "Precio de la Vivienda",
main = "Relación entre Área Construida y Precio",
col=c("seagreen"))
Se observa una relación directa entre el precio y el área construida. En la mayoría de los casos, a medida que el precio aumenta, también lo hace el área construida.
Q1 <- quantile(data_casa$preciom, 0.25)
Q3 <- quantile(data_casa$preciom, 0.75)
IQR <- Q3 - Q1
lower_limit <- Q1 - 1.5 * IQR
upper_limit <- Q3 + 1.5 * IQR
outliers <- which(data_casa$preciom < lower_limit | data_casa$preciom > upper_limit)
plot(data_casa$preciom~data_casa$areaconst,
xlab = "Área Construida", ylab = "Precio de la Vivienda",
main = "Relación entre Área Construida y Precio de Vivienda",
col=c("seagreen"))
points(data_casa$areaconst[outliers], data_casa$preciom[outliers], col = "red", pch = 16)
La presencia de casos atípicos marcados en rojo podría deberse a la
influencia de otras variables como el estrato socioeconómico, el número
de habitaciones o el número de baños. Estos casos atípicos podrían ser
el resultado de características únicas o inusuales en estas variables
que están influyendo en el precio de la vivienda. Es importante
considerar estas variables adicionales al interpretar los casos atípicos
y comprender mejor su impacto en el precio de la vivienda
boxplot(data_casa$preciom~data_casa$banios,
main = "Distribución del precio y cantidad de baños",
ylab="Precio",
xlab = "No. Baños", las=1,
col=c("seagreen","royalblue","#ee964b","pink"))
Es evidente que a medida que aumenta el precio de una vivienda, también
se observa un incremento en la cantidad de baños que posee. Esta
relación podría estar directamente relacionada con el área construida de
la vivienda. Es posible que a medida que el tamaño de la vivienda
aumenta, también lo haga el número de baños, ya que las propiedades más
grandes pueden acomodar más instalaciones y comodidades, incluyendo un
mayor número de baños.
boxplot(data_casa$preciom~data_casa$habitaciones,
main = "Distribución del precio y cantidad de habitaciones",
ylab="Precio",
xlab = "No. Habitaciones", las=1,
col=c("seagreen","royalblue","#ee964b","pink"))
Se observa que un incremento en el precio puede correlacionarse con un aumento en el número de habitaciones. No obstante, se aprecia que, después de alcanzar cuatro habitaciones, la media del número de habitaciones tiende a estabilizarse hasta llegar a diez habitaciones. Esto sugiere que, más allá de cuatro habitaciones, el número de estas no presenta una relación tan significativa con el incremento del precio.
boxplot(data_casa$preciom~data_casa$zona,
main = "Distribución del precio por zona",
ylab="Precio",
xlab = "Zona norte ", las=1,
col=c("seagreen","royalblue","#ee964b","pink"))
Se puede observar que en la zona norte de la ciudad de Cali se encuentran viviendas de diversos rangos de precios. Esto se refleja en la gráfica del estrato, donde se muestra que esta zona alberga viviendas de los estratos 3, 4, 5 y 6. Esto sugiere una amplia variedad de opciones de vivienda en términos de precio y estrato socioeconómico en la zona norte de la ciudad
#df_numericas <- data_casa[, sapply(data_casa, is.numeric)]
df_numericas <- data_casa[, c("preciom","areaconst","estrato", "banios", "habitaciones")]
matrix_c <- cor(df_numericas, use = "complete.obs")
corrplot(matrix_c, method = "circle", type = "lower", order = "hclust", tl.col = "black", tl.srt = 45)
corrplot(matrix_c, method = "color", addCoef.col = "orange")
Se puede observar que la mayor correlación que presenta el precio es con el área construida, alcanzando un valor de 0.73, seguido por el estrato socioeconómico con una correlación de 0.61. Por otro lado, se evidencia que no existe una correlación fuerte entre el precio y el número de habitaciones.
precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños )
modelo <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = data_casa)
residuos <- resid(modelo)
summary(modelo)
Call:
lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
banios, data = data_casa)
Residuals:
Min 1Q Median 3Q Max
-784.29 -77.56 -16.03 47.67 978.61
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -238.17090 44.40551 -5.364 1.34e-07 ***
areaconst 0.67673 0.05281 12.814 < 2e-16 ***
estrato 80.63495 9.82632 8.206 2.70e-15 ***
habitaciones 7.64511 5.65873 1.351 0.177
parqueaderos 24.00598 5.86889 4.090 5.14e-05 ***
banios 18.89938 7.48800 2.524 0.012 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 155.1 on 429 degrees of freedom
(287 observations deleted due to missingness)
Multiple R-squared: 0.6041, Adjusted R-squared: 0.5995
F-statistic: 130.9 on 5 and 429 DF, p-value: < 2.2e-16
Los coeficientes indican cómo cambia el precio de la vivienda en relación con cada una de las variables predictoras, manteniendo las demás variables constantes.
summary(modelo)$r.squared
[1] 0.6040956
el valor de R-cuadrado múltiple es 0.6040956, lo que significa que aproximadamente el 60.41% de la variabilidad en el precio de la vivienda puede ser explicada por las variables predictoras incluidas en el modelo.Sin embargo, aún queda un porcentaje considerable de la variabilidad del precio que no está explicada por las variables en el modelo.
Una forma que se podria considerar para mejorar el modelo es explorar la posibilidad de transformar las variables existentes para capturar mejor su relación con el precio de la vivienda, como tomar logaritmos o realizar otras transformaciones no lineales.
shapiro.test(modelo$residuals)
Shapiro-Wilk normality test
data: modelo$residuals
W = 0.85246, p-value < 2.2e-16
Teniendo cuenta que el P-value es menor a 0.05 se rechaza la hipotesis nula, por tanto indica que los errores NO están distribuidos normalmente.
los resultados de la prueba de Shapiro-Wilk sugieren que los residuos del modelo no siguen una distribución normal. Esto puede indicar que el modelo no captura completamente la estructura de los datos, y podría sugerir la necesidad de revisar el modelo y considerar ajustes adicionales.
lmtest::bptest(modelo)
studentized Breusch-Pagan test
data: modelo
BP = 80.281, df = 5, p-value = 7.33e-16
El supuesto de homocedasticidad da un p-value es menor a 0.05, lo que nos indica que se rechaza la hipotesis nula equivalente a varianza constante
los resultados de la prueba de Breusch-Pagan sugieren que hay heterocedasticidad en los residuos del modelo de regresión. La presencia de heterocedasticidad puede afectar la precisión de las estimaciones y los intervalos de confianza del modelo, y puede requerir ajustes adicionales.
lmtest::dwtest(modelo) # No autocorrelación
Durbin-Watson test
data: modelo
DW = 1.7615, p-value = 0.005472
alternative hypothesis: true autocorrelation is greater than 0
Como el valor de DW es 1.7615, lo que indica una posible autocorrelación positiva en los residuos del modelo.
El valor p es 0.005472, lo que sugiere que hay evidencia significativa de autocorrelación en los residuos del modelo.
req1 <- data.frame(
areaconst = 200,
parqueaderos = 1,
banios = 2,
habitaciones = 4,
estrato = 4)
predic <- predict(modelo, newdata = req1)
predic
1
312.101
Dado que el precio promedio estimado de una casa con las características solicitadas por el cliente, ubicada en estrato 4, oscila alrededor de los 312 millones de pesos, y el crédito preaprobado del comprador es de 350 millones de pesos, en este escenario, buscar una vivienda en estrato 4 parece ser una buena opción para el comprador, ya que tiene la capacidad financiera para adquirirla y el precio estimado de la vivienda está dentro de su límite de crédito preaprobado.
req2 <- data.frame(
areaconst = 200,
parqueaderos = 1,
banios = 2,
habitaciones = 4,
estrato = 5)
predic2 <- predict(modelo, newdata = req2)
predic2
1
392.7359
Dado que el precio promedio estimado de una casa con las características requeridas en la solicitud No. 1, ubicada en estrato 5, es en promedio de 392 millones de pesos, y el crédito preaprobado del comprador es de 350 millones de pesos, podemos evaluar si buscar una vivienda en estrato 5 sería una buena opción.
En este caso, el precio promedio estimado de la vivienda en estrato 5 supera el crédito preaprobado del comprador. Esto indica que la búsqueda de una vivienda en estrato 5 sería un poco más complicada si se desea que cumpla con todas las características solicitadas, ya que el precio estimado supera el límite de crédito disponible.
pre-aprobado de máximo 350 millones de pesos.
casa <- filter(data_casa, areaconst >= 200, parqueaderos >= 1, banios >= 2, habitaciones >= 4, estrato >= 4, preciom <= 350)
casa_ord <- arrange(casa, desc(areaconst))
casa_ord <-(head(casa_ord,5))
tabla2 <- (head(casa_ord,5))
tabla2 %>%
kbl() %>%
kable_paper("hover",
full_width = F)
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3101 | Zona Norte | 02 | 5 | 340 | 355 | 2 | 5 | 8 | Casa | san vicente | -76.52377 | 3.46384 |
| 5031 | Zona Norte | 03 | 4 | 350 | 350 | 1 | 4 | 5 | Casa | salomia | -76.53464 | 3.44987 |
| 1943 | Zona Norte | NA | 5 | 350 | 346 | 1 | 2 | 4 | Casa | vipasa | -76.51847 | 3.47503 |
| 4209 | Zona Norte | 02 | 5 | 350 | 300 | 3 | 5 | 6 | Casa | el bosque | -76.53010 | 3.48577 |
| 3352 | Zona Norte | NA | 4 | 335 | 300 | 3 | 4 | 4 | Casa | el bosque | -76.52600 | 3.43400 |
Dado que el cliente tiene un crédito pre-aprobado de 350 millones de pesos, y se prioriza la mayor área construida dentro de la zona norte de la ciudad y dentro de los estratos 4 y 5, asimismo como se observa en algunas ofertas mejora las condiciones de la vivienda como; parqueadero con mas de 1, habitaciones con mas de 4 y baños con mas de 2.
Con este enfoque se maximizará el valor de la inversión del cliente mejoran las condiciones de la vivienda con el mismo presupuesto.
mapa1 <- leaflet(data = casa_ord) %>%
addTiles() %>%
addMarkers(lng = ~longitud, lat = ~latitud, popup = ~zona)
mapa1
Realice un filtro a la base de datos e incluya solo las ofertas de : base2: apartamentos de la zona sur de la ciudad.
data_apto <- subset(vivienda, tipo == 'Apartamento'& zona == "Zona Sur")
tabla3 <- (head(data_apto))
tabla3 %>%
kbl() %>%
kable_paper("hover",
full_width = F)
| 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 | -76.53464 | 3.44987 |
| 698 | Zona Sur | 02 | 3 | 78 | 40 | 1 | 1 | 2 | Apartamento | aguablanca | -76.50100 | 3.40000 |
| 8199 | Zona Sur | NA | 6 | 875 | 194 | 2 | 5 | 3 | Apartamento | aguacatal | -76.55700 | 3.45900 |
| 1241 | Zona Sur | NA | 3 | 135 | 117 | NA | 2 | 3 | Apartamento | alameda | -76.51400 | 3.44100 |
| 5370 | Zona Sur | NA | 3 | 135 | 78 | NA | 1 | 3 | Apartamento | alameda | -76.53600 | 3.43600 |
| 6975 | Zona Sur | 06 | 4 | 220 | 75 | 1 | 2 | 3 | Apartamento | alférez real | -76.54627 | 3.39109 |
mapa2 <- leaflet(data = data_apto) %>%
addTiles() %>%
addMarkers(lng = ~longitud, lat = ~latitud, popup = ~zona)
mapa2
Existe algunos puntos que se alejan de la zona sur la ciudad de cali, por lo que se infiere que este fenomeno se presenta porque los puntos de latitud y longitud no fueron bien capturados en el momento de digitación o extración de la información, para una futura ocación se recomienda incluir la variable dirección dado que con la misma se podria tener una mayor aproximación a las variables longitud y laltitud.
boxplot(data_apto$preciom~data_apto$estrato,
main = "Distribución del precio por Estrato",
ylab="Precio",
xlab = "Estrato", las=1,
col=c("seagreen","royalblue","#ee964b","pink"))
Considerando que el estrato socioeconómico se define como la clasificación de la población en grupos o estratos según su situación económica y social, donde se consideran factores como el nivel de ingresos, se puede observar que las viviendas con mayor valor tienden a encontrarse en los estratos 6, asimismo este estrato es el que contiene la mayor variedad de precio en la oferta de vivienda
plot(data_apto$preciom~data_apto$areaconst,
xlab = "Área Construida",
ylab = "Precio de la Vivienda",
main = "Relación entre Área Construida y Precio",
col=c("seagreen"))
Se observa una relación directa entre el precio y el área construida. En la mayoría de los casos, a medida que el precio aumenta, también lo hace el área construida.
Q1_1 <- quantile(data_apto$preciom, 0.25)
Q3_1 <- quantile(data_apto$preciom, 0.75)
IQR <- Q3_1 - Q1_1
lower_limit1 <- Q1_1 - 1.5 * IQR
upper_limit1 <- Q3_1 + 1.5 * IQR
outliers1 <- which(data_apto$preciom < lower_limit1 | data_apto$preciom > upper_limit1)
plot(data_apto$preciom~data_apto$areaconst,
xlab = "Área Construida", ylab = "Precio de la Vivienda",
main = "Relación entre Área Construida y Precio de Vivienda",
col=c("seagreen"))
points(data_apto$areaconst[outliers1], data_apto$preciom[outliers1], col = "red", pch = 16)
La presencia de casos atípicos marcados en rojo podría deberse a la influencia de otras variables como el estrato socioeconómico, el número de habitaciones o el número de baños. Estos casos atípicos podrían ser el resultado de características únicas o inusuales en estas variables que están influyendo en el precio de la vivienda. Es importante considerar estas variables adicionales al interpretar los casos atípicos y comprender mejor su impacto en el precio de la vivienda
boxplot(data_apto$preciom~data_apto$banios,
main = "Distribución del precio y cantidad de baños",
ylab="Precio",
xlab = "No. Baños", las=1,
col=c("seagreen","royalblue","#ee964b","pink"))
Es evidente que a medida que aumenta el precio de una vivienda, también
se observa un incremento en la cantidad de baños que posee. Esta
relación podría estar directamente relacionada con el área construida de
la vivienda. Es posible que a medida que el tamaño de la vivienda
aumenta, también lo haga el número de baños, ya que las propiedades más
grandes pueden acomodar más instalaciones y comodidades, incluyendo un
mayor número de baños.
boxplot(data_apto$preciom~data_apto$habitaciones,
main = "Distribución del precio y cantidad de habitaciones",
ylab="Precio",
xlab = "No. habitaciones", las=1,
col=c("seagreen","royalblue","#ee964b","pink"))
Se observa que existe una correlación entre el precio y el número de habitaciones en las viviendas. Sin embargo, se puede notar que, hasta alcanzar tres habitaciones, el promedio de precios se mantiene constante. A partir de cuatro habitaciones y hasta seis habitaciones, se observa una variación en los precios.
Asimimos cabe resaltar que los apartamentos generalmente se construyen con tres habitaciones, lo que evidencia que los apartamentos con tres habitaciones son los que presentan una mayor variación en los precios, desde los más económicos hasta los más costosos.
boxplot(data_apto$preciom~data_apto$zona,
main = "Distribución del precio por zona",
ylab="Precio",
xlab = "Zona sur ", las=1,
col=c("royalblue","#ee964b","pink"))
Se puede observar que en la zona sur de la ciudad de Cali se encuentran viviendas de diversos rangos de precios. Esto sugiere una amplia variedad de opciones de vivienda en términos de precio y estrato socioeconómico en la zona sur de la ciudad
df_numericas1 <- data_apto[, c("preciom","areaconst","estrato", "banios", "habitaciones")]
matrix_c1 <- cor(df_numericas1, use = "complete.obs")
corrplot(matrix_c1, method = "circle", type = "lower", order = "hclust", tl.col = "black", tl.srt = 45)
corrplot(matrix_c1, method = "color", addCoef.col = "orange")
Se puede observar que la mayor correlación que presenta el precio es con el área construida, alcanzando un valor de 0.76, seguido por el numero de baños con una correlación de 0.72. Por otro lado, se evidencia que no existe una correlación fuerte entre el precio y el número de habitaciones.
precio = f(área construida, estrato, número de cuartos, número de parqueaderos, número de baños )
modelo1 <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = data_apto)
residuos1 <- resid(modelo1)
summary(modelo1)
Call:
lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
banios, data = data_apto)
Residuals:
Min 1Q Median 3Q Max
-1092.02 -42.28 -1.33 40.58 926.56
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -261.62501 15.63220 -16.736 < 2e-16 ***
areaconst 1.28505 0.05403 23.785 < 2e-16 ***
estrato 60.89709 3.08408 19.746 < 2e-16 ***
habitaciones -24.83693 3.89229 -6.381 2.11e-10 ***
parqueaderos 72.91468 3.95797 18.422 < 2e-16 ***
banios 50.69675 3.39637 14.927 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 98.02 on 2375 degrees of freedom
(406 observations deleted due to missingness)
Multiple R-squared: 0.7485, Adjusted R-squared: 0.748
F-statistic: 1414 on 5 and 2375 DF, p-value: < 2.2e-16
Los coeficientes indican cómo cambia el precio de la vivienda en relación con cada una de las variables predictoras, manteniendo las demás variables constantes.
Intercepto (Intercept): El valor estimado del intercepto es -261.62501, lo que significa que cuando todas las demás variables predictoras son cero, el precio estimado de la vivienda es de -261.62501 unidades monetarias.Este valor es estadísticamente significativo con un valor de p (< 2e-16)
Área construida (areaconst): El coeficiente estimado para el área construida es 1.28505. Esto significa que, manteniendo todas las demás variables constantes, se espera que el precio de la vivienda aumente en 1.28505 unidades monetarias por cada unidad adicional de área construida. Este coeficiente es significativo con un valor de p (p < 2e-16).
Estrato (estrato): El coeficiente estimado para el estrato es 60.89709. Esto indica que, manteniendo todas las demás variables constantes, se espera que el precio de la vivienda aumente en 60.89709 unidades monetarias cuando se pasa de un estrato a otro. Este coeficiente es significativo con un valor de p (p < 2e-16).
Número de habitaciones (habitaciones): El coeficiente estimado para el número de habitaciones es -24.83693. Esto significa que, manteniendo todas las demás variables constantes, se espera que el precio de la vivienda disminuya en 24.83693 unidades monetarias por cada habitación adicional. Este coeficiente es significativo con un valor de p (p < 2e-16).
Número de parqueaderos (parqueaderos): El coeficiente estimado para el número de parqueaderos es 72.91468. Esto indica que, manteniendo todas las demás variables constantes, se espera que el precio de la vivienda aumente en 72.91468 unidades monetarias por cada parqueadero adicional.Este coeficiente es significativo con un valor de p (p < 2e-16).
Número de baños (banios): El coeficiente estimado para el número de baños es 50.69675. Esto significa que, manteniendo todas las demás variables constantes, se espera que el precio de la vivienda aumente en 50.69675 unidades monetarias por cada baño adicional.Este coeficiente es significativo con un valor de p (p < 2e-16).
summary(modelo1)$r.squared
[1] 0.7485178
Un R cuadrado de 0.7485178 es bastante alto y sugiere que el modelo es bastante eficaz para explicar la variabilidad en el precio de la vivienda. Sin embargo, siempre es importante tener en cuenta que hay otros factores que pueden influir en el precio de la vivienda y que no están incluidos en el modelo.
shapiro.test(modelo1$residuals)
Shapiro-Wilk normality test
data: modelo1$residuals
W = 0.79118, p-value < 2.2e-16
Teniendo cuenta que el P-value es menor a 0.05 se rechaza la hipotesis nula, por tanto indica que los errores NO están distribuidos normalmente.
los resultados de la prueba de Shapiro-Wilk sugieren que los residuos del modelo no siguen una distribución normal. Esto puede indicar que el modelo no captura completamente la estructura de los datos, y podría sugerir la necesidad de revisar el modelo y considerar ajustes adicionales.
lmtest::bptest(modelo1)
studentized Breusch-Pagan test
data: modelo1
BP = 754.81, df = 5, p-value < 2.2e-16
El supuesto de homocedasticidad da un p-value es menor a 0.05, lo que nos indica que se rechaza la hipotesis nula equivalente a varianza constante
los resultados de la prueba de Breusch-Pagan sugieren que hay heterocedasticidad en los residuos del modelo de regresión. La presencia de heterocedasticidad puede afectar la precisión de las estimaciones y los intervalos de confianza del modelo, y puede requerir ajustes adicionales.
lmtest::dwtest(modelo1) # No autocorrelación
Durbin-Watson test
data: modelo1
DW = 1.5333, p-value < 2.2e-16
alternative hypothesis: true autocorrelation is greater than 0
Como el valor de DW es 1.5333, lo que indica una posible autocorrelación positiva en los residuos del modelo.
El valor p es 2.2e-16, lo que sugiere que hay evidencia significativa de autocorrelación en los residuos del modelo.
req1_1 <- data.frame(
areaconst = 300,
parqueaderos = 3,
banios = 3,
habitaciones = 5,
estrato = 5)
predic1 <- predict(modelo1, newdata = req1_1)
predic1
1
675.0247
Dado que el precio promedio estimado de un apartamento con las características solicitadas por el cliente, ubicada en estrato 5, oscila alrededor de los 675 millones de pesos, y el crédito preaprobado del comprador es de 850 millones de pesos, en este escenario, buscar una vivienda en estrato 5 parece ser una buena opción para el comprador, ya que tiene la capacidad financiera para adquirirla y el precio estimado de la vivienda está dentro de su límite de crédito preaprobado.
req2_1 <- data.frame(
areaconst = 300,
parqueaderos = 3,
banios = 3,
habitaciones = 5,
estrato = 6)
predic2_1 <- predict(modelo1, newdata = req2_1)
predic2_1
1
735.9218
Dado que el precio promedio estimado de un apartamento con las características requeridas en la solicitud No. 2, ubicada en estrato 6, es en promedio de 735 millones de pesos, y el crédito preaprobado del comprador es de 850 millones de pesos, podemos evaluar si buscar una vivienda en estrato 6 sería una buena opción.
En este caso, el precio promedio estimado de la vivienda en estrato 6 esta dentro de los limites el crédito preaprobado del comprador. Esto indica que la búsqueda de una vivienda en estrato 6 sería una mejor opción para el cliente si se considera que estos inmuebles tienen una categoria mas alta.
pre-aprobado de máximo 850 millones de pesos.
#apto <- filter(data_apto, areaconst >= 300, parqueaderos >= 3, banios >= 3, habitaciones >= 5, estrato >= 6, preciom <= 850)
apto <- filter(data_apto, preciom <= 850,estrato >= 5,parqueaderos >= 3,habitaciones >= 5)
apto_ord <- arrange(apto, desc(areaconst))
apto_ord <-(head(apto_ord,7))
tabla4 <- (head(apto_ord,7))
tabla4 %>%
kbl() %>%
kable_paper("hover",
full_width = F)
| id | zona | piso | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | tipo | barrio | longitud | latitud |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 7182 | Zona Sur | NA | 5 | 730 | 573 | 3 | 8 | 5 | Apartamento | guadalupe | -76.54800 | 3.40800 |
| 7512 | Zona Sur | NA | 5 | 670 | 300 | 3 | 5 | 6 | Apartamento | seminario | -76.55000 | 3.40900 |
| 8036 | Zona Sur | NA | 5 | 530 | 256 | 3 | 5 | 5 | Apartamento | seminario | -76.55408 | 3.40748 |
En la oferta actual que tiene la inmobiliaria solo existe tres apartamentos que cumplan con todos los requerimientos del cliente, los cuales se encuentra en el estrato 5. si el cliente esta dispuesto a renunciar a la caracteristica de 5 habitaciones por un menor numero podria encontrar una mayor oferta.
No obstante, la oferta actual cumple con los requerimientos establecidos por el cliente por lo que en general estaria accediendo a un predio con las caracteristicas solicitadas por un valor menor a preaprobado del prestamo.
mapa3 <- leaflet(data = apto_ord) %>%
addTiles() %>%
addMarkers(lng = ~longitud, lat = ~latitud, popup = ~zona)
mapa3