El presente informe analiza la oferta inmobiliaria urbana con el objetivo de apoyar decisiones estratégicas de compra, venta y valoración de inmuebles. Mediante técnicas de análisis multivariado —reducción de dimensionalidad (Análisis de Componentes Principales), segmentación (clustering) y análisis de correspondencia múltiple— se identificaron patrones estructurales que explican la organización del mercado.
Los resultados evidencian que la variabilidad del mercado está determinada principalmente por el nivel económico del inmueble, representado por variables como precio, área construida y características estructurales. A partir de esta estructura se identificaron cuatro segmentos claramente diferenciados, entre los cuales destaca un segmento premium caracterizado por altos precios, mayor área construida y mejores atributos funcionales (mayor número de parqueaderos y baños).
Aunque este segmento representa una menor proporción del total de la oferta, concentra un mayor valor unitario, lo que lo convierte en una oportunidad estratégica para enfoques orientados a rentabilidad. Adicionalmente, el análisis de correspondencia confirma que la localización geográfica y el estrato socioeconómico actúan como determinantes estructurales del valor de la oferta, reforzando la importancia de estrategias diferenciadas por zona.
En conjunto, el análisis demuestra que el mercado inmobiliario urbano no es homogéneo, sino que presenta una estructura segmentada y territorialmente organizada, lo que permite diseñar estrategias más precisas y basadas en evidencia.
Una empresa inmobiliaria líder en una gran ciudad busca comprender en profundidad la oferta de vivienda urbana para tomar decisiones más informadas. La empresa cuenta con una base de datos de propiedades residenciales (variables numéricas y categóricas) y requiere un análisis integral que permita:
Metodología
Se aplicó un enfoque de análisis multivariado en cuatro etapas:
Reducción de dimensionalidad mediante Análisis de Componentes Principales (PCA).
Segmentación del mercado mediante clustering K-means sobre las componentes retenidas.
Validación interna de la segmentación utilizando el coeficiente de silueta.
Exploración de asociaciones categóricas mediante Análisis de Correspondencia Múltiple (MCA).
Este enfoque permite combinar reducción estructural, segmentación y análisis exploratorio categórico para una comprensión integral del mercado.
library(paqueteMODELOS)
data("vivienda")
str(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>
summary(vivienda)
## id zona piso estrato
## Min. : 1 Length:8322 Length:8322 Min. :3.000
## 1st Qu.:2080 Class :character Class :character 1st Qu.:4.000
## Median :4160 Mode :character Mode :character Median :5.000
## Mean :4160 Mean :4.634
## 3rd Qu.:6240 3rd Qu.:5.000
## Max. :8319 Max. :6.000
## NA's :3 NA's :3
## preciom areaconst parqueaderos banios
## Min. : 58.0 Min. : 30.0 Min. : 1.000 Min. : 0.000
## 1st Qu.: 220.0 1st Qu.: 80.0 1st Qu.: 1.000 1st Qu.: 2.000
## Median : 330.0 Median : 123.0 Median : 2.000 Median : 3.000
## Mean : 433.9 Mean : 174.9 Mean : 1.835 Mean : 3.111
## 3rd Qu.: 540.0 3rd Qu.: 229.0 3rd Qu.: 2.000 3rd Qu.: 4.000
## Max. :1999.0 Max. :1745.0 Max. :10.000 Max. :10.000
## NA's :2 NA's :3 NA's :1605 NA's :3
## habitaciones tipo barrio longitud
## Min. : 0.000 Length:8322 Length:8322 Min. :-76.59
## 1st Qu.: 3.000 Class :character Class :character 1st Qu.:-76.54
## Median : 3.000 Mode :character Mode :character Median :-76.53
## Mean : 3.605 Mean :-76.53
## 3rd Qu.: 4.000 3rd Qu.:-76.52
## Max. :10.000 Max. :-76.46
## NA's :3 NA's :3
## latitud
## Min. :3.333
## 1st Qu.:3.381
## Median :3.416
## Mean :3.418
## 3rd Qu.:3.452
## Max. :3.498
## NA's :3
La base de datos contiene 8.322 registros de viviendas con variables estructurales y geográficas. Se observa alta dispersión en el precio (máximo cercano a 2.000 frente a un mínimo de 58), lo que sugiere una heterogeneidad significativa en la oferta. Asimismo, existen valores faltantes en algunas variables como parqueaderos, lo cual fue tratado antes del análisis multivariado.
Desde una perspectiva estratégica, esta heterogeneidad sugiere la coexistencia de múltiples perfiles de vivienda dentro del mercado urbano, lo cual justifica la aplicación de técnicas multivariadas para identificar estructuras subyacentes y posibles segmentos diferenciados.
vars_pca <- vivienda[, c("estrato",
"preciom",
"areaconst",
"parqueaderos",
"banios",
"habitaciones")]
# Eliminar NA
vars_pca <- na.omit(vars_pca)
# Escalar
vars_pca_scaled <- scale(vars_pca)
summary(vars_pca_scaled)
## estrato preciom areaconst parqueaderos
## Min. :-1.9279 Min. :-1.2264 Min. :-1.0488 Min. :-0.7425
## 1st Qu.:-0.8747 1st Qu.:-0.6593 1st Qu.:-0.6602 1st Qu.:-0.7425
## Median : 0.1786 Median :-0.3399 Median :-0.3549 Median : 0.1465
## Mean : 0.0000 Mean : 0.0000 Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 1.2319 3rd Qu.: 0.3317 3rd Qu.: 0.3599 3rd Qu.: 0.1465
## Max. : 1.2319 Max. : 4.5669 Max. :10.8526 Max. : 7.2582
## banios habitaciones
## Min. :-2.3587 Min. :-2.6466
## 1st Qu.:-0.9096 1st Qu.:-0.4477
## Median :-0.1851 Median :-0.4477
## Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 0.5394 3rd Qu.: 0.2852
## Max. : 4.8866 Max. : 4.6831
El escalamiento de las variables fue necesario debido a que las variables numéricas presentan diferentes escalas de medición (por ejemplo, precio se mide en cientos o miles, mientras que baños y parqueaderos son conteos). Sin esta estandarización, las variables con mayor magnitud dominarían la construcción de las componentes principales, sesgando la interpretación de los resultados.
Este proceso garantiza que el análisis refleje relaciones estructurales reales del mercado y no efectos artificiales derivados de diferencias en escala de medición.
El Análisis de Componentes Principales (PCA) es una técnica de reducción de dimensionalidad que transforma un conjunto amplio de variables correlacionadas en un número menor de componentes sintéticos. Estas componentes concentran la mayor parte de la variabilidad del mercado y permiten identificar las dimensiones estructurales que explican las diferencias entre las propiedades.
# 3. Ejecutar PCA
pca_res <- prcomp(vars_pca_scaled, center = FALSE, scale. = FALSE)
# Calcular varianza explicada
var_exp <- (pca_res$sdev)^2
prop_var <- var_exp / sum(var_exp)
cum_var <- cumsum(prop_var)
# Crear tabla
tabla_pca <- data.frame(
Componente = paste0("PC", 1:length(prop_var)),
Varianza = round(prop_var*100, 2),
Acumulada = round(cum_var*100, 2)
)
tabla_pca
## Componente Varianza Acumulada
## 1 PC1 58.06 58.06
## 2 PC2 20.38 78.45
## 3 PC3 8.32 86.77
## 4 PC4 5.99 92.76
## 5 PC5 4.07 96.84
## 6 PC6 3.16 100.00
loadings <- round(pca_res$rotation, 3)
loadings
## PC1 PC2 PC3 PC4 PC5 PC6
## estrato 0.295 -0.638 0.543 0.071 0.435 -0.130
## preciom 0.470 -0.239 -0.108 -0.291 -0.266 0.744
## areaconst 0.450 0.204 -0.259 -0.657 0.304 -0.405
## parqueaderos 0.428 -0.151 -0.616 0.620 0.119 -0.123
## banios 0.465 0.160 0.370 0.141 -0.678 -0.376
## habitaciones 0.299 0.668 0.331 0.271 0.417 0.329
La primera componente principal (PC1) presenta altas cargas positivas en precio, área construida, número de baños y parqueaderos, lo que indica que esta dimensión representa un eje asociado al nivel económico y tamaño del inmueble. En términos prácticos, valores altos en PC1 corresponden a propiedades de mayor precio, mayor área y mejor dotación estructural. Esta componente sintetiza el posicionamiento económico de la oferta y permite ordenar el mercado desde inmuebles de menor valor hacia propiedades de mayor categoría.
La segunda componente principal (PC2) muestra una alta carga positiva en número de habitaciones y una carga negativa relevante en estrato socioeconómico. Esto sugiere que esta dimensión captura diferencias en la configuración funcional interna de la vivienda y en su nivel socioeconómico relativo. En otras palabras, PC2 distingue propiedades según su estructura habitacional y su perfil social, complementando la dimensión puramente económica capturada por PC1.
En conjunto, las dos primeras componentes explican la mayor parte de la variabilidad del mercado y permiten identificar que la oferta inmobiliaria se organiza principalmente en torno a dos ejes estructurales:
el valor económico del inmueble, y
sus características funcionales y socioeconómicas.
Esto confirma que la variabilidad observada en el mercado no es aleatoria, sino que responde a patrones estructurales bien definidos que segmentan la oferta.
Estas dimensiones reducidas no solo facilitan la visualización del mercado, sino que constituyen la base analítica para la segmentación posterior. Al proyectar las propiedades sobre estos ejes estructurales, se generan agrupaciones naturales que permiten identificar segmentos homogéneos del mercado, lo cual justifica el uso del análisis de conglomerados como etapa siguiente del estudio.
# Scree Plot
plot(prop_var*100,
type="b",
xaxt="n",
xlab="Componentes principales",
ylab="Varianza explicada (%)",
main="Scree Plot - Varianza explicada")
axis(1,
at=1:length(prop_var),
labels=paste0("PC",1:length(prop_var)))
abline(h=100/length(prop_var), lty=2, col="red")
# Varianza acumulada
plot(cum_var*100,
type="b",
xaxt="n",
xlab="Componentes principales",
ylab="Varianza acumulada (%)",
main="Varianza explicada acumulada")
axis(1,
at=1:length(cum_var),
labels=paste0("PC",1:length(cum_var)))
abline(h=80, lty=2, col="blue")
El Scree Plot evidencia una caída pronunciada en las dos primeras componentes y una estabilización a partir de la tercera. La varianza acumulada supera el 80% al incluir las tres primeras componentes (86.77%), por lo que se decide utilizar tres componentes principales para los análisis posteriores.
Adicionalmente, el criterio de Kaiser (autovalores mayores a 1) respalda la retención de las tres primeras componentes, ya que concentran la mayor parte de la varianza estructural del conjunto de datos.
Esto implica que la mayor parte de la complejidad del mercado puede explicarse mediante tres dimensiones fundamentales, simplificando el análisis sin perder capacidad interpretativa.
El análisis de conglomerados (clustering) permite agrupar propiedades con características similares en segmentos homogéneos. En este caso se utiliza el algoritmo K-means sobre las componentes principales, con el fin de identificar perfiles diferenciados dentro de la oferta inmobiliaria.
# 5. Clustering sobre componentes principales
pc_scores <- as.data.frame(pca_res$x[, 1:3]) # PC1, PC2, PC3
head(pc_scores)
## PC1 PC2 PC3
## 1 -1.1049560 2.4801716 0.1929478
## 2 -1.8441361 0.9171988 -0.9159451
## 3 -0.8903650 1.3924365 -1.4106187
## 4 0.8511689 0.4938065 -0.9501022
## 5 -1.3998646 -0.4258936 0.3015001
## 6 -1.1002302 -0.3000029 0.5811099
set.seed(123)
wss <- sapply(2:10, function(k){
kmeans(pc_scores, centers = k, nstart = 20)$tot.withinss
})
plot(2:10, wss, type="b",
xlab="Numero de clusters (k)",
ylab="WSS",
main="Metodo del codo (k-means sobre PCs)")
## Selección del número óptimo de clústeres (Método del codo)
Para determinar el número adecuado de segmentos, se utilizó el método del codo, el cual analiza la variabilidad interna de los grupos a través del indicador WSS (Within-Cluster Sum of Squares). Este indicador mide qué tan homogéneos son los clústeres: valores más bajos indican grupos más compactos.
El gráfico evidencia una reducción significativa del WSS hasta k = 4. A partir de este punto, la disminución es considerablemente más suave, lo que indica que agregar más clústeres no mejora sustancialmente la segmentación.
En términos prácticos, esto sugiere que el mercado inmobiliario urbano puede organizarse de manera natural en cuatro grandes perfiles diferenciados. Esta elección permite capturar la heterogeneidad del mercado sin generar una fragmentación excesiva que complique la interpretación estratégica.
set.seed(123)
k_final <- kmeans(pc_scores, centers = 4, nstart = 20)
pc_scores$cluster <- as.factor(k_final$cluster)
table(pc_scores$cluster)
##
## 1 2 3 4
## 772 3182 1988 775
Para evaluar la calidad de la segmentación obtenida, se utiliza el coeficiente de silueta, una medida que cuantifica qué tan bien está clasificada cada observación dentro de su clúster en comparación con los demás grupos. Valores cercanos a 1 indican buena separación entre segmentos, mientras que valores cercanos a 0 sugieren solapamiento.
library(cluster)
sil <- silhouette(k_final$cluster, dist(pc_scores[,1:3]))
mean_sil <- mean(sil[, 3])
mean_sil
## [1] 0.3739477
Para evaluar la calidad del agrupamiento obtenido con K-means, se calculó el coeficiente promedio de silueta, el cual mide qué tan bien se encuentra cada observación dentro de su propio clúster en comparación con los demás grupos. Este indicador toma valores entre -1 y 1, donde valores cercanos a 1 indican una separación clara entre segmentos, mientras que valores cercanos a 0 sugieren superposición.
El coeficiente promedio de silueta obtenido fue de 0.37. En términos prácticos, valores entre 0.25 y 0.50 indican una estructura de segmentación razonable con cierto grado de superposición entre clústeres. Esto sugiere que la segmentación es consistente y útil para fines estratégicos, aunque el mercado presenta transiciones graduales entre segmentos, especialmente entre niveles socioeconómicos intermedios, lo cual es común en mercados reales.
En consecuencia, la validación confirma que la elección de cuatro clústeres es metodológicamente adecuada y ofrece una representación estructural coherente del mercado inmobiliario urbano.
Con el fin de interpretar estratégicamente los segmentos identificados, se calcularon los valores promedio de las variables originales para cada clúster. Esto permite comprender las diferencias económicas y estructurales entre grupos, y facilita su traducción en perfiles de mercado con implicaciones estratégicas.
# Agregar cluster a variables originales
df_cluster <- vars_pca
df_cluster$cluster <- pc_scores$cluster
# Perfil promedio por cluster
perfil_cluster <- aggregate(. ~ cluster, data=df_cluster, mean)
# Redondear solo columnas numéricas
perfil_cluster[ , -1] <- round(perfil_cluster[ , -1], 2)
perfil_cluster
## cluster estrato preciom areaconst parqueaderos banios habitaciones
## 1 1 4.11 457.51 295.50 1.81 4.45 6.10
## 2 2 4.31 247.65 95.14 1.18 2.24 2.94
## 3 3 5.59 563.77 177.72 2.05 3.64 3.39
## 4 4 5.73 1145.14 429.06 3.98 5.23 4.46
A partir de los promedios observados, se identifican cuatro perfiles claramente diferenciados dentro del mercado inmobiliario urbano:
plot(pc_scores$PC1, pc_scores$PC2,
col = pc_scores$cluster,
pch = 19,
xlab = "PC1",
ylab = "PC2",
main = "Clusters en el plano PCA (PC1 vs PC2)")
legend("topright",
legend = levels(pc_scores$cluster),
col = 1:length(levels(pc_scores$cluster)),
pch = 19,
title = "Cluster")
La representación gráfica de los clústeres en el plano formado por la primera y segunda componente principal permite visualizar la separación estructural entre los segmentos identificados.
Cada punto del gráfico representa una vivienda, mientras que los colores indican el clúster asignado por el algoritmo K-means. La disposición espacial muestra que los grupos no son arbitrarios, sino que responden a diferencias reales en las dimensiones económicas y estructurales capturadas por las componentes principales.
Se observa que el segmento premium se ubica predominantemente en la zona de valores altos de la primera componente principal, lo que confirma su asociación con mayores niveles de precio, área construida y dotación estructural. Por su parte, los demás clústeres ocupan regiones diferenciadas del plano, reflejando distintos perfiles dentro del mercado.
Esta visualización refuerza la coherencia del proceso de segmentación y confirma que los clústeres identificados representan estructuras diferenciadas dentro del mercado inmobiliario urbano.
# 7. Preparación para Análisis de Correspondencia Múltiple
library(FactoMineR)
library(factoextra)
df_cat <- vivienda[, c("tipo", "zona", "estrato")]
# Convertir a factores
df_cat$tipo <- as.factor(df_cat$tipo)
df_cat$zona <- as.factor(df_cat$zona)
df_cat$estrato <- as.factor(df_cat$estrato)
df_cat <- na.omit(df_cat)
str(df_cat)
## spc_tbl_ [8,319 × 3] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ tipo : Factor w/ 2 levels "Apartamento",..: 2 2 2 2 1 1 1 1 2 2 ...
## $ zona : Factor w/ 5 levels "Zona Centro",..: 4 4 4 5 2 2 2 2 2 2 ...
## $ estrato: Factor w/ 4 levels "3","4","5","6": 1 1 1 2 3 3 2 3 3 3 ...
## - 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>
## - attr(*, "na.action")= 'omit' Named int [1:3] 8320 8321 8322
## ..- attr(*, "names")= chr [1:3] "8320" "8321" "8322"
Con el propósito de analizar asociaciones entre variables categóricas del mercado (tipo de vivienda, zona y estrato socioeconómico), se aplicó un Análisis de Correspondencia Múltiple (MCA). Esta técnica permite representar gráficamente patrones de asociación entre categorías y entender cómo se estructuran territorial y socioeconómicamente los segmentos identificados.
# 8. Analisis de Correspondencia Multiple (MCA)
mca_res <- MCA(df_cat, graph = FALSE)
# Porcentaje de inercia explicada por dimension
eig <- mca_res$eig
eig
## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.5620882 21.078306 21.07831
## dim 2 0.4531232 16.992119 38.07043
## dim 3 0.3796450 14.236687 52.30711
## dim 4 0.3334444 12.504164 64.81128
## dim 5 0.3233137 12.124263 76.93554
## dim 6 0.2717762 10.191608 87.12715
## dim 7 0.2013563 7.550862 94.67801
## dim 8 0.1419197 5.321990 100.00000
# Mapa factorial (categorias)
fviz_mca_var(mca_res, repel = TRUE,
title = "MCA: Tipo, Zona y Estrato")
El análisis de correspondencia múltiple revela asociaciones claras entre tipo de vivienda, zona y estrato socioeconómico. La primera dimensión diferencia principalmente las zonas centrales y orientales del resto de la ciudad, lo que sugiere una concentración estructural de ciertos perfiles inmobiliarios en estas áreas. Por su parte, la segunda dimensión refleja un gradiente socioeconómico que distingue niveles de estrato dentro del mercado urbano.
Se observan asociaciones relevantes entre Zona Oeste y estratos altos, así como entre Zona Sur y estratos medios, evidenciando que la distribución geográfica de la oferta no es aleatoria, sino que responde a patrones socioeconómicos definidos. Asimismo, el tipo de vivienda muestra comportamientos diferenciados según la localización, lo que indica segmentaciones espaciales consistentes.
Esto sugiere que la localización geográfica actúa como un determinante estructural del nivel socioeconómico de la oferta, reforzando la importancia de estrategias diferenciadas por zona dentro del mercado inmobiliario urbano.
La coherencia entre los resultados del PCA, la segmentación por clustering y las asociaciones observadas en el MCA refuerza la robustez del análisis y confirma que la segmentación identificada responde tanto a variables estructurales como territoriales.
Aunque el presente estudio permite identificar patrones relevantes en la oferta inmobiliaria urbana, es importante reconocer algunas limitaciones metodológicas y de información:
Alcance de las variables consideradas El análisis se basa en variables estructurales (precio, área construida, número de habitaciones, baños, parqueaderos y estrato) y categóricas (tipo de vivienda, zona y estrato). No se incorporan variables externas como valorización histórica, dinámica de la demanda, cercanía a servicios, infraestructura urbana o condiciones macroeconómicas, las cuales pueden influir significativamente en el comportamiento del mercado.
Naturaleza transversal de los datos La base corresponde a un corte específico del mercado inmobiliario. No se analiza evolución temporal de precios ni cambios en la oferta, por lo que no se evalúan tendencias ni ciclos del mercado.
Supuestos del método de Clustering (K-means) El algoritmo requiere definir previamente el número de clústeres y asume estructuras relativamente compactas en el espacio reducido por el PCA. Diferentes elecciones de k podrían producir segmentaciones alternativas.
Reducción de dimensionalidad mediante Componentes Principales Aunque las primeras tres componentes explican una alta proporción de la varianza total, siempre existe pérdida de información al transformar las variables originales en un espacio reducido.
Carácter exploratorio del Análisis de Correspondencia Múltiple (MCA) El MCA permite identificar asociaciones entre categorías (tipo, zona y estrato), pero no establece relaciones causales ni explica directamente los determinantes del precio.
En consecuencia, los resultados deben interpretarse como una segmentación estratégica y exploratoria que apoya la toma de decisiones, más que como una clasificación definitiva del mercado inmobiliario.
El análisis integral del mercado inmobiliario urbano permitió identificar patrones estructurales relevantes mediante técnicas multivariadas aplicadas de manera complementaria.
El análisis de Componentes Principales evidenció que la variabilidad del mercado está fuertemente explicada por variables relacionadas con tamaño, precio y nivel socioeconómico, confirmando que estas dimensiones son determinantes en la diferenciación de la oferta inmobiliaria.
El análisis de conglomerados permitió identificar cuatro segmentos claramente diferenciados. Entre ellos destaca un segmento premium caracterizado por:
Aunque este segmento representa una menor proporción del total de la oferta, su alto valor unitario lo convierte en un grupo estratégicamente atractivo dentro del mercado.
Por su parte, el análisis de correspondencia múltiple confirmó asociaciones entre tipo de vivienda, zona y estrato, evidenciando concentración de estratos altos en determinadas zonas específicas, lo que refuerza la viabilidad de una estrategia enfocada en mercados de alto poder adquisitivo.
En conjunto, los resultados muestran coherencia entre la reducción dimensional mediante Componentes Principales, la segmentación estructural a través de K-means y las asociaciones categóricas identificadas con el MCA, fortaleciendo la robustez metodológica del análisis realizado y respaldando la toma de decisiones estratégicas basada en evidencia estadística.
En consecuencia, este estudio no solo identifica patrones estadísticos relevantes, sino que transforma datos complejos del mercado en información estratégica accionable. La integración de reducción de dimensionalidad, segmentación y análisis de asociaciones permite apoyar decisiones de inversión, posicionamiento y diferenciación competitiva, proporcionando una base sólida para la planificación estratégica en el sector inmobiliario urbano.
Se recomienda a la empresa inmobiliaria:
Priorizar inversión en el segmento premium, dada su alta rentabilidad por unidad.
Concentrar esfuerzos en zonas asociadas a estratos altos, identificadas en el análisis de correspondencia.
Diseñar estrategias diferenciadas para el mercado base, orientadas a volumen.
Utilizar segmentación basada en PCA y clustering para definir campañas comerciales más precisas.