Informe ejecutivo

1. Objetivo:

Estimar y validar modelos de Regresión Lineal Múltiple para explicar y predecir el precio de vivienda (millones de pesos) en Cali para apoyar la toma de decisiones para dos solicitudes:

  • Vivienda 1: Casa en Zona Norte, 200 m², 1 parqueadero, 2 baños, 4 habitaciones, estrato 4–5, crédito ≤ 350 M.

  • Vivienda 2: Apartamento en Zona Sur, 300 m², 3 parqueaderos, 3 baños, 5 habitaciones, estrato 5–6, crédito ≤ 850 M.

2. Identificación de viviendas por zonas:

Se realizó una zonificación por coordenadas para diferenciar las viviendas ubicadas en la zona Norte y Sur de la ciudad de Cali, encontrándose los siguientes resultados:

Cantidad de viviendas por Zona Norte y Zona Sur

df %>% count(zona_geo) %>% kable(caption = "Frecuencia por zona geográfica derivada")
Frecuencia por zona geográfica derivada
zona_geo n
Zona Sur (geo) 3572
Zona Norte (geo) 3145

Mapa división de viviendas en Zona Norte

# Mapa exploratorio (Casas Norte)
leaflet(casas_norte_geo) %>%
  addTiles() %>%
  addCircleMarkers(
    lng = ~longitud, lat = ~latitud,
    popup = ~paste0("<b>", barrio, "</b><br>",
                    "Zona (geo): ", zona_geo, "<br>",
                    "Estrato: ", estrato, "<br>",
                    "Área: ", areaconst, " m²<br>",
                    "Baños/Hab/Parq: ", banios, " / ", habitaciones, " / ", parqueaderos, "<br>",
                    "Precio (M): ", round(preciom, 1)),
    radius = 6, stroke = FALSE, fillOpacity = 0.85,
    clusterOptions = markerClusterOptions()
  )

Mapa división de viviendas en Zona Sur

# Mapa exploratorio (Aptos Sur)
leaflet(apto_sur_geo) %>%
  addTiles() %>%
  addCircleMarkers(
    lng = ~longitud, lat = ~latitud,
    popup = ~paste0("<b>", barrio, "</b><br>",
                    "Zona (geo): ", zona_geo, "<br>",
                    "Estrato: ", estrato, "<br>",
                    "Área: ", areaconst, " m²<br>",
                    "Baños/Hab/Parq: ", banios, " / ", habitaciones, " / ", parqueaderos, "<br>",
                    "Precio (M): ", round(preciom, 1)),
    radius = 6, stroke = FALSE, fillOpacity = 0.85,
    clusterOptions = markerClusterOptions()
  )

3. Hallazgos:

  • Se observa incrementos en el precio promedio de las viviendas a medida que se incrementa el el estrato.

Precio Vs Estrato – Casas en Zona Norte

# Boxplot Precio por Estrato (interactivo)
b_c1 <- ggplot(casas_norte_geo, aes(x = factor(estrato), y = preciom)) +
  geom_boxplot(outlier.alpha = 0.2) +
  labs(title = "Precio por Estrato — Casas Zona Norte (geo)",
       x = "Estrato", y = "Precio (millones)") +
  theme_minimal()
ggplotly(b_c1, tooltip = c("x","y"))

Precio Vs Estrato – Apartamentos en Zona Sur

b_c2 <- ggplot(apto_sur_geo, aes(x = factor(estrato), y = preciom)) +
  geom_boxplot(outlier.alpha = 0.2) +
  labs(title = "Precio por Estrato — Apartamentos Zona Sur (geo)",
       x = "Estrato", y = "Precio (millones)") +
  theme_minimal()
ggplotly(b_c2, tooltip = c("x","y"))
  • Se observa una leve diferencia en la media del precio (45 MCOP) de las casas ubicadas en la zona Sur con respecto a las casas ubicadas en la zona Norte.

Precio Vs Zona – Casas

bp_casas <- ggplot(casas_all, aes(x = zona_geo, y = preciom)) +
  geom_boxplot(outlier.alpha = 0.2) +
  labs(title = "Precio por Zona (geo) — CASAS",
       x = "Zona derivada por coordenadas", y = "Precio (millones)") +
  theme_minimal()
ggplotly(bp_casas, tooltip = c("x","y"))
  • Se observa una leve diferencia en la media del precio (105 MCOP) de los apartamentos ubicadas en la zona Norte con respecto a los apartamentos ubicadas en la zona Sur.

