1 Descripción

El mercado inmobiliario urbano presenta una oferta de viviendas altamente diversa, influenciada por factores físicos, socioeconómicos y territoriales que inciden directamente en la formación de precios y en las dinámicas de compra y venta. En un contexto competitivo y cambiante, las empresas inmobiliarias requieren herramientas analíticas que les permitan comprender de manera integral la estructura del mercado y respaldar sus decisiones estratégicas con evidencia cuantitativa.

Para este estudio, se dispone de una base de datos extensa que contiene información detallada sobre viviendas residenciales ofertadas en una gran ciudad, incluyendo características constructivas, localización geográfica, estrato socioeconómico y precios. Sin embargo, la complejidad y multidimensionalidad de esta información dificulta su interpretación directa, lo que hace necesario el uso de técnicas de análisis estadístico multivariado que permitan identificar patrones, relaciones y segmentaciones relevantes dentro del mercado inmobiliario urbano.

En este contexto, el presente análisis se enmarca dentro de la metodología CRISP-DM, iniciando con la comprensión del problema de negocio y orientándose a generar conocimiento útil para la toma de decisiones en la valoración, segmentación y comercialización de propiedades residenciales.

2 Objetivos

2.1 Objetivo General

  • Analizar la oferta inmobiliaria urbana mediante técnicas de análisis multivariado, con el fin de identificar estructuras subyacentes, segmentar las viviendas en grupos homogéneos y explorar las relaciones entre las variables que caracterizan el mercado.

2.2 Objetivos Específicos

  • Reducir la dimensionalidad de la información para identificar los factores latentes (como tamaño o calidad) que explican la variabilidad del precio.
  • Agrupar las propiedades en clústeres homogéneos para diseñar estrategias diferenciadas por tipo de vivienda.
  • Examinar la relación entre la ubicación (Zona/Barrio) y el tipo de oferta habitacional.
  • Presentar los hallazgos mediante recursos visuales (mapas y gráficos) que faciliten la interpretación de los patrones del mercado para la dirección estratégica.

3 Datos

# 1. Carga de datos
data("vivienda")

# 2. Cálculos para el reporte
n_obs_inicial <- nrow(vivienda)
n_vars_inicial <- ncol(vivienda)

# Identificamos registros vacíos
n_inconsistentes <- sum(is.na(vivienda$id)) 
porc_inconsistentes <- round((n_inconsistentes / n_obs_inicial) * 100, 2)

El conjunto de datos vivienda está compuesto por 8322 observaciones y 13 variables, correspondientes a ofertas del mercado inmobiliario residencial. La variable principal de análisis es preciom, que representa el precio de venta expresado en millones de pesos colombianos.

La revisión de calidad permitió identificar 3 registros inconsistentes asociados a la ausencia de identificador, lo que equivale al 0.04 % del total de observaciones. Estos registros representan un riesgo potencial para la trazabilidad y consistencia del análisis, por lo que deben ser tratados antes de avanzar a la etapa de modelado.

# 1. Inspección visual de la estructura
glimpse(vivienda)
## Rows: 8,322
## Columns: 13
## $ 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…
Tabla 1. Diccionario de Datos
Variable Descripcion Clasificacion Tipo_Medicion
id Identificador único del inmueble Cualitativa Nominal
zona Zona de la ciudad donde se ubica Cualitativa Nominal
piso Nivel o ubicación vertical de la vivienda Cualitativa Ordinal
estrato Nivel socioeconómico oficial (3 al 6) Cualitativa Ordinal
preciom Precio de venta ofertado (Millones COP) Cuantitativa Continua
areaconst Área construida total (m²) Cuantitativa Continua
parqueaderos Cantidad de espacios de estacionamiento Cuantitativa Discreta
banios Cantidad de baños Cuantitativa Discreta
habitaciones Cantidad de habitaciones Cuantitativa Discreta
tipo Tipo de inmueble residencial Cualitativa Nominal
barrio Nombre del barrio de ubicación Cualitativa Nominal
longitud Coordenada geográfica (Longitud) Cuantitativa Continua (Espacial)
latitud Coordenada geográfica (Latitud) Cuantitativa Continua (Espacial)

4 Análisis Exploratorio de Datos (EDA)

Antes de aplicar los algoritmos multivariados, es obligatorio garantizar la calidad de la información. Técnicas como el Análisis de Componentes Principales (ACP) son altamente sensibles a datos incompletos y valores atípicos extremos. Por ello, ejecutaremos un pipeline de limpieza en tres etapas.

4.1 Diagnóstico y Tratamiento de Datos Faltantes

A continuación, se visualiza el patrón de valores ausentes (missings) en el conjunto de datos.

# Mapa de calor de datos faltantes
md.pattern(vivienda, rotate.names = TRUE)
Figura 1. Mapa de calor y patrón de datos faltantes en el conjunto de datos original.

Figura 1. Mapa de calor y patrón de datos faltantes en el conjunto de datos original.

##      preciom id zona estrato areaconst banios habitaciones tipo barrio longitud
## 4808       1  1    1       1         1      1            1    1      1        1
## 1909       1  1    1       1         1      1            1    1      1        1
## 876        1  1    1       1         1      1            1    1      1        1
## 726        1  1    1       1         1      1            1    1      1        1
## 1          1  0    0       0         0      0            0    0      0        0
## 2          0  0    0       0         0      0            0    0      0        0
##            2  3    3       3         3      3            3    3      3        3
##      latitud parqueaderos piso     
## 4808       1            1    1    0
## 1909       1            1    0    1
## 876        1            0    1    1
## 726        1            0    0    2
## 1          0            0    0   12
## 2          0            0    0   13
##            3         1605 2638 4275

La variable piso presenta 2.638 valores nulos (31% del total). Inicialmente se planteó la hipótesis de que la ausencia del dato obedecía a la naturaleza estructural del inmueble, dado que las casas no se registran por nivel como los apartamentos.

