Introducción

La empresa B&C (Bines y Casas) es una agencia de bienes raíces que opera en la ciudad de Cali, Colombia. La empresa fue fundada por Sandra Milena hace 10 años y actualmente cuenta con ocho agentes de bienes raíces.

El mercado de bienes raíces en Cali ha crecido significativamente en los últimos años, impulsado por el crecimiento de la población, la inversión extranjera directa y el desarrollo de nuevos proyectos inmobiliarios. En 2021, las ventas del sector en Cali llegaron a $6700 millones y en 2022 a $6100 mil millones. Se espera que este sector continue creciendo durante los próximos años, permitiendo un desarrollo dinámico en la economía regional.

La empresa B&C ha recogido información sobre viviendas que incluye información sobre el precio, la ubicación, las características y la venta de viviendas en Cali. Esta base de datos puede ser utilizada para realizar un informe estadístico que sería de gran interés para la empresa.

En el presente informe, se presenta un análisis descriptivo de los datos recopilados por la empresa B&C (Bines y Casas), una agencia de bienes raíces ubicada en Cali, Colombia. Este análisis tiene como objetivo identificar tendencias y patrones en el mercado de bienes raíces de Cali, proporcionando información valiosa para la toma de decisiones estratégicas de la empresa.

Objetivos

Los objetivos de este análisis son brindar a la empresa B&C Inmobiliaria un análisis estadistico que les ayude a la toma de desiciones, para ello, debemos:

  • Analizar el mercado de bienes raíces en Cali proporcionado.
  • Determinar el tipo de viviendas más vendidas en Cali.
  • Evaluar características más buscadas en viviendas.

Métodos

Se utilizó la base de datos proporcionada por la empresa B&C, que contiene información sobre zona, piso, estrato, precio, area, parqueadero, baños, habitaciones, tipo, barrio, longitud y latitud de viviendas en Cali. Se realizó un análisis descriptivo utilizando técnicas estadísticas para explorar las tendencias y patrones en los datos.

Primero importamos los datos:

df <- read.csv("/Users/joans/Downloads/vivienda_faltantes.csv")
head(df)

Análisis Exploratorio

El resumen de la base de datos:

summary(df)
##        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

Inicialmente, me parece curiosa la cantidad de datos en NA que se puede ver en la tabla, vamos a contarlos:

#install.packages("table1")
# Contar la cantidad de valores 'N/A' en cada columna
na_count <- colSums(is.na(df))
na_count
##        id      zona      piso   estrato   preciom areaconst   parquea    banios 
##         3         3      2641         3         2         3      1606         3 
##   habitac      tipo    barrio  longitud   latitud 
##         3         3         3         3         3
#Visualizar los valores 'N/A'
barplot(na_count, names.arg = names(na_count), col = "blue",
        main = "Valores 'N/A' por Columna", xlab = "Columna", ylab = "Cantidad de 'N/A'")

Podemos observar, que pese a la cantidad de valores en NA, en su mayoría son en las columnas Piso y Parquea las cuales cada una supera los 1500 registros en NA (En piso 2641 y en parquea 1606).

library(mice)
## 
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
## 
##     filter
## The following objects are masked from 'package:base':
## 
##     cbind, rbind
grafico <- md.pattern(df, rotate.names = TRUE)

Estadistica descriptiva

Vamos a explorar las variables cualitativas, en la siguiente gráfica podemos evidenciar las viviendas más comunes:

library(ggplot2)
table(df$zona)
## 
##  Zona Centro   Zona Norte   Zona Oeste Zona Oriente     Zona Sur 
##          124         1922         1204          351         4726
ggplot(df, aes(x = zona)) +
  geom_bar(fill = "skyblue", color = "black") +
  labs(title = "Distribución de Zonas", x = "Zona", y = "Cantidad")

Con esto podemos observar que las viviendas que se tienen en el estudio, están en su gran mayoría en la zona sur de Cali. Lo cual es un dato muy importante, dado que en la zona sur de cali se encuentran lugares como: * Universidades de prestigio. * Restaurantes populares por su gastronomía, lo cual lo convierte en oportunidad de empleo. * Centros de salud. * Centros de educación.

Por ende es una zona de gran interés y bastante comercial por su variedad cubierta por cualquier tipo de persona.

Ahora bien, me interesa saber dentro de esta cantidad de viviendas que estamos explorando, el estrato que más se puede observar, dado que para alguien que alquila o compra vivienda es muy importante el estrato de dicha vivienda, así como también la cantidad de pisos y habitaciones, para poderse presupuestar mensualmente en cuando a cuestiones de servicios y la distribución de dichas habitaciones

