Introducción

La presente investigación tiene como objetivo proporcionar un análisis detallado del mercado de bienes raíces en la ciudad de Cali, Colombia, con el fin de identificar tendencias y patrones que puedan ser de utilidad para la empresa B&C (Bines y Casas), una agencia de bienes raíces con diez años de experiencia en el sector. La información recopilada abarca diversos aspectos, como el precio, la ubicación y las características de las viviendas en Cali.

Objetivos

  1. Identificar el precio de las viviendas en diferentes zonas de Cali.
  2. Determinar los tipos de viviendas más ofertados en Cali.
  3. Proporcionar información para la toma de decisiones en la definición del nicho de mercado, desarrollo de estrategias de marketing, establecimiento de precios de venta y ofrecimiento de servicios personalizados.

Métodos

Se utilizó una base de datos recopilada por la empresa B&C, la cual contiene información detallada sobre precios, ubicación y características de las viviendas en Cali. Para el análisis descriptivo de los datos, se emplearon técnicas estadísticas como el cálculo de medidas de tendencia central, dispersión y frecuencia.

Desarrolo.

Importar datos.

data <- vivienda_faltantes

Tratamiento datos faltantes.

Visualización de los datos.

Despues de importar los datos se procede a realizar una visualización de la data con un tamaño de 1000 x 13.

set.seed(123)
muestraNA <- sample_n(data,1000)
str(muestraNA)
## spc_tbl_ [1,000 × 13] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ id       : num [1:1000] 122 190 880 1663 1401 ...
##  $ zona     : chr [1:1000] "Zona Norte" "Zona Oriente" "Zona Oriente" "Zona Sur" ...
##  $ piso     : num [1:1000] 1 4 1 NA NA 1 7 NA 2 4 ...
##  $ estrato  : num [1:1000] 3 3 3 4 4 5 5 3 5 3 ...
##  $ preciom  : num [1:1000] 150 360 250 375 150 270 290 235 450 125 ...
##  $ areaconst: num [1:1000] 93 420 210 74 57 75 93 122 252 72 ...
##  $ parquea  : num [1:1000] NA 1 NA 1 NA 1 1 1 2 NA ...
##  $ banios   : num [1:1000] 1 6 4 5 2 2 3 2 2 2 ...
##  $ habitac  : num [1:1000] 4 9 4 5 3 3 3 5 7 3 ...
##  $ tipo     : chr [1:1000] "Casa" "Casa" "Apartamento" "Casa" ...
##  $ barrio   : chr [1:1000] "la rivera" "las ceibas" "morichal de comfandi" "calicanto viii" ...
##  $ longitud : num [1:1000] -76.5 -76.5 -76.5 -76517 -76.5 ...
##  $ latitud  : num [1:1000] 3.48 3.46 3.4 3373 3.38 ...
##  - 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_double" "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"
##   .. ..$ parquea  : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
##   .. ..$ banios   : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
##   .. ..$ habitac  : 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>

Aquí se puede observar los datos faltantes y su frecuencia correspondiente, tipos de datos y una muestra de los datos que componen el dataset.

Frecuencia datos faltantes.

faltantes <- colSums(is.na(muestraNA)) %>%
                 as.data.frame() 
faltantes

En el cuadro anterior, se presenta el número total de datos faltantes para cada una de las variables en el conjunto de datos. Para ofrecer una visión más detallada, a continuación se muestra una tabla que identifica las variables con datos faltantes:

gg_miss_var(muestraNA)

En este caso podemos evidenciar que las variables que presentan faltantes son piso y parquea.

Imputación de valores

  1. Caso imputación por cero.

Teniendo en cuenta que la variable parquea es correspondiente a parqueadero y NA es igual a no tener parqueadero se procede a realizar imputación por 0 en los casos que aplique.

muestraNA$parquea[is.na(muestraNA$parquea)] <- 0
  1. Caso reemplazo por la media.

Teniendo en cuenta que la variable piso es correspondiente a la cantidad de pisos de una vivienda se procede a calcular la media y asignar en los casos donde exista NA.

media_piso <- mean(muestraNA$piso, na.rm = TRUE) %>%
                    round(,0)
muestraNA$piso[is.na(muestraNA$piso)] <- media_piso

Se grafica nuevamente los datos y se evidencia lo siguiente:

gg_miss_var(muestraNA)

Ninguna de las variables presenta valores faltantes.

Transformación de datos.

Construcción de Variables

Con el fin de ampliar las variables propuestas se realiza un proceso de construcción de variables teniendo en cuenta lo siguiente:

  1. Indicador: area_precio(Transformación directa):

Este indicador ayuda a entender cómo varía el precio por metro cuadrado construido en diferentes zonas o barrios de la ciudad de Cali.

muestraNA$area_precio = muestraNA$preciom/muestraNA$areaconst

Análisis de datos.

Indicadores de posición.

Este indicador permitirá comparar el valor de las propiedades en función del área construida, lo que puede ser útil para identificar áreas con precios altos o bajos en comparación con el tamaño de las construcciones, esto se representa a continuación: la variable area precio fue la construida en la sección de Construcción de Variables.

