1. Introducción

Santiago de Cali, la próspera capital del Valle del Cauca y una de las ciudades más destacadas del país, está experimentando cambios notables en su mercado de vivienda. Este dinamismo se debe en gran medida al crecimiento demográfico, la creciente inversión extranjera directa, el surgimiento de nuevos proyectos inmobiliarios y el robusto desarrollo económico que caracteriza a la región. Estos factores han generado un notable aumento en la cantidad de personas que eligen residir en la ciudad, evidenciando así una demanda creciente en el sector inmobiliario.

Con la intención de ofrecer una perspectiva completa de este mercado en constante evolución, este informe se propone proporcionar información detallada sobre el panorama de viviendas en Cali, con un enfoque particular en los aspectos de mayor relevancia para la empresa B&C. A través del análisis exhaustivo de datos recopilados sobre precios, ubicaciones y características de las propiedades en diversas zonas de la ciudad, este informe tiene como objetivo brindar a B&C valiosos conocimientos que le permitan tomar decisiones estratégicas con pleno respaldo de información.

2. Objetivos

2.1 General

El principal objetivo de este estudio es proporcionar a la empresa B&C una comprensión detallada y precisa del mercado de viviendas en la ciudad de Cali.

2.2 Específicos

  • Identificar las características que influyen significativamente en el precio de las viviendas en Cali, como la zona de ubicación, el tamaño, el número de habitaciones, las comodidades adicionales, entre otros aspectos.
  • Conocer la composición del mercado inmobiliario para determinar los tipos de viviendas más ofertados y buscados por los consumidores en Cali.
  • Indagar sobre las principales características de la oferta de vivienda en Cali.

3. Metodos

El proceso de análisis de datos se llevó a cabo siguiendo una serie de pasos metodológicos para garantizar la integridad y coherencia de los resultados obtenidos. A continuación, se describe detalladamente cada uno de estos pasos:

Depuración y Ordenamiento de los Datos:

  • Inicialmente, se realizó una depuración exhaustiva de los datos para garantizar la calidad de la información. Esto incluyó la eliminación de registros que contenían muy poca información, lo que resultó en la exclusión de tres registros específicos.
  • Además, se llevó a cabo el proceso de eliminación de registros duplicados de la variable ID para evitar redundancias en los datos y garantizar la unicidad de cada observación.

Imputación de Datos con Metodología KNN:

  • Se utilizó la metodología de KNN (K-Nearest Neighbors) para imputar los datos faltantes en las variables pertinentes. Esta técnica se consideró adecuada debido a su capacidad para utilizar la información de otras variables similares para imputar los valores perdidos.
  • La imputación se aplicó específicamente a las variables “Piso” y “Parqueaderos”, donde la información de otras variables resultaba relevante para estimar valores precisos.

Estandarización de Variables:

  • Se procedió a estandarizar algunas variables, como el tipo de vivienda y el barrio, con el objetivo de homogeneizar la presentación de los datos. En este proceso, se convirtieron los nombres de las variables a minúsculas y se eliminaron las tildes y caracteres especiales para evitar inconsistencias en la escritura de los mismos.

Análisis Descriptivo Univariado:

  • Se llevó a cabo un análisis descriptivo univariado para explorar y comprender las características individuales de cada variable en el conjunto de datos. Esto incluyó la generación de estadísticas descriptivas y visualizaciones para identificar tendencias y patrones en los datos.

Análisis de Relaciones con la Variable Precio del Inmueble:

  • Posteriormente, se procedió a examinar las relaciones entre las variables, centrándose principalmente en su asociación con la variable “Precio del Inmueble”. Este análisis permitió comprender mejor cómo las diferentes características influyen en el precio de los inmuebles y proporcionó información valiosa para futuros análisis y decisiones.

4. Resultados

Los análisis realizados se muestran a continuación:

4.1 Análisis exploratorio de datos Univariable

A continuación, presentamos un análisis exploratorio de las variables examinadas de manera individual:

Zona

ggplot(Vivienda_imputado_combined, aes(x = zona)) +
  geom_bar(fill = "skyblue", color = "black") +
  stat_count(aes(label = paste(stat(count), " (", round((stat(count)/nrow(Vivienda_imputado_combined)),2) * 100, "%)")), geom = "text", vjust = -0.5)  + # Agregar frecuencia y porcentaje como etiquetas
  labs(title = "Frecuencia por Zona de la vivienda",
       x = "Zonas",
       y = "Frecuencia y (%)")

