El presente informe analiza la base de datos de propiedades residenciales urbanas de la empresa, aplicando tres técnicas como la de análisis de componentes principales (ACP) que identifica las variables más influyentes en la variación de precios y características de la oferta, el análisis de conglomerados que determinaría la homogeneidad entre dichas variables, buscando las mejores ofertas específicas en diferentes partes de la ciudad y en diferentes estratos socioeconómicos y finalmente, el análisis de correspondencia que determinaría bajo las categóricas como tipo de vivienda, zona y barrio de las variables uno más patrones de comportamiento de la oferta en el mercado inmobiliario.
Los resultados permiten segmentar el mercado y priorizar atributos clave para optimizar la compra, venta y valoración de los inmuebles.
Obtener una comprensión holística del mercado inmobiliario urbano, identificando patrones, relaciones y segmentaciones que permitan guiar las decisiones estratégicas y optimizar la rentabilidad en un entorno competitivo.
Fuente de datos: Base vivienda del paquete paqueteMODELOS en R.
Tratamiento previo:
Filtrado de variables numéricas.
Estandarización para evitar sesgos por diferencias de escala.
Criterios de interpretación:
Porcentaje de varianza explicada.
Cargas de las variables (loadings).
Visualizaciones (Scree Plot, Biplot, gráficos por contribución).
La base de datos utilizada corresponde al conjunto vivienda proveniente del paquete paqueteMET. Esta contiene un total de 8322 observaciones (propiedades residenciales) y 9 variables, todas estandarizadas que describen características físicas, económicas y de ubicación de cada inmueble, tales como superficie, precio, número de habitaciones, antigüedad, entre otras.
ID: Identificador de la propiedad, con valores normalizados entre -1.73 y 1.73.
Estrato socioeconómico: Variable categórica transformada a escala numérica, con valores entre -1.59 y 1.33.
Precio: Registrado como preciom (precio en millones de pesos colombianos), normalizado, con valores entre -1.14 y 4.76 (este último corresponde a propiedades con precios significativamente superiores a la media).
Área construida (areaconst): Valores entre -1.01 y 10.98, reflejando gran dispersión en tamaños de construcción.
Parqueaderos: Tomando áreas desde -0.82 hasta 8.08, lo que indica propiedades con un número excepcionalmente alto de plazas de estacionamiento.
Baños: Con un rango entre -2.17 y 4.82.
Habitaciones: Con un rango de -2.47 a 4.38, indicando propiedades que poseen áreas muy pequeñas hasta residencias de gran tamaño.
Longitud y latitud: Coordenadas geográficas transformadas, con rangos aproximados de -3.48 a 3.77 y -1.98 a 1.87 respectivamente, que ubican las propiedades en el espacio urbano.
El preprocesamiento previo ha dejado los datos completos y listos para el análisis multivariado, sin valores perdidos, lo que maximiza la confiabilidad y representatividad del estudio.
Se verificó que no existen valores faltantes en ninguna variable, por lo que no fue necesario eliminar observaciones. Esto asegura que el análisis se realice sobre la totalidad de la información disponible, maximizando la representatividad y consistencia de los resultados.
# if (!requireNamespace("paqueteMODELOS", quietly = TRUE)) {
# install.packages("paqueteMODELOS")
# }
library(paqueteMODELOS)
# Base de datos vivienda
data("vivienda")
# Seleccionar variables numéricas
#library(dplyr)
vivi_num <- vivienda %>% select(where(is.numeric))
# Reemplazar infinitos por NA
vivi_num[!is.finite(as.matrix(vivi_num))] <- NA
# Eliminar columnas con todos NA o varianza cero
vivi_num <- vivi_num %>% select(where(~ !all(is.na(.))))
vivi_num <- vivi_num %>% select(where(~ var(., na.rm = TRUE) != 0))
# Imputar valores NA con la media de cada columna
vivi_num <- vivi_num %>% mutate(across(everything(), ~ ifelse(is.na(.), mean(., na.rm = TRUE), .)))
# Estandarizar datos
vivi_sc <- scale(vivi_num)
# Análisis PCA
pca_res <- prcomp(vivi_sc, center = TRUE, scale. = FALSE)
El análisis de componentes principales aplicado a la base de datos de propiedades urbanas revela que:
El primer componente principal (PC1) explica el 42,7% de la variabilidad total del conjunto de datos.
El segundo componente principal (PC2) aporta un 20,9% adicional, llevando la varianza acumulada a 63,61%.
El tercer (PC3) y cuarto componente principal (PC4) explican tan solo un 10,8% y 10%, respectivamente de la variabilidad del conjunto de datos. Podria interpretarse el poder poseer viviendas pequeñas, pocos cuartos y un bajo precio.
Ambos suman hasta un 84,45% de varianza explicada acumulada. Esto sugiere que con 4 componentes se retiene la mayor parte de la estructura informativa del dataset.
Los componentes restantes (PC5 a PC9) aportan cantidades menores de varianza (entre 6,2% y 0,4% cada uno), lo que indica que tienen menor relevancia para describir las variaciones más importantes del mercado inmobiliario urbano.
Hay un claro “codo” (o punto donde la pendiente cambia drásticamente, pasando de una caída fuerte a una caída mucho más suave) después del PC4, lo que sugiere que los primeros cuatro componentes retienen la mayor parte de la información útil.
Por tanto, usar 4 componentes para el análisis posterior (clustering y posterior visualización) es adecuado y suficiente para simplificar la información sin perder demasiada variabilidad porque después de ese componente la ganancia de información (varianza explicada adicional) es pequeña.
El siguiente grafico indica un análisis de las proyecciones sobre PC1 y PC2.
Con el primer componente que aporta el 42,7% de la variabilidad, se muestra un indice de casi la mitad de la información relevante que puede ser resumida en una sola dimensión, probablemente asociada a un patrón combinado entre precio, área construida y número de habitaciones, que suelen estar altamente correlacionados.
Con respecto al PC2, podría estar capturando variaciones geográficas entre latitud y longitud o tal véz, variaciones socioeconómicas como en el estrato que no están alineadas con el PC1.
Las variables que tienen “flechas largas” y apuntan en una dirección muestran las que son más influyentes en la variabilidad captada por ese componente.
El tercer gráfico indica qué variables aportan más a cada componente.
Al aplicar el análisis de conglomerados a las propiedades residenciales urbanas, se busca segmentar el mercado en grupos homogéneos según características como:
O en otros atributos estandarizados. Esto facilita la comprensión de las dinámicas y perfiles de oferta en diferentes zonas y estratos socioeconómicos, además permite adaptar estrategias de venta, inversión y valoración.
Para este caso se utilizó el metodo de los k-means que agrupa las observaciones en un número fijo (k) de clusters, optimizando la similitud y efectividad con los datos estándarizados.
library(dplyr)
library(factoextra) # Ojo:para visualizaciones del clustering
# Elección número óptimo de clusters con método del codo(pendiente)
fviz_nbclust(vivi_sc, kmeans, method = "wss") +
ggtitle("Elección del numero optimo de clusters")
Este grafico indica en el eje X el número de clusters (k) y en el eje Y la Suma de Cuadrados Dentro del Cluster (Within Sum of Squares).
La suma de cuadrados siempre disminuye al aumentar el número de clusters, pero en cierto punto la mejora se vuelve marginal.
El valor donde la pendiente de la curva cambia bruscamente y deja de disminuir de forma significativa es, indica un número de clusters que equilibra precisión (o es bajo en la suma de cuadrados) y simplicidad (menos grupos).
Por lo tanto el rango posible de clusters está entre 3 y 5.
Igualmente, se aplicó la técnica llamada Silhouette que ayuda a evaluar la calidad de una agrupación (clustering) y, en particular, a elegir el número óptimo de clusters (grupos) en un conjunto de datos, evaluando la cohesión interna en datos estándarizados.
Por lo anterior, se da a elección de un k=4, es decir, 4 segmentos homogéneos de propiedades residenciales urbanas en Cali.
# También con método silhouette: determina el mejor cluster
fviz_nbclust(vivi_sc, kmeans, method = "silhouette") +
ggtitle("Metodo silhouette para elegir numero optimo de clusters")
El grafico muestra la calidad de la asignación de cada observación a su cluster.
Un valor silhouette cercano a 1 significa que el punto está muy bien agrupado, es decir, está cerca de su cluster y alejado de los otros.
Un valor cercano a 0 indica que el punto está en el límite entre dos clusters.
Los valores negativos indican una posible mala asignación.
El promedio silhouette máximo indica el número de clusters con la mejor separación y cohesión interna.
El máximo está en k = 4, entonces sería un número óptimo desde el punto de vista de la calidad de los grupos.
El siguiente mapa indica cómo quedaron distribuidos los datos en dos dimensiones dandole un color diferente a cada cluster.
# Uso de k = 4
set.seed(123)
k <- 4
km_res <- kmeans(vivi_sc, centers = k, nstart = 25)
# Agrega la clasificación de cluster al dataframe original (no escalado)
vivienda_clustered <- vivienda %>%
mutate(cluster = factor(km_res$cluster))
# Visualiza el clusters en el primer par de componentes principales PC1 y PC2
fviz_cluster(km_res, data = vivi_sc,
geom = "point",
ellipse.type = "norm",
main = "Clusters de viviendas según los 4 segmentos")
#### Interpretación:
Los grupos están bien definidos, parecen nubes separadas de puntos.
Existe bastante superposición, lo que supondría que los clusters se parecen evidenciando que no hay una separación clara. Esto se apoya en la identifición de patrones geográficos o socioeconómicos.
Finalmente, el resumen descriptivo por cluster para algunas variables clave esta dado en la siguiente tabla:
Las viviendas son de tamaño grande (300 m²), en estrato medio-alto, con precio intermedio-alto. Probablemente casas amplias en zonas residenciales consolidadas, pero no en los sectores más exclusivos.
Las vivienddas son muy grandes y de alto valor, ubicadas principalmente en estratos altos (5–6). Son casas o apartamentos amplios en zonas exclusivas, probablemente con mejores acabados, ubicación privilegiada y servicios adicionales.
Las viviendas son definidas de pequeñas a medianas, estrato medio-alto, con precio bajo en comparación a otros clusters. Probablemente son apartamentos o casas compactas en zonas urbanas, orientadas a familias jóvenes o inversión en renta.
Las viviendas son medianas (140 m²), en estratos altos, con precios moderadamente altos. Los espacios posiblemente están compuestos por apartamentos o casas medianas en zonas de buen nivel socioeconómico, pero sin llegar a la exclusividad del cluster 2.
En el siguiente mapa radar se puede visualizar el comportamiento antes descrito:
library(fmsb) # Para gráfico radar
# Datos promedio por cluster (valores originales)
cluster_stats <- data.frame(
precio_mean = c(458.6017, 1070.9893, 229.6001, 404.4187),
area_mean = c(300.77217, 387.13136, 95.83624, 139.49682),
estrato_mean = c(4.041494, 5.727516, 4.025802, 5.050753)
)
rownames(cluster_stats) <- paste("Cluster", 1:4)
# filas extra: máximo y mínimo por variable
max_vals <- apply(cluster_stats, 2, max)
min_vals <- apply(cluster_stats, 2, min)
cluster_radar <- rbind(max_vals, min_vals, cluster_stats)
# Gráfico radar
radarchart(cluster_radar,
axistype = 1,
pcol = c("red", "blue", "green", "purple"),
pfcol = scales::alpha(c("red", "blue", "green", "purple"), 0.3),
plwd = 2,
plty = 1,
cglcol = "grey",
cglty = 1,
axislabcol = "black",
caxislabels = pretty(c(min_vals, max_vals), 5),
cglwd = 0.8,
vlcex = 0.9
)
legend("topright", legend = paste("Cluster", 1:4),
col = c("red", "blue", "green", "purple"),
lty = 1, lwd = 2, bty = "n")
El análisis de correspondencia múltiple permite identificar patrones de asociación entre las variables categóricas relacionadas con la oferta inmobiliaria. En este caso, se analizaron tipo de vivienda, zona y barrio.
En el siguiente gráfico, se indica la diferencia entre zonas y tipo de vivienda asociada a estratos altos y céntricos frente a zonas periféricas con oferta principalmente de casas.
El segundo gráfico separa las áreas y barrios según el nivel socioeconómico y posiblemente el tamaño promedio de las propiedades, indicando diferencias ligadas al perfil físico y comercial de las viviendas y no en su localización.
El gráfico muestra una notoria tendencia a separar los barrios o zonas con ofertas más amplias en superficie y valor (independientemente de que sean casas o apartamentos) frente a zonas con viviendas más pequeñas y precios más bajos.
Los barrios de estrato alto suelen asociarse a apartamentos ubicados en zonas específicas (probablemente Zona Norte y parte de Zona Oeste), mientras que las casas se asocian más con estratos medios o bajos, ubicados en zonas Sur y Oriente.
Algunos barrios de estrato alto aparecen próximos a “Apartamento”, lo que indica una preferencia o predominio de este tipo de vivienda en dichos sectores.
Las casas se concentran en barrios de zonas más amplias territorialmente y con valores de estrato medios, lo que sugiere un mercado distinto, posiblemente enfocado a familias y terrenos mayores.
En la Zona Oriente y ciertos barrios periféricos muestran proximidad entre sí, lo que indica que comparten patrones similares en el tipo de vivienda ofertada.
En el siguiente gráfico, se indica la interpretación de dichas dimensiones:
Verticalmente, en el lado derecho están las categorías como “Apartamento” y “Zona Norte”, que se asocian a viviendas en zonas con mayor nivel socioeconómico o características más modernas.
En el lado izquierdo están las categorías como “Casa” y “Zona Sur”, que pueden reflejar viviendas en zonas con características socioeconómicas más bajas o diferentes.
Horizontalmente, en la parte superior están las categorías como “Zona Norte” y “Barrio Alto”, indicando zonas o viviendas con mayores tamaños o valores.
En el lado inferior, las categorías como “Barrio Popular” o “Zona Sur” pueden representar viviendas o zonas con menor tamaño o valor.
El análisis ACP confirma que dos factores principales resumen la mayor parte de la variabilidad en el mercado:
Para fines de visualización, segmentación o modelado predictivo, trabajar con los primeros 4 componentes sería suficiente para capturar más del 84% de la información, reduciendo la dimensionalidad y simplificando el análisis sin perder patrones relevantes.
El MCA revela que la oferta inmobiliaria no está distribuida aleatoriamente, sino que existen agrupamientos claros por tipo de vivienda y localización geográfica, con asociaciones fuertes entre ciertos barrios y un perfil socioeconómico concreto.
La proximidad entre puntos indica asociación. Entonces, las categorias “Apartamento” y “Zona Norte” están cercanos, sugiriendo que los apartamentos se asocian comúnmente con la Zona Norte.
Las categorias “Casa” y “Zona Sur” están igualmente cercanos, indicando asociación entre las mismas.
Las categorias “Barrio Alto” y “Zona Norte” indican características similares en términos de tamaño y valor.
Las categorias “Barrio Popular” y “Zona Sur” pueden reflejar características similares en sentido contrario.