ggplot(muestraNA, aes(x = zona, y = area_precio)) +
  geom_boxplot(fill = "skyblue", color = "blue") +
  theme_minimal() +
  labs(x = "Zona", y = "Relación precio por metro cuadrado construido",
       title = "Variación del precio por metro cuadrado construido en diferentes zonas o barrios")

El grafico indica una distribución de la relación precio por metro cuadrado construido en diferentes zonas de la ciudad.

Cada caja representa la distribución de los datos en una zona específica, permitiéndo comparar visualmente cómo varía esta relación entre las diferentes zonas.

Se procede a indicar los valores atipicos con el fin de observar alguna novedad en los registros.

muestraNA_ <- muestraNA

outlier_limit <- muestraNA_ %>%
  group_by(zona) %>%
  summarize(lower_limit = quantile(area_precio, 0.25) - 1.5 * IQR(area_precio),
            upper_limit = quantile(area_precio, 0.75) + 1.5 * IQR(area_precio))

muestraNA_ <- left_join(muestraNA_, outlier_limit, by = "zona")
outliers <- muestraNA_ %>%
  filter(area_precio < lower_limit | area_precio > upper_limit)

outliers

Indicadores de Centro

En relación a las medidas de tendencia central, se calcula la media exclusivamente para variables cuantitativas. Por otro lado, la mediana se puede calcular independientemente del tipo de variable. Sin embargo, en el caso de la moda, se omite el cálculo si la variable en cuestión es “id”, ya que sus datos corresponden a identificaciones únicas y no son adecuados para este tipo de análisis.

md_piso <- mean(muestraNA$piso) 
md_estrato <- mean(muestraNA$estrato, na.rm = TRUE)
md_precio <- mean(muestraNA$preciom, na.rm = TRUE)
md_area_construida <- mean(muestraNA$areaconst, na.rm = TRUE)
md_parquea <- mean(muestraNA$parquea)

media <- c(md_piso,md_estrato,md_precio,md_area_construida,md_parquea)
media
## [1]   3.8850   4.5550 433.2840 178.7137   1.4240

La ubicación promedio de las viviendas ofertadas en la ciudad de Cali se sitúa entre el tercer y cuarto piso.

El estrato 4 es el que presenta mayor oferta de apartamentos y casas en venta.

En la ciudad de Cali, las viviendas disponibles para la venta tienen un precio promedio de $434 millones y una superficie promedio de construcción de 174 metros cuadrados.

Se estima un promedio de aproximadamente 2 puestos de estacionamiento para las viviendas restantes

Indicadores de dispersión

Para efectuar el cálculo que sigue, es crucial considerar las variables numéricas relacionadas. A partir de estas variables, se determinará tanto la varianza como la desviación estándar. Estos valores son fundamentales para interpretar la probabilidad de cambio entre cada dato en la base de datos de viviendas faltantes.

v_piso <- var(muestraNA$piso)  
v_estrato <- var(muestraNA$estrato)  
v_precio <- var(muestraNA$preciom)  
v_area <- var(muestraNA$areaconst)  
v_par <- var(muestraNA$parquea)  

varianza <- c(v_piso,v_estrato,v_precio,v_area,v_par)
varianza
## [1] 4.656431e+00 1.102077e+00 1.063785e+05 2.236332e+04 1.469694e+00

Desde una perspectiva comercial, el precio es posiblemente el factor más crucial que un cliente considera al buscar adquirir una propiedad raíz. Por esta razón, se hace necesario complementar los datos recopilados con medidas de tendencia central.

Para contextualizar, el promedio del precio de las viviendas disponibles para la venta en la ciudad de Cali es de $434 millones. La varianza correspondiente a este parámetro es de 1063785.05.

d_piso <- sd(muestraNA$piso)  
d_estrato <- sd(muestraNA$estrato)  
d_precio <- sd(muestraNA$preciom)  
d_area <- sd(muestraNA$areaconst)  
d_par <- sd(muestraNA$parquea)  

desviacion <- c(d_piso,d_estrato,d_precio,d_area,d_par)
desviacion
## [1]   2.157877   1.049799 326.157106 149.543694   1.212309

Visualización de datos.

Variables cualitaticas - Escala Nominal.

tipo <- unique(muestraNA$tipo)
conteo_tipos <- table(muestraNA$tipo)
conteo_tipo_ordenado <- conteo_tipos[tipo]

tipo_oferta <- names(conteo_tipo_ordenado)
conteo_separado <- as.vector(conteo_tipo_ordenado)


frecuencia_abs <- conteo_separado
frecuencia_rel <- frecuencia_abs/sum(frecuencia_abs)

df <- data.frame(tipo_oferta, frecuencia_abs, frecuencia_rel)

# Crear la tabla formateada con kableExtra
tabla11 <- df %>%
kbl() %>%
kable_paper(full_width = FALSE) %>%
row_spec(0, bold = TRUE) %>%
column_spec(2:3, width = "1cm") %>%
collapse_rows(columns = 1, valign = "middle")