Tabla 2. Relación entre Tipo de Vivienda y Valores Nulos en Piso
# Piso Piso es NA
Apartamento 3719 1381
Casa 1965 1254

El cruce entre tipo de vivienda y valores faltantes muestra que 1.381 apartamentos carecen del dato de piso, lo que refuta la hipótesis de ausencia estructural. La pérdida de información afecta a ambos tipos de inmueble y no responde a un patrón categórico claro.

4.1.1 Decisiones de limpieza

  • Eliminación de 3 registros sin identificador (id) por pérdida de trazabilidad.

  • Imputación de parqueaderos mediante mediana, al tratarse de variable cuantitativa discreta con proporción moderada de valores faltantes.

  • Exclusión completa de la variable piso por alto nivel de ausencia (31%) y riesgo de sesgo en imputación.

# Ejecución de la limpieza
vivienda_clean <- vivienda %>%
  filter(!is.na(id)) %>% # Eliminar registros inconsistentes
  mutate(parqueaderos = replace_na(parqueaderos, median(parqueaderos, na.rm = TRUE))) %>% # Imputar
  select(-piso) # Se excluye por superar el 30% de datos nulos

# Cálculos automáticos para el reporte
n_obs_clean <- nrow(vivienda_clean)
n_vars_clean <- ncol(vivienda_clean)

Tras aplicar estos procedimientos de depuración, el conjunto de datos consolidado pasa de tener las 8322 filas y 13 columnas originales, a quedar conformado por 8319 observaciones efectivas y 12 variables. Con esta estructura íntegra y sin valores ausentes, la base de datos se encuentra en condiciones para el análisis de valores atípicos y el posterior modelado multivariado.

4.2 Tratamiento de Asimetría y Valores Extremos

Las variables continuas principales, como el precio (preciom) y el área (areaconst), suelen presentar una “asimetría positiva” o sesgo a la derecha en el mercado inmobiliario. Esto ocurre porque el grueso de la oferta se concentra en precios estándar, pero existe una “cola larga” conformada por el segmento premium (propiedades de lujo).

library(ggplot2)
library(gridExtra)

p_dens_precio <- ggplot(vivienda_clean, aes(x = preciom)) + 
  geom_density(fill = "#e74c3c", alpha = 0.5) +
  geom_vline(aes(xintercept = median(preciom, na.rm=TRUE)), color="black", linetype="dashed") +
  labs(title = "Distribución Original del Precio", x = "Precio (Millones)", y = "Densidad") + theme_minimal()

p_dens_area <- ggplot(vivienda_clean, aes(x = areaconst)) + 
  geom_density(fill = "#3498db", alpha = 0.5) +
  geom_vline(aes(xintercept = median(areaconst, na.rm=TRUE)), color="black", linetype="dashed") +
  labs(title = "Distribución Original del Área", x = "Área (m2)", y = "Densidad") + theme_minimal()

grid.arrange(p_dens_precio, p_dens_area, ncol = 2)
Figura 2. Gráficos de Densidad: Evidencia de asimetría positiva en las variables originales.

Figura 2. Gráficos de Densidad: Evidencia de asimetría positiva en las variables originales.

4.2.1 Justificación Metodológica: Transformación vs. Eliminación

Técnicas multivariadas como el Análisis de Componentes Principales (ACP) y el análisis de conglomerados (K-means con distancia euclidiana) son sensibles a la varianza y a la presencia de valores extremos, ya que optimizan funciones basadas en sumas de cuadrados. Incluso pocas observaciones atípicas pueden desplazar centroides y alterar la estructura de los componentes (Aggarwal, 2017).

Aunque el criterio del Rango Intercuartílico (RIQ) es una práctica común para detectar outliers, la regla tradicional de \(1.5 \times RIQ\) tiende a sobre-detectar valores atípicos en distribuciones asimétricas (Seo, 2006). Hubert y Vandervieren (2008) muestran que el boxplot clásico no es adecuado bajo fuerte sesgo positivo, y que umbrales más conservadores, como \(3 \times RIQ\), reducen la sobre-identificación en contextos con colas derechas largas.

En el mercado inmobiliario, los precios presentan estructuralmente asimetría positiva y colas pesadas. El tratamiento de valores extremos influye directamente en la inferencia del valor de mercado (Malpezzi, 2003). Además, las propiedades de alto valor constituyen submercados diferenciados con dinámicas propias, cuyo análisis es relevante desde la segmentación estratégica (Clarke et al., 2024; Odlin et al., 2021) y la evidencia sobre primas espaciales en vivienda de lujo (Guarini et al., 2016; Toussaint et al., 2025). Por tanto, eliminarlas podría distorsionar la estructura real del mercado.

En consecuencia, se opta por conservar las observaciones válidas y aplicar una transformación logarítmica a las variables sesgadas. En modelos hedónicos, el uso de log(precio) es estándar debido a la asimetría, la heterocedasticidad y la naturaleza multiplicativa del proceso de formación de precios (Malpezzi, 2003; Goodman & Thibodeau, 1998), además de permitir interpretaciones en términos porcentuales (Halvorsen & Palmquist, 1980). Asimismo, la evidencia muestra que las transformaciones que reducen el sesgo mejoran la estabilidad y recuperación de estructuras en clustering sobre datos asimétricos (Chakraborty & Maitra, 2017).

Finalmente, tras la transformación logarítmica, las variables continuas serán estandarizadas mediante puntuaciones Z para asegurar media cero y varianza unitaria, dado que tanto el ACP como K-means son sensibles a diferencias de escala.

En síntesis, la estrategia adoptada controla la asimetría y la influencia de valores extremos sin perder información estratégica relevante del mercado.

4.2.2 Aplicación de Transformación Logarítmica

Procedemos a crear las nuevas variables transformadas (log_precio y log_area) que serán utilizadas exclusivamente en los algoritmos espaciales y de reducción de dimensionalidad.

