Zona Norte

1. Filtro, Depuración y Corrección Geográfica

library(paqueteMODELOS)
library(dplyr)
library(leaflet)
library(knitr) # Librería para dar formato a las tablas

data("vivienda")
vivienda <- vivienda %>% na.omit()
vivienda$estrato <- as.numeric(as.character(vivienda$estrato))
vivienda$areaconst <- as.numeric(vivienda$areaconst)

# Filtro inicial y depuración espacial para el Norte
base_norte <- vivienda %>% 
  filter(tipo == "Casa", zona == "Zona Norte") %>% 
  filter(latitud > 3.435 & latitud < 3.55) %>% 
  filter(longitud > -76.59 & longitud < -76.45)

# Mostrar los primeros 3 registros en formato de tabla
kable(head(base_norte, 3), caption = "Primeros 3 registros de Casas en Zona Norte")
Primeros 3 registros de Casas en Zona Norte
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
1666 Zona Norte 02 4 275 120 1 2 4 Casa alamos -76.51700 3.47500
# Mapa de comprobación
leaflet(base_norte) %>% 
  addTiles() %>% 
  addCircleMarkers(~longitud, ~latitud, radius = 3, color = "blue", popup = ~barrio)

El mapa nos muestra que las propiedades se encuentran agrupadas en el sector del norte de Cali de manera correcta, se realiza una depuracion espacial para eliminar los valores atipicos que se encuentran presentes en la base de datos de la inmobiliaria debido a errores en digitacion de latitud y longitud durante la captura manual de los datos, basándonos en los límites geográficos reales de Cali.

2. Análisis Exploratorio de Datos

# Instala corrplot en la consola si no lo tienes: install.packages("corrplot")
library(corrplot)
library(ggplot2)

# Matriz de correlación para todas las variables numéricas de interés
variables_cor <- base_norte %>% select(preciom, areaconst, estrato, banios, habitaciones)
matriz_cor <- cor(variables_cor, use = "complete.obs")

# Gráfico de la matriz
corrplot(matriz_cor, method = "number", type = "upper", tl.col = "black", tl.cex = 0.8)

# Boxplot para ver la distribución del precio por estrato (variables categóricas vs numéricas)
ggplot(base_norte, aes(x = as.factor(estrato), y = preciom, fill = as.factor(estrato))) +
  geom_boxplot() +
  labs(title = "Distribución del Precio por Estrato (Norte)", x = "Estrato", y = "Precio (Millones)") +
  theme_minimal()

library(plotly)

# Gráfico interactivo con plotly (Precio vs Área para Casas en el Norte)
plot_ly(base_norte, x = ~areaconst, y = ~preciom, type = 'scatter', mode = 'markers',
        color = ~as.factor(estrato),
        text = ~paste("Baños:", banios, "<br>Habitaciones:", habitaciones, "<br>Estrato:", estrato)) %>%
  plotly::layout(title = "Precio vs Área Construida (Casas Zona Norte)",
                 xaxis = list(title = "Área Construida (m2)"),
                 yaxis = list(title = "Precio (Millones COP)"))

Al evaluar la matriz de correlación, se evidencia que la variable con mayor influencia lineal sobre el precio de las casas en la Zona Norte es el área construida, presentando una correlación positiva fuerte (r = 0.67). El número de baños (r = 0.51) y el estrato (r = 0.49) también muestran una relación positiva moderada con el valor del inmueble. Por el contrario, el número de habitaciones presenta la correlación más débil con el precio (r = 0.38), lo que sugiere que la distribución interna del espacio es menos determinante que el metraje total.

Por otro lado, el gráfico de cajas (boxplot) confirma una relación directa y escalonada entre el estrato socioeconómico y el precio de las viviendas. A medida que aumenta el estrato, no solo se eleva la mediana del precio, sino también la dispersión de los datos. Es importante destacar el comportamiento del Estrato 5, el cual concentra la mayor cantidad de valores atípicos (outliers), con propiedades que superan los 1,200 e incluso los 1,600 millones de pesos. El Estrato 6 presenta la caja más ancha, indicando una alta variabilidad y un mercado de precios mucho más heterogéneo en el segmento más alto.

