Informe sobre el mercado de bienes raíces en Cali para la empresa B&C

Introducción

La industria de bienes raíces es reconocida por su naturaleza dinámica, en la que los precios de los inmuebles están en constante fluctuación debido a una variedad de factores, entre ellos la demanda del mercado. En este contexto, la capacidad de adaptarse a estas fluctuaciones y comprender las necesidades cambiantes de los compradores es esencial para el éxito en este sector.

Un elemento crítico en la toma de decisiones dentro del mercado inmobiliario es la capacidad de evaluar continuamente tanto el mercado en sí como a los competidores que operan en él. Esto permite obtener una comprensión sólida de las características de las propiedades que se ofrecen y, en última instancia, desarrollar estrategias de mercado que no solo satisfagan las necesidades de los compradores, sino que también maximicen los beneficios económicos.

En este sentido, la ciencia de datos desempeña un papel fundamental al analizar grandes volúmenes de información de manera eficiente y rentable. En comparación con las metodologías tradicionales de investigación de mercado, que pueden ser laboriosas y costosas, el análisis de datos ofrece la capacidad de obtener información valiosa de manera más rápida y precisa. Además, herramientas como el webscraping brindan la posibilidad de acceder a información que inicialmente no está disponible para el público, permitiendo un análisis más profundo y exhaustivo.

El propósito central de este informe es presentar un análisis detallado del mercado inmobiliario en la ciudad de Cali, Colombia. A través de la recopilación y el análisis de datos, se pretende proporcionar información que sea de utilidad para la toma de decisiones estratégicas por parte de la empresa B&C (Bines y Casas). Al comprender las tendencias, preferencias y patrones en el mercado de bienes raíces, la empresa estará en una posición sólida para desarrollar estrategias que la ayuden a posicionarse de manera efectiva en el competitivo entorno de Cali.

Objetivos

  1. Analizar los precios de las viviendas en diferentes zonas de Cali.
  2. Identificar los tipos de viviendas más vendidas en la ciudad.
  3. Determinar las características más buscadas por los compradores de viviendas en Cali.
  4. Evaluar la evolución del mercado de bienes raíces en Cali durante los últimos años.

Métodos

Se utilizó una base de datos recopilada por medio de webscraping a un sitio web de publicación de anuncios de venta de vivienda. De la información disponible en el sitio web se escogió un total de 13 atributos relacionada a cada una de las publicaciones (Tabla 1), con un total de 8330 anuncios registrados. La base de datos usada contiene información sobre precios, ubicaciones, entre otras características de la oferta de viviendas en Cali. Este fue el insumo principal para hacer el análisis del mercado de bienes raíces en Cali.

##       nombre                         significado               tipo
## 1         id    Variable única de identificación Categorica nominal
## 2       zona                   Zona de la ciudad Categorica nominal
## 3       piso         Piso en el que se encuentra  Numerica discreta
## 4    estrato              Estrato socioeconómico Categorica ordinal
## 5    preciom     Precio de venta en millones COP  Numerica continua
## 6  areaconst Área construída en metros cuadrados  Numerica continua
## 7    parquea              Número de parqueaderos  Numerica discreta
## 8     banios                     Número de baños  Numerica discreta
## 9    habitac              Número de habitaciones  Numerica discreta
## 10      tipo                    Tipo de vivienda Categorica ordinal
## 11    barrio                   Nombre del barrio Categorica ordinal
## 12  longitud                            Longitud  Numerica continua
## 13   latitud                             Latitud  Numerica continua

Posteriormente, se hizo una exploración inicial de la base de datos, identificando la estructura de la misma, evidenciando a su vez la disponibilidad real de los datos para ejecutar un análisis. En este sentido, se encontró que, como lo muestra la Figura 1, sólo 4812 registros, que corresponde al 57.8%, es decir, muchos de las ofertas de vivienda publicadas en el sitio web tienen información ausente, lo que dificultaría el análisis del mercado de bienes raíces en Cali. En la figura 1 se muestra la relación entre datos faltantes y los atributos de las viviendas.

Seguidamente se hizo la limpieza de la base datos, fase que contempla la estandarización de la información de cada registro, adecuación del tipo de variable, según el diccionario de variables, identificación de variables necesarias para el análisis y la exploración de los datos faltantes.

Al finalizar la limpieza de la base de datos, Se llevaron a cabo análisis exploratorios, incluyendo gráficos de dispersión, tanto univariado como bivariado, manteniendo continuamente variables de control como lo es la zona. Igualmente se usaron mapas para mostrar la distribución espacial de las caracteristicas de las viviendas en Cali. Esto respondió al interés de conocer en qué concentrarse B&C para vender nuevos inmuebles, y no sólo conocer las medidas de tendencia central.

Resultados