# Aplicar transformación logarítmica
vivienda_modelado <- vivienda_clean %>%
  mutate(log_precio = log(preciom),
         log_area = log(areaconst))

# Visualizar el efecto de la transformación
p_log_precio <- ggplot(vivienda_modelado, aes(x = log_precio)) + 
  geom_density(fill = "#27ae60", alpha = 0.5) +
  labs(title = "Transformación Log: Precio", x = "Log(Precio)", y = "Densidad") + theme_minimal()

p_log_area <- ggplot(vivienda_modelado, aes(x = log_area)) + 
  geom_density(fill = "#8e44ad", alpha = 0.5) +
  labs(title = "Transformación Log: Área", x = "Log(Área)", y = "Densidad") + theme_minimal()

grid.arrange(p_log_precio, p_log_area, ncol = 2)
Figura 3. Gráficos de Densidad tras la transformación logarítmica (distribuciones normalizadas).

Figura 3. Gráficos de Densidad tras la transformación logarítmica (distribuciones normalizadas).

Como se evidencia en la Figura 3, la transformación logarítmica ha corregido la asimetría severa, acercando las distribuciones a una forma acampanada (normalidad) mucho más amigable para los modelos de distancias euclidianas. El conjunto de datos final, vivienda_modelado, conserva la totalidad de la muestra limpia original, garantizando que el ACP y los clústeres reflejen fielmente todo el espectro socioeconómico de la ciudad.

4.3 Análisis de Correlación y Multicolinealidad

Se estimó la matriz de correlación de Pearson para evaluar la dependencia lineal entre las variables cuantitativas. Los resultados muestran asociaciones positivas moderadas y altas, particularmente entre log_precio y log_area (0.80), así como con banios (0.73), lo que confirma la coherencia estructural entre valor, tamaño y dotación del inmueble.

Entre las variables explicativas se observan correlaciones moderadas (por ejemplo, banioshabitaciones: 0.59), sin alcanzar niveles que sugieran multicolinealidad severa. En este contexto, la existencia de correlación es consistente con la aplicación del ACP, ya que permite capturar varianza compartida en componentes latentes, mientras que la estandarización previa mitiga posibles efectos de sobrerrepresentación en el cálculo de distancias para K-means.

En conjunto, no se identifican problemas de colinealidad que comprometan la estabilidad del análisis multivariado.

# Seleccionar variables numéricas estructurales
vars_cuantitativas <- vivienda_modelado %>%
  select(log_precio, log_area, banios, habitaciones, parqueaderos)

# Matriz de correlación de Pearson
matriz_corr <- cor(vars_cuantitativas, use = "complete.obs", method = "pearson")

# Visualización de la matriz
corrplot(matriz_corr, method = "color", type = "upper", 
         addCoef.col = "black", number.cex = 0.9, # Mostrar coeficientes
         tl.col = "#2c3e50", tl.srt = 45, tl.cex = 0.9, # Estilo de etiquetas
         col = colorRampPalette(c("#e74c3c", "white", "#3498db"))(200),
         diag = FALSE, outline = TRUE)
Figura 4. Matriz de Correlación de Pearson para variables cuantitativas.

Figura 4. Matriz de Correlación de Pearson para variables cuantitativas.

5 Modelado Multivariado

Con el fin de identificar patrones estructurales en el mercado inmobiliario y reducir la dimensionalidad del conjunto de variables cuantitativas, se implementaron técnicas multivariadas basadas en distancias euclidianas. Dado que las variables fueron previamente transformadas y estandarizadas, se garantiza que el análisis capture relaciones estructurales sin sesgos derivados de escala o asimetría.

5.1 Análisis de Componentes Principales (ACP)

El ACP se aplicó sobre las variables log_precio, log_area, banios, habitaciones y parqueaderos. Esta técnica permite sintetizar información contenida en variables correlacionadas en componentes ortogonales que capturan la estructura latente del mercado.

5.1.1 Varianza Explicada y Selección de Componentes

El gráfico de sedimentación (figura 5) muestra una estructura claramente dominada por el primer componente, que explica el 65.3% de la varianza total. El segundo componente añade 16.5%, acumulando 81.8% en las dos primeras dimensiones.

A partir del tercer componente (10.2%) la contribución marginal disminuye de forma considerable, lo que evidencia un punto de inflexión claro. En consecuencia, dos componentes son suficientes para representar adecuadamente la estructura latente del mercado sin pérdida sustancial de información.

Esta concentración de varianza en la primera dimensión sugiere que el mercado inmobiliario está fuertemente estructurado por un eje dominante.

datos_pca <- vivienda_modelado %>%
  select(log_precio, log_area, banios, habitaciones, parqueaderos)

# Ejecutamos el ACP
res.pca <- PCA(datos_pca, scale.unit = TRUE, graph = FALSE)

# Visualizamos la varianza
fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 80),
         main = "Varianza Explicada por Componente",
         barfill = "#3498db", barcolor = "#2c3e50", linecolor = "#e74c3c") + 
  theme_minimal()
Figura 5. Gráfico de Sedimentación

Figura 5. Gráfico de Sedimentación

5.1.2 Círculo de Correlaciones y Significado de los Componentes

El Círculo de Correlaciones confirma la existencia de dos ejes interpretables económica y estratégicamente.

5.1.2.1 Dimensión 1 (65.3%) – Escala Económica del Activo

El primer componente agrupa log_area, log_precio y banios, con cargas positivas y alineadas. Esto indica que estas variables se mueven conjuntamente y estructuran el mercado a lo largo de un eje de intensidad de capital inmobiliario.

Valores altos en esta dimensión corresponden a inmuebles:

  • de mayor superficie,
  • con mayor dotación estructural,
  • y con mayor precio.

En términos de clasificación, esta dimensión permite ordenar el mercado desde activos compactos y de menor valor hasta propiedades de mayor escala y posicionamiento económico superior. Se trata esencialmente de un eje de jerarquía económica del inmueble, que concentra la mayor parte de la variabilidad estructural.