ggplot(df, aes(x = estrato)) +
  geom_bar(fill = "lightgreen", color = "black") +
  labs(title = "Estrato", x = "Estrato", y = "Cantidad")
## Warning: Removed 3 rows containing non-finite values (`stat_count()`).

Podemos evidenciar que son viviendas que van desde estrato 3 hasta estrato 6, en donde, en su gran parte, por ende, nuestra estrategia de marketing debe ser enfocado a personas desde un nivel socioeconomico medio-bajo, y enfocandonos en un nivel medio-alto / alto

Otra variable que podemos analizar es la variable tipo, la cual se refiere al tipo de vivienda del que estamos hablando, ahora bien, analizando los tipos, vemos que tenemos variable apartamento y apto los cuales se refieren a la misma variable, entonces debemos igualarlos. Existen 5109 apartamentos y 3221 casas:

#install.packages("stringr")
library(stringr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
table(df$tipo)
## 
## Apartamento APARTAMENTO        apto        casa        Casa        CASA 
##        5032          61          13          14        3195          12
#Modificamos las variables tipo para que apto y apartamento sean lo mismo
df <- df %>%
  mutate(tipo = recode(tipo, apto = "apartamento"))

#Volvemos minuscula todas las variables en tipo y construimos una tabla de frecuencias con ellas
df$tipo <- tolower(df$tipo)
tabla_frecuencias <- table(df$tipo)
tabla_frecuencias <- as.data.frame(tabla_frecuencias)
tabla_frecuencias$Var1 <- factor(tabla_frecuencias$Var1, levels = unique(tabla_frecuencias$Var1))
print(tabla_frecuencias)
##          Var1 Freq
## 1 apartamento 5106
## 2        casa 3221
ggplot(df, aes(x = "", fill = tipo)) +
  geom_bar(width = 1) +
  coord_polar("y") +
  geom_text(stat="count", aes(label=after_stat(count)), position=position_stack(vjust=0.5)) +
  labs(title = "Grafico de torta tipo de inmueble",
       fill = "Zona")

Ahora vamos a crear un gráfico de densidad para los precios de venta:

ggplot(df, aes(x = preciom, fill = estrato)) +
  geom_density(alpha = 0.5) +
  labs(title = "Densidad de Precios de Venta", x = "Precio de Venta", y = "Densidad")
## Warning: Removed 2 rows containing non-finite values (`stat_density()`).
## Warning: The following aesthetics were dropped during statistical transformation: fill
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
##   the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
##   variable into a factor?

El gráfico de densidad es una herramienta útil para visualizar la distribución de los datos en una variable continua, como en este caso, los precios de venta de las viviendas. Permite ver cómo se agrupan los valores y dónde se concentran las observaciones. En resumen, el gráfico de densidad te ayudará a comprender mejor la distribución de los precios de venta y a tomar decisiones más informadas sobre estrategias de precios, segmentación de mercado y enfoques de marketing. Las conclusiones específicas que saques dependerán de la forma de las distribuciones, los patrones identificados y cómo estos encajan en el contexto más amplio del mercado de los bienes raíces en Cali.

Ahora bien, para los clientes es importante tener una relación entre la cantidad de habitaciones y baños en vivienda, por ende podemos usar un scatterlot para representar esto:

ggplot(df, aes(x = habitac, y = banios, color = estrato)) +
  geom_point() +
  labs(title = "Relación entre Habitaciones y Baños", x = "Habitaciones", y = "Baños")
## Warning: Removed 3 rows containing missing values (`geom_point()`).

Por ultimo, me interesa visualizar la relación entre la zona y el precio:

df$zona <- factor(df$zona)

#Realizamos un grafico de bigotes con dichas variables
ggplot(df, aes(x = zona, y = preciom, fill = zona)) +
  geom_boxplot() +
  stat_summary(fun = mean, geom = "text", aes(label = round(after_stat(y), 2)),
               vjust = 0, color = "black", size = 5) +
  labs(title = "Relación entre Zona y Precio",
       x = "Zona",
       y = "Precio") +
  theme_classic()
## Warning: Removed 2 rows containing non-finite values (`stat_boxplot()`).
## Warning: Removed 2 rows containing non-finite values (`stat_summary()`).

Conclusiones

  • En la zona sur es donde se tiene una mayor cantidad de apartamentos. Adicional es la zona que tiene un valor promedio de avaluo.

  • Son casas que en promedio estan avaluadas en 400 millones de pesos, por ende el público al que necesitamos llegar es de personas con un estrato socioeconomico por encima del promedio.

  • En los datos de los parqueaderos, se observo que en su mayoría las casas solo tenian de 1 a 2 parqueaderos

  • Se observa una correlación entre el estrato y el precio, dado que entre mayor el precio más alto es el estrato del inmueble.