La base de datos después del proceso de limpieza pasó a tener sólo 12 variables de interés, pues se eliminó la variable de barrio, ya que al ser una variable de digitación manual podía inducir errores al momento de agrupar la información de acuerdo con ese atributo. En el caso de la variable tipo referente a si es apartamento o casa, que es también de digitación manual, se estandarizó las opciones a sólo dos. Adicionalmente, se exploró el número de registros con ID igual, lo que indicaría que son datos duplicados, procediendo a eliminar los registros de este tipo.

Finalmente, para terminar con la limpieza de la base de datos, se eliminaron aquellos registros que, como se muestra en la figura 1, tenian datos faltantes en más de 9 atributos, lo que los hacía incompatibles para realizar un análisis de información.

Así, en contraste con la Figura 1, se obtiene la siguiente matriz de relacionamiento entre datos faltantes y atributos de las viviendas, para el análisis se cuenta con una base de datos de NUMEROS registros, con sólo vacíos de información en el número de parqueaderos de cada vivienda y el piso en el que se ubica.

La distribución espacial de las viviendas, muestra que es posible tener un error al agrupar la información según la zona, especialmente con aquellas marcadas como viviendas de la zona sur, pues se logran ver algunas de estas viviendas en toda la extensión de la ciudad, lo que quiere decir, que algunas de las caracteristicas de interés de las viviendas del sur de Cali van a estar inevitablemente influenciadas por viviendas que realmente no pertenecen a esta zona.

Según el mapa de distribución de la oferta de viviendas en Cali, estas se ubican principalmente en el corredor de la calle 5ta, teniendo una oferta muy reducida en la zona oriente. Así mismo, la zona norte perimetral tampoco tiene una oferta amplia de viviendas.

## Reading layer `Cali' from data source `C:\Users\danie\Documents\Cali.shp' using driver `ESRI Shapefile'
## Simple feature collection with 22 features and 4 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 1054098 ymin: 860192.1 xmax: 1068492 ymax: 879441.5
## Projected CRS: MAGNA-SIRGAS / Cali urban grid

Respecto a la distribución de las viviendas según el tipo de vivienda, se tiene que hay una concentración importante de apartamentos en la zona oeste del ciudad, igualmente en el norte y en la zona sur, sólo en el sector cercano a Valle del Lili, pues es dónde se encuentra una mayor concentración.

Las casas tienen una distribución más homogénea espacialmente, sin embargo, sus puntos mayores de concentración se dan en la zona de centro y la zona sur, en el sector de Ciudad Jardin y Pance.

Ahora, al analizar la distribución de precios de vivienda según zona se encuentra que en todas las zonas de la ciudad los valores mínimos son muy similares. Por otro lado, en la zona sur, norte y centro el 50% de los precios de venta son similar, sin embargo, su diferencia radica en la variabilidad que tienen entre estas zonas.

La zona oriente es la que tiene los precios de venta más bajos, siendo que casi el 75% de sus viviendas tienen precios más bajos al 50% de las viviendas de las demás zonas.

Ahora, al separar la información según la zona en que se encuentran, se tiene que las viviendas de tipo apartamento tienen, comparativamente, menores precios que las viviendas de tipo casa, a excepción de la zona oeste, en donde la distribución de precios es muy parecida, con la diferencia que el 50% de las casas tienen valores más altos que el 50% de los apartamentos.

Posteriormente, al indagar sobre las características más deseadas en el inmueble, se analiza la distribución de precios contrastando con otras variables, en este caso se tiene el área construida, y con unas variables de control como lo son el estrato y la zona de ubicación de la vivienda. En donde se observa que los precios más altos sí se relaciona con un área más grande, pero particularmente sucede con más relevancia en los estratos 5 y 6.

También se identifica que la mayoría de los datos se ubican en menos de 500 metros cuadrados, teniendo un precio de venta mayor aquellos que tienen estratos 5 o 6.

Respecto al número de baños que son más deseados en las viviendas de Cali, se encuentra que hay una relación entre el número de baños con el precio de las viviendas, sin embargo, al tener 3 baños se nota una relación similar a tener más baños, e igualmente son los estratos 5 y 6 aquellos que presentan los precios más altos.

Al igual que sucede con el número de baños, el número de habitaciones también parece tener una relación con el precio de venta, especialmente entre 0 a 3 habitaciones, a partir de las 3 habitaciones los precios de venta son similares. Al respecto, cuando se tienen 3 habitaciones o más, los estratos 5 y 6 son aquellos que tienen los precios de venta más altos, aún así se alcanzan a observar algunas viviendas de estrato 4 con valores de venta más altos, por encima de los 1500 millones de pesos.

## Warning: Removed 1601 rows containing missing values (`geom_point()`).