5.1.2.2 Dimensión 2 (16.5%) – Configuración y Perfil Tipológico

La segunda dimensión introduce una diferenciación interna. habitaciones carga positivamente, mientras que parqueaderos y parcialmente log_precio presentan cargas negativas.

Este patrón sugiere un eje que distingue configuraciones funcionales más allá del tamaño global. Dentro de inmuebles con niveles similares de escala económica, esta dimensión permite diferenciar:

  • Un perfil más residencial-familiar (mayor número de habitaciones), versus
  • Un perfil con mayor dotación complementaria y valorización relativa (más parqueaderos y mayor precio asociado).

En consecuencia, esta dimensión introduce una clasificación tipológica interna del activo inmobiliario, capturando diferencias funcionales que no están completamente explicadas por el tamaño o el valor.

# Gráfico del círculo de correlaciones
fviz_pca_var(res.pca,
             col.var = "contrib",
             gradient.cols = c("#3498db", "#e74c3c", "#27ae60"),
             repel = TRUE,
             title = "Círculo de Correlaciones - Variables Inmobiliarias") + 
  theme_minimal()
Figura 6. Círculo de Correlaciones del ACP. Contribución de las variables a las dos primeras dimensiones.

Figura 6. Círculo de Correlaciones del ACP. Contribución de las variables a las dos primeras dimensiones.

En conjunto, el ACP revela una estructura dominada por un factor principal de escala–valor y un segundo factor que discrimina configuraciones funcionales específicas del inmueble. Esta doble lectura aporta una interpretación económica más rica de la heterogeneidad del mercado.

5.1.3 Mapa de Individuos (Distribución de la Oferta)

El Mapa de Individuos proyecta cada inmueble en el plano definido por las dos primeras dimensiones del ACP, incorporando la segmentación por estrato socioeconómico. La nube de puntos confirma que la dispersión se produce principalmente a lo largo de la Dimensión 1 (65.3%), lo que ratifica su carácter estructural dominante como eje de escala económica del activo.

Se observa una clara gradiente horizontal: los estratos 3 se concentran mayoritariamente en valores bajos de la Dimensión 1, mientras que los estratos 5 y 6 se desplazan progresivamente hacia valores positivos más altos. El estrato 4 ocupa una posición intermedia, funcionando como transición entre segmentos de menor y mayor valorización. Esto sugiere que la jerarquía socioeconómica está fuertemente alineada con el eje tamaño–valor identificado previamente.

En contraste, la dispersión vertical asociada a la Dimensión 2 (16.5%) es menor y presenta mayor superposición entre estratos. Esto indica que las diferencias tipológicas internas (configuración del inmueble) no separan de forma marcada a los estratos, sino que operan dentro de cada nivel socioeconómico.

Las elipses de concentración refuerzan esta lectura: aunque existe solapamiento entre segmentos contiguos, la diferenciación a lo largo del eje económico principal es consistente y estructural. En conjunto, el gráfico evidencia que el estrato socioeconómico se encuentra estrechamente vinculado con la escala económica del inmueble, mientras que las variaciones tipológicas introducen heterogeneidad interna más que segmentación vertical del mercado.

# Convertir estrato a factor para la visualización categórica
estrato_factor <- as.factor(vivienda_modelado$estrato)

# Gráfico de individuos segmentado
fviz_pca_ind(res.pca,
             geom.ind = "point", 
             col.ind = estrato_factor, # Colorear por estrato
             palette = c("#f39c12", "#27ae60", "#2980b9", "#8e44ad"),
             addEllipses = TRUE,       # Elipses de concentración
             ellipse.type = "confidence",
             legend.title = "Estrato",
             alpha.ind = 0.3,          # Transparencia para ver superposiciones
             title = "Mapa de Individuos - Segmentación por Estrato") +
  theme_minimal()
Figura 7. Mapa de Individuos: Proyección de las propiedades coloreadas por Estrato Socioeconómico.

Figura 7. Mapa de Individuos: Proyección de las propiedades coloreadas por Estrato Socioeconómico.

6 Análisis de Conglomerados (Clustering)

Una vez validada la estructura latente del mercado mediante el ACP, el siguiente paso consiste en segmentar la oferta inmobiliaria en grupos homogéneos. El objetivo es identificar submercados con comportamientos estructuralmente diferenciados que permitan optimizar estrategias de captación, valoración y comercialización.

Se implementa el algoritmo K-Means sobre las coordenadas factoriales obtenidas del ACP. Esta decisión metodológica garantiza que la segmentación se realice sobre dimensiones ortogonales que capturan la varianza estructural del sistema, eliminando el efecto de multicolinealidad presente en las variables originales.

6.1 Determinación del Número Óptimo de Segmentos (k)

La selección del número de clústeres no se realiza de forma arbitraria. Se emplean dos criterios complementarios:

  • Método del Codo (WSS): evalúa la reducción marginal de la varianza intra-clúster.
  • Coeficiente de Silueta promedio: mide la cohesión interna y separación entre grupos.

Ambos criterios convergen en una solución estable con k = 2, donde la mejora adicional en compacidad resulta marginal y la calidad de separación es consistente.

library(factoextra)
library(gridExtra)

# Extraemos las coordenadas de las propiedades en las 5 dimensiones del ACP
datos_cluster <- res.pca$ind$coord

# Gráfico del Método del Codo
p_codo <- fviz_nbclust(datos_cluster, kmeans, method = "wss", linecolor = "#2c3e50") +
  labs(title = "Método del Codo", subtitle = "Varianza Intra-clúster", y = "Suma de Cuadrados (WSS)") +
  theme_minimal()

# Gráfico del Método de Silueta
p_silueta <- fviz_nbclust(datos_cluster, kmeans, method = "silhouette", linecolor = "#e74c3c") +
  labs(title = "Análisis de Silueta", subtitle = "Calidad de agrupación") +
  theme_minimal()