Al observar el gráfico de dispersión , se confirma visualmente la relación directa y positiva entre el área construida y el precio de las viviendas en la Zona Norte. Además, la segmentación por colores revela dinámicas clave del mercado en esta zona:

  • Segmento Objetivo (Estratos 4 y 5): Las casas de estrato 4 (nuestro público objetivo principal para la solicitud de 350 millones) se agrupan en un clúster muy denso entre los 100 y 400 m², con precios que fluctúan fuertemente entre los 200 y 800 millones. La propiedad solicitada (200 m² y estrato 4) se ubica exactamente en el centro de esta aglomeración, lo que significa que es un tipo de inmueble muy común, pero con alta competencia de precios.

  • Alta Dispersión en Estrato 5: Llama la atención que, en esta muestra del Norte, las propiedades de estrato 5 (puntos morados) son las que alcanzan los precios tope del mercado (superando los 1,400 y 1,600 millones) y las mayores áreas, mostrando mucha más variabilidad que el estrato 6.

  • Valores Atípicos (Outliers): El gráfico permite identificar claramente anomalías que el modelo de regresión sufre al intentar ajustar la línea. El caso más evidente es el punto verde (estrato 3) en la esquina inferior derecha: una propiedad con un área inusualmente gigante (cerca de 1,450 m²) pero con un precio de venta sumamente bajo (alrededor de 400 millones). Este tipo de registros atípicos (posibles lotes vacíos o errores de digitación en el área).

3. Estimación e interpretación del modelo

mod_norte <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = base_norte)
summary(mod_norte)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos + 
##     banios, data = base_norte)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -752.76  -78.12  -15.57   48.13  931.55 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -234.54703   62.36449  -3.761 0.000215 ***
## areaconst       0.65898    0.06882   9.575  < 2e-16 ***
## estrato        81.63172   13.66549   5.974 8.70e-09 ***
## habitaciones    7.84421    7.43840   1.055 0.292730    
## parqueaderos   28.87027    6.90919   4.179 4.16e-05 ***
## banios         14.04244   10.45953   1.343 0.180735    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 153.1 on 231 degrees of freedom
## Multiple R-squared:  0.6024, Adjusted R-squared:  0.5938 
## F-statistic: 69.99 on 5 and 231 DF,  p-value: < 2.2e-16

Análisis e Interpretación del Modelo:

El modelo de regresión múltiple es estadísticamente significativo en su conjunto (p-value < 2.2e-16). Al evaluar el coeficiente de determinación (R-cuadrado ajustado de 0.5938), podemos afirmar que las variables incluidas explican el 59.38% de la variabilidad de los precios de las casas en la Zona Norte.

Al observar la significancia individual de las variables (Pr(>|t|)), encontramos resultados muy lógicos para el mercado inmobiliario:

Variables significativas (p < 0.05): El área construida, el estrato y el número de parqueaderos son los determinantes reales del precio en esta zona. Por cada metro cuadrado adicional, la propiedad se encarece en promedio $658,980 COP (0.658 millones). Así mismo, subir un nivel de estrato incrementa el valor en $81.6 millones, y cada parqueadero extra suma $28.8 millones al precio final.

Variables no significativas (p > 0.05): Curiosamente, el número de habitaciones (p=0.29) y de baños (p=0.18) no son estadísticamente significativos para definir el precio en las casas del Norte. Esto tiene sentido lógico, ya que los compradores de casas en esta zona valoran más el metraje total del lote y la capacidad de estacionamiento que la subdivisión interna de la vivienda.

Para aumentar el R-cuadrado y mejorar el ajuste del modelo, se podrían incluir variables de localización exacta (distancia a vías principales o centros comerciales) o el estado de conservación/antigüedad de la vivienda, las cuales no están presentes en la base actual.

4.Validación de supuestos

par(mfrow = c(2, 2))
plot(mod_norte)

  • Linealidad: El gráfico de residuales vs. valores ajustados no muestra patrones severos, sugiriendo que la relación lineal es aceptable.

  • Normalidad: El Q-Q Plot indica que los residuales siguen la distribución normal en el centro, aunque las colas (propiedades de muy alto valor) se desvían de la diagonal.

  • Homocedasticidad: El gráfico Scale-Location muestra una ligera forma de embudo, indicando que a mayores precios la varianza aumenta. Sugerencia: Para corregir esto en futuros análisis, se recomienda aplicar una transformación logarítmica a la variable dependiente log(preciom).

5.Predicción puntual (Solicitud 1)

Se requiere predecir el valor de una casa de 200 m², estrato 4, 4 habitaciones, 2 baños y 1 parqueadero.