Respecto al número de parqueaderos se observa el mismo fenómeno, es decir, son los estratos 4 y 5 aquellos que tienen precios de vivienda más altos, aún sin ser aquellos con un número de parqueaderos mayor, por lo que como se muestra en la gráfica a partir de 4 parqueaderos no cambia mucho el comportamiento., siendo los valores más altos casi exclusivamente de la zona sur y zona oeste, con precios por encima de los 1500 millones de pesos.

## Warning: Removed 2632 rows containing missing values (`geom_point()`).

En cuanto a la distribución de precios de las viviendas, según el piso de la misma, controlando por estrato y la zona, las viviendas con los pisos más bajos presentan precios de venta más altos, siguiendo el mismo patrón de los estratos 5 y 6, especialmente en la zona sur. Igualmente, se observa que la zona oeste tiene precios de venta altos (no tanto como la zona sur), casi sin importar el piso en que se ubique, pues la distribución de precios por piso es muy similar en todos los pisos, teniendo una mayor relevancia los estratos altos.

Discusión

La mala ubicación y agrupación por zonas de las viviendas pueden explicar la alta variación que tienen algunas zonas, como por ejemplo, la zona oeste tiene algunos puntos de vivienda en la zona más sur de la ciudad, así mismo algunas viviendas que están designadas como norte están ubicadas en la zona oriente y sur. Y finalmente muchas viviendas de la zona sur se encuentran distribuidas por la ciudad. Esto ocasiona que el análisis a nivel de zona sea errado en algunos por puntos que puedan sesgar la distribución de precios.

La distribución del tipo de vivienda puede responder a la conformación de los barrios, siendo los barrios más antiguos, es decir, los que se ubican en la zona centro de la ciudad, los que concentran mayor oferta de viviendas tipo casa, así como aquellas viviendas del sur de la ciudad, las cuales presumiblemente corresponderían con las casas más lujosas, siendo uno de los sectores privilegiados de la ciudad, en donde por el terreno amplio donde se encuentran, son casas en conjuntos cerrados.

Respecto a los resultados del interés sobre el piso de la vivienda, esta puede inducir a un error en tanto la digitación en la base de datos no es clara si se refiere al número de pisos que tiene la vivienda o si hace referencia al piso en que se ubica, por lo que se podría suponer que en el sur de Cali al tener más viviendas estrato 6, esta variable corresponde al número de pisos de la vivienda, mientras que en las otras zonas puede corresponder al piso en que se encuentra la vivienda.

Conclusiones

Inicialmente es necesario aclarar que la segmentación de información por zona, no ofrece al comprador una información precisa de la ubicación de la vivienda, por lo que es más aconsejable distribuir la información según comuna, o directamente la ubicación geoespacial, así para los compradores va a ser más fácil identificar la ubicación más aproximada.

Para B&C no se recomienda vender ningún tipo de vivienda en la zona oriente, ya que sería aquella por la que pueden cobrar menos dinero. Aún así, si la intención es abarcar toda la ciudad, lo ideal sería concentrarse exclusivamente en la venta de casas. Igualmente se sugiere a B&C concentrarse en la venta de casas sin importar la zona de la ciudad, y en el caso de la zona oeste, se podría vender en cualquier de los dos tipos de vivienda.

Finalmente, entre las variables más detacadas para que se concentre B&C es en viviendas de estrato alto (5 y 6) lo cual podría asegurarles precios de venta más altos, particularmente en el sur de la ciudad, cerca al sector de Pance y Ciudad Jardin, y al oeste, cerca al Zoológico. Y como complemento a este estato alto, lo más deseado para las viviendas de Cali es que tengan por encima de 3 habitaciones, 3 baños, 4 parqueaderos, y áreas construidas por encima de 250 metros cuadrados, características que están asociadas, de nuevo, a viviendas de estrato alto y que tienen precios de venta entorno a los 1500 millones de pesos.

Anexos

A continuación se anexa el código desarrollado.

# Cargar librerías
if (!require(learnr)) install.packages("learnr", repos = "http://cran.us.r-project.org")
if (!require(devtools)) install.packages("devtools", repos = "http://cran.us.r-project.org")
if (!require(sf)) install.packages("sf", repos = "http://cran.us.r-project.org")
devtools::install_github("dgonxalex80/paqueteMET", force = TRUE)

library(paqueteMET)
library(psych)
library(dplyr)
library(mice)
library(ggplot2)

library(sf)  # Cargar la librería sf para leer archivos shapefile

# Cargar datos de vivienda_faltantes
data(vivienda_faltantes)
db <- vivienda_faltantes

# Definir significado y tipo de las variables en el dataframe
significado <- c("Variable única de identificación", "Zona de la ciudad", "Piso en el que se encuentra",
                 "Estrato socioeconómico", "Precio de venta en millones COP", "Área construída en metros cuadrados",
                 "Número de parqueaderos", "Número de baños", "Número de habitaciones", "Tipo de vivienda",
                 "Nombre del barrio", "Longitud", "Latitud")