Se evidencia que la zona con mayor participación corresponde al sur.

Piso de la vivienda

library(ggplot2) 
Vivienda_imputado_combined$piso_imputado <- factor(Vivienda_imputado_combined$piso_imputado)
Vivienda_imputado_combined$piso <- factor(Vivienda_imputado_combined$piso)

# Crea el gráfico de barras
ggplot(Vivienda_imputado_combined, aes(x = piso_imputado)) +
  geom_bar(fill = "skyblue", color = "black") +
  stat_count(aes(label = paste(stat(count), "(", round((stat(count)/nrow(Vivienda_imputado_combined)),2) * 100, "%)")), geom = "text", vjust = -0.5)  + # Agregar frecuencia y porcentaje como etiquetas
  labs(title = "Frecuencia por Piso de la vivienda",
       x = "Piso de la vivienda",
       y = "Frecuencia")

Los pisos más ofertados corresponden a los pisos 2 y 3.

Precio

grupos <- cut(Vivienda_imputado_combined$preciom, breaks = c(100,200,300,400,500,700,800,900,1000,2000), include.lowest = TRUE)

# Mostrar la tabla de frecuencia de los grupos

summarytools::freq(grupos)
## Frequencies  
## grupos  
## Type: Factor  
## 
##                       Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ------------------- ------ --------- -------------- --------- --------------
##           [100,200]   1712     20.96          20.96     20.58          20.58
##           (200,300]   1861     22.78          43.74     22.37          42.95
##           (300,400]   1472     18.02          61.76     17.69          60.64
##           (400,500]    866     10.60          72.36     10.41          71.05
##           (500,700]   1022     12.51          84.87     12.29          83.34
##           (700,800]    266      3.26          88.13      3.20          86.54
##           (800,900]    244      2.99          91.11      2.93          89.47
##         (900,1e+03]    173      2.12          93.23      2.08          91.55
##       (1e+03,2e+03]    553      6.77         100.00      6.65          98.20
##                <NA>    150                               1.80         100.00
##               Total   8319    100.00         100.00    100.00         100.00
summary(Vivienda_imputado_combined$preciom)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    58.0   220.0   330.0   433.9   540.0  1999.0
hist(Vivienda_imputado_combined$preciom, 
     breaks = 15,
     las=1,
     main = "Distribución de los precios de la vivienda",
     xlab="Precio en millones de pesos",
     ylab = "frecuencia",
     col ="#8EE5EE")

El 44% de las viviendas en venta de la Ciudad de Cali tienen un valor igual o inferior a los 300 Millones de pesos.

Área construida

grupos_area <- cut(Vivienda_imputado_combined$areaconst, breaks = c(50,100,150,200,250,300,350,400,450,500,3000), include.lowest = TRUE)

# Mostrar la tabla de frecuencia de los grupos

summarytools::freq(grupos)
## Frequencies  
## grupos  
## Type: Factor  
## 
##                       Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ------------------- ------ --------- -------------- --------- --------------
##           [100,200]   1712     20.96          20.96     20.58          20.58
##           (200,300]   1861     22.78          43.74     22.37          42.95
##           (300,400]   1472     18.02          61.76     17.69          60.64
##           (400,500]    866     10.60          72.36     10.41          71.05
##           (500,700]   1022     12.51          84.87     12.29          83.34
##           (700,800]    266      3.26          88.13      3.20          86.54
##           (800,900]    244      2.99          91.11      2.93          89.47
##         (900,1e+03]    173      2.12          93.23      2.08          91.55
##       (1e+03,2e+03]    553      6.77         100.00      6.65          98.20
##                <NA>    150                               1.80         100.00
##               Total   8319    100.00         100.00    100.00         100.00
summary(Vivienda_imputado_combined$areaconst)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    30.0    80.0   123.0   174.9   229.0  1745.0
hist(Vivienda_imputado_combined$areaconst, 
     breaks = 15,
     las=1,
     main = "Distribución de las áreas construidas",
     xlab="Metros cuadrados",
     ylab = "frecuencia",
     col ="#8EE5EE")