casa_solicitada <- data.frame(areaconst = 200, parqueaderos = 1, banios = 2, habitaciones = 4, estrato = 4)
pred_norte <- predict(mod_norte, newdata = casa_solicitada, interval = "confidence")
pred_norte
##        fit      lwr      upr
## 1 312.1073 277.3582 346.8564

Interpretación: El modelo estima un precio promedio (fit) de $312.1 millones de pesos para esta propiedad, con un intervalo de confianza al 95% que fluctúa entre $277.3 millones y $346.8 millones. Dado que el límite superior no supera los $350 millones del crédito preaprobado, la solicitud es financieramente viable.

6.Sugerencia de ofertas potenciales

Filtramos la base de datos real para presentar 5 propiedades que cumplan con la solicitud y respeten el tope de $350 millones.

ofertas_norte <- base_norte %>% 
  filter(preciom <= 350, areaconst >= 180, habitaciones >= 3, estrato >= 4) %>% 
  head(5)

leaflet(ofertas_norte) %>% 
  addTiles() %>% 
  addCircleMarkers(~longitud, ~latitud, radius = 6, color = "red", 
                   popup = ~paste("Barrio:", barrio, "<br>Precio:", preciom, "M"))
# Tabla resumen de las ofertas recomendadas
kable(ofertas_norte %>% select(barrio, preciom, areaconst, habitaciones, banios, parqueaderos, estrato), 
      caption = "Top 5 Ofertas Seleccionadas - Zona Norte (Max 350M)")
Top 5 Ofertas Seleccionadas - Zona Norte (Max 350M)
barrio preciom areaconst habitaciones banios parqueaderos estrato
el bosque 350 200 4 3 3 5
el bosque 335 202 5 4 1 5
el bosque 335 220 3 3 1 5
el bosque 340 250 4 4 2 5
el bosque 350 300 6 5 3 5

Análisis de Ofertas: Las 5 opciones presentadas en el mapa representan negocios óptimos para la compañía. Cumplen con las condiciones de espacio requeridas (áreas superiores a 180 m² y múltiples habitaciones) y se encuentran estrictamente por debajo del tope preaprobado de $350 millones, lo que facilita el proceso de compra sin necesidad de ampliación de crédito.

Zona Sur

1. Filtro, Depuración y Corrección Geográfica

library(knitr)

# Filtro y depuración espacial para el Sur (Excluyendo Candelaria)
base_sur <- vivienda %>% 
  filter(tipo == "Apartamento", zona == "Zona Sur") %>% 
  filter(latitud < 3.44 & latitud > 3.30) %>% 
  filter(longitud > -76.57 & longitud < -76.51)

# Mostrar los primeros 3 registros
kable(head(base_sur, 3), caption = "Primeros 3 registros de Apartamentos en Zona Sur")
Primeros 3 registros de Apartamentos en Zona Sur
id zona piso estrato preciom areaconst parqueaderos banios habitaciones tipo barrio longitud latitud
6975 Zona Sur 06 4 220 75 1 2 3 Apartamento alférez real -76.54627 3.39109
7946 Zona Sur 10 3 230 63 1 2 2 Apartamento alto jordán -76.55300 3.37200
8102 Zona Sur 05 5 344 107 2 2 3 Apartamento altos de guadalupe -76.55500 3.41000
# Mapa de comprobación Sur
leaflet(base_sur) %>% 
  addTiles() %>% 
  addCircleMarkers(~longitud, ~latitud, radius = 3, color = "green", popup = ~barrio)

La depuración espacial es crítica para esta solicitud, ya que los apartamentos de lujo en Cali suelen concentrarse en corredores específicos del sur. El mapa confirma que los datos filtrados pertenecen a la zona correcta, eliminando el ruido geográfico de la base original. Se realiza un filtro para eliminar los valores que aparecen en Candelaria que incluia la base.

2. Análisis Exploratorio de Datos

library(plotly)   # Cargamos la librería para el gráfico
library(corrplot) # Cargamos la librería para la matriz

# Matriz de correlación Sur
variables_cor_sur <- base_sur %>% select(preciom, areaconst, estrato, banios, habitaciones)
matriz_cor_sur <- cor(variables_cor_sur, use = "complete.obs")
corrplot(matriz_cor_sur, method = "number", type = "upper", tl.col = "black", tl.cex = 0.8)