# Unimos los gráficos
grid.arrange(p_codo, p_silueta, ncol = 2)
Figura 8. Diagnóstico para k óptimo: Método del Codo y Análisis de Silueta.

Figura 8. Diagnóstico para k óptimo: Método del Codo y Análisis de Silueta.

Si bien el coeficiente de silueta no alcanza valores elevados (≈0.42), su magnitud es coherente con estructuras económicas continuas, donde la segmentación responde a gradientes progresivos de valorización más que a rupturas abruptas entre submercados claramente aislados.

6.2 Ejecución del Algoritmo K-Means

Con base en los resultados heurísticos, se implementa K-Means con k = 2, fijando semilla para garantizar reproducibilidad y utilizando múltiples inicializaciones (nstart = 25) para evitar soluciones locales subóptimas.

La proyección factorial muestra una separación casi lineal a lo largo de la Dimensión 1, mientras que la Dimensión 2 aporta variabilidad secundaria sin alterar la estructura principal.

# Fijar semilla para reproducibilidad
set.seed(123)

# Ejecutar K-Means con k=2 y 25 iteraciones iniciales para buscar el mejor ajuste
modelo_kmeans <- kmeans(datos_cluster, centers = 2, nstart = 25)

# Asignar el clúster a nuestra base de datos original para perfilar después
vivienda_modelado$Cluster <- as.factor(modelo_kmeans$cluster)

# Visualizar los clústeres en el plano factorial
fviz_cluster(modelo_kmeans, data = datos_cluster,
             geom = "point",
             ellipse.type = "convex", 
             palette = c("#3498db", "#e74c3c"), # Colores corporativos (Azul y Rojo)
             ggtheme = theme_minimal(),
             main = "Segmentación de Mercado: Clústeres Inmobiliarios")
Figura 9. Agrupación K-Means (k=2) proyectada sobre las componentes principales.

Figura 9. Agrupación K-Means (k=2) proyectada sobre las componentes principales.

La frontera observada confirma que la segmentación del mercado está dominada por la escala de Magnitud y Valor (Dimensión 1), más que por atributos arquitectónicos específicos (Dimensión 2). La estructura resultante evidencia una división económica primaria entre:

  • Un segmento de alta valorización (Premium).
  • Un segmento estándar/tradicional de menor escala.

6.3 Perfilamiento Estratégico de los Segmentos

El coeficiente de silueta (~0.42) indica una separación moderada pero consistente. La linealidad del corte no representa una debilidad del modelo; por el contrario, refleja la estructura económica dominante del mercado: la principal fuerza segmentadora es el nivel de valorización.

Para traducir la partición geométrica en información accionable, se calculan los promedios de variables originales por clúster.

# Calcular promedios de las variables originales (no los logaritmos) por clúster
perfiles_cluster <- vivienda_modelado %>%
  group_by(Cluster) %>%
  summarise(
    `Total Inmuebles` = n(),
    `% del Mercado` = round((n() / nrow(vivienda_modelado)) * 100, 1),
    `Precio Prom. (Millones)` = round(mean(preciom, na.rm=TRUE), 0),
    `Área Prom. (m²)` = round(mean(areaconst, na.rm=TRUE), 0),
    `Baños Prom.` = round(mean(banios, na.rm=TRUE), 1),
    `Habitaciones Prom.` = round(mean(habitaciones, na.rm=TRUE), 1),
    `Parqueaderos Prom.` = round(mean(parqueaderos, na.rm=TRUE), 1)
  )

# Mostrar la tabla con formato profesional
perfiles_cluster %>%
  kbl(caption = "Tabla 3. Perfilamiento comercial de los clústeres identificados (k=2)") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2c3e50") %>%
  column_spec(1, bold = TRUE)
Tabla 3. Perfilamiento comercial de los clústeres identificados (k=2)
Cluster Total Inmuebles % del Mercado Precio Prom. (Millones) Área Prom. (m²) Baños Prom. Habitaciones Prom. Parqueaderos Prom.
1 3312 39.8 703 293 4.4 4.6 2.5
2 5007 60.2 256 97 2.2 2.9 1.5

Al examinar la Tabla 3, la diferenciación estratégica entre segmentos es estructural y no margina se identifica:

  • Mercado Estándar (Clúster de Mayor Participación – 60.2%)

Concentra la mayor proporción de la oferta inmobiliaria. Presenta:

  • Precio promedio significativamente inferior.
  • Área construida cercana a 100 m².
  • Configuración funcional típica: 2–3 habitaciones, ~2 baños y 1–2 parqueaderos.

Este segmento responde a la demanda masiva y muestra una lógica de negocio basada en volumen y rotación. La estrategia óptima se orienta a eficiencia comercial, tiempos de cierre reducidos y alta dinámica transaccional. La rentabilidad se apalanca en la escala.

  • Segmento Premium (Clúster Minoritario – 39.8%)

Agrupa una fracción menor del mercado, pero con propiedades que triplican en promedio el precio y el área respecto al segmento estándar:

  • Área cercana a 300 m².
  • Más de 4 baños en promedio.
  • Múltiples parqueaderos.

Se trata de un submercado de alta valorización donde la lógica económica no es la rotación sino el margen unitario. Requiere estrategias diferenciadas: marketing segmentado, asesoría personalizada y horizontes de venta más extensos. La propuesta de valor se basa en exclusividad, no en volumen.

Síntesis estratégica

La ciudad presenta una estructura dual clara: - un mercado masivo orientado a escala y un mercado premium orientado a margen. - La segmentación confirma que la principal fuerza estructural no es arquitectónica, sino económica.

6.4 Validación Estadística y Geoespacial de los Segmentos

Con el fin de verificar que la segmentación obtenida mediante K-means no responde a una partición arbitraria, sino a diferencias estructurales reales del mercado, se realizaron validaciones complementarias desde dos enfoques: estadístico y espacial.