# Mostrar la tabla formateada
tabla11
tipo_oferta frecuencia_abs frecuencia_rel
Casa 408 0.408
Apartamento 576 0.576
apto 4 0.004
APARTAMENTO 5 0.005
casa 5 0.005
CASA 2 0.002

En esta tabla se puede evidenciar que el tipo de vivienda mas ofertado es el apartamento, superando el 50% de de oferta. En donde continua el tipo de vivienda Casa.

df_filtrado <- df %>% filter(tipo_oferta %in% c("Casa", "Apartamento"))
porcentajes <- round((df_filtrado$frecuencia_abs / sum(df_filtrado$frecuencia_abs)) * 100, 1)
pie(df_filtrado$frecuencia_abs, labels = paste(df_filtrado$tipo_oferta, "(", porcentajes, "%)"), main = "Diagrama de Torta de Tipos de Oferta (Casa y Apartamento)")
legend("topright", df_filtrado$tipo_oferta, cex = 0.8, fill = rainbow(length(df_filtrado$tipo_oferta)), title = "Tipos de Oferta")

Visualización de variables cuantitativas.

Histograma de la variable estrato.

ggplot(data = muestraNA, aes(x = estrato, fill = as.factor(estrato))) +
  geom_histogram(binwidth = 1, color = "black") +
  labs(x = "Estrato", y = "Frecuencia", title = "Histograma de Estrato en Viviendas") +
  theme_minimal()

La distribución de los estratos en las viviendas de Cali se presenta en el histograma. Destaca que el estrato más común es el 5, seguido por el estrato 6 y el estrato 4.

El estrato 3 es menos frecuente, lo que sugiere una menor cantidad de viviendas en esta categoría. La ausencia de estratos 1 y 2 puede ser una oportunidad para explorar la posibilidad de desarrollar ofertas específicas para estos segmentos en el futuro.

Resultados

Análisis de Precios por Metro Cuadrado Construido en Diferentes Zonas:

Se realizó un análisis detallado de la relación precio por metro cuadrado construido en distintas zonas de Cali. Se observó una variación significativa en esta relación entre diferentes zonas de la ciudad. El gráfico de cajas permitió visualizar esta variación, identificando áreas con precios más altos o más bajos en comparación con el tamaño de las construcciones.

Identificación de Valores Atípicos:

Se detectaron valores atípicos en los datos, que podrían indicar ciertas particularidades en algunas propiedades. Por ejemplo, se encontraron propiedades con precios muy por encima o por debajo del promedio en ciertas zonas. Medidas de Tendencia Central y Dispersión:

Se calcularon medidas como la media, la mediana, la moda, la varianza y la desviación estándar para variables relevantes como el piso, el estrato, el precio y el área construida. Los resultados mostraron que el promedio del precio de las viviendas en Cali es de aproximadamente 434 millones, con una desviación estándar de 326 millones, lo que indica una variabilidad significativa en los precios.

Tipos de Viviendas Ofertadas:

Se observó que el tipo de vivienda más ofertado en Cali es el apartamento, representando más del 50% de la oferta, seguido de la casa. Este hallazgo sugiere una preferencia generalizada por los apartamentos en el mercado de bienes raíces de la ciudad.

Distribución de Estratos en Viviendas:

Se examinó la distribución de los estratos en las viviendas de Cali mediante un histograma. Se encontró que los estratos más comunes son el 5, 6 y 4, mientras que el estrato 3 es menos frecuente. La ausencia de estratos 1 y 2 puede representar oportunidades para el desarrollo de ofertas específicas en estos segmentos.

Discusión:

La observación de una variación significativa en la relación precio por metro cuadrado construido entre diferentes zonas de Cali sugiere que el mercado inmobiliario puede estar influenciado por factores locales como la ubicación, la demanda y la infraestructura, tambien la identificación de valores atípicos en los datos puede indicar propiedades excepcionales o anomalías en el mercado, la naturaleza de estos valores atípicos y su impacto potencial en el análisis y las decisiones comerciales puede ayudar a comprender mejor la dinámica del mercado inmobiliario para la empresa B&C. Es de rescatar que la preferencia por los apartamentos en el mercado inmobiliario de Cali sugiere una demanda específica por este tipo de vivienda, tambien la distribución de estratos en las viviendas revela patrones importantes sobre la composición socioeconómica de la población y las preferencias de los potenciales clientes.

Conclusiones:

  • La variación en los precios por metro cuadrado construido entre diferentes zonas de Cali sugiere una diversidad significativa en el mercado inmobiliario local. Esto indica la necesidad de estrategias de precios y marketing adaptadas a las características específicas de cada área.

  • La presencia de valores atípicos en los datos resalta la importancia de la ubicación en el mercado inmobiliario.

  • Las medidas de tendencia central y dispersión proporcionan una visión amplia de la distribución y la variabilidad de los precios y características de las viviendas en Cali. Esto sugiere una dinámica de mercado que puede ser aprovechada mediante análisis detallados y estrategias flexibles.

  • La preferencia por los apartamentos sobre las casas indica una tendencia dominante en el mercado inmobiliario de Cali. Comprender estas preferencias y adaptarse a ellas puede ser crucial para el éxito de la empresa en la satisfacción de las demandas del mercado.