tipo_var <- c("Categorica nominal", "Categorica nominal", "Numerica discreta", "Categorica ordinal",
              "Numerica continua", "Numerica continua", "Numerica discreta", "Numerica discreta", "Numerica discreta",
              "Categorica ordinal", "Categorica ordinal", "Numerica continua", "Numerica continua")

dict <- data.frame(nombre = names(db),
                   significado = significado,
                   tipo = tipo_var)
print(dict)

# Crear gráfico de análisis de patrones faltantes
grafico <- md.pattern(vivienda_faltantes, rotate.names = TRUE)

# Estandarizar valores en la columna "tipo"
db$tipo <- ifelse(tolower(db$tipo) %in% c("apartamento", "apto"), "Apartamento", "Casa")

# Eliminar la columna "barrio"
db <- select(db, -barrio)

# Convertir la columna "estrato" en factor
db$estrato <- factor(db$estrato)

# Eliminar filas duplicadas basadas en la columna "id"
db <- db[!duplicated(db$id) & !duplicated(db$id, fromLast = TRUE),]

# Eliminar filas con más de 10 valores faltantes
db <- db[complete.cases(db) | rowSums(is.na(db)) <= 10, ]

# Crear gráfico de distribución geográfica de viviendas utilizando shapefile
shp_data <- st_read("C:/Users/danie/Documents/Cali.shp")
puntos_sf <- st_as_sf(db, coords = c("longitud", "latitud"), crs = 4326)

ggplot() +
  geom_sf(data = shp_data) +
  geom_sf(data = puntos_sf, aes(color = zona), size = 1) +
  ggtitle("Distribución de viviendas según zona") +
  theme_void()

# Crear gráfico de distribución de viviendas según tipo
ggplot() +
  geom_sf(data = shp_data) +
  geom_sf(data = puntos_sf, aes(color = tipo), size = 1) +
  scale_color_manual(values = c("Casa" = "blue", "Apartamento" = "green")) +
  ggtitle("Distribución de viviendas según zona") +
  theme_void()

# Crear gráfico de cajas y bigotes por zona y tipo de vivienda
ggplot(db, aes(x = zona, y = preciom, fill = zona)) +
  geom_boxplot(outlier.shape = NA) +
  facet_grid(. ~ tipo) +  # Facetas por tipo de vivienda
  labs(title = "Distribución del precio de Venta de viviendas en Cali según zona, y tipo de vivienda",
       x = "Zona",
       y = "Precio de Venta") +
  theme(axis.title.x = element_blank(), axis.text.x = element_blank())

# Crear gráfico de dispersión de precio vs. área construida
ggplot(db, aes(x = areaconst, y = preciom)) +
  geom_point(aes(color = zona, shape = estrato)) +
  labs(title = "Distribución de precios de vivienda en Cali respecto al área construida, según estrato y zona",
       x = "Área Construida",
       y = "Precio de Vivienda")

# Crear gráfico de dispersión de precio vs. número de baños
ggplot(db, aes(x = banios, y = preciom)) +
  geom_point(aes(color = zona, shape = estrato)) +
  labs(title = "Distribución de precios de vivienda en Cali respecto al número de baños, según estrato y zona",
       x = "Número de baños",
       y = "Precio de Vivienda") +
  scale_x_continuous(breaks = seq(0, 10, by = 1))

# Crear gráfico de dispersión de precio vs. número de habitaciones
ggplot(db, aes(x = habitac, y = preciom)) +
  geom_point(aes(color = zona, shape = estrato)) +
  labs(title = "Distribución de precios de vivienda en Cali respecto al número de habitaciones, según estrato y zona",
       x = "Número de habitaciones",
       y = "Precio de Vivienda") +
  scale_x_continuous(breaks = seq(0, 10, by = 1))

# Crear gráfico de dispersión de precio vs. número de parqueaderos
ggplot(db, aes(x = parquea, y = preciom)) +
  geom_point(aes(color = zona, shape = estrato)) +
  labs(title = "Distribución de precios de vivienda en Cali respecto al número de parqueaderos, según estrato y zona",
       x = "Número de parqueaderos",
       y = "Precio de Vivienda") +
  scale_x_continuous(breaks = seq(0, 10, by = 1))

# Crear gráfico de dispersión de precio vs. piso
ggplot(db, aes(x = piso, y = preciom)) +
  geom_point(aes(color = zona, shape = estrato)) +
  labs(title = "Distribución de precios de vivienda en Cali respecto al piso de la misma, según estrato y zona",
       x = "Piso",
       y = "Precio de Vivienda") +
  scale_x_continuous(breaks = seq(0, 12, by = 1))