6.4.1 Validación Estadística

Se aplicó un Análisis de Varianza (ANOVA) para contrastar la igualdad de medias entre los dos clústeres en las variables originales de mayor relevancia económica: precio y área construida.

Los resultados evidencian diferencias altamente significativas:

  • Para precio, F = 6589 con p < 2e-16.
  • Para área construida, F = 6777 con p < 2e-16.

En ambos casos se rechaza con evidencia estadística robusta la hipótesis nula de igualdad de medias.

La magnitud de los estadísticos F indica que la variabilidad explicada por la pertenencia al clúster es sustancialmente mayor que la variabilidad residual, lo que confirma una separación estructural marcada entre segmentos.

Dado que la segmentación fue realizada sobre dimensiones factoriales derivadas de estas mismas variables, el ANOVA no constituye una validación completamente independiente del proceso de agrupamiento. No obstante, sí confirma que la partición obtenida preserva diferencias sustantivas cuando se retorna al espacio original de medicición.

En consecuencia, el Mercado Estándar y el Segmento Premium representan submercados estadísticamente diferenciados tanto en magnitud económica como en escala física del activo.

# ANOVA para Precio y Área
anova_precio <- aov(preciom ~ Cluster, data = vivienda_modelado)
anova_area <- aov(areaconst ~ Cluster, data = vivienda_modelado)

# Imprimir resumen del ANOVA
print(summary(anova_precio))
##               Df    Sum Sq   Mean Sq F value Pr(>F)    
## Cluster        1 397164074 397164074    6589 <2e-16 ***
## Residuals   8317 501352095     60280                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
print(summary(anova_area))
##               Df   Sum Sq  Mean Sq F value Pr(>F)    
## Cluster        1 76333460 76333460    6777 <2e-16 ***
## Residuals   8317 93675990    11263                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Boxplots comparativos con los colores e identificadores correctos
bp_precio <- ggplot(vivienda_modelado, aes(x = Cluster, y = preciom, fill = Cluster)) +
  geom_boxplot(alpha = 0.7) +
  # Asignamos: Clúster 1 (Premium) = Rojo, Clúster 2 (Estándar) = Azul
  scale_fill_manual(values = c("1" = "#e74c3c", "2" = "#3498db"), 
                    labels = c("1" = "Premium", "2" = "Estándar")) +
  labs(title = "Distribución de Precio", y = "Precio (Millones)", x = "") +
  theme_minimal()

bp_area <- ggplot(vivienda_modelado, aes(x = Cluster, y = areaconst, fill = Cluster)) +
  geom_boxplot(alpha = 0.7) +
  scale_fill_manual(values = c("1" = "#e74c3c", "2" = "#3498db"), 
                    labels = c("1" = "Premium", "2" = "Estándar")) +
  labs(title = "Distribución de Área", y = "Área Construida (m²)", x = "") +
  theme_minimal() + theme(legend.position = "none")

# Unir ambos gráficos
grid.arrange(bp_precio, bp_area, ncol = 2)
Figura 10. Distribución de Precio y Área por Clúster.

Figura 10. Distribución de Precio y Área por Clúster.

El diagrama de cajas evidencia una separación vertical clara entre ambos segmentos. En términos de precio, el Segmento Premium presenta una mediana cercana a los 600–650 millones y una dispersión considerablemente amplia, con presencia de valores extremos que superan los 1.500 millones. En contraste, el Mercado Estándar concentra su mediana alrededor de los 200–250 millones, exhibiendo un rango intercuartílico más reducido y límites superiores significativamente más bajos.

La superposición entre cajas es mínima, lo que indica una diferenciación económica robusta entre ambos grupos. Asimismo, la mayor variabilidad observada en el segmento Premium refleja la heterogeneidad propia del mercado de alta gama, donde coexisten propiedades de distintas escalas dentro de un mismo rango superior de precios. En términos estructurales, la figura confirma que el precio actúa como eje dominante de organización del mercado, constituyéndose en la variable que articula la segmentación obtenida.

El comportamiento del área construida replica el patrón observado en el precio. El Segmento Premium presenta medianas cercanas a los 250–300 m² y una cola derecha extensa que incluye propiedades de gran tamaño, superiores a 1.000 m². Por su parte, el Mercado Estándar concentra su oferta en torno a 80–100 m², con una dispersión más acotada y menor presencia de valores extremos.

La coherencia entre ambas distribuciones refuerza la estructura identificada previamente en el Análisis de Componentes Principales: precio y área se desplazan conjuntamente como expresión de un eje de escala económica del activo inmobiliario. No se trata únicamente de viviendas más costosas, sino de activos sustancialmente mayores en tamaño y dotación, lo que confirma que el clúster Premium representa un submercado cualitativamente distinto y no simplemente una variación marginal del mercado masivo.

ggplot(vivienda_modelado, aes(x = longitud, y = latitud, color = Cluster)) +
  geom_point(alpha = 0.5, size = 1.5) +
  scale_color_manual(values = c("#3498db", "#e74c3c"),
                     labels = c("1. Estándar", "2. Premium")) +
  labs(title = "Mapa Urbano: Distribución de Clústeres",
       x = "Longitud", y = "Latitud", color = "Segmento") +
  theme_minimal() +
  theme(panel.grid.minor = element_blank())
Figura 11. Distribución de Precio y Área por Clúster.

Figura 11. Distribución de Precio y Área por Clúster.

El mapa urbano evidencia que la segmentación identificada no solo responde a diferencias económicas, sino también a patrones de localización espacial dentro de la ciudad. Si bien ambos segmentos coexisten en buena parte del territorio, se observan concentraciones diferenciadas que sugieren una organización territorial del mercado inmobiliario.