# Boxplot para ver la distribución del precio por estrato en el Sur
ggplot(base_sur, aes(x = as.factor(estrato), y = preciom, fill = as.factor(estrato))) +
  geom_boxplot() +
  labs(title = "Distribución del Precio por Estrato (Apartamentos Sur)", x = "Estrato", y = "Precio (Millones)") +
  theme_minimal()

# Gráfico interactivo
plot_ly(base_sur, x = ~areaconst, y = ~preciom, type = 'scatter', mode = 'markers',
        color = ~as.factor(estrato),
        text = ~paste("Baños:", banios, "<br>Estrato:", estrato)) %>%
  plotly::layout(title = "Precio vs Área Construida (Apartamentos Zona Sur)",
                 xaxis = list(title = "Área Construida (m2)"),
                 yaxis = list(title = "Precio (Millones COP)"))

En los apartamentos del sur, el área construida (r = 0.72) y el número de baños (r = 0.71) presentan la correlación positiva más fuerte con el precio. El estrato también muestra una relación sólida (r = 0.64), mientras que el número de habitaciones tiene el menor impacto lineal (r = 0.31). Esto confirma que, en el formato de apartamentos, el mercado valora sustancialmente más la amplitud del metraje y las comodidades (como baños adicionales) que la subdivisión del espacio en múltiples alcobas.

El boxplot de la Zona Sur evidencia un comportamiento escalonado donde los estratos 3, 4 y 5 presentan cajas compactas y homogéneas con precios mayoritariamente por debajo de los 400 millones, mientras que el estrato 6 experimenta un salto drástico en su mediana, una caja sumamente ancha y múltiples valores atípicos que rozan o superan los 1,500 millones de pesos, reflejando la alta exclusividad y dispersión del mercado de lujo en este sector de la ciudad.

Al observar la dispersión de los datos, queda en evidencia que el mercado de apartamentos en el Sur está fuertemente dominado por los estratos 5 (azul) y 6 (rosa). Existe un clúster sumamente denso de propiedades por debajo de los 200 m² y los 800 millones de pesos. Sin embargo, en el estrato 6 se observa una pendiente mucho más pronunciada: el precio se dispara rápidamente a medida que aumenta el área, superando los 1,600 millones en propiedades de apenas 300 a 400 m². El gráfico también revela anomalías importantes (outliers) en el estrato 5, como apartamentos registrados con áreas desproporcionadas (ej. cerca de 600 m² o 900 m²) pero con precios de venta inferiores a 400 millones. Estos registros atípicos, que probablemente corresponden a errores de digitación en el área al momento de publicar la oferta, son los responsables de la pérdida de normalidad en las colas de nuestros residuales analizados en el Paso 4.

3. Estimación e interpretación del modelo

mod_sur <- lm(preciom ~ areaconst + estrato + habitaciones + parqueaderos + banios, data = base_sur)
summary(mod_sur)
## 
## Call:
## lm(formula = preciom ~ areaconst + estrato + habitaciones + parqueaderos + 
##     banios, data = base_sur)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -991.44  -42.03   -1.76   41.15  939.74 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -263.75863   18.17599 -14.511  < 2e-16 ***
## areaconst       1.17574    0.06291  18.690  < 2e-16 ***
## estrato        56.89507    3.66186  15.537  < 2e-16 ***
## habitaciones  -18.96769    4.58071  -4.141 3.63e-05 ***
## parqueaderos   84.48258    5.34643  15.802  < 2e-16 ***
## banios         48.78437    4.08331  11.947  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 96.66 on 1672 degrees of freedom
## Multiple R-squared:  0.733,  Adjusted R-squared:  0.7322 
## F-statistic:   918 on 5 and 1672 DF,  p-value: < 2.2e-16

El modelo multivariado para la zona sur es estadísticamente muy sólido (p-value < 2.2e-16). El R-cuadrado ajustado es de 0.7322, lo que indica que las características físicas explican un excelente 73.22% de la variabilidad del precio en los apartamentos del sur. A diferencia de las casas del norte, aquí todas las variables son estadísticamente significativas (p < 0.05):

  • Variables que suman valor: Cada metro cuadrado adicional incrementa el precio en $1.17 millones de pesos. Un parqueadero extra es un bien de altísimo valor en los apartamentos, sumando $84.48 millones al precio, mientras que cada baño adicional suma $48.78 millones. Subir de estrato incrementa el valor en $56.89 millones.

  • Variables que restan valor: Curiosamente, el coeficiente de las habitaciones es negativo (-$18.96 millones). Esto tiene un sentido lógico impecable en el mercado inmobiliario: si se mantiene el metraje total constante (ej. 100 m²), dividirlo en más habitaciones significa que los espacios serán más pequeños y apretados, lo cual penaliza el precio frente a un apartamento con el mismo metraje pero con espacios más amplios y lujosos.

