CONTEXTO Una empresa inmobiliaria necesita entender el mercado de vivienda en la ciudad de Cali, usando una base de datos.
hacer un análisis del mercado para apoyar la toma de decisiones de compra, venta y valoración, identificando: - las relaciones entre las variables - Segmentos - Asociaciones entre variables categóricas
## Rows: 8,319
## Columns: 14
## $ id <dbl> 1147, 1169, 1350, 5992, 1212, 1724, 2326, 4386, 1209, 159…
## $ zona <chr> "Zona Oriente", "Zona Oriente", "Zona Oriente", "Zona Sur…
## $ piso <chr> NA, NA, NA, "02", "01", "01", "01", "01", "02", "02", "02…
## $ estrato <dbl> 3, 3, 3, 4, 5, 5, 4, 5, 5, 5, 6, 4, 5, 6, 4, 5, 5, 4, 5, …
## $ preciom <dbl> 250, 320, 350, 400, 260, 240, 220, 310, 320, 780, 750, 62…
## $ areaconst <dbl> 70, 120, 220, 280, 90, 87, 52, 137, 150, 380, 445, 355, 2…
## $ parqueaderos <dbl> 1, 1, 2, 3, 1, 1, 2, 2, 2, 2, NA, 3, 2, 2, 1, 4, 2, 2, 2,…
## $ banios <dbl> 3, 2, 2, 5, 2, 3, 2, 3, 4, 3, 7, 5, 6, 2, 4, 4, 4, 3, 2, …
## $ habitaciones <dbl> 6, 3, 4, 3, 3, 3, 3, 4, 6, 3, 6, 5, 6, 2, 5, 5, 4, 3, 3, …
## $ tipo <chr> "Casa", "Casa", "Casa", "Casa", "Apartamento", "Apartamen…
## $ barrio <chr> "20 de julio", "20 de julio", "20 de julio", "3 de julio"…
## $ longitud <dbl> -76.51168, -76.51237, -76.51537, -76.54000, -76.51350, -7…
## $ latitud <dbl> 3.43382, 3.43369, 3.43566, 3.43500, 3.45891, 3.36971, 3.4…
## $ row_id <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17…
| Name | df |
| Number of rows | 8319 |
| Number of columns | 14 |
| _______________________ | |
| Column type frequency: | |
| character | 4 |
| numeric | 10 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| zona | 0 | 1.00 | 8 | 12 | 0 | 5 | 0 |
| piso | 2635 | 0.68 | 2 | 2 | 0 | 12 | 0 |
| tipo | 0 | 1.00 | 4 | 11 | 0 | 2 | 0 |
| barrio | 0 | 1.00 | 4 | 29 | 0 | 436 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| id | 0 | 1.00 | 4160.00 | 2401.63 | 1.00 | 2080.50 | 4160.00 | 6239.50 | 8319.00 | ▇▇▇▇▇ |
| estrato | 0 | 1.00 | 4.63 | 1.03 | 3.00 | 4.00 | 5.00 | 5.00 | 6.00 | ▅▆▁▇▆ |
| preciom | 0 | 1.00 | 433.90 | 328.67 | 58.00 | 220.00 | 330.00 | 540.00 | 1999.00 | ▇▂▁▁▁ |
| areaconst | 0 | 1.00 | 174.93 | 142.96 | 30.00 | 80.00 | 123.00 | 229.00 | 1745.00 | ▇▁▁▁▁ |
| parqueaderos | 1602 | 0.81 | 1.84 | 1.12 | 1.00 | 1.00 | 2.00 | 2.00 | 10.00 | ▇▁▁▁▁ |
| banios | 0 | 1.00 | 3.11 | 1.43 | 0.00 | 2.00 | 3.00 | 4.00 | 10.00 | ▇▇▃▁▁ |
| habitaciones | 0 | 1.00 | 3.61 | 1.46 | 0.00 | 3.00 | 3.00 | 4.00 | 10.00 | ▂▇▂▁▁ |
| longitud | 0 | 1.00 | -76.53 | 0.02 | -76.59 | -76.54 | -76.53 | -76.52 | -76.46 | ▁▅▇▂▁ |
| latitud | 0 | 1.00 | 3.42 | 0.04 | 3.33 | 3.38 | 3.42 | 3.45 | 3.50 | ▃▇▅▇▅ |
| row_id | 0 | 1.00 | 4160.00 | 2401.63 | 1.00 | 2080.50 | 4160.00 | 6239.50 | 8319.00 | ▇▇▇▇▇ |
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 58.0 220.0 330.0 433.9 540.0 1999.0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 30.0 80.0 123.0 174.9 229.0 1745.0
## # A tibble: 2 × 2
## variable prop_na
## <chr> <dbl>
## 1 piso 0.317
## 2 parqueaderos 0.193
JUSTIFICACIÓN:
## # A tibble: 5 × 2
## variable n_categorias
## <chr> <int>
## 1 zona 5
## 2 tipo 2
## 3 estrato 4
## 4 barrio 436
## 5 piso 12
INTERPRETACIÓN (Figura 1):
INTERPRETACIÓN (Figura 2):
INTERPRETACIÓN (Figura 3):
INTERPRETACIÓN (Figura 4):
INTERPRETACIÓN (Figura 5):
INTERPRETACIÓN (Figura 6):
INTERPRETACIÓN (Figura 7):
| precio_millones | areaconst | parqueaderos | banios | habitaciones | |
|---|---|---|---|---|---|
| precio_millones | 1.00 | 0.68 | 0.69 | 0.67 | 0.27 |
| areaconst | 0.68 | 1.00 | 0.58 | 0.67 | 0.53 |
| parqueaderos | 0.69 | 0.58 | 1.00 | 0.57 | 0.28 |
| banios | 0.67 | 0.67 | 0.57 | 1.00 | 0.60 |
| habitaciones | 0.27 | 0.53 | 0.28 | 0.60 | 1.00 |
| precio_millones | areaconst | parqueaderos | banios | habitaciones | |
|---|---|---|---|---|---|
| precio_millones | 1.00 | 0.82 | 0.74 | 0.76 | 0.43 |
| areaconst | 0.82 | 1.00 | 0.64 | 0.78 | 0.66 |
| parqueaderos | 0.74 | 0.64 | 1.00 | 0.62 | 0.34 |
| banios | 0.76 | 0.78 | 0.62 | 1.00 | 0.63 |
| habitaciones | 0.43 | 0.66 | 0.34 | 0.63 | 1.00 |
INTERPRETACIÓN:
INTERPRETACIÓN (ACP-A):
(Ejemplo) k = 3. Ajustar según Figuras 13-14.
-Perfilamiento
## # A tibble: 3 × 8
## cluster n precio_media precio_mediana area_media parq_media banios_media
## <fct> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Cluster 1 4930 259. 240 96.4 1.30 2.22
## 2 Cluster 2 896 1132. 1150 425. 3.93 5.22
## 3 Cluster 3 2493 529. 500 240. 1.95 4.10
## # ℹ 1 more variable: hab_media <dbl>
INTERPRETACIÓN (Clusters):
## # A tibble: 2 × 3
## escenario n var_pc1_pc2
## <chr> <int> <dbl>
## 1 ACP-B (sin parqueaderos) 8319 86.4
## 2 ACP-A (con parqueaderos imputado) 8319 80.3
INTERPRETACIÓN (Sensibilidad A vs B):
INTERPRETACIÓN (CA):
En general, el mercado es heterogéneo. En las distribuciones y boxplots se ve una dispersión alta, sobre todo en precio y área, con valores extremos que son coherentes con publicaciones de vivienda premium. Por eso fue importante estandarizar las variables antes del ACP, para que ninguna dominara el análisis solo por su escala.
En las correlaciones se observa que precio y área tienden a moverse en la misma dirección, lo cual es consistente con la lógica del mercado: a mayor área, normalmente aparece un mayor precio. También se aprecia relación entre baños y habitaciones, y en menor medida con parqueaderos, lo que sugiere que varias variables describen una misma dimensión asociada al tamaño y a la configuración del inmueble.
El ACP permitió resumir la información en pocas dimensiones. La primera componente queda asociada principalmente al eje de tamaño/valor (precio y área), mientras que la segunda componente captura diferencias más de configuración y amenidades (habitaciones, baños y parqueaderos). Esto facilita interpretar el mercado sin perder la estructura general.
En el escenario principal (ACP-A) se imputó parqueaderos con la mediana para no perder registros y mantener una muestra más estable. En el escenario de sensibilidad (ACP-B), al excluir parqueaderos, la estructura general se mantiene, lo que indica que las conclusiones principales son consistentes. Aun así, cuando parqueaderos se incluye, suele ayudar a separar mejor inmuebles con mayor nivel de amenidades.
Con k-means sobre los scores del ACP se obtienen segmentos que son fáciles de interpretar. El perfilamiento por cluster sugiere tres grupos típicos: uno de entrada (menores valores), uno intermedio (vivienda familiar) y uno premium (mayores valores y más amenidades). Esta segmentación es útil porque traduce el análisis en grupos accionables.
El análisis de correspondencias entre zona y estrato muestra asociación territorial: algunas zonas aparecen más cercanas a estratos altos y otras se relacionan más con estratos medios o bajos. Esto no implica causalidad, pero sí sirve como lectura descriptiva para entender cómo se distribuye la oferta por la ciudad.