El presente trabajo se centra en la primera unidad del curso de Métodos y Simulación Estadística, donde se emprende un análisis descriptivo de una base de datos originada en la empresa ficticia B&C. Esta empresa, con una trayectoria de más de diez años en la ciudad de Cali, se destaca por contar actualmente con ocho agentes de bienes raíces. La finalidad de este análisis descriptivo es examinar los datos con el propósito de identificar tendencias y patrones, contribuyendo así a una comprensión más profunda de la dinámica empresarial y proporcionando información valiosa para la toma de decisiones estratégicas.
Realizar un análisis descriptivo detallado de la base de datos de la empresa ficticia B&C mediante el uso de herramientas estadísticas en RStudio, con el fin de identificar tendencias y patrones clave que proporcionen una comprensión profunda de la dinámica empresarial.
Se empleó la base de datos proporcionada por la inmobiliaria para llevar a cabo un análisis detallado. El proceso incluyó las siguientes etapas:
Inicialmente, se instaló un paquete 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 “viviendas_faltantes”, 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.
##devtools::install_github("dgonxalex80/paqueteMETODOS")// solo se instala una vez
library(paqueteMETODOS)
propiedades = vivienda_faltantes
summary(propiedades)
## id zona piso estrato
## Min. : 1 Length:8330 Min. : 1.000 Min. :3.000
## 1st Qu.:2082 Class :character 1st Qu.: 2.000 1st Qu.:4.000
## Median :4164 Mode :character Median : 3.000 Median :5.000
## Mean :4164 Mean : 3.772 Mean :4.634
## 3rd Qu.:6246 3rd Qu.: 5.000 3rd Qu.:5.000
## Max. :8319 Max. :12.000 Max. :6.000
## NA's :3 NA's :2641 NA's :3
## preciom areaconst parquea banios
## Min. : 58.0 Min. : 30 Min. : 1.000 Min. : 0.000
## 1st Qu.: 220.0 1st Qu.: 80 1st Qu.: 1.000 1st Qu.: 2.000
## Median : 330.0 Median : 123 Median : 2.000 Median : 3.000
## Mean : 434.2 Mean : 175 Mean : 1.836 Mean : 3.112
## 3rd Qu.: 540.0 3rd Qu.: 229 3rd Qu.: 2.000 3rd Qu.: 4.000
## Max. :1999.0 Max. :1745 Max. :10.000 Max. :10.000
## NA's :2 NA's :3 NA's :1606 NA's :3
## habitac tipo barrio longitud
## Min. : 0.000 Length:8330 Length:8330 Min. :-76576.00
## 1st Qu.: 3.000 Class :character Class :character 1st Qu.:-76506.00
## Median : 3.000 Mode :character Mode :character Median : -76.54
## Mean : 3.605 Mean :-21845.13
## 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.390
## Median : 3.450
## Mean : 970.370
## 3rd Qu.:3367.000
## Max. :3497.000
## NA's :3
se procedio a estandarizar la informacion en la columna “tipo”, ya que se habian ingresado los datos de la siguiente manera:
conteo_tipo <- table(propiedades$tipo, useNA = "ifany")
print(conteo_tipo)
##
## Apartamento APARTAMENTO apto casa Casa CASA
## 5032 61 13 14 3195 12
## <NA>
## 3
Se observa el uso de diversas formas para referirse tanto a “casa” como a “apartamento”. A continuación, se ha llevado a cabo el tratamiento de estos datos para que únicamente queden representados por las dos formas mencionada y tambier quitar los NA ya que no son muchos.Dando como resultado lo siguiente
propiedades$tipo = tolower(propiedades$tipo)
propiedades$tipo = gsub("apto", "apartamento", propiedades$tipo)
propiedades = propiedades[complete.cases(propiedades$tipo), ]
conteo_tipo = table(propiedades$tipo, useNA = "ifany")
print(conteo_tipo)
##
## apartamento casa
## 5106 3221
continuando con el analisis de las columnas, notamos una notable cantidad de datos faltantes en las variables “piso” y “parquea”. Se llevó a cabo un proceso para determinar si la ausencia de estos datos está vinculada a que se trata de casas. Es plausible que algunas casas carezcan de parqueadero y piso, ya que estos aspectos podrían estar más relacionados con los apartamentos, dado que estos últimos suelen ubicarse en los pisos de edificios.
Analisis de la variable piso
conteo_piso = table(is.na(propiedades$piso), propiedades$tipo)
print(conteo_piso)
##
## apartamento casa
## FALSE 3723 1966
## TRUE 1383 1255
Analisis de la variable parqueadero
conteo_parqueadero = table(is.na(propiedades$parquea), propiedades$tipo)
print(conteo_parqueadero)
##
## apartamento casa
## FALSE 4237 2487
## TRUE 869 734
En ambos casos, se observa que no existe una diferencia significativa entre los valores faltantes (NA) de las variables “piso” y “parquea” en comparación con la variable “tipo” (“casa” y “apartamento”). Por ende, se ha tomado la decisión de no utilizar estas dos variables y se procede a eliminarlas del conjunto de datos. Tambien se toma la decision de eliminar las variables “longitud” y “latitud” ya que para realizar analisis de la ubicacion se utilizara la variable “zona”, y finalmente se elimina la variable “id” debido a que no sera necesario ubicar un inmueble especifico mediante su unico codigo.
propiedades$id=NULL
propiedades$piso=NULL
propiedades$parquea=NULL
propiedades$longitud=NULL
propiedades$latitud=NULL
También se puede observar que en las variables “banio” y “habitac”, el valor mínimo es 0, lo cual no es apropiado ya que el mínimo debería ser 1. Por lo tanto, se lleva a cabo un análisis de estas variables. En caso de que la frecuencia sea significativa, se debe considerar un tratamiento adecuado para estos valores. En cambio, si la presencia del valor cero es escasa, se podrían eliminar los registros correspondientes.
tabla_habitaciones = table(propiedades$habitac)
print(tabla_habitaciones)
##
## 0 1 2 3 4 5 6 7 8 9 10
## 66 59 927 4101 1731 680 318 173 138 83 51
tabla_banios = table(propiedades$banios)
print(tabla_banios)
##
## 0 1 2 3 4 5 6 7 8 9 10
## 45 497 2946 1994 1460 891 315 107 48 15 9
Se observa que en ambos casos se repite muy pocas veces el cero, por ende se procede a borrar estos registros del dataset.
Finalmente se puede observar el resumen de como quedo la base de datos despues de realizar la respectiva limpieza.
propiedades = propiedades[propiedades$banios > 0,]
propiedades = propiedades[propiedades$habitac > 0,]
summary(propiedades)
## zona estrato preciom areaconst
## Length:8251 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 : 122.0
## Mean :4.638 Mean : 433.6 Mean : 174.1
## 3rd Qu.:5.000 3rd Qu.: 540.0 3rd Qu.: 227.0
## Max. :6.000 Max. :1999.0 Max. :1745.0
## banios habitac tipo barrio
## Min. : 1.000 Min. : 1.000 Length:8251 Length:8251
## 1st Qu.: 2.000 1st Qu.: 3.000 Class :character Class :character
## Median : 3.000 Median : 3.000 Mode :character Mode :character
## Mean : 3.128 Mean : 3.633
## 3rd Qu.: 4.000 3rd Qu.: 4.000
## Max. :10.000 Max. :10.000
VARIABLE ZONA
Tabla de frecuencias Zona
freq(propiedades$zona)
## Frequencies
## propiedades$zona
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ------------------ ------ --------- -------------- --------- --------------
## Zona Centro 121 1.47 1.47 1.47 1.47
## Zona Norte 1890 22.91 24.37 22.91 24.37
## Zona Oeste 1194 14.47 38.84 14.47 38.84
## Zona Oriente 345 4.18 43.03 4.18 43.03
## Zona Sur 4701 56.97 100.00 56.97 100.00
## <NA> 0 0.00 100.00
## Total 8251 100.00 100.00 100.00 100.00
tabla_frecuencias = table(propiedades$zona)
Diagrama circular
tabla_frecuencias = table(propiedades$zona)
pie(tabla_frecuencias)
Aqui podemos observar como casi el 57% de los inmuebles estan ubicados en la Zona Sur seguido por la zona Norte con un 24% aproximadamente.
VARIABLE ESTRATO
Tabla de frecuencias Estrato
tabla_frecuencias_est = table(propiedades$estrato)
freq(propiedades$estrato)
## Frequencies
## propiedades$estrato
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 3 1432 17.36 17.36 17.36 17.36
## 4 2108 25.55 42.90 25.55 42.90
## 5 2729 33.07 75.98 33.07 75.98
## 6 1982 24.02 100.00 24.02 100.00
## <NA> 0 0.00 100.00
## Total 8251 100.00 100.00 100.00 100.00
Grafico de barras Estrato
ggplot(data = data.frame(estrato = as.factor(names(tabla_frecuencias_est)),
frecuencia = as.numeric(tabla_frecuencias_est)),
aes(x = estrato, y = frecuencia, fill = estrato)) +
geom_bar(stat = "identity") +
labs(title = "Distribución de Estratos",
x = "Estrato",
y = "Frecuencia") +
theme_minimal()
En el caso del estrato podemos observar que aproximadamente el 33% de las propiedades son de estrato 5, seguida por el estrato 4 con un 25% aproximadamente.
VARIABLE PRECIO
library(agricolae)
x=propiedades$preciom
n=length(x)
k=nclass.Sturges(x)
intervalos=cut(x,breaks = k)
rango=max(x)-min(x)
a=rango/k
histograma = hist(x, breaks = seq(min(x), max(x), by = a), col = "skyblue", main = "Histograma de Precio", xlab = "Precio")
Tabla_Frecuencias_precio=(table.freq(histograma))
Tabla_Frecuencias_precio
## Lower Upper Main Frequency Percentage CF CPF
## 1 58.0 187.4 122.7 1648 20.0 1648 20.0
## 2 187.4 316.8 252.1 2232 27.1 3880 47.0
## 3 316.8 446.2 381.5 1625 19.7 5505 66.7
## 4 446.2 575.6 510.9 878 10.6 6383 77.4
## 5 575.6 705.0 640.3 647 7.8 7030 85.2
## 6 705.0 834.4 769.7 281 3.4 7311 88.6
## 7 834.4 963.8 899.1 309 3.7 7620 92.4
## 8 963.8 1093.2 1028.5 103 1.2 7723 93.6
## 9 1093.2 1222.6 1157.9 171 2.1 7894 95.7
## 10 1222.6 1352.0 1287.3 121 1.5 8015 97.1
## 11 1352.0 1481.4 1416.7 72 0.9 8087 98.0
## 12 1481.4 1610.8 1546.1 75 0.9 8162 98.9
## 13 1610.8 1740.2 1675.5 32 0.4 8194 99.3
## 14 1740.2 1869.6 1804.9 41 0.5 8235 99.8
## 15 1869.6 1999.0 1934.3 16 0.2 8251 100.0
Aqui podemos observar como aproximadamente el 77% de los inmuebles cuestan entre 58 millones y 575.6 millones de pesos.
VARIABLE AREA EN METROS CUADRADOS
library(agricolae)
x=propiedades$areaconst
n=length(x)
k=nclass.Sturges(x)
intervalos=cut(x,breaks = k)
rango=max(x)-min(x)
a=rango/k
histograma= hist(x, breaks = seq(min(x),max(x), by=a), col = "lightgreen", main = "Histograma de Area(metros cuadrados)", xlab = "Metros cuadrados")
Tabla_Frecuencias_area=(table.freq(histograma))
Tabla_Frecuencias_area
## Lower Upper Main Frequency Percentage CF CPF
## 1 30.0000 144.3333 87.16667 4734 57.4 4734 57.4
## 2 144.3333 258.6667 201.50000 1901 23.0 6635 80.4
## 3 258.6667 373.0000 315.83333 916 11.1 7551 91.5
## 4 373.0000 487.3333 430.16667 412 5.0 7963 96.5
## 5 487.3333 601.6667 544.50000 163 2.0 8126 98.5
## 6 601.6667 716.0000 658.83333 42 0.5 8168 99.0
## 7 716.0000 830.3333 773.16667 35 0.4 8203 99.4
## 8 830.3333 944.6667 887.50000 20 0.2 8223 99.7
## 9 944.6667 1059.0000 1001.83333 14 0.2 8237 99.8
## 10 1059.0000 1173.3333 1116.16667 3 0.0 8240 99.9
## 11 1173.3333 1287.6667 1230.50000 4 0.0 8244 99.9
## 12 1287.6667 1402.0000 1344.83333 1 0.0 8245 99.9
## 13 1402.0000 1516.3333 1459.16667 3 0.0 8248 100.0
## 14 1516.3333 1630.6667 1573.50000 2 0.0 8250 100.0
## 15 1630.6667 1745.0000 1687.83333 1 0.0 8251 100.0
Aqui se puede apreciar como aproximadamente el 80% de todas las propiedades tienen un area entre 30 metros cuadrados y 258.67 metros cuadrados.
VARIABLE BAÑOS Y HABITACIONES
library(grid)
library(summarytools)
library(gridExtra)
Tabla_Frecuencias_banios=(table(propiedades$banios))
summarytools::freq(propiedades$banios, style="rmarkdown")
## ### Frequencies
## #### propiedades$banios
## **Type:** Numeric
##
## | | Freq | % Valid | % Valid Cum. | % Total | % Total Cum. |
## |-----------:|-----:|--------:|-------------:|--------:|-------------:|
## | **1** | 495 | 6.00 | 6.00 | 6.00 | 6.00 |
## | **2** | 2935 | 35.57 | 41.57 | 35.57 | 41.57 |
## | **3** | 1989 | 24.11 | 65.68 | 24.11 | 65.68 |
## | **4** | 1452 | 17.60 | 83.27 | 17.60 | 83.27 |
## | **5** | 889 | 10.77 | 94.05 | 10.77 | 94.05 |
## | **6** | 313 | 3.79 | 97.84 | 3.79 | 97.84 |
## | **7** | 107 | 1.30 | 99.14 | 1.30 | 99.14 |
## | **8** | 47 | 0.57 | 99.71 | 0.57 | 99.71 |
## | **9** | 15 | 0.18 | 99.89 | 0.18 | 99.89 |
## | **10** | 9 | 0.11 | 100.00 | 0.11 | 100.00 |
## | **\<NA\>** | 0 | | | 0.00 | 100.00 |
## | **Total** | 8251 | 100.00 | 100.00 | 100.00 | 100.00 |
banios=barplot(table(propiedades$banios), main = "Gráfico de Barras para el Número de Baños",
xlab = "Número de Baños", ylab = "Frecuencia", col = "skyblue")
Tabla_Frecuencias_habitac=(table(propiedades$habitac))
summarytools::freq(propiedades$habitac, style="rmarkdown")
## ### Frequencies
## #### propiedades$habitac
## **Type:** Numeric
##
## | | Freq | % Valid | % Valid Cum. | % Total | % Total Cum. |
## |-----------:|-----:|--------:|-------------:|--------:|-------------:|
## | **1** | 58 | 0.70 | 0.70 | 0.70 | 0.70 |
## | **2** | 927 | 11.24 | 11.94 | 11.24 | 11.94 |
## | **3** | 4096 | 49.64 | 61.58 | 49.64 | 61.58 |
## | **4** | 1730 | 20.97 | 82.55 | 20.97 | 82.55 |
## | **5** | 679 | 8.23 | 90.78 | 8.23 | 90.78 |
## | **6** | 318 | 3.85 | 94.63 | 3.85 | 94.63 |
## | **7** | 172 | 2.08 | 96.72 | 2.08 | 96.72 |
## | **8** | 138 | 1.67 | 98.39 | 1.67 | 98.39 |
## | **9** | 83 | 1.01 | 99.39 | 1.01 | 99.39 |
## | **10** | 50 | 0.61 | 100.00 | 0.61 | 100.00 |
## | **\<NA\>** | 0 | | | 0.00 | 100.00 |
## | **Total** | 8251 | 100.00 | 100.00 | 100.00 | 100.00 |
habitac=barplot(table(propiedades$habitac), main = "Gráfico de Barras para el Número de habitaciones",
xlab = "Número de habitaciones", ylab = "Frecuencia", col = "salmon")
Aquí se puede observar que aproximadamente el 35% de las propiedades cuentan con 2 baños, seguido por aproximadamente el 24% que tiene 3 baños. En cuanto a las habitaciones, cerca del 49% de las propiedades tienen 3 habitaciones, seguido por el 20% aproximadamente que cuenta con 4 habitaciones.
VARIABLE TIPO
tabla_frecuencias_tipo = table(propiedades$tipo)
frecuencia_relativa=prop.table(tabla_frecuencias_tipo)
results= data.frame(Tipo=names(tabla_frecuencias_tipo), Frecuencia_Abs=as.numeric(tabla_frecuencias_tipo), Frecuencia_Rel=as.numeric(frecuencia_relativa))
print(results)
## Tipo Frecuencia_Abs Frecuencia_Rel
## 1 apartamento 5080 0.6156829
## 2 casa 3171 0.3843171
ggplot(propiedades, aes(x = tipo, fill = tipo)) +
geom_bar() +
labs(title = "Distribución de Tipos de Propiedades", x = "Tipo", y = "Frecuencia") +
theme_minimal()
Se observa que hay una mayoría de apartamentos en comparación con las
casas, representando aproximadamente el 61%, frente a aproximadamente el
38% de casas.
VARIABLE BARRIO
TOP 5 BARRIOS CON MAS PROPIEDADES
library(knitr)
top_5_barrios <- head(sort(table(propiedades$barrio), decreasing = TRUE), 5)
df_top_5_barrios <- data.frame(Barrio = names(top_5_barrios), Frecuencia = as.vector(top_5_barrios))
print(df_top_5_barrios)
## Barrio Frecuencia
## 1 valle del lili 1008
## 2 ciudad jardín 513
## 3 pance 406
## 4 la flora 362
## 5 santa teresita 261
ggplot(df_top_5_barrios, aes(x = Barrio, y = Frecuencia)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Top 5 Barrios", x = "Barrio", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
TOP 5 BARRIOS CON MAS CASAS
casas= propiedades[propiedades$tipo == "casa", ]
top_5_barrios_casas <- head(sort(table(casas$barrio), decreasing = TRUE), 5)
df_top_5_barrios_casas <- data.frame(Barrio = names(top_5_barrios_casas), Frecuencia = as.vector(top_5_barrios_casas))
print(df_top_5_barrios_casas)
## Barrio Frecuencia
## 1 ciudad jardín 294
## 2 pance 202
## 3 valle del lili 168
## 4 la flora 97
## 5 el caney 83
TOP 5 BARRIOS CON MAS APARTAMENTOS
apartamentos= propiedades[propiedades$tipo == "apartamento", ]
top_5_barrios_apartamentos <- head(sort(table(apartamentos$barrio), decreasing = TRUE), 5)
df_top_5_barrios_apartamentos <- data.frame(Barrio = names(top_5_barrios_apartamentos), Frecuencia = as.vector(top_5_barrios_apartamentos))
print(df_top_5_barrios_apartamentos)
## Barrio Frecuencia
## 1 valle del lili 840
## 2 la flora 265
## 3 santa teresita 249
## 4 ciudad jardín 219
## 5 pance 204
CASAS Y APARTAMENTOS POR ESTRATO
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)
Podemos observar que en el estrato 5 es donde hay más casas y apartamentos. Sin embargo, esta tendencia cambia posteriormente, ya que la mayor concentración de apartamentos se encuentra en el estrato 4, mientras que, en el caso de las casas, es más notable en el estrato 3.
TOP 5 BARRIOS POR ESTRATO
tabla_frecuencia = table(propiedades$barrio, propiedades$estrato)
df_frecuencias = as.data.frame.table(tabla_frecuencia)
colnames(df_frecuencias) = c("Barrio", "Estrato", "Frecuencia")
top_5_barrio_estrato = df_frecuencias[order(-df_frecuencias$Frecuencia), ][1:5, ]
print(top_5_barrio_estrato)
## Barrio Estrato Frecuencia
## 845 valle del lili 4 576
## 1405 ciudad jardín 6 443
## 1278 valle del lili 5 423
## 1595 pance 6 384
## 1075 la flora 5 321
DISTRIBUCION DE CASAS Y APARTAMENTOS POR ZONA
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)
En este caso, se observa que la gran mayoría de casas y apartamentos se
concentran en la Zona Sur. La tendencia se repite en la Zona Norte, que
ocupa el segundo lugar en concentración de casas y apartamentos.
DIAGRAMA DE CAJA Y BIGOTES - PRECIOS CASAS
casas <- propiedades[propiedades$tipo == "casa", ]
ggplot(casas, aes(x = factor(1), y = preciom)) +
geom_boxplot(fill = "skyblue", color = "black") +
labs(title = "Boxplot de Precios para el Tipo 'Casa'",
x = "",
y = "Precio") +
theme_minimal()
DIAGRAMA DE CAJA Y BIGOTES - PRECIOS APARTAMENTOS
aptos <- propiedades[propiedades$tipo == "apartamento", ]
ggplot(aptos, aes(x = factor(1), y = preciom)) +
geom_boxplot(fill = "lightgreen", color = "black") +
labs(title = "Boxplot de Precios para el Tipo 'apartamento'",
x = "",
y = "Precio") +
theme_minimal()
En ambos casos, se observa una cantidad considerable de outliers. Esto podría estar relacionado con el hecho de que estas propiedades están destinadas a un tipo específico de clientes, como propiedades de lujo. Es probable que muchas de estas propiedades, o la mayoría, se ubiquen en la Zona Sur y pertenezcan al estrato seis. Sería necesario realizar un análisis más detallado en el futuro, cuando contemos con herramientas adicionales, para profundizar en este tipo de análisis.
De acuerdo con toda la informacion analizada se dan a conocer las siguientes recomendaciones:
Este trabajo proporcionó una visión detallada de la base de datos de la empresa ficticia B&C, revelando aspectos clave sobre su mercado objetivo. Se identificó que la empresa se enfoca principalmente en clientes con un nivel socioeconómico medio-alto, dado que las propiedades ofertadas se ubican mayormente en los estratos 3 y 6. Asimismo, se destaca que la Zona Sur de la ciudad de Cali concentra la mayor cantidad de propiedades catalogadas en estratos altos.
Además, se evidenció un potencial de crecimiento significativo en el sector de apartamentos dentro del mercado inmobiliario de Cali, ya que estos superan en gran medida a las casas. Este hallazgo sugiere oportunidades para adaptar estrategias de comercialización y desarrollo inmobiliario, enfocándose en la creciente demanda de apartamentos en la región.
En conclusión, este análisis descriptivo proporcionó insights valiosos que podrían orientar decisiones estratégicas futuras, permitiendo a la empresa B&C ajustar sus enfoques de mercado y aprovechar las tendencias identificadas para maximizar su impacto y crecimiento en el sector inmobiliario.