Una empresa inmobiliaria líder en una gran ciudad está buscando comprender en profundidad el mercado de viviendas urbanas para tomar decisiones estratégicas más informadas. La empresa posee una base de datos extensa que contiene información detallada sobre diversas propiedades residenciales disponibles en el mercado. Se requiere realizar un análisis holístico de estos datos para identificar patrones, relaciones y segmentaciones relevantes que permitan mejorar la toma de decisiones en cuanto a la compra, venta y valoración de propiedades.
Se instaló “paqueteMODELOS” y se cargaron sus funciones. En este paquete, se encuentra el conjunto de datos que será utilizado en el desarrollo de este trabajo. Se creó un nuevo objeto denominado “propiedades” para almacenar el conjunto de datos “vivienda”, que contiene toda la información de estudio. Posteriormente, se generó un resumen estadístico descriptivo de estos datos con el objetivo de observar y analizar el estado inicial de la información.
library(paqueteMODELOS)
## Warning: package 'broom' was built under R version 4.3.3
## Warning: package 'GGally' was built under R version 4.3.3
## Warning: package 'ggplot2' was built under R version 4.3.3
## Warning: package 'knitr' was built under R version 4.3.3
propiedades = vivienda
summary(propiedades)
## 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
propiedades <- subset(propiedades, select = -c(id, barrio, longitud, latitud))
Se eliminan las variables id, latitud y longitud, ya que no se tendran en cuenta para este ejercicio, y se procede a analizar las otras variables, para determinar si es necesario eliminar alguna otra. Se analizan dos variables que son las que mas NA’s y generan alguna duda debido a su naturaleza, ya que el piso esta mas relacionado con los apartamentos, y en menor medida la variable parqueaderos tambien esta mas relacionada con los apartamentos, entonces vamos a analizar como se comportan estas variables
propiedades$piso <- as.numeric(propiedades$piso)#se cambia el tipo de variable de piso a numerica ya que estaba en chr
casas <- subset(propiedades, tipo == "Casa")
apartamentos <- subset(propiedades, tipo == "Apartamento")
conteo_piso_casas <- table(casas$piso, useNA = "ifany")
print(conteo_piso_casas)
##
## 1 2 3 4 5 6 7 10 <NA>
## 430 938 524 62 3 2 4 2 1254
conteo_piso_apartamentos <- table(apartamentos$piso, useNA = "ifany")
print(conteo_piso_apartamentos)
##
## 1 2 3 4 5 6 7 8 9 10 11 12 <NA>
## 430 512 573 545 564 243 200 211 146 128 84 83 1381
Según la documentación del dataset, la variable piso se define como “Piso en el que está ubicada la vivienda.” Se observa que en las casas hay muchos valores faltantes y que algunas están ubicadas en diferentes pisos, lo cual no tiene sentido. Por lo tanto, se optará por no utilizar la variable piso ya que puede introducir ruido o información errónea al análisis.
Ahora, se procederá a realizar el mismo análisis con la variable parqueaderos.
casaspar <- subset(propiedades, tipo == "Casa")
apartamentospar <- subset(propiedades, tipo == "Apartamento")
conteo_parq_casas <- table(casaspar$parqueaderos, useNA = "ifany")
print(conteo_parq_casas)
##
## 1 2 3 4 5 6 7 8 9 10 <NA>
## 857 891 268 296 64 66 17 17 4 6 733
conteo_parq_apartamentos <- table(apartamentospar$parqueaderos, useNA = "ifany")
print(conteo_parq_apartamentos)
##
## 1 2 3 4 5 6 7 10 <NA>
## 2298 1584 252 88 4 2 1 2 869
Se decidio no utilizar la variable parqueaderos en el análisis debido a la evidente inconsistencia en los datos. Como se observó, algunas propiedades muestran un número de parqueaderos que llega hasta 10, lo cual no tiene sentido lógico y sugiere errores en la información. Además, la presencia de estos valores extremos podría introducir ruido y sesgar los resultados, afectando negativamente la calidad del análisis. Por lo tanto, para asegurar un análisis más preciso y confiable, optaré por excluir esta variable.
propiedades <- subset(propiedades, select = -c(piso, parqueaderos))
summary(propiedades)
## zona estrato preciom areaconst
## Length:8322 Min. :3.000 Min. : 58.0 Min. : 30.0
## Class :character 1st Qu.:4.000 1st Qu.: 220.0 1st Qu.: 80.0
## Mode :character Median :5.000 Median : 330.0 Median : 123.0
## Mean :4.634 Mean : 433.9 Mean : 174.9
## 3rd Qu.:5.000 3rd Qu.: 540.0 3rd Qu.: 229.0
## Max. :6.000 Max. :1999.0 Max. :1745.0
## NA's :3 NA's :2 NA's :3
## banios habitaciones tipo
## Min. : 0.000 Min. : 0.000 Length:8322
## 1st Qu.: 2.000 1st Qu.: 3.000 Class :character
## Median : 3.000 Median : 3.000 Mode :character
## Mean : 3.111 Mean : 3.605
## 3rd Qu.: 4.000 3rd Qu.: 4.000
## Max. :10.000 Max. :10.000
## NA's :3 NA's :3
sapply(propiedades[, c("tipo", "zona")], function(x) sum(is.na(x)))
## tipo zona
## 3 3
propiedades <- na.omit(propiedades)
Se observa que en el resto de variables hay muy pocos valores faltantes, por lo que se procedena eliminar estos.
cat("Cantidad de propiedades con 0 habitaciones:", sum(propiedades$habitaciones == 0), "\n")
## Cantidad de propiedades con 0 habitaciones: 66
cat("Cantidad de propiedades con 0 baños:", sum(propiedades$banios == 0), "\n")
## Cantidad de propiedades con 0 baños: 45
propiedades <- propiedades[propiedades$banios > 0 & propiedades$habitaciones > 0,]
summary(propiedades)
## zona estrato preciom areaconst
## Length:8243 Min. :3.000 Min. : 58.0 Min. : 30
## Class :character 1st Qu.:4.000 1st Qu.: 220.0 1st Qu.: 80
## Mode :character Median :5.000 Median : 330.0 Median : 122
## Mean :4.637 Mean : 433.3 Mean : 174
## 3rd Qu.:5.000 3rd Qu.: 540.0 3rd Qu.: 227
## Max. :6.000 Max. :1999.0 Max. :1745
## banios habitaciones tipo
## Min. : 1.000 Min. : 1.000 Length:8243
## 1st Qu.: 2.000 1st Qu.: 3.000 Class :character
## Median : 3.000 Median : 3.000 Mode :character
## Mean : 3.128 Mean : 3.634
## 3rd Qu.: 4.000 3rd Qu.: 4.000
## Max. :10.000 Max. :10.000
library(e1071)
## Warning: package 'e1071' was built under R version 4.3.3
library(dplyr)
library(skimr)
## Warning: package 'skimr' was built under R version 4.3.3
skim(propiedades %>% select(preciom, areaconst, habitaciones, banios))
| Name | propiedades %>% select(pr… |
| Number of rows | 8243 |
| Number of columns | 4 |
| _______________________ | |
| Column type frequency: | |
| numeric | 4 |
| ________________________ | |
| Group variables | None |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| preciom | 0 | 1 | 433.27 | 328.93 | 58 | 220 | 330 | 540 | 1999 | ▇▂▁▁▁ |
| areaconst | 0 | 1 | 174.04 | 142.32 | 30 | 80 | 122 | 227 | 1745 | ▇▁▁▁▁ |
| habitaciones | 0 | 1 | 3.63 | 1.43 | 1 | 3 | 3 | 4 | 10 | ▂▇▂▁▁ |
| banios | 0 | 1 | 3.13 | 1.41 | 1 | 2 | 3 | 4 | 10 | ▇▇▃▁▁ |
asimetria_preciom <- skewness(propiedades$preciom, na.rm = TRUE)
asimetria_areaconst <- skewness(propiedades$areaconst, na.rm = TRUE)
asimetria_habitaciones <- skewness(propiedades$habitaciones, na.rm = TRUE)
asimetria_banios <- skewness(propiedades$banios, na.rm = TRUE)
cat("Asimetría de preciom:", asimetria_preciom, "\n")
## Asimetría de preciom: 1.853343
cat("Asimetría de areaconst:", asimetria_areaconst, "\n")
## Asimetría de areaconst: 2.728374
cat("Asimetría de habitaciones:", asimetria_habitaciones, "\n")
## Asimetría de habitaciones: 1.822006
cat("Asimetría de banios:", asimetria_banios, "\n")
## Asimetría de banios: 0.9814506
grafico_barras = ggplot(propiedades, aes(x = estrato, fill = tipo)) +
geom_bar(position = "dodge", color = "black", stat = "count") +
labs(title = "Distribución de Tipos de Propiedades por Estrato",
x = "Estrato",
y = "Cantidad de Propiedades") +
theme_minimal()
grafico_barras_con_etiquetas <- grafico_barras +
geom_text(stat = "count",
aes(label = after_stat(count)),
position = position_dodge(width = 0.9),
vjust = -0.5, size = 3)
print(grafico_barras_con_etiquetas)
grafico_barras = ggplot(propiedades, aes(x = zona, fill = tipo)) +
geom_bar(position = "dodge", color = "black", stat = "count") +
labs(title = "Distribución de Tipos de Propiedades por Zona",
x = "Zona",
y = "Cantidad de Propiedades") +
theme_minimal()
grafico_barras_con_etiquetas <- grafico_barras +
geom_text(stat = "count",
aes(label = after_stat(count)),
position = position_dodge(width = 0.9),
vjust = -0.5, size = 3)
print(grafico_barras_con_etiquetas)
Se seleccionan las variables cuantitativas(precio, areaconst, banios y habitaciones), para reducir su dimensionalidad a por lo menos dos variables(componentes principales), y que estos expliquen un porcentaje grande de los datos.
library(mice)
## Warning in check_dep_version(): ABI version mismatch:
## lme4 was built with Matrix ABI version 1
## Current Matrix ABI version is 0
## Please re-install lme4 from source or restore original 'Matrix' package
library(factoextra)
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
library(psych)
## Warning: package 'psych' was built under R version 4.3.3
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.3.3
subpropertiespca = propiedades[, c("preciom","areaconst","banios","habitaciones")]
summary(subpropertiespca)
## preciom areaconst banios habitaciones
## Min. : 58.0 Min. : 30 Min. : 1.000 Min. : 1.000
## 1st Qu.: 220.0 1st Qu.: 80 1st Qu.: 2.000 1st Qu.: 3.000
## Median : 330.0 Median : 122 Median : 3.000 Median : 3.000
## Mean : 433.3 Mean : 174 Mean : 3.128 Mean : 3.634
## 3rd Qu.: 540.0 3rd Qu.: 227 3rd Qu.: 4.000 3rd Qu.: 4.000
## Max. :1999.0 Max. :1745 Max. :10.000 Max. :10.000
correlaciones = cor(subpropertiespca)
correlaciones
## preciom areaconst banios habitaciones
## preciom 1.0000000 0.6885857 0.6851013 0.2745018
## areaconst 0.6885857 1.0000000 0.6722375 0.5465573
## banios 0.6851013 0.6722375 1.0000000 0.5936313
## habitaciones 0.2745018 0.5465573 0.5936313 1.0000000
subproperpcastan = scale(subpropertiespca)
head(subproperpcastan)
## preciom areaconst banios habitaciones
## [1,] -0.5571698 -0.7309968 -0.09041565 1.6579542
## [2,] -0.3443558 -0.3796746 -0.79819935 -0.4438323
## [3,] -0.2531498 0.3229699 -0.79819935 0.2567632
## [4,] -0.1011398 0.7445566 1.32515174 -0.4438323
## [5,] -0.5267678 -0.5904679 -0.79819935 -0.4438323
## [6,] -0.5875718 -0.6115473 -0.09041565 -0.4438323
res.pca = prcomp(subproperpcastan)
summary(res.pca)
## Importance of components:
## PC1 PC2 PC3 PC4
## Standard deviation 1.6583 0.8569 0.57180 0.4345
## Proportion of Variance 0.6875 0.1836 0.08174 0.0472
## Cumulative Proportion 0.6875 0.8711 0.95280 1.0000
fviz_eig(res.pca, addlabels = TRUE)
Se puede observar como el componente principal 1 explica el 68.7% de la variación total, lo que indica que la mayor parte de la información del conjunto de datos se concentra en este componente. Y el componente principal 2 explica un 18.3% adicional de la variación. En total, los dos primeros componentes explican aproximadamente el 87% de la variación, lo que es bastante alto.
fviz_pca_var(res.pca,
col.var = "contrib",
gradient.cols = c("#FF7F00", "#034D94"),
repel = TRUE
)
Las variables preciom, areaconst, y banios están alineadas en una dirección similar, lo que refuerza la idea de que estas tres variables están relacionadas y capturadas en gran medida por el PC1. habitaciones tiene una dirección diferente, destacando su variación independiente capturada por PC2.
fviz_pca_biplot(res.pca,
geom.ind = "point",
col.ind = propiedades$tipo, # Agrupa por tipo
palette = "jco",
addEllipses = TRUE, # Agrega elipses para los grupos
repel = TRUE,
col.var = "#034A94")
Ademas el biplot muestra cómo los datos se distribuyen en los componentes principales. Los apartamentos y casas están visualmente separados en este espacio, lo que sugiere que los tipos de propiedades pueden estar diferenciados en términos de las variables consideradas (precio, área, baños, habitaciones).
fviz_contrib(res.pca, choice = "var", axes = 1)
fviz_contrib(res.pca, choice = "var", axes = 2)
# Gráfico de barras adicional para la contribución total de las variables a ambos componentes
contrib_total <- res.pca$rotation[,1]^2 + res.pca$rotation[,2]^2
barplot(contrib_total, main="Contribución Total de las Variables", col="#4682B4",
xlab="Variables", ylab="Contribución", las=2)
Se seleccionan las mismas variables del PCA (precio, areaconst, banios y habitaciones), y se procede a realizar el proceso para hacer el agrupamiento en los cluster de acuerdo a sus caracteristicas.
clusterproperties = propiedades[, c("preciom","areaconst","banios","habitaciones")]
clusterpropertiesstandar = scale(clusterproperties)
clusterpropertiesstandar = as.data.frame(clusterpropertiesstandar)
dist_emp = dist(clusterpropertiesstandar, method = "euclidean")
hc_emp <- hclust(dist_emp, method = 'complete')
plot(hc_emp, cex = 0.6, main = "Dendograma de Propiedades", las=1,
ylab = "Distancia euclidiana", xlab = "Grupos")
rect.hclust(hc_emp, k = 2, border = 2:5)
Se puede observar como el Dendograma es dificil interpretar dado la cantidad de registros del dataset que su peran los 8000, por lo cual se procede a realizar el analisis con el metodo Kmeans.
Se calcula el numero optimo de clusters a utilizar, mediante el metodo de Elbow y Silhouette
fviz_nbclust(clusterpropertiesstandar, kmeans, method = "wss") +
geom_vline(xintercept = 2, linetype = 2) +
labs(subtitle = "Elbow Method")
fviz_nbclust(clusterpropertiesstandar, kmeans, method = "silhouette") +
labs(subtitle = "Silhouette Method")
se observa que ambos metodos apuntan a que con 2 clusters se puede realizar el analisis.
k2 = kmeans(clusterpropertiesstandar, centers = 2, nstart=25)
optimal_k <- 2 # Supongamos que has determinado que k=2 es óptimo
k_optimal <- kmeans(clusterpropertiesstandar, centers = optimal_k, nstart = 25)
fviz_cluster(k_optimal, data = clusterpropertiesstandar) +
theme_minimal() +
labs(title = "Cluster Analysis of Properties")
cluster_data <- clusterpropertiesstandar %>%
mutate(cluster = factor(k_optimal$cluster))
conglomeradosdf = propiedades
conglomeradosdf$cluster <- as.factor(k2$cluster)
summary(conglomeradosdf$cluster)
## 1 2
## 5708 2535
ggplot(conglomeradosdf, aes(x = cluster, y = preciom, fill = cluster)) +
geom_boxplot() +
labs(title = "Distribución del Precio por Clúster",
x = "Clúster",
y = "Precio (preciom)") +
theme_minimal()
ggplot(conglomeradosdf, aes(x = cluster, y = areaconst, fill = cluster)) +
geom_boxplot() +
labs(title = "Distribución del Área Construida por Clúster",
x = "Clúster",
y = "Área Construida (areaconst)") +
theme_minimal()
El Clúster 1 agrupa propiedades más homogéneas, con precios más bajos y áreas construidas más pequeñas, reflejando poca variabilidad. En cambio, el Clúster 2 contiene propiedades más diversas, con precios más altos y una mayor variabilidad en las áreas construidas, lo que indica una mezcla de propiedades de diferentes tamaños y valores. Esta segmentación puede ser útil para identificar patrones en el mercado inmobiliario.
En este analisis de correspondencia vamos a usar las variables categoricas (zona, estrato y tipo)
Primero se hace un analisis entre zona y estrato, y posteriormente entre las tres variables.
library(FactoMineR)
## Warning: package 'FactoMineR' was built under R version 4.3.3
propcorrespon = propiedades[, c("zona","estrato")]
propcorrespon$estrato <- as.factor(propcorrespon$estrato)
tabla <- table(propcorrespon$zona, propcorrespon$estrato)
colnames(tabla) <- c("Estrato3", "Estrato4", "Estrato5", "Estrato6" )
tabla
##
## Estrato3 Estrato4 Estrato5 Estrato6
## Zona Centro 102 14 4 1
## Zona Norte 566 394 758 170
## Zona Oeste 52 83 286 767
## Zona Oriente 334 8 2 1
## Zona Sur 378 1607 1678 1038
chisq.test(tabla)
##
## Pearson's Chi-squared test
##
## data: tabla
## X-squared = 3801.8, df = 12, p-value < 2.2e-16
library(factoextra)
library(gridExtra)
resultados_ac <- CA(tabla)
La Zona Centro muestra una asociación más fuerte con el estrato 3, indicando que esta combinación es más común en esa área. En contraste, las Zonas Oriente y Norte se diferencian en su perfil de estrato, con la Zona Oriente mostrando características más distintivas en comparación con otras zonas. Las Zonas Sur y Norte, por su proximidad en el gráfico, comparten una distribución de estratos más similar, lo que sugiere que no hay una gran diferenciación en términos de estrato entre estas dos áreas.
valores_prop <-resultados_ac$eig ; valores_prop
## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.32216299 69.851179 69.85118
## dim 2 0.12791612 27.734694 97.58587
## dim 3 0.01113428 2.414127 100.00000
fviz_screeplot(resultados_ac, addlabels = TRUE, ylim = c(0, 80))+ggtitle("")+
ylab("Porcentaje de varianza explicado") + xlab("Ejes")
Se puede apreciar que los dos primeros componentes principales capturan la gran mayoría de la variabilidad en los datos. El primer componente principal explica el 69.9% de la varianza, lo que sugiere que la mayor parte de la información sobre la relación entre “zona” y “estrato” se concentra en este componente. El segundo componente añade un 27.7% de la varianza, alcanzando un 97.6% de la varianza total explicada por los dos primeros componentes. Esto indica que casi toda la variabilidad puede ser representada en un espacio bidimensional.
# Crear un subconjunto de datos con las tres variables categóricas
datos_acm2 <- propiedades[, c("zona", "estrato", "tipo")]
datos_acm2$estrato <- as.factor(datos_acm2$estrato)
# Realizar el Análisis de Correspondencia Múltiple (ACM)
resultado_acm2 <- MCA(datos_acm2, graph = FALSE)
fviz_screeplot(resultado_acm2, addlabels = TRUE, ylim = c(0, 50))
Se observa que los dos primeros componentes principales (Dim1 y Dim2)
explican el 21.1% y el 17% de la varianza, respectivamente. Juntos,
estos dos componentes capturan el 38.1% de la información contenida en
los datos. Esto indica que gran parte de la variabilidad de las
variables categóricas puede representarse en un espacio bidimensional,
pero también sugiere que otros componentes (3 en adelante) tienen una
contribución considerable.
fviz_mca_var(resultado_acm2,
col.var = "contrib",
gradient.cols = c("#FF0000", "#00FF00", "#0000FF", "#FFFF00", "#FF00FF"),
repel = TRUE)
Se puede apreciar que la zona Centro y estrato 3 están bastante cercanas, lo que podría sugerir que en la Zona Centro, el estrato 3 es más común. El tipo Casa se asocia más con la Zona Norte, lo que podría indicar que en la Zona Norte es más común encontrar casas en lugar de apartamentos. Apartamento está asociado con la Zona Sur, indicando una tendencia hacia este tipo de propiedad en esa zona. Y la Zona Oriente y Zona Centro se diferencian más del resto en términos de su perfil categórico.
CONCLUSIONES
Este trabajo proporcionó una visión detallada del mercado inmobiliario, destacando aspectos clave en la relación entre las variables de interés de la empresa. Se identificó que la variabilidad de las propiedades se concentra en gran medida en las variables de precio, área construida, y baños, que juntas capturan el 68.7% de la información relevante en el mercado. Esto sugiere que estos factores son determinantes en la diferenciación de las propiedades en el mercado actual. Además, la variable habitaciones mostró una variabilidad independiente, lo que podría indicar una segmentación adicional en las preferencias de los compradores.
De igual manera, el análisis de conglomerados reveló dos segmentos claramente diferenciados en el mercado, un segmento de propiedades más accesibles y homogéneas, y otro segmento de propiedades más diversas y de mayor valor. Este hallazgo sugiere que existe una clara división en el mercado.
En cuanto a la relación entre zona y estrato, se observó que la Zona Centro está fuertemente asociada con el Estrato 3, lo que indica un enfoque predominante hacia un mercado de clase media en esta área. Por otro lado, las Zonas Sur y Norte comparten una distribución de estratos más similar, mientras que la Zona Oriente se distingue por su perfil único, lo que podría requerir un enfoque de mercado más especializado.
Finalmente, el análisis de correspondencia múltiple mostró que los apartamentos son más comunes en la Zona Sur, mientras que las casas predominan en la Zona Norte. Este patrón sugiere que las preferencias de los compradores están fuertemente influenciadas por la ubicación, lo que podría guiar la empresa en la optimización de su portafolio de propiedades.
RECOMENDACIONES
Teniendo en cuenta que la la Zona Centro está asociada principalmente con propiedades de Estrato 3, se recomienda enfocar las estrategias de marketing en esta zona hacia clientes de clase media. Por otro lado, las Zonas Sur y Norte, que muestran una distribución más homogénea de estratos, pueden beneficiarse de una estrategia de marketing más diversificada. En la Zona Oriente, debido a su perfil más exclusivo, se sugiere un enfoque premium, destacando las propiedades de mayor valor para atraer a clientes de alto poder adquisitivo.
Se puede Para aprovechar la segmentación realizada por los conglomerados presentados. La empresa debería desarrollar ofertas diferenciadas para cada segmento, con productos y servicios específicos que se adapten a las necesidades de cada grupo. Esto permitirá maximizar la captación de clientes en ambos segmentos y mejorar la eficiencia en la asignación de recursos.
Dada la fuerte diferenciación entre las zonas y los estratos, se recomienda explorar oportunidades de expansión en zonas donde la empresa aún no tiene una presencia significativa, pero que muestran un perfil demográfico atractivo. Esto podría incluir el desarrollo de nuevos proyectos en zonas de rápido crecimiento o la diversificación en áreas donde la demanda de ciertos tipos de propiedades está en aumento.
Implementar estas recomendaciones estratégicas permitirá a la empresa optimizar su oferta y enfoque de mercado, asegurando una ventaja competitiva en el dinámico sector inmobiliario.