1 CONTEXTO, OBJETIVO Y ALCANCE DEL ANÁLISIS

CONTEXTO Una empresa inmobiliaria necesita entender el mercado de vivienda en la ciudad de Cali, usando una base de datos.

1.1 OBJETIVO GENERAL

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

1.2 TÉCNICAS APLICADAS

  1. Exploración y limpieza de datos.
  2. Correlaciones e interdependencias
  3. ACP (Análisis de Componentes Principales): con la reducción de dimensionalidad. donde se evaluarán dos escenarios.
    • Escenario A : parqueaderos imputado (mediana) para no perder muestra
    • Escenario B : sin parqueaderos, para evaluar estabilidad del ACP
  4. Clustering (k-means) sobre las componentes principales de la segmentación
  5. Análisis de Correspondencias (CA): asociación entre zona y estrato

1.3 UNIDADES / INTERPRETACIÓN DE VARIABLES

  • precio: el precio en la base de datos está dado en millones de pesos.
  • areaconst: área construida tiene una dimensión en metros cuadrados

1.4 Para tener en cuenta

  • ‘estrato’ es categórica, NO se interpreta como continua en ACP.
  • ‘piso’ tiene alta proporción de NA: se evidencia y se excluye del multivariado.
  • ‘barrio’ tiene alta cardinalidad: se usa solo descriptivo en un top 15 para no dejarlo por fuera.
  • Coordenadas: se usarán solo para visualización en un grafico de dispersión de puntos pero no en para ACP.

2 CARGA DE DATOS

  • Cargamos librerías para manipulación, EDA, visualización y modelos multivariados.
  • Cargamos la base vivienda desde paqueteMODELOS.
  • Creamos ‘row_id’ para poder alinear filas cuando pasamos por PCA y clustering.
## 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…
Data summary
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 ▇▇▇▇▇

3 LIMPIEZA: TIPOS, VARIABLES DERIVADAS, FALTANTES, CARDINALIDAD

  • Convertimos variables categóricas a factor (zona, tipo, barrio, piso, estrato).
  • Convertimos a numerico el precio de las viviendas, ademas realizamos transformación de escala.
##    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

3.1 FALTANTES

  • Calculamos proporción de NA por variable.
## # A tibble: 2 × 2
##   variable     prop_na
##   <chr>          <dbl>
## 1 piso           0.317
## 2 parqueaderos   0.193

JUSTIFICACIÓN:

  • Se excluye piso del análisis multivariado porque presenta muchos NA; incluirlo reduciría demasiado la muestra o exigiría imputación categórica masiva.

3.2 CARDINALIDAD

  • Medimos número de categorías por variable categórica ya que la alta cardinaliadd hace que CA sea dificil de interpretar y muy dispersa, por lo tanto hacemos como descriptivo el barrio y lo mostramos como un top 15.
## # A tibble: 5 × 2
##   variable n_categorias
##   <chr>           <int>
## 1 zona                5
## 2 tipo                2
## 3 estrato             4
## 4 barrio            436
## 5 piso               12

4 ANÁLISIS EXPLORATORIO DE DATOS

  • Entender distribuciones, asimetrías y posible presencia de outliers.
  • Ver concentración de oferta por zona, tipo y estrato.
  • Obtener una primera lectura espacial con coordenadas.

INTERPRETACIÓN (Figura 1):

  • Es común observar asimetría positiva en precio y área,lo cual sugiere presencia de propiedades premium.
  • Baños y habitaciones suelen tener menor dispersión relativa con lo que indica que es es viable escalar antes del ACP.

INTERPRETACIÓN (Figura 2):

  • Se obserban outliers especialmente en precio y área, por eso en el ACP usamos scale.unit = TRUE, evitando que los atributos con grandes escalas dominen el análisis e ingresen sesgos.

INTERPRETACIÓN (Figura 3):

  • Identifica concentración de publicaciones por zonas, y esto es util para el analisis territorial.

INTERPRETACIÓN (Figura 4):

  • muestra si el mercado está dominado por apartamentos o casas, esto influye en estrategias de compra/venta y segmentación.

INTERPRETACIÓN (Figura 5):

  • Mide la composición socioeconómica de la oferta publicada, aunque nuestro atributo de estrato es categorico.

INTERPRETACIÓN (Figura 6):

  • Señala barrios más frecuentes en publicaciones.

INTERPRETACIÓN (Figura 7):

  • Muestra la concentración espacial de publicaciones

5 CORRELACIÓN (PEARSON + SPEARMAN)

  • Calculamos y visualizamos relaciones entre variables numéricas,Pearson: relaciones lineales
  • Spearman: relaciones no tan lineales, con lo que podemos ver la justificación de la reducción dimensional

Tabla 1. Correlación de Pearson.
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
Tabla 2. Correlación de Spearman.
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:

  • Se observa correlación positiva entre precio y área.
  • Parqueaderos suele asociarse a mayor precio.
  • Baños/habitaciones tienden a correlacionar.
  • Una alta correlación muestra redundancia, lo que indica candidatos para el ACP.

6 ACP PRINCIPAL (A): CON PARQUEADEROS IMPUTADO

  • Creamos un set numérico para ACP: precio, área, parqueaderos, baños, habitaciones.
  • Imputamos parqueaderos con la mediana
  • Ejecutamos ACP con estandarización (scale.unit = TRUE). .

INTERPRETACIÓN (ACP-A):

  • PC1 suele representar “Tamaño-Valor” (área y precio se alinean).
  • PC2 suele capturar variabilidad en configuración/amenidades (baños/habitaciones/parqueaderos).
  • Se revisa % varianza explicada por PC1+PC2 para decidir cuántas componentes usar en clustering.

7 CLUSTERING SOBRE ACP-A (k-means)

  • Usamos las coordenadas de individuos en PCA (scores) para segmentar.
  • Tomamos PC1 y PC2 por interpretabilidad y varianza.
  • luego ajustamos k-means con codo y con silhouette.

(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):

  • Con el perfilamiento se construyen segmentos típicos:
    • Cluster de entrada: menor precio/área/amenidades
    • Cluster medio: viviendas familiares
    • Cluster premium: alto precio/área y mayores amenidades
  • Se recomienda describir cada cluster con medias/medianas y su tamaño (n).

8 ACP SENSIBILIDAD (B): SIN PARQUEADEROS

  • Repetimos ACP eliminando parqueaderos.
## # 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):

  • Si PC1 y PC2 mantienen sentido parecido el resultado es mas fuerte, ademas incluir parqueaderos mejora separación de la segmentación. -se justifica mantener el escenario A como principal.

9 CORRESPONDENCIAS: ZONA VS ESTRATO

  • Construimos tabla de contingencia zona x estrato y aplicamos el analisis de correspondencias.

INTERPRETACIÓN (CA):

  • Categorías cercanas en el plano factorial tienden a estar asociadas.
  • Zonas cercanas a estratos altos sugieren concentración de oferta premium.
  • Esto apoya decisiones territoriales (inversión, marketing, captación).

10 CONCLUSIONES

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.