El 39% de las viviendas en venta de la Ciudad de Cali tienen un área construida entre 50 y 100 metros cuadrados.

Parqueaderos

Vivienda_imputado_combined$parqueadero_imputado <- factor(Vivienda_imputado_combined$parqueadero_imputado)

# Crea el gráfico de barras
ggplot(Vivienda_imputado_combined, aes(x = parqueadero_imputado)) +
  geom_bar(fill = "skyblue", color = "black") +
  stat_count(aes(label = paste(stat(count), "(", round((stat(count)/nrow(Vivienda_imputado_combined)),2) * 100, "%)")), geom = "text", vjust = -0.5)  + # Agregar frecuencia y porcentaje como etiquetas
  labs(title = "Número de parqueaderos por vivienda",
       x = "Número de parqueaderos",
       y = "Frecuencia")

El 53% de las viviendas en venta de la Ciudad de Cali cuentan con por lo menos un parqueadero.

N° de Baños

### Variable número de baños:

Vivienda_imputado_combined$banios <- factor(Vivienda_imputado_combined$banios)

# Crea el gráfico de barras
ggplot(Vivienda_imputado_combined, aes(x = banios)) +
  geom_bar(fill = "skyblue", color = "black") +
  stat_count(aes(label = paste(stat(count), "(", round((stat(count)/nrow(Vivienda_imputado_combined)),2) * 100, "%)")), geom = "text", vjust = -0.5)  + # Agregar frecuencia y porcentaje como etiquetas
  labs(title = "Número de baños en la vivienda",
       x = "Número de Baños",
       y = "Frecuencia")

El 59% de las viviendas en venta de la Ciudad de Cali cuentan con entre 2 y 3 baños.

N° de Habitaciones

Vivienda_imputado_combined$habitac <- factor(Vivienda_imputado_combined$habitac)

# Crea el gráfico de barras
ggplot(Vivienda_imputado_combined, aes(x = habitac)) +
  geom_bar(fill = "skyblue", color = "black") +
  stat_count(aes(label = paste(stat(count), "(", round((stat(count)/nrow(Vivienda_imputado_combined)),2) * 100, "%)")), geom = "text", vjust = -0.5)  + # Agregar frecuencia y porcentaje como etiquetas
  labs(title = "Número de habitaciones en la vivienda",
       x = "Número de habitaciones",
       y = "Frecuencia")

Aproximadamente la mitad de las viviendas en venta de la Ciudad de Cali cuentan con 3 habitaciones.

Tipo de vivienda

df <- Vivienda_imputado_combined %>% 
  group_by(tipo) %>% # Variable a ser transformada
  count() %>% 
  ungroup() %>% 
  mutate(pcnt = `n` / sum(`n`)) %>% 
  arrange(pcnt) %>%
  mutate(etiquetas = scales::percent(pcnt))


ggplot(df, aes(x = "", y = pcnt, fill = tipo)) +
  geom_col() +
  geom_text(aes(label = etiquetas),
            position = position_stack(vjust = 0.5)) +
  coord_polar(theta = "y")+
  scale_fill_manual(values=c("steelblue","gray"))+
  theme_void()+
  labs(title="Tipo de vivienda")

El 61% de las viviendas en venta de la ciudad de Cali corresponden a apartamentos.

Barrios

# Barrios
barrios <- Vivienda_imputado_combined %>% 
  group_by(barrio) %>% # Variable a ser transformada
  count() %>% 
  ungroup() %>% 
  mutate(pcnt = `n` / sum(`n`)) %>% 
  arrange(pcnt) %>%
  mutate(Porcentaje = scales::percent(pcnt))


datatable(barrios[, -which(names(barrios) == "pcnt")], options = list(pageLength =10))
View(barrios)

El barrio con mas propiedades en venta corresponde a Valle del lili, seguido por Ciudad jardin y Pance.

4.2 Análisis exploratorio de datos Multivariable

A continuación, presentamos un análisis exploratorio multivariable en el que analizamos la relacion de algunas variables:

Correlación

Inicialmente evaluamos si existe algun tipo de correlación entre el precio de la vivienda y algunas variables numericas:

Vivienda_imputado_combined<-read.csv("datos.csv")

