Después de aplicar un filtro en la base de datos para encontrar casas en la zona Norte, se presentaron los primeros 722 registros que cumplían con esas características. Sin embargo, al observar el mapa, los puntos correspondientes a esas propiedades no se encuentran en la zona Norte, lo que sugiere que puede haber un error en la base de datos.
Este desajuste podría deberse a varias razones. Una posibilidad es que los registros en la base de datos tengan errores en la asignación de la zona geográfica de las propiedades, ya sea por una mala categorización o por información incorrecta en los datos de localización. También es posible que la base de datos esté desactualizada o que los puntos de ubicación no se hayan georreferenciado adecuadamente, lo que resulta en una discordancia entre la zona indicada y la ubicación real de las casas. En cualquier caso, es fundamental revisar y corregir los datos para garantizar que la información presentada sea precisa y útil para la asesoría. Luego del filtro por lat y long en total quedan 527 casas de la zona Norte.
id zona piso estrato
Min. : 1 Length:8322 Length:8322 Min. :3.000
1st Qu.:2080 Class :character Class :character 1st Qu.:4.000
Median :4160 Mode :character Mode :character Median :5.000
Mean :4160 Mean :4.634
3rd Qu.:6240 3rd Qu.:5.000
Max. :8319 Max. :6.000
NA's :3 NA's :3
preciom areaconst parqueaderos banios
Min. : 58.0 Min. : 30.0 Min. : 1.000 Min. : 0.000
1st Qu.: 220.0 1st Qu.: 80.0 1st Qu.: 1.000 1st Qu.: 2.000
Median : 330.0 Median : 123.0 Median : 2.000 Median : 3.000
Mean : 433.9 Mean : 174.9 Mean : 1.835 Mean : 3.111
3rd Qu.: 540.0 3rd Qu.: 229.0 3rd Qu.: 2.000 3rd Qu.: 4.000
Max. :1999.0 Max. :1745.0 Max. :10.000 Max. :10.000
NA's :2 NA's :3 NA's :1605 NA's :3
habitaciones tipo barrio longitud
Min. : 0.000 Length:8322 Length:8322 Min. :-76.59
1st Qu.: 3.000 Class :character Class :character 1st Qu.:-76.54
Median : 3.000 Mode :character Mode :character Median :-76.53
Mean : 3.605 Mean :-76.53
3rd Qu.: 4.000 3rd Qu.:-76.52
Max. :10.000 Max. :-76.46
NA's :3 NA's :3
latitud
Min. :3.333
1st Qu.:3.381
Median :3.416
Mean :3.418
3rd Qu.:3.452
Max. :3.498
NA's :3
# A tibble: 3 × 13
id zona tipo barrio preciom areaconst longitud latitud estrato
<dbl> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1209 Zona Norte Casa acopi 320 150 -76.5 3.48 5
2 1592 Zona Norte Casa acopi 780 380 -76.5 3.49 5
3 4057 Zona Norte Casa acopi 750 445 -76.5 3.39 6
# ℹ 4 more variables: habitaciones <dbl>, banios <dbl>, piso <chr>,
# parqueaderos <dbl>
Zona Norte
722
table(base_norte$zona)
Zona Norte
722
Al observar el mapa se observa que existen muchos outliers según las coordenadas indicadas sobre el mapa. Se realizara una limpieza teniendo en cuenta las coordenadas limitrofes que corresponden a la zona norte para tener un sector homogeneo geograficamente representado con las coordenadas latitud >= 3.456 y longitud >= -76.540. Como se muestra en el siguiente mapa.
table(base_norte_coor$zona)
Zona Norte
527
En la matriz de correlación, se observa que las variables área construida, estrato y número de baños tienen una correlación significativa con el precio de la casa (preciom), con valores superiores a 0.53. Esto indica que estas variables tienen una relación directa y positiva con el precio: a medida que el área construida, el estrato y el número de baños aumentan, también lo hace el precio de la vivienda. La variable número de habitaciones, aunque presenta una correlación más baja (0.39), también muestra una relación positiva, lo que significa que, en general, a mayor número de habitaciones, mayor será el precio de la casa.
En los gráficos de dispersión, específicamente en el gráfico precio vs área construida vs estrato, se puede observar una clara tendencia de que, a medida que aumenta el área construida, también lo hace el precio de la casa. Este patrón es consistente donde a estratos más altos, también se observan precios más altos. Asimismo, en los gráficos precio vs baños vs. habitaciones, también se evidencia que, con un mayor número de baños o habitaciones, el precio tiende a aumentar, lo que refleja que estas características influyen positivamente en el valor de la propiedad.
El análisis muestra que el precio de las casas está fuertemente influenciado por el área construida, el estrato y el número de baños. Aunque el número de habitaciones tiene una correlación algo más débil, sigue siendo una variable que impacta el precio. Las visualizaciones interactivas con Plotly ayudan a confirmar estos patrones y proporcionan una base sólida para tomar decisiones informadas en la compra y venta de viviendas.
En este análisis de regresión lineal múltiple, el modelo tiene la forma:
Precio=β0+β1(Areaconstruida)+β2(Estrato)+β3(Habitaciones)+β4(Parqueaderos)+β5(Banios)
Interpretación del R² y Ajuste del Modelo:
• R² = 0.6396: El R² indica que aproximadamente el 63.96% de la variabilidad en el precio de las casas es explicada por el modelo, lo que sugiere un ajuste moderado. Este valor es relativamente alto, pero indica que aún hay un 36.04% de variabilidad en el precio que no está siendo explicado por las variables en el modelo. Sin embargo, es importante tener en cuenta que en análisis de precios de propiedades, una parte significativa de la variabilidad puede ser explicada por factores no medidos en este conjunto de datos, como la ubicación exacta, la antigüedad de la vivienda o características específicas que no se han considerado. • R² ajustado = 0.6361: El R² ajustado toma en cuenta el número de variables en el modelo y es útil para comparar modelos con diferentes cantidades de predictores. En este caso, el R² ajustado también es relativamente alto, lo que indica que el modelo no sobreajusta los datos.
Los índices de inflación de la varianza (VIF) que se presentan son medidas que indican si existe multicolinealidad entre las variables independientes en el modelo de regresión lineal. El VIF mide cuánto se incrementa la varianza de los coeficientes estimados debido a la colinealidad entre las variables. Un VIF alto sugiere que una variable independiente está correlacionada con otras variables del modelo, lo que puede llevar a estimaciones ineficientes y a una interpretación errónea de los coeficientes.
Los valores de VIF resultantes son:
Área construida (areaconst): 1.725530 Estrato: 1.681736 Habitaciones: 1.881869 Parqueaderos: 1.396791 Baños (banios): 2.147124 Interpretación de los VIF:
Los VIF calculados son todos bastante bajos (por debajo de 2), lo que sugiere que no existe multicolinealidad significativa entre las variables. Un VIF cercano a 1 indica que no hay colinealidad, lo cual es ideal, pues mplica que las variables del modelo no están altamente correlacionadas entre sí. Esto significa que las estimaciones de los coeficientes del modelo no están influidas de manera importante por la multicolinealidad, lo que proporciona una mayor confiabilidad en los resultados. La variable Baños tiene una ligera correlación con otras variables en el modelo, pero esta correlación no es suficientemente alta como para causar problemas graves de multicolinealidad.
modelo_norte <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = base_norte_coor)
summary(modelo_norte)
Call:
lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
banios, data = base_norte_coor)
Residuals:
Min 1Q Median 3Q Max
-909.30 -65.02 -15.71 33.97 1115.59
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -163.12564 35.28297 -4.623 4.77e-06 ***
areaconst 0.76694 0.05265 14.566 < 2e-16 ***
estrato 68.79939 8.75161 7.861 2.20e-14 ***
habitaciones 5.57706 5.06098 1.102 0.27098
parqueaderos 13.66852 4.76941 2.866 0.00433 **
banios 15.54871 6.43653 2.416 0.01605 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 146.7 on 521 degrees of freedom
Multiple R-squared: 0.6396, Adjusted R-squared: 0.6361
F-statistic: 184.9 on 5 and 521 DF, p-value: < 2.2e-16
car::vif(modelo_norte)
areaconst estrato habitaciones parqueaderos banios
1.725530 1.681736 1.881869 1.396791 2.147124
Es importante validar ciertos supuestos para garantizar que las estimaciones sean confiables y las inferencias sean correctas. A continuación, se revisan los resultados de la validación de supuestos para el modelo.
Normalidad de los residuos (Shapiro-Wilk Normality Test) Resultado:
W = 0.77179 p-valor: p < 2.2e-16
El Shapiro-Wilk test evalúa la normalidad de los residuos. Un p-valor menor a 0.05 indica que los residuos no siguen una distribución normal. En este caso, el p-valor es muy pequeño (< 2.2e-16), lo que sugiere que los residuos no siguen una distribución normal. La normalidad de los residuos es un supuesto importante para realizar pruebas de hipótesis válidas en regresión lineal. Si los residuos no son normales, las inferencias podrían ser sesgadas.
Una posible solucion podría ser la transformación de la variable dependiente preciom. Si bien esto puede haber mejorado la normalidad, es posible que aún sea necesario probar otras transformaciones como logaritmos de otras variables o realizar transformaciones Box-Cox. Y también verificar si existen valores atípicos que estén afectando la normalidad de los residuos. En algunos casos, estos valores pueden distorsionar la distribución.
Heterocedasticidad (Prueba de Breusch-Pagan)
Estadística de la prueba: BP = 105.87 Grados de libertad: df = 5 p-valor: p < 2.2e-16
Se evalúa si existe heterocedasticidad, es decir, si la varianza de los residuos es constante a lo largo de los valores ajustados. Un p-valor menor a 0.05 sugiere que hay heterocedasticidad, lo que indica que la varianza de los residuos no es constante y podría estar aumentando o disminuyendo con los valores predichos.
Una posible solución aparte de transformar las variables sería ajustar el modelo usando errores estándar robustos que corrigen la heterocedasticidad para obtener inferencias más confiables.
qqnorm(residuals(modelo_norte),
main = "Gráfico Q-Q para Normalidad de Residuos")
qqline(residuals(modelo_norte), col = "red")
# Realizar prueba de normalidad
shapiro.test(residuals(modelo_norte))
Shapiro-Wilk normality test
data: residuals(modelo_norte)
W = 0.77179, p-value < 2.2e-16
# Generar gráfico de residuos vs. valores ajustados
plot(fitted(modelo_norte), residuals(modelo_norte),
xlab = "Valores Ajustados", ylab = "Residuos",
main = "Residuos vs. Valores Ajustados")
abline(h = 0, col = "red")
bptest(modelo_norte)
studentized Breusch-Pagan test
data: modelo_norte
BP = 105.87, df = 5, p-value < 2.2e-16
modelo_log <- lm(log(preciom) ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = base_norte)
modelo_log
Call:
lm(formula = log(preciom) ~ areaconst + estrato + habitaciones +
parqueaderos + banios, data = base_norte)
Coefficients:
(Intercept) areaconst estrato habitaciones parqueaderos
4.246946 0.001474 0.237892 0.006611 0.013251
banios
0.072176
Al momento de predecir el valor de una casa en la zona norte con las caracteristicas solicitadas se obtiene que para un estrato 4, el precio de la vivienda se encuentra entre 313.30 millones y 351.276 millones. Para un estrato 5, el precio de la vivienda se encuentra entre 394.18 millones y 443.96 millones.
Lo que restringe la posible busqueda en estrato 5.
nueva_vivienda <- data.frame(
areaconst = 200, # Área construida: 200 m²
parqueaderos = 1, # Número de parqueaderos: 1
banios = 2, # Número de baños: 2
habitaciones = 4, # Número de habitaciones: 4
estrato = c(4, 5) # Estrato: 4 y 5 (dos predicciones)
)
# Realizar la predicción
predicciones <- predict(modelo_norte, newdata = nueva_vivienda)
# Mostrar las predicciones
#predicciones
predicciones_intervalo <- predict(modelo_norte, newdata = nueva_vivienda, interval = "confidence")
predicciones_intervalo
fit lwr upr
1 332.5334 313.3030 351.7638
2 401.3328 372.7633 429.9024
Con base en la solicitud, que tiene un crédito pre-aprobado de hasta 350 millones de pesos, vamos a evaluar las opciones disponibles en función de las características que cumplen con los requisitos planteados inicialmente, como el área construida, el número de habitaciones, el estrato y el precio. A continuación, se analizará cada opción y se hará evaluación comparativa para recomendar las mejores alternativas.
Requisitos de la solicitud: Área construida: 200 m². Número de habitaciones: 4. Estrato: 4 o 5. Precio máximo: 350 millones de pesos.
Opciones disponibles:
Precio: 335 millones Área construida: 220 m² Habitaciones: 3 Estrato: 5 Aunque cumple con el precio y el estrato, el número de habitaciones es menor que el solicitado (3 en lugar de 4). Sin embargo, tiene un área superior a la solicitada (220 m² frente a 200 m²), lo que podría compensar parcialmente la falta de una habitación extra.
Precio: 340 millones Área construida: 203 m² Habitaciones: 4 Estrato: 5 Esta opción cumple completamente con los requisitos de área, número de habitaciones y estrato. Además, el precio está dentro del límite aprobado. Es una opción fuerte, ya que cumple con todas las condiciones.
Precio: 350 millones Área construida: 190 m² Habitaciones: 3 Estrato: 5 Esta opción cumple con el precio máximo y el estrato solicitado, pero no cumple con el número de habitaciones, ya que tiene 3 en lugar de 4. Además, el área es algo menor que la solicitada. Aunque está en el límite del presupuesto, podría no ser ideal debido a la menor cantidad de habitaciones.
Precio: 350 millones Área construida: 216 m² Habitaciones: 4 Estrato: 5 Análisis: Esta opción cumple perfectamente con todos los requisitos: tiene un área adecuada (216 m²), el número de habitaciones correcto (4), y el estrato también es adecuado (estrato 5). Está justo en el límite del crédito pre-aprobado.
Precio: 270 millones Área construida: 196 m² Habitaciones: 4 Estrato: 3 Análisis: Esta opción tiene un precio que está muy por debajo del límite, lo que podría permitir mayor flexibilidad en otros gastos. Sin embargo, el estrato no cumple con la solicitud (estrato 3 en lugar de 4 o 5), lo que puede ser una limitación dependiendo de la preferencia de la empresa en cuanto a la ubicación de la vivienda. Recomendaciones: Las opciones que cumplen de manera más completa con los requisitos de la empresa son:
Opción 2 (ID 1887): Cumple completamente con el área, número de habitaciones, y estrato, además de estar dentro del presupuesto. Opción 4 (ID 1163): Cumple con todos los requisitos, aunque está justo en el límite del presupuesto. La Opción 5 (ID 612) es atractiva debido a su precio bajo, pero el estrato no es adecuado, lo que podría ser un factor importante para la empresa.
base_norte_coor$precio_predicho <- predict(modelo_norte, newdata = base_norte_coor)
ofertas <- base_norte_coor %>%
filter(
preciom <= 350,
areaconst >= 180 & areaconst <= 220,
habitaciones >= 3 & habitaciones <= 4,
banios >= 2 & banios <= 3,
parqueaderos >= 1 & parqueaderos <= 2
# estrato %in% c(4, 5)
) %>%
select(id, zona, barrio, areaconst, habitaciones, banios, parqueaderos, estrato, precio_predicho, preciom, latitud, longitud)
# Seleccionar las 5 mejores ofertas
ofertas_top5 <- ofertas %>% slice_min(preciom, n = 5)
# Crear mapa interactivo
mapa_ofertas <- leaflet(ofertas_top5) %>%
addTiles() %>%
addCircleMarkers(
lng = ~longitud,
lat = ~latitud,
popup = ~paste(
"ID:", id, "<br>",
"Precio:", preciom, "M<br>",
"Área:", areaconst, "m²<br>",
"Habitaciones:", habitaciones, "<br>",
"Estrato:", estrato
),
color = "green",
radius = 8,
stroke = FALSE,
fillOpacity = 0.8
) %>%
addLegend(
position = "bottomright",
colors = "green",
labels = "Ofertas ≤ 350M",
title = "Ubicación de Ofertas"
)
mapa_ofertas
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.
Después de aplicar un filtro en la base de datos para encontrar casas en la zona Norte, se presentaron los primeros 2787 registros que cumplían con esas características. Sin embargo, al observar el mapa, los puntos correspondientes a esas propiedades no se encuentran en la zona Norte, lo que sugiere que puede haber un error en la base de datos.
Trabajaremos con la con la completitud de los datos, asumiendo en que la etiqueta ‘Zona Sur’ es confiable a pesar que en el mapa no sean congruentes las ubicaciones y poder comparar la variacion de los resultados.
# A tibble: 3 × 13
id zona tipo barrio preciom areaconst longitud latitud estrato
<dbl> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 5098 Zona Sur Apartamento acopi 290 96 -76.5 3.45 4
2 698 Zona Sur Apartamento aguabla… 78 40 -76.5 3.4 3
3 8199 Zona Sur Apartamento aguacat… 875 194 -76.6 3.46 6
# ℹ 4 more variables: habitaciones <dbl>, banios <dbl>, piso <chr>,
# parqueaderos <dbl>
Zona Sur
2787
En la matriz de correlación, se observa que las variables área construida, estrato y número de baños tienen una correlación significativa con el precio de la casa (preciom), con valores superiores a 0.72. Esto indica que estas variables tienen una relación directa y positiva con el precio: a medida que el área construida, el estrato y el número de baños aumentan, también lo hace el precio de la vivienda. La variable número de habitaciones, aunque presenta una correlación más baja (0.33), también muestra una relación positiva, lo que significa que, en general, a mayor número de habitaciones, mayor será el precio de la casa pero sin tanta relevancia.
Al igual que en la zona norte, se observa que a mayor area mayor será el precio, aunque en esta grafica se muestra aun más la incidencia del estrato 6 como un factor de aumento de los valores de propiedades. Se compara también el numero de habitaciones y numero de baños con el precio y se muestra un incremento gradual del precio con el incremento de estos.
scatter_area <- ggplot(base_sur, aes(x = areaconst, y = preciom, color = factor(estrato))) +
geom_point(alpha = 0.7) +
labs(title = "Precio vs. Área Construida", x = "Área (m²)", y = "Precio (millones)") +
theme_minimal()
ggplotly(scatter_area) %>%
layout(hoverlabel = list(bgcolor = "white"))
scatter_banios <- ggplot(base_sur, aes(x = habitaciones, y = preciom, color = banios)) +
geom_jitter(width = 0.2) +
labs(title = "Precio vs. Número de habitaciones", x = "Habitaciones", y = "Precio (millones)") +
theme_minimal()
ggplotly(scatter_banios)
Interpretación de los Coeficientes: 1. Intercepto (-221.04614): Este valor es el precio estimado de la vivienda cuando todas las variables independientes (área construida, estrato, habitaciones, parqueaderos, y baños) son igual a cero. En la práctica, este valor no tiene una interpretación directa, ya que una vivienda con área cero y sin habitaciones, parqueaderos, ni baños no es realista. Sin embargo, es necesario para calcular las predicciones del modelo. 2. Área construida (1.46061): Por cada metro cuadrado adicional de área construida, el precio de la vivienda aumenta en promedio 1.46 millones de pesos, manteniendo constantes las demás variables del modelo. Este coeficiente es estadísticamente significativo (p-valor < 2e-16), lo que indica que hay una fuerte relación entre el área construida y el precio de la vivienda. Este resultado es lógico, ya que en general, las viviendas con más área suelen ser más costosas. 3. Estrato (57.00608): Un incremento de 1 en el estrato (por ejemplo, pasar de estrato 4 a estrato 5) se asocia con un aumento de 57 millones de pesos en el precio de la vivienda, manteniendo constantes las demás variables. Este coeficiente también es estadísticamente significativo (p-valor < 2e-16). La relación positiva entre el estrato y el precio es lógica, ya que generalmente en zonas de mayor estrato (que suelen ser más exclusivas o mejor ubicadas), los precios son más altos. 4. Número de habitaciones (-22.71789): Este coeficiente indica que, en promedio, cada habitación adicional disminuye el precio de la vivienda en 22.72 millones de pesos. Este resultado parece contraintuitivo, ya que en general, se esperaría que un mayor número de habitaciones aumente el precio de la vivienda. Es posible que la variable habitaciones esté correlacionada con otras variables del modelo (por ejemplo, área construida o parqueaderos) y que este efecto negativo sea reflejo de una colinealidad. Se podría explorar más a fondo la relación entre estas variables para entender mejor este comportamiento. 5. Número de parqueaderos (48.36353): Cada parqueadero adicional aumenta el precio de la vivienda en 48.36 millones de pesos, manteniendo las demás variables constantes. Este coeficiente es estadísticamente significativo (p-valor < 2e-16), lo cual es coherente con la intuición, ya que en zonas de mayor estrato y con viviendas más grandes, los parqueaderos adicionales son un valor añadido y aumentan el valor de la propiedad. 6. Número de baños (48.60871): Similar a los parqueaderos, cada baño adicional se asocia con un aumento de 48.61 millones de pesos en el precio de la vivienda, manteniendo las otras variables constantes. Este efecto positivo es lógico, ya que más baños generalmente aumentan la comodidad y la funcionalidad de una vivienda. R² y Ajuste del Modelo: Aunque no se proporciona el valor exacto de R² en los resultados que compartiste, podemos hablar sobre el ajuste del modelo en general. • R² (coeficiente de determinación): El R² mide la proporción de la variabilidad total del precio de la vivienda que es explicada por el modelo. Un valor cercano a 1 indica un buen ajuste del modelo, mientras que un valor cercano a 0 indica que el modelo no explica bien la variabilidad del precio. • R² Ajustado: Este valor tiene en cuenta el número de variables del modelo y ajusta el R² para penalizar por la inclusión de variables que no mejoran significativamente el ajuste.
modelo_sur <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = base_sur)
summary(modelo_sur)
Call:
lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos +
banios, data = base_sur)
Residuals:
Min 1Q Median 3Q Max
-1252.31 -42.15 -2.06 36.32 934.06
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -221.04614 13.47771 -16.401 < 2e-16 ***
areaconst 1.46061 0.04876 29.956 < 2e-16 ***
estrato 57.00608 2.79648 20.385 < 2e-16 ***
habitaciones -22.71789 3.39549 -6.691 2.68e-11 ***
parqueaderos 48.36353 3.02343 15.996 < 2e-16 ***
banios 48.60871 3.04050 15.987 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 95.17 on 2781 degrees of freedom
Multiple R-squared: 0.7536, Adjusted R-squared: 0.7531
F-statistic: 1701 on 5 and 2781 DF, p-value: < 2.2e-16
qqnorm(residuals(modelo_sur),
main = "Gráfico Q-Q para Normalidad de Residuos")
qqline(residuals(modelo_sur), col = "red")
# Realizar prueba de normalidad
shapiro.test(residuals(modelo_sur))
Shapiro-Wilk normality test
data: residuals(modelo_sur)
W = 0.78157, p-value < 2.2e-16
# Generar gráfico de residuos vs. valores ajustados
plot(fitted(modelo_sur), residuals(modelo_sur),
xlab = "Valores Ajustados", ylab = "Residuos",
main = "Residuos vs. Valores Ajustados")
abline(h = 0, col = "red")
bptest(modelo_sur)
studentized Breusch-Pagan test
data: modelo_sur
BP = 956.83, df = 5, p-value < 2.2e-16
modelo_log <- lm(log(preciom) ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = base_sur)
modelo_log
Call:
lm(formula = log(preciom) ~ areaconst + estrato + habitaciones +
parqueaderos + banios, data = base_sur)
Coefficients:
(Intercept) areaconst estrato habitaciones parqueaderos
3.718090 0.002699 0.239785 0.001204 0.137820
banios
0.115540
Basado en el modelo de regresión lineal múltiple, la predicción del precio sería:
Precio estimado (fit): 736.5012 millones de pesos Intervalo de confianza inferior (lwr): 716.2264 millones de pesos Intervalo de confianza superior (upr): 756.7760 millones de pesos
El precio estimado para la vivienda con las características solicitadas en la zona sur es de 736.5 millones de pesos. El intervalo de confianza indica que, con un alto grado de certeza, el precio real de esta vivienda estará entre 716.2 millones y 756.8 millones de pesos.
Dado que la empresa tiene un crédito preaprobado de 850 millones de pesos, el precio estimado está dentro del presupuesto. Las viviendas con este precio estarían considerablemente dentro del límite disponible de 850 millones de pesos.
nueva_vivienda <- data.frame(
areaconst = 300, # Área construida: 300 m²
parqueaderos = 3, # Número de parqueaderos: 3
banios = 3, # Número de baños: 3
habitaciones = 5, # Número de habitaciones: 5
estrato = c(5, 6) # Estrato: 5 y 6 (dos predicciones)
)
# Realizar la predicción
predicciones_sur <- predict(modelo_sur, newdata = nueva_vivienda)
# Mostrar las predicciones
#predicciones
predicciones_intervalo_sur <- predict(modelo_sur, newdata = nueva_vivienda, interval = "confidence")
predicciones_intervalo_sur
fit lwr upr
1 679.4951 659.3575 699.6328
2 736.5012 716.2264 756.7760
Basado en el modelo de regresión lineal múltiple, sabemos que para un apartamento con estas características, el precio estimado está en el rango de los 850 millones de pesos o ligeramente por debajo.
Ofertas potenciales: Opción 1: ID: 7171
Precio: 260 millones de pesos
Área: 300 m²
Habitaciones: 5
Estrato: 3
Parqueaderos: 3
Baños: 3
Ubicación: Zona sur
Análisis: Esta propiedad está significativamente por debajo del límite de presupuesto de 850 millones de pesos, pero el estrato (estrato 3) no cumple con la solicitud de ser estrato 5 o 6. Sin embargo, su precio muy bajo puede ser atractiva si se priorizan otras características, aunque no cumple con la expectativa del estrato.
Opción 2: ID: 7658
Precio: 520 millones de pesos
Área: 320 m²
Habitaciones: 4
Estrato: 5
Parqueaderos: 3
Baños: 3
Ubicación: Zona sur
Análisis: Esta oferta se ajusta mejor al presupuesto de 850 millones de pesos. Sin embargo, tiene una habitación menos (4 en lugar de 5), pero cumple con el estrato 5 y el número de parqueaderos y baños. Este es un candidato viable dentro del rango de precios, aunque es ligeramente más grande de lo que se solicitaba (320 m² frente a los 300 m² solicitados).
Opción 3: ID: 8113
Precio: 410 millones de pesos
Área: 295 m²
Habitaciones: 4
Estrato: 5
Parqueaderos: 3
Baños: 3
Ubicación: Zona sur
Análisis: Esta opción también se encuentra muy por debajo del presupuesto de 850 millones de pesos. Tiene el estrato adecuado (5) y el número de parqueaderos y baños solicitados. Sin embargo, solo tiene 4 habitaciones en lugar de las 5 solicitadas. Además, su área es de 295 m², lo cual está un poco por debajo de los 300 m² solicitados. Es una opción con un precio atractivo, pero con una ligera diferencia en el número de habitaciones y el área.
Resumen y recomendaciones: Opción 1: Es una opción con un precio muy atractivo, pero el estrato 3 no cumple con los requisitos de la solicitud. Si el estrato no es un factor crucial, esta propiedad puede ser considerada debido a su bajo precio.
Opción 2: Es una opción interesante y ajustada al presupuesto, con estrato 5, aunque tiene una habitación menos y es más grande en área de lo solicitado. Aun así, podría ser una excelente opción si el número de habitaciones es flexible.
Opción 3: Esta opción también es atractiva por su bajo precio, tiene estrato 5, pero no cumple con el número de habitaciones (4 en lugar de 5). La diferencia en el área también es pequeña, por lo que podría ser una opción si el número de habitaciones no es un requisito inflexible.
base_sur$precio_predicho <- predict(modelo_sur, newdata = base_sur)
ofertas <- base_sur %>%
filter(
preciom <= 850,
areaconst >= 280 & areaconst <= 320,
habitaciones >= 2 & habitaciones <= 5,
banios >= 2 & banios <= 4,
parqueaderos >= 1 & parqueaderos <= 4
# estrato %in% c(4, 5)
) %>%
select(id, zona, barrio, areaconst, habitaciones, banios, parqueaderos, estrato, precio_predicho, preciom, latitud, longitud)
# Seleccionar las 5 mejores ofertas
ofertas_top5_sur <- ofertas %>% slice_min(preciom, n = 5)
# Crear mapa interactivo
mapa_ofertas <- leaflet(ofertas_top5_sur) %>%
addTiles() %>%
addCircleMarkers(
lng = ~longitud,
lat = ~latitud,
popup = ~paste(
"ID:", id, "<br>",
"Precio:", preciom, "M<br>",
"Área:", areaconst, "m²<br>",
"Habitaciones:", habitaciones, "<br>",
"Estrato:", estrato
),
color = "green",
radius = 8,
stroke = FALSE,
fillOpacity = 0.8
) %>%
addLegend(
position = "bottomright",
colors = "green",
labels = "Ofertas ≤ 850M",
title = "Ubicación de Ofertas"
)
mapa_ofertas
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.