4. Validación de supuestos

par(mfrow = c(2, 2))
plot(mod_sur)

  • Linealidad y Homocedasticidad: Los gráficos “Residuals vs Fitted” y “Scale-Location” evidencian una clara forma de embudo o abanico a medida que aumentan los valores. Esto confirma la presencia de heterocedasticidad; es decir, el modelo pierde precisión y la varianza de los errores se dispara en los apartamentos más costosos.
  • Normalidad: El “Q-Q Plot” muestra desviaciones pronunciadas en la cola superior (identificadas en los puntos atípicos como el 2795 y 1521). Esto indica que las propiedades de súper lujo rompen la distribución normal de los residuos.

  • Sugerencia de corrección: Dado el incumplimiento de la homocedasticidad y normalidad en los valores altos, la recomendación técnica principal para robustecer este modelo es aplicar una transformación logarítmica sobre la variable dependiente, modelando lm(log(preciom) ~ ... ).

5. Predicción puntual (Solicitud 2)

Se requiere predecir el valor de un Apartamento de 300 m², estrato 5, 5 habitaciones, 3 baños y 3 parqueaderos

apto_solicitado <- data.frame(areaconst = 300, parqueaderos = 3, banios = 3, habitaciones = 5, estrato = 5)
pred_sur <- predict(mod_sur, newdata = apto_solicitado, interval = "confidence")
pred_sur
##       fit      lwr      upr
## 1 678.401 650.2282 706.5738

Análisis de la Estimación Puntual: Al evaluar las características del apartamento solicitado para la Zona Sur (300 m², estrato 5, 5 habitaciones, 3 baños y 3 parqueaderos) en nuestro modelo, obtenemos los siguientes resultados:

  • Precio estimado (fit): $678.4 millones de pesos.

  • Intervalo de confianza al 95%: El valor de mercado para una propiedad con estas especificaciones exactas oscila entre los $650.2 millones (lwr) y los $706.5 millones (upr).

Conclusión frente al presupuesto: La solicitud es altamente viable y financieramente muy cómoda para C&A. El crédito preaprobado por la compañía internacional es de $850 millones, mientras que el límite superior (el escenario más costoso esperado) de nuestra predicción es de $706.5 millones. Esto deja a la empresa con un excedente a favor de más de $140 millones, otorgándoles un excelente poder de negociación y la flexibilidad necesaria para buscar inmuebles de mayor lujo, con mejores acabados o incluso ubicados en estrato 6, sin ningún riesgo de exceder su tope financiero.

6. Sugerencia de ofertas potenciales

ofertas_sur <- base_sur %>% 
  filter(preciom <= 850, areaconst >= 250, habitaciones >= 4, estrato >= 5) %>% 
  arrange(desc(areaconst)) %>% 
  head(5)

leaflet(ofertas_sur) %>% 
  addTiles() %>% 
  addCircleMarkers(~longitud, ~latitud, radius = 6, color = "green", 
                   popup = ~paste("Barrio:", barrio, "<br>Precio:", preciom, "M"))
# Tabla resumen de las ofertas recomendadas
kable(ofertas_sur %>% select(barrio, preciom, areaconst, habitaciones, banios, parqueaderos, estrato), 
      caption = "Top 5 Ofertas Seleccionadas - Zona Sur (Max 850M)")
Top 5 Ofertas Seleccionadas - Zona Sur (Max 850M)
barrio preciom areaconst habitaciones banios parqueaderos estrato
el ingenio 690 486.00 4 4 2 5
cuarto de legua 520 320.00 4 4 2 5
cuarto de legua 410 295.55 4 4 2 5
cuarto de legua 490 288.00 4 5 1 5
ciudadela pasoancho 650 275.00 5 5 2 5

Análisis de Ofertas: Las propiedades listadas representan opciones premium en el sur de la ciudad. Al filtrar por áreas superiores a 250 m² y priorizar el estrato 5 o 6, aseguramos que las familias cuenten con el espacio requerido. Todas las opciones están cubiertas al 100% por el límite de los $850 millones, haciendo que el proceso de adquisición sea mas sencillo.