para_corr <- Vivienda_imputado_combined[sapply(Vivienda_imputado_combined, is.numeric)]
para_corr <- subset(para_corr, select = -c(X,id,piso, parquea,latitud, longitud))
correla <- cor(para_corr)

corrplot(correla, method = "number", type = "upper", 
         tl.col = "black", tl.srt = 45, number.cex = 1, number.digits = 2)

Se evidencia que las variables numericas que más correlación tienen con la variable precio del inmueble corresponden a “Número de parqueaderos”, “Área construida” y “Número de baños”, las cuales presentan una correlación positiva fuerte es decir a mayor cantidad de parqueaderos, área y baños el precio de la vivienda es mayor.

Precio vs Zona

Ahora evaluamos si existe relación entre el precio de la vivienda y la zona en la que se encuentra:

ggplot(Vivienda_imputado_combined, aes(x = zona, y = preciom)) +
  geom_boxplot(fill = "steelblue") +
  labs(x = "Zona de la vivienda",
       y = "Precio en millones", 
       title = "Precio de las viviendas por Zona de la ciudad") +
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5),
        panel.background = element_rect(fill = "white")
  )

La zona con los precios de las viviendas más altos se encuentran en el Oeste, mientras que los precios mas económicos de las viviendas se encuentran en el Oriente de la ciudad.

Precio vs Tipo de vivienda

Ahora evaluamos si existe relación entre el precio de la vivienda y el tipo de vivienda:

ggplot(Vivienda_imputado_combined, aes(x = tipo, y = preciom)) +
  geom_boxplot(fill = "steelblue") +
  labs(x = "Tipo de vivienda",
       y = "Precio en millones", 
       title = "Precio de las viviendas por Tipo") +
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5),
        panel.background = element_rect(fill = "white")
  )

Las casas presentan unos precios mas elevados que los apartamentos.

Precio promedio por Tipo de vivienda y Zona

Ahora evaluamos si existe relación entre el precio de la vivienda y el tipo de vivienda y su zona:

precio_promedio <- tapply(Vivienda_imputado_combined$preciom,
                          list(Vivienda_imputado_combined$tipo, Vivienda_imputado_combined$zona),
                          mean, na.rm = TRUE)
barplot(precio_promedio, beside = TRUE,
        col = c("steelblue", "gray"), # Colores de las barras
        main = "Precio promedio del tipo de vivienda según la zona",
        xlab = "Zona", ylab = "Precio promedio",
        ylim = c(0, 900),
        legend = rownames(precio_promedio))

Se evidencia de que las casas presentan unos precios mas elevados que los apartamentos en todas las zonas de la ciudad, sin embargo la diferencia es mas marcada en la zona sur, donde el valor promedio de los apartamentos es casi la mitad al de las casas.

5 Discusión

El análisis realizado revela importantes insights sobre el mercado inmobiliario de la ciudad, especialmente en lo que respecta a la distribución de precios y la oferta de viviendas en diferentes zonas. A continuación, se discuten algunos hallazgos clave y sus implicaciones:

  • Zonas de la Ciudad con Precios más Altos: Se observa claramente que las zonas de la ciudad con los precios más altos de vivienda se encuentran en el oeste. Este resultado coincide con la percepción general de que las áreas más exclusivas suelen ubicarse en el sector occidental de la ciudad.

  • Oferta Limitada en la Zona Oeste: A pesar de los altos precios en la zona oeste, es importante destacar que esta área representa solo el 14% de la oferta total de viviendas. Esta baja proporción puede dificultar el acceso a la vivienda en esta zona para muchos compradores potenciales.

  • Mayor Oferta en la Zona Sur: Por el contrario, la zona sur de la ciudad exhibe una mayor oferta de inmuebles, representando el 57% del total. Esto sugiere que, si bien los precios pueden ser más accesibles en esta área, también hay una mayor competencia entre los vendedores.

  • Comparación de Precios entre Zona Oeste y Sur: Es interesante notar que, al enfocarse específicamente en casas, los costos en la zona sur son comparables a los de la zona oeste. Esta comparación destaca la importancia de considerar el tipo de propiedad al analizar los precios en diferentes áreas.

  • Características de la Oferta en la Zona Sur: Además, al seleccionar viviendas en la zona sur con características específicas, como más de 2 parqueaderos, áreas de más de 300 metros cuadrados y más de 1 baño, se observa una oferta amplia con una variedad de valores. Esto sugiere que los compradores en busca de propiedades con ciertas características pueden encontrar opciones atractivas en esta área.

