Una empresa inmobiliaria de una gran ciudad quiere entender mejor el comportamiento de la oferta de vivienda urbana para tomar decisiones estratégicas sobre compra, venta y valoración de inmuebles.
La empresa dispone de una base de datos con información detallada de propiedades residenciales (precio, área construida, estrato, dotación, zona, tipo de vivienda, entre otros atributos).
El objetivo es realizar un análisis integral que permita identificar patrones, relaciones entre variables y segmentos de mercado relevantes, para respaldar decisiones de negocio en un entorno competitivo.
En este informe se analiza la base vivienda del paquete
paqueteMODELOS con cuatro componentes principales:
Siguiendo las instrucciónes de los encuentros sincronicos, ID, latitud y longitud no se incluyen en los análisis multivariados (ACP ni clustering).
Latitud y longitud se emplean únicamente para visualizar espacialmente los clústeres ya obtenidos.
Realizar un análisis descriptivo y multivariado de la oferta de vivienda urbana que permita identificar patrones y segmentos de mercado, para apoyar la toma de decisiones estratégicas de la empresa inmobiliaria.
vivienda## spc_tbl_ [8,322 × 13] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ id : num [1:8322] 1147 1169 1350 5992 1212 ...
## $ zona : chr [1:8322] "Zona Oriente" "Zona Oriente" "Zona Oriente" "Zona Sur" ...
## $ piso : chr [1:8322] NA NA NA "02" ...
## $ estrato : num [1:8322] 3 3 3 4 5 5 4 5 5 5 ...
## $ preciom : num [1:8322] 250 320 350 400 260 240 220 310 320 780 ...
## $ areaconst : num [1:8322] 70 120 220 280 90 87 52 137 150 380 ...
## $ parqueaderos: num [1:8322] 1 1 2 3 1 1 2 2 2 2 ...
## $ banios : num [1:8322] 3 2 2 5 2 3 2 3 4 3 ...
## $ habitaciones: num [1:8322] 6 3 4 3 3 3 3 4 6 3 ...
## $ tipo : chr [1:8322] "Casa" "Casa" "Casa" "Casa" ...
## $ barrio : chr [1:8322] "20 de julio" "20 de julio" "20 de julio" "3 de julio" ...
## $ longitud : num [1:8322] -76.5 -76.5 -76.5 -76.5 -76.5 ...
## $ latitud : num [1:8322] 3.43 3.43 3.44 3.44 3.46 ...
## - attr(*, "spec")=List of 3
## ..$ cols :List of 13
## .. ..$ id : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ zona : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ piso : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ estrato : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ preciom : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ areaconst : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ parqueaderos: list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ banios : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ habitaciones: list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ tipo : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ barrio : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ longitud : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ latitud : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## ..$ default: list()
## .. ..- attr(*, "class")= chr [1:2] "collector_guess" "collector"
## ..$ delim : chr ";"
## ..- attr(*, "class")= chr "col_spec"
## - attr(*, "problems")=<externalptr>
En la descripción de la actividad se observa, por ejemplo, la
siguiente estructura (salida de str(vivienda)):
id, estrato,
preciom, areaconst, parqueaderos,
banios, habitaciones, longitud,
latitud, piso (cuando está disponible).zona, tipo,
barrio, entre otras si estuvieran presentes.## [1] 8319 13
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 58.0 220.0 330.0 433.9 540.0 1999.0
Analisis de resultados:
La base depurada utilizada para el análisis está conformada por 8.319 observaciones y 13 variables, lo que proporciona un volumen de información suficientemente amplio para caracterizar la oferta de vivienda urbana. En particular, el precio del inmueble (preciom) presenta valores que oscilan entre 58 y 1.999 millones, con un primer cuartil de 220 millones, mediana de 330 millones y tercer cuartil de 540 millones. Esto indica que el 50 % central de las viviendas se concentra aproximadamente entre 220 y 540 millones, mientras que la media (433,9 millones) es superior a la mediana, evidenciando una distribución asimétrica hacia la derecha, influenciada por un grupo de inmuebles de alto valor que elevan el promedio. Esta heterogeneidad en los precios sugiere la existencia de segmentos de mercado claramente diferenciados dentro de la muestra analizada.
Siguiendo los lineamientospara el análisis estadístico principal (ACP y clustering) se excluyen:
id: identificador único del inmueble.
No aporta información sobre sus características físicas o de mercado y
podría distorsionar las escalas.
latitud y longitud: son coordenadas
geográficas.
Aunque son útiles para mapas, se prefiere representar la localización en los modelos multivariados mediante variables como zona, barrio o estrato, evitando que las coordenadas numéricas dominen la estructura de distancias.
Estas variables se usarán únicamente para:
## preciom areaconst estrato parqueaderos
## Min. : 58.0 Min. : 30.0 Min. :3.000 Min. : 1.000
## 1st Qu.: 220.0 1st Qu.: 80.0 1st Qu.:4.000 1st Qu.: 1.000
## Median : 330.0 Median : 123.0 Median :5.000 Median : 2.000
## Mean : 433.9 Mean : 174.9 Mean :4.634 Mean : 1.835
## 3rd Qu.: 540.0 3rd Qu.: 229.0 3rd Qu.:5.000 3rd Qu.: 2.000
## Max. :1999.0 Max. :1745.0 Max. :6.000 Max. :10.000
## NA's :1602
## banios habitaciones
## Min. : 0.000 Min. : 0.000
## 1st Qu.: 2.000 1st Qu.: 3.000
## Median : 3.000 Median : 3.000
## Mean : 3.111 Mean : 3.605
## 3rd Qu.: 4.000 3rd Qu.: 4.000
## Max. :10.000 Max. :10.000
##
Distribución de precio y área construida por estrato.
Distribución de precio y área construida por estrato.
Analisis de resultados boxsplots:
Los diagramas de caja confirman una relación clara entre el estrato socioeconómico y tanto el precio como el tamaño de las viviendas. A medida que se pasa de estrato 3 a 6 se observa un incremento progresivo en la mediana de precio, siendo el estrato 6 el que concentra los inmuebles más costosos y con mayor dispersión, lo que sugiere la presencia de un segmento de alto valor con fuerte heterogeneidad interna. De forma coherente, la área construida también tiende a aumentar con el estrato: las viviendas de estratos 5 y 6 presentan medianas de área superiores y una cola derecha más pronunciada, con numerosos valores atípicos que corresponden a inmuebles de gran tamaño. En conjunto, estos resultados indican que los estratos altos no solo agrupan viviendas más caras, sino también, en promedio, más amplias, reforzando la idea de mercados inmobiliarios diferenciados por nivel socioeconómico.
Definimos una función de mediana segura e imputamos faltantes solo para construir una matriz numérica completa:
## estrato preciom areaconst parqueaderos
## Min. :3.000 Min. : 58.0 Min. : 30.0 Min. : 1.000
## 1st Qu.:4.000 1st Qu.: 220.0 1st Qu.: 80.0 1st Qu.: 1.000
## Median :5.000 Median : 330.0 Median : 123.0 Median : 2.000
## Mean :4.634 Mean : 433.9 Mean : 174.9 Mean : 1.867
## 3rd Qu.:5.000 3rd Qu.: 540.0 3rd Qu.: 229.0 3rd Qu.: 2.000
## Max. :6.000 Max. :1999.0 Max. :1745.0 Max. :10.000
## banios habitaciones piso
## Min. : 0.000 Min. : 0.000 Min. : 1.000
## 1st Qu.: 2.000 1st Qu.: 3.000 1st Qu.: 2.000
## Median : 3.000 Median : 3.000 Median : 3.000
## Mean : 3.111 Mean : 3.605 Mean : 3.527
## 3rd Qu.: 4.000 3rd Qu.: 4.000 3rd Qu.: 4.000
## Max. :10.000 Max. :10.000 Max. :12.000
| PC | var_exp | var_acum |
|---|---|---|
| PC1 | 0.483 | 0.483 |
| PC2 | 0.192 | 0.675 |
| PC3 | 0.123 | 0.798 |
| PC4 | 0.086 | 0.885 |
| PC5 | 0.055 | 0.940 |
| PC6 | 0.034 | 0.974 |
| PC7 | 0.026 | 1.000 |
Gráfico de sedimentación.
Analisis de resultados:
El análisis de componentes principales muestra que el PC1 explica por sí solo el 48,3 % de la variabilidad total de las variables numéricas consideradas, mientras que el PC2 aporta un 19,2 % adicional. En conjunto, los dos primeros componentes concentran aproximadamente un 67,5 % de la varianza, y al incorporar el PC3 se alcanza cerca del 79,8 %. A partir del PC4 la contribución marginal de cada componente disminuye de forma importante (todos por debajo del 10 %), lo cual también se aprecia en el scree plot mediante un “codo” claro después de los primeros componentes. Estos resultados sugieren que una representación reducida en dos o tres dimensiones es suficiente para capturar la mayor parte de la información relevante del conjunto de datos, facilitando la interpretación de los patrones subyacentes en la oferta de vivienda.
Círculo de correlaciones de las variables en el ACP.
Analisis de resultados:
El círculo de correlaciones permite interpretar el significado de los dos primeros componentes principales. El PC1 (Dim1), que explica el 48,3 % de la varianza, se asocia fuertemente y en sentido positivo con el precio, el área construida, el número de baños, parqueaderos y habitaciones, así como con el estrato. Esto indica que este componente resume un eje claro de tamaño y nivel de dotación–valor del inmueble: viviendas más amplias, con mayor número de habitaciones y servicios, ubicadas en estratos más altos, tienden a presentar precios más elevados. Por su parte, el PC2 (Dim2), que aporta un 19,2 % adicional de la variabilidad, está dominado principalmente por la variable piso, con carga negativa, frente a habitaciones, con carga positiva; este eje puede interpretarse como un contraste entre viviendas ubicadas en pisos más altos (por ejemplo, apartamentos en torres) y aquellas con mayor número de habitaciones, más cercanas al perfil de casas o apartamentos amplios en pisos bajos.
Mapa de individuos del ACP coloreado por estrato.
Analisis de resultados:¨
El mapa de individuos del ACP, coloreado por estrato, muestra un gradiente muy claro a lo largo del primer componente (Dim1): las viviendas de estrato 3 se concentran principalmente en la parte izquierda del plano, mientras que las de estrato 6 se ubican mayoritariamente hacia la derecha, con los estratos 4 y 5 ocupando posiciones intermedias. Esto confirma que el PC1 funciona como un eje de nivel socioeconómico y de tamaño/dotación del inmueble: a medida que aumenta el estrato, los inmuebles tienden a tener mayor precio, área y mejor dotación, desplazándose hacia valores más altos de Dim1. Las elipses de concentración muestran cierta superposición entre estratos contiguos (por ejemplo, 3–4 y 4–5), lo cual es esperable en un mercado continuo, pero aun así se observa una separación global consistente que respalda la utilidad del ACP para diferenciar perfiles de vivienda según estrato.
También exploramos la relación entre los componentes y el precio:
## [,1]
## PC1 0.87654433
## PC2 -0.27603939
## PC3 0.04319782
## PC4 0.15851622
Primero creamos indicadores de faltantes para piso y parqueaderos y luego armamos la matriz mixta para clustering.
## 'data.frame': 8319 obs. of 10 variables:
## $ zona : Factor w/ 5 levels "Zona Centro",..: 4 4 4 5 2 2 2 2 2 2 ...
## $ tipo : Factor w/ 2 levels "Apartamento",..: 2 2 2 2 1 1 1 1 2 2 ...
## $ estrato : num 3 3 3 4 5 5 4 5 5 5 ...
## $ areaconst : num 70 120 220 280 90 87 52 137 150 380 ...
## $ banios : num 3 2 2 5 2 3 2 3 4 3 ...
## $ habitaciones: num 6 3 4 3 3 3 3 4 6 3 ...
## $ parqueaderos: num 1 1 2 3 1 1 2 2 2 2 ...
## $ piso : num 1.58 2.33 1.97 2 1 ...
## $ piso_miss : num 1 1 1 0 0 0 0 0 0 0 ...
## $ parq_miss : num 0 0 0 0 0 0 0 0 0 0 ...
## - attr(*, "spec")=List of 3
## ..$ cols :List of 13
## .. ..$ id : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ zona : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ piso : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ estrato : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ preciom : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ areaconst : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ parqueaderos: list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ banios : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ habitaciones: list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ tipo : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ barrio : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ longitud : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ latitud : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## ..$ default: list()
## .. ..- attr(*, "class")= chr [1:2] "collector_guess" "collector"
## ..$ delim : chr ";"
## ..- attr(*, "class")= chr "col_spec"
## - attr(*, "problems")=<externalptr>
## [1] 8319 10
Analisis de resultados:
se obtuvo una matriz de 8319 inmuebles proyectados en un espacio de 10 dimensiones (componentes factoriales). Es decir, cada vivienda queda representada no por todas las variables originales (categóricas y numéricas), sino por 10 ejes sintéticos que concentran la información conjunta de zona, tipo, estrato, área, baños, habitaciones, parqueaderos, piso e indicadores de faltantes. Este espacio reducido mantiene la estructura esencial de las relaciones entre variables y, al mismo tiempo, simplifica el problema de clasificación, proporcionando una base más estable y eficiente para el posterior análisis de conglomerados.
| k | silhouette |
|---|---|
| 2 | 0.2344 |
| 3 | 0.2200 |
| 4 | 0.2611 |
| 5 | 0.2799 |
| 6 | 0.2707 |
| 7 | 0.2730 |
| 8 | 0.2541 |
Selección de K mediante el índice de Silhouette promedio.
## [1] 5
Analisis de resultados:
El análisis del índice de Silhouette promedio sugiere que la mejor partición para el conjunto de datos se obtiene con K = 5 clústeres, ya que en este caso se alcanza el valor más alto del índice (≈0,28), superior al observado para los demás valores de K. Esto indica que, con cinco grupos, se logra un compromiso razonable entre cohesión interna (observaciones relativamente cercanas dentro de cada clúster) y separación externa (distancia entre clústeres). Aunque los valores de Silhouette no son muy elevados, lo que revela cierta superposición entre grupos, esperable en datos inmobiliarios reales, el comportamiento de la curva muestra un claro incremento hasta K = 5 y luego una ligera disminución, por lo que resulta justificable adoptar esta solución de cinco segmentos para interpretar y describir los diferentes perfiles de viviendas.
Mapa FAMD de individuos coloreados por clúster.
Analisis de resultados:
El mapa FAMD de individuos coloreado por clúster muestra una segmentación en cinco grupos bien definidos, aunque con cierta superposición en las zonas de frontera. El clúster 1 (rojo) se concentra principalmente en la parte superior del plano factorial, asociado a valores altos en la segunda dimensión (Dim2), mientras que los clústeres 2 y 3 (amarillo y verde) se ubican en la zona inferior, con valores negativos de Dim2, lo que sugiere un perfil claramente diferenciado respecto a los grupos superiores. El clúster 4 (azul) se sitúa alrededor de la región central–izquierda, con valores moderados de ambas dimensiones, mientras que el clúster 5 (magenta) se desplaza hacia la derecha, presentando valores altos en la primera dimensión (Dim1). En conjunto, la gráfica confirma que el espacio generado por el FAMD permite separar razonablemente distintos perfiles de vivienda, que luego pueden interpretarse en términos de variables originales (estrato, área, dotación, tipo y zona) para caracterizar los segmentos del mercado inmobiliario.
| cluster | n | precio_med | precio_p25 | precio_p75 | areaconst_med | banios_med | hab_med | parq_med | piso_med | estrato_med |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1106 | 580 | 400.0 | 900.0 | 164 | 3.0 | 3 | 2 | 4 | 6 |
| 2 | 351 | 210 | 145.0 | 290.0 | 160 | 2.0 | 4 | 1 | 2 | 3 |
| 3 | 124 | 297 | 188.8 | 361.2 | 160 | 2.5 | 4 | 1 | 2 | 3 |
| 4 | 4500 | 245 | 164.0 | 325.0 | 86 | 2.0 | 3 | 1 | 4 | 4 |
| 5 | 2238 | 550 | 405.0 | 850.0 | 290 | 4.0 | 4 | 2 | 2 | 5 |
Distribución de clústeres por zona.
Analisis de resultados:
El perfil numérico de los clústeres muestra segmentos de vivienda claramente diferenciados. El clúster 1 agrupa inmuebles de estrato 6, con precio mediano de 580 millones, áreas construidas intermedias (164 m²) y buena dotación (3 baños, 3 habitaciones y 2 parqueaderos), representando un segmento de alta gama en zonas consolidadas. Los clústeres 2 y 3 corresponden a viviendas de estrato 3, con precios medianos más bajos (210 y 297 millones) pero áreas cercanas a 160 m² y 4 habitaciones en promedio, es decir, inmuebles relativamente amplios pero en estratos medios-bajos. El clúster 4, que concentra la mayoría de observaciones (4.500 viviendas), presenta un perfil intermedio: estrato 4, precio mediano de 245 millones y área construida menor (86 m²), lo que sugiere unidades más compactas y masivas dentro del mercado. Finalmente, el clúster 5 refleja un segmento de estrato 5 con precios altos (mediana de 550 millones) y la mayor área construida (290 m²), además de 4 baños, 4 habitaciones y 2 parqueaderos, es decir, viviendas grandes y muy dotadas. La distribución por zona refuerza esta lectura: la Zona Oriente está prácticamente dominada por el clúster 2 (oferta de estrato 3), la Zona Centro por el clúster 3, la Zona Oeste por el clúster 1 (alta gama), mientras que la Zona Norte y la Zona Sur combinan principalmente los clústeres 4 y 5, evidenciando una fuerte segmentación geográfica del mercado inmobiliario según el tipo de vivienda y su nivel socioeconómico.
Aquí solo usamos latitud y longitud para el mapa, no para construir los clústeres.
Distribución espacial de la oferta por clúster.
Analisis de resultados:
El mapa espacial de clústeres, construido solo con latitud y longitud como recurso de visualización, muestra que los cinco segmentos identificados no se distribuyen de forma aleatoria en la ciudad, sino que tienden a concentrarse en zonas específicas, lo que evidencia una clara estructura espacial del mercado inmobiliario. Se observan áreas donde domina un único clúster, así como zonas de transición donde coexisten varios grupos, lo que coincide con la presencia de barrios mixtos en términos de estrato, tamaño y dotación de las viviendas. En conjunto, esta visualización confirma que las diferencias tipológicas detectadas en el análisis de conglomerados también se reflejan en el territorio, dando lugar a micro-mercados geográficos que la empresa inmobiliaria podría considerar al definir estrategias de segmentación y focalización comercial.
Para facilitar la interpretación, se recodifican los barrios menos frecuentes en una categoría “Otros”:
## tipo zona barrio_mca
## Apartamento:5100 Zona Centro : 124 Otros :3152
## Casa :3219 Zona Norte :1920 valle del lili:1008
## Zona Oeste :1198 ciudad jardín : 516
## Zona Oriente: 351 pance : 409
## Zona Sur :4726 la flora : 366
## santa teresita: 262
## (Other) :2606
##
## Pearson's Chi-squared test
##
## data: tab_zona_tipo
## X-squared = 690.93, df = 4, p-value < 2.2e-16
Se evalúa si la distribución del tipo de vivienda es independiente de la zona. Un p-valor pequeño indica asociación significativa.
Biplot del MCA para tipo, zona y barrio (agrupado).
Analisis de resultados:
El biplot del MCA, aunque se ve muy recargado por la gran cantidad de barrios, permite identificar patrones globales de asociación entre tipo de vivienda, zona y barrio. En primer lugar, los ejes Dim1 (5,5 %) y Dim2 (5 %) separan grupos de categorías: por un lado, ciertas zonas y barrios se ubican más próximos a la categoría Apartamento y a zonas asociadas a estratos medios–altos, mientras que otros barrios y la categoría Casa se concentran en el lado opuesto del plano, más vinculados a zonas tradicionalmente residenciales de estratos medios/bajos. La categoría “Otros” queda situada en una región relativamente central, funcionando como contenedor de barrios de baja frecuencia que no alteran la estructura principal. A pesar de que cada dimensión explica un porcentaje pequeño de la varianza (algo habitual en MCA con muchas categorías), el gráfico respalda la idea de que no todas las combinaciones zona–barrio–tipo son igual de probables, sino que existen configuraciones preferentes que reflejan la especialización de ciertas zonas de la ciudad en tipos específicos de oferta inmobiliaria.