El Segmento Premium presenta una mayor presencia en sectores específicos del tejido urbano, particularmente en zonas consolidadas y de mayor valorización, donde se advierte una densidad relativamente superior de propiedades de alta gama. En contraste, el Mercado Estándar exhibe una distribución más extendida y dispersa, ocupando áreas más amplias del espacio urbano y mostrando menor concentración en núcleos definidos.

Aunque no se observa una segregación absoluta, dado qeu existen puntos de superposición entre ambos segmentos, sí se identifican patrones de aglomeración que indican una diferenciación territorial parcial del mercado. Esta configuración sugiere que la segmentación obtenida mediante clustering no es únicamente económica, sino también geoespacial.

En términos estructurales, la figura 11 confirma que el mercado inmobiliario se organiza tanto por escala económica (precio y área) como por localización, reforzando la existencia de submercados urbanos diferenciados que combinan atributos físicos del activo con dinámicas territoriales.

7 Análisis de Correspondencia y Validación Territorial

Tras identificar una estructura económica dual mediante ACP y K-Means, resulta necesario verificar si dicha segmentación presenta coherencia espacial. El objetivo es determinar si la jerarquía socioeconómica observada también se manifiesta territorialmente.

El Análisis de Correspondencia Simple (ACS) permite modelar la asociación entre dos variables categóricas Zona y Estrato, proyectándolas en un espacio factorial común donde la proximidad geométrica refleja intensidad de asociación.

7.1 Relación Geográfica-Socioeconómica (ACS)

Antes de aplicar el ACS, se contrastó la hipótesis de independencia entre Zona y Estrato mediante prueba \(\chi^2\).

El resultado (p < 0.001) confirma una dependencia estructural altamente significativa, descartando aleatoriedad en la distribución territorial del nivel socioeconómico. Esta evidencia justifica la reducción dimensional y la interpretación geométrica posterior.

# 1. Tabla de contingencia cruzando Zona y Estrato
tabla_contingencia <- table(vivienda_modelado$zona, vivienda_modelado$estrato)

# 2. Prueba de Chi-cuadrado
prueba_chi <- chisq.test(tabla_contingencia)
print(prueba_chi)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia
## X-squared = 3830.4, df = 12, p-value < 2.2e-16
# 3. Análisis de Correspondencia
res.ca <- CA(tabla_contingencia, graph = FALSE)

# 4. Visual
fviz_ca_biplot(res.ca, 
               repel = TRUE, 
               col.row = "#2980b9",
               col.col = "#c0392b",
               title = "Mapa de Correspondencia: Zona vs. Estrato",
               ggtheme = theme_minimal())
Figura 12. Biplot del Análisis de Correspondencia: Asociación entre Zona y Estrato.

Figura 12. Biplot del Análisis de Correspondencia: Asociación entre Zona y Estrato.

La representación bidimensional captura el 97.7% de la inercia total (Dimensión 1: 70%; Dimensión 2: 27.7%), lo que indica que el plano factorial ofrece una síntesis estadísticamente suficiente para la interpretación estratégica, sin pérdida sustantiva de información respecto a la estructura completa de asociación.

Dimensión 1 (70%) – Gradiente Principal de Jerarquía Territorial

El eje horizontal organiza las zonas según su posicionamiento socioeconómico dominante:

  • Zona Oeste se asocia con Estrato 6, evidenciando concentración de alta valorización.
  • Zona Sur muestra proximidad a Estratos 4 y 5, configurando un segmento intermedio.
  • Zona Oriente y Centro se alinean con Estrato 3, indicando predominancia de oferta media.
  • Zona Norte ocupa una posición intermedia sin polarización extrema.

Este eje reproduce espacialmente el gradiente económico identificado en el ACP: la ciudad se estructura territorialmente según nivel de valorización.

Dimensión 2 (27.7%) – Diferenciación Secundaria

El eje vertical introduce variaciones dentro del gradiente principal, permitiendo distinguir matices entre zonas con niveles socioeconómicos cercanos. Aunque explica menor proporción de inercia, aporta refinamiento interpretativo sin alterar la jerarquía dominante.

Lectura Estratégica

El análisis confirma que la ciudad presenta especialización territorial por nivel socioeconómico:

  • Oeste: enclave de alta valorización.
  • Sur: zona de transición intermedia.
  • Oriente y Centro: concentración de oferta media.
  • Norte: posicionamiento equilibrado.

La consistencia entre ACP, K-Means y ACS refuerza la hipótesis estructural del estudio:

La segmentación económica no solo es estadísticamente robusta, sino territorialmente coherente.

En términos analíticos, el mercado inmobiliario exhibe una estratificación espacial alineada con el gradiente de poder adquisitivo, confirmando que la jerarquía económica es la fuerza organizadora dominante del sistema urbano.

7.2 Validación Territorial de los Clústeres

# Gráfico de barras apiladas al 100% para ver la penetración de los clústeres por zona
ggplot(vivienda_modelado, aes(x = zona, fill = Cluster)) +
  geom_bar(position = "fill", color = "white", alpha = 0.9) +
  scale_fill_manual(values = c("#3498db", "#e74c3c"), 
                    labels = c("1. Mercado Estándar", "2. Segmento Premium")) +
  scale_y_continuous(labels = scales::percent) +
  labs(title = "Penetración de los Clústeres por Zona de la Ciudad",
       x = "Zona Geográfica", y = "Proporción de la Oferta", fill = "Submercado") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
Figura 13. Composición de Submercados (Clústeres) según Zona Geográfica.

Figura 13. Composición de Submercados (Clústeres) según Zona Geográfica.

La Figura 13 actúa como la validación final del modelo. Se observa una correspondencia altamente consistente entre la segmentación matemática y la realidad territorial: mientras que la Zona Oeste está compuesta casi en su totalidad por el Segmento Premium (Clúster 2), la Zona Oriente y Centro son bastiones del Mercado Estándar (Clúster 1). La Zona Sur, fiel a su naturaleza de transición, presenta la mayor mezcla de ambos submercados, validando la robustez de los algoritmos empleados.