Precio Vs Zona – Apartamentos

bp_apto <- ggplot(apto_all, aes(x = zona_geo, y = preciom)) +
  geom_boxplot(outlier.alpha = 0.2) +
  labs(title = "Precio por Zona (geo) — APARTAMENTOS",
       x = "Zona derivada por coordenadas", y = "Precio (millones)") +
  theme_minimal()
ggplotly(bp_apto, tooltip = c("x","y"))
  • El área construida, número de baños y parqueaderos muestran asociación positiva con el precio.

4. Viviendas Sugeridas

  • Las viviendas que cumplen con los requerimientos para compra de La vivienda 1 de acuerdo con la predicción del precio se encuentran en Estrato 4.

Vivienda 1

print(g_v1)

Ofertas Potenciales Sugeridas para la Compra de la Vivienda 1

  print_table(tabla_v1,
    caption = paste0("Vivienda 1 (Casa · Zona Norte) — Top ", nrow(tabla_v1),
                     " (área ", res_v1$criterio, ", ppto ≤ 350 M)")
  )
## 
## 
## Table: Vivienda 1 (Casa · Zona Norte) — Top 5 (área ±20%, ppto ≤ 350 M)
## 
##  Rank  Barrio         Zona                Estrato  Perfil                  Precio (M)   Pred (M)   Delta (obs - pred) (M)   Señal      
## -----  -------------  -----------------  --------  ----------------------  -----------  ---------  -----------------------  -----------
##     1  la flora       Zona Norte (geo)          5  200 m² | H4 | B4 | P2   320.0        552.3      -232.3                   obs < pred 
##     2  la merced      Zona Norte (geo)          4  200 m² | H4 | B4 | P2   320.0        445.6      -125.6                   obs < pred 
##     3  el bosque      Zona Norte (geo)          5  200 m² | H4 | B3 | P3   350.0        573.2      -223.2                   obs < pred 
##     4  san fernando   Zona Norte (geo)          4  198 m² | H5 | B2 | P1   300.0        291.4      8.6                      obs ≥ pred 
##     5  el bosque      Zona Norte (geo)          5  202 m² | H5 | B4 | P1   335.0        475.5      -140.5                   obs < pred

Mapa Ofertas Potencias de Vivienda 1

map_v1
  • Las viviendas que cumplen con los requerimientos para compra de La vivienda 2 de acuerdo con la predicción del precio se encuentran en Estratos 5 y 6.

Vivienda 2

print(g_v2)

Ofertas Potenciales Sugeridas para la Compra de la Vivienda 2

 print_table(tabla_v2,
    caption = paste0("Vivienda 2 (Apto · Zona Sur) — Top ", nrow(tabla_v2),
                     " (área ", res_v2$criterio, ", ppto ≤ 850 M)")
  )
## 
## 
## Table: Vivienda 2 (Apto · Zona Sur) — Top 2 (área ±60%, ppto ≤ 850 M)
## 
##  Rank  Barrio      Zona              Estrato  Perfil                  Precio (M)   Pred (M)   Delta (obs - pred) (M)   Señal      
## -----  ----------  ---------------  --------  ----------------------  -----------  ---------  -----------------------  -----------
##     1  seminario   Zona Sur (geo)          5  300 m² | H6 | B5 | P3   670.0        781.7      -111.7                   obs < pred 
##     2  seminario   Zona Sur (geo)          5  256 m² | H5 | B5 | P3   530.0        741.9      -211.9                   obs < pred

Mapa Ofertas Potencias de Vivienda 1

map_v2

5. Recomendaciones

Vivienda 1 (≤ 350 M):

Se debe enfocar en casas del Norte alrededor de 200 m², con 2 baños y 1 parqueadero. Si el precio se acerca al tope de 350 M, se puede considerar reducir el área a 180–190 m² o ser más flexible con el número de habitaciones (tienen menos impacto que el área). Para negociar, se puede usar el intervalo de predicción al 95% (PI95) como banda: cerca del centro y evitar pasar del límite superior.

Vivienda 2 (≤ 850 M).

Con el margen de presupuesto en el Sur (estratos 5–6), priorizar 3 parqueaderos y 3 baños; el área se podría ajustar entre 280–320 m² . Comparar siempre el precio publicado con el precio que predice el modelo (Δ = obs − pred): si la Δ es negativa, es una buena oportunidad; si es positiva, se debe negociar.