En resumen, los resultados del análisis destacan la importancia de considerar tanto el precio como la oferta de viviendas al tomar decisiones en el mercado inmobiliario. Además, resaltan la necesidad de un enfoque más detallado al evaluar las características específicas de la propiedad y su impacto en el precio y la disponibilidad.

6. Conclusiones

Basándonos en los objetivos planteados y la información proporcionada, podemos llegar a las siguientes conclusiones:

  • Precio de las Viviendas en Diferentes Zonas de Cali: Se evidencia una clara variación en los precios de las viviendas según la zona de la ciudad. Mientras que la zona oeste presenta los precios más altos, la zona oriente se caracteriza por ofrecer viviendas más económicas. Esta disparidad en los precios puede atribuirse a factores como la ubicación, la infraestructura y la demanda en cada área. Se destaca que las variables numéricas que presentan una correlación positiva fuerte con el precio del inmueble son el número de parqueaderos, el área construida y el número de baños. Esto sugiere que a medida que aumenta la cantidad de parqueaderos, el área y los baños, el precio de la vivienda tiende a ser mayor.

  • Tipo de Viviendas más Ofertadas en Cali: La mayoría de la oferta de viviendas en Cali corresponde a apartamentos, representando el 61% del total. Esta preferencia por los apartamentos puede estar influenciada por factores como la densidad poblacional, la disponibilidad de terrenos y las preferencias de estilo de vida de la población.

  • Características más Relevantes de la Oferta de Vivienda en Cali: Las características más relevantes de la oferta de vivienda en Cali incluyen un área construida entre 50 y 100 metros cuadrados, un valor igual o inferior a 300 millones de pesos, la presencia de al menos un parqueadero y entre 2 y 3 baños. Además, aproximadamente la mitad de las viviendas cuentan con 3 habitaciones.

En resumen, estas conclusiones resaltan la importancia de considerar la ubicación, el tipo de vivienda y las características específicas al evaluar el mercado inmobiliario en Cali. Estos hallazgos proporcionan información valiosa para la empresa B&C al tomar decisiones informadas sobre la compra, venta o inversión en propiedades en la ciudad.

7. Anexos

Preprocesamiento

A continuación presentamos las transformaciones realizadas a la base de datos inicial.

## Cargamos la BD 

# data(vivienda_faltantes)

##### Limpieza de datos

#?vivienda_faltantes            ## Descripción de las variables
#str(vivienda_faltantes)        ## Explora el tipo y tamaño de variables

##### Datos Faltantes

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

#faltantes


#plot_missing(vivienda_faltantes)

#gg_miss_var(vivienda_faltantes) # grafico de datos faltantes


##### Eliminamos los id con NA

#vivienda_faltantes_sin_NA <- vivienda_faltantes %>%
#  filter(!is.na(id))

#faltantes2 <- colSums(is.na(vivienda_faltantes_sin_NA)) %>%
#  as.data.frame() 

#faltantes2

# revisamos si hay registros duplicados y los quitamos

#tt_duplicados <- sum(duplicated(vivienda_faltantes_sin_NA$id))

#vivienda_faltantes_sin_NA_sin_duplicados <- vivienda_faltantes_sin_NA %>%
#  distinct(id, .keep_all = TRUE)

##### tratamos los datos faltantes de piso y parqueadero

# Imputación KNN
#Vivienda_imputado <- kNN(vivienda_faltantes_sin_NA_sin_duplicados)

#Vivienda_imputado_combined <- bind_cols(vivienda_faltantes_sin_NA_sin_duplicados, Vivienda_imputado$piso,Vivienda_imputado$parquea)
#str(Vivienda_imputado_combined)

## cambiamos los nombres de las variables imputadas

#Vivienda_imputado_combined <- Vivienda_imputado_combined %>%
#  rename(piso_imputado = ...14) 

#Vivienda_imputado_combined <- Vivienda_imputado_combined %>%
#  rename(parqueadero_imputado = ...15)