8 Conclusiones y Recomendaciones.

El análisis multivariado permitió identificar la estructura económica y territorial que organiza el mercado inmobiliario urbano. La evidencia empírica demuestra que la oferta no es dispersa ni caótica: responde a un patrón jerárquico claro, con implicaciones directas para la estrategia comercial y de inversión de la empresa.

8.1 Conclusiones

  1. El mercado está dominado por un eje estructural de escala–valor (ACP): El 65.3% de la variabilidad del sistema se concentra en un único factor latente que integra área construida, dotación (baños) y precio. Esto indica que la principal fuerza organizadora del mercado es económica. Las diferencias tipológicas (habitaciones, parqueaderos) introducen matices, pero no redefinen la jerarquía estructural.

  2. Existe una dualidad económica estadísticamente comprobada (K-Means y ANOVA): El mercado se segmenta en dos submercados con lógicas diferenciadas:

    • Mercado Estándar (60.2%): Viviendas funcionales, de menor escala, orientadas a volumen y rotación.
    • Segmento Premium (39.8%): Activos de alta valorización, gran superficie y dotación superior, orientados a margen unitario.
    • Validación: Esta partición no es arbitraria. Las pruebas de varianza (ANOVA) confirman con absoluta rigurosidad matemática (\(p < 2e-16\)) que la brecha en precios y áreas entre ambos clústeres es estructural, descartando cualquier efecto del azar.
  3. La jerarquía económica se materializa en el espacio urbano (ACS y Geoespacial): La dependencia entre la Zona y el Estrato es altamente significativa (\(p < 0.001\)). Además, el mapeo de coordenadas reales de la oferta valida visualmente esta estratificación:

    • Zona Oeste: Funciona como un enclave Premium (Estrato 6) con alta concentración espacial de riqueza.
    • Zonas Oriente y Centro: Muestran un predominio del Mercado Estándar (Estrato 3) con una distribución más dispersa y masiva.
    • Zonas Sur y Norte: Actúan como territorios de transición intermedia (Estratos 4–5).
    • Validación: La segmentación obtenida no es solo un fenómeno de precios, sino una realidad geoespacial donde coexisten submercados con lógicas territoriales propias.

8.2 Recomendaciones para la Optimización de la Inversión

Los resultados sugieren abandonar las estrategias comerciales genéricas y adoptar un enfoque diferenciado por submercado y territorio:

  • Zona Oeste – Estrategia de Margen (Premium): Se debe priorizar la captación de activos de alta gama. Requiere marketing segmentado, posicionamiento aspiracional y gestión comercial personalizada. El objetivo no es el volumen, sino la rentabilidad por operación, asumiendo un horizonte de venta más largo con mayor margen unitario.
  • Zonas Oriente y Centro – Estrategia de Escala (Estándar): La ventaja competitiva aquí se basa en la rotación y la eficiencia operativa. Se recomienda la optimización del embudo de ventas, valoración automatizada, pricing competitivo y alianzas financieras para acelerar cierres y mantener una gestión eficiente del inventario.
  • Zonas Norte y Sur – Estrategia Mixta (Transición): Son territorios estratégicos para expansión controlada y diversificación. Se sugiere el desarrollo de una oferta de “lujo accesible” mediante proyectos orientados a la movilidad socioeconómica, logrando el balance perfecto entre margen y rotación.

Síntesis Ejecutiva: El mercado inmobiliario urbano analizado presenta una estructura económica dual, espacialmente estratificada y altamente interpretable. La empresa que alinee su estrategia comercial, territorial y presupuestal con esta arquitectura estructural logrará reducir el riesgo, optimizar la asignación de sus recursos y maximizar su retorno sobre la inversión (ROI).

9 Referencias

Aggarwal, C. C. (2017). Outlier analysis (2nd ed.). Springer.

Chakraborty, S., & Maitra, R. (2017). A transformation-based approach to Gaussian mixture clustering on skewed data. Computational Statistics & Data Analysis, 113, 141–157. https://doi.org/10.1016/j.csda.2017.03.008

Clarke, A. H., Freytag, P. V., & Clarke, A. (2024). Revisiting the strategic role of market segmentation: Five themes for future research. Industrial Marketing Management.

Cuesta-Albertos, J. A., Gordaliza, A., & Matrán, C. (1997). Trimmed k-means: An attempt to robustify quantizers. The Annals of Statistics, 25(2), 553–576.

Goodman, A. C., & Thibodeau, T. G. (1998). Housing market segmentation. Journal of Housing Economics, 7(2), 121–143. https://doi.org/10.1006/jhec.1998.0229

Guarini, M. R., Battisti, F., & Chiovitti, A. (2016). Definition of luxury dwellings features for regulatory purposes and for formation of market price.

Halvorsen, R., & Palmquist, R. (1980). The interpretation of dummy variables in semilogarithmic equations. American Economic Review, 70(3), 474–475.

Hubert, M., & Vandervieren, E. (2008). An adjusted boxplot for skewed distributions. Computational Statistics & Data Analysis, 52(12), 5186–5201. https://doi.org/10.1016/j.csda.2007.11.008

Malpezzi, S. (2003). Hedonic pricing models: A selective and applied review. In T. O’Sullivan & K. Gibb (Eds.), Housing economics and public policy (pp. 67–89). Blackwell Science.

Odlin, D., Benson-Rea, M., & Meares, C. (2021). Market niches as dynamic, co-created resource domains. Industrial Marketing Management, 95, 26–39.

Rousseeuw, P. J., & Hubert, M. (2011). Robust statistics for outlier detection. Wiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery, 1(1), 73–79. https://doi.org/10.1002/widm.2

Seo, S. (2006). A review and comparison of methods for detecting outliers in univariate data sets. University of Pittsburgh.

Toussaint, G., et al. (2025). The more luxury, the less luxury? Spatial clustering and price premium in luxury housing markets. Journal of European Real Estate Research.