1. Intorducción

El mercado inmobiliario en Colombia genera ventas por billones de pesos cada año, para Cali este número fue de $6.100 millones en 2023, actualmente es la cuarta ciudad con precios inmobiliarios más altos en Colombia. No obstante, durante el último año se presentaron caídas en las ventas del sector, motivo por el cual se hace necesario generar factores e indicadores que representen ventajas para la compañía B&C (Bienes y Casas). En este marco se plantea un análisis de datos el cual facilite la toma de decisiones y genere señales que indiquen sobre áreas para concentrar esfuerzos con la finalidad de atraer más clientes.

Teniendo en cuenta lo anterior el presente informe desarrolla un análisis sobre una base de datos recopilada con información inmobiliaria para la ciudad de Cali. Esta base de datos cuenta con un total de 8.327 registros de viviendas, para los cuales se cuenta con información acerca de su ubicación, piso en el que se encuentran ubicados, si son casas o apartamentos, valor de la vivienda, número de baños, número de parqueaderos, número de habitaciones, área de construcción y previo de las viviendas.

Teniendo en cuenta los datos se realizará un análisis de estadística descriptiva en el que se identifiquen oportunidades y factores determinantes en la venta y valor de viviendas.

2. Objetivos

2.1. Objetivo General

El objetivo del presente documento consiste realizar un análisis estadístico sobre la información recopilada para el mercado inmobiliario en Cali, lo anterior para brindar información estadística dirigida a la empresa B&C la cual le permita mejorar sus operaciones, detectando oportunidades para explotar en el sector inmobiliario.

2.12. Objetivos Especificos

  • Realizar un análisis descriptivo sobre diferentes variables del sector inmobiliario en Cali, presentando mayor énfasis en el precio - de las viviendas de acuerdo con su ubicación geográfica, el tipo de viviendas más ofertadas y las características principales en el - total de las viviendas analizadas.
  • Definir un nicho de mercado en donde se la empresa podría obtener mayores beneficios.
  • Brindar información que permita el desarrollo de campañas de marketing.
  • Brindar parámetros que permitan establecer precios de venta competitivos y generen beneficios para la empresa.
  • Incluir información relevante para la toma de decisiones la cual no sea visible a con una revisión superficial.

3. Metodos

Se da inició utilizando una base de datos de 8.330 registros, de los cuales se removieron 3 puesto que presentaban datos vacíos en al menos 12 de las 13 variables revisadas.

Posteriormente se revisó cada variable registrada en la base de datos para determinar cuántos datos vacíos se presentaban en cada variable, el resultado se observa en la tabla 1 en donde se aprecia que solo 2 variables presentaban este tipo de datos. Las variables son piso con 2.638 datos vacíos lo que representa un 32% del total de datos y parquea con 1.603 datos vacíos lo que representa un 19%. Los mecanismos para tratar con estos datos serán tratados con mayor profundidad.

Posteriormente se revisó la homogeneidad de los datos, verificando que los valores de las columnas cumplieran con unos lineamientos básicos. Para esto se revisaron los valores únicos de cada columna. Los cambios necesarios se dieron en la variable piso, en la que se contaba con las categorías apartamento y casa, pero por la forma en que se registraron los datos aparecían más categorías como CASA y Casa, para esto se reemplazaron los valores que contenían los caracteres de “ca” por casa y los que contenían “ap” por apartamento, esto eliminando los espacios en blanco. De la misma forma se eliminaron las mayúsculas en la variable barrio. Posteriormente se incluyó otra variable en la que se obtuvo el valor de metro cuadrado dividiendo el valor de la vivienda entre el área construida. Al realizar el proceso de limpieza y transformación de datos se obtuvo como resultado una base de datos con 8.327 registros y 14 columnas o variables.

Las variables son:

library(kableExtra)
library(paqueteMETODOS)
library(magrittr)
library(ggplot2)
library(googleway)
data(vivienda_faltantes)
datos_8327 <- vivienda_faltantes[!is.na(vivienda_faltantes$id), ]
diccionario_datos <- data.frame(
  Variable = c("Zona", "Piso", "Estrato", "Preciom", "Areaconst", "Parquea", "Banios", "Habitac", "Tipo", "Barrio", "Precio_m2"),
  Descripción = c("Zona de la ciudad en la que se encuentra la vivienda",
                  "Piso de un edificio en el que se encuentra ubicada la vivienda",
                  "Clasificación de estrato dada a la vivienda dependiendo de su ubicación",
                  "Precio en millones de la vivienda",
                  "Área en metros cuadrados de construcción de la casa",
                  "Número de parqueaderos con los que cuenta la vivienda",
                  "Número de baños con los que cuenta la vivienda",
                  "Número de habitaciones con los que cuenta la vivienda",
                  "Tipo de vivienda",
                  "Barrio residencial en el que se encuentra ubicada la vivienda",
                  "Valor del metro cuadrado de la vivienda en millones"),
  Tipo = c("Cualitativa", "Cualitativa", "Cualitativa", "Nominal", "Nominal", "Nominal", "Nominal", "Nominal", "Cualitativa", "Cualitativa", "Nominal")
)


kable(diccionario_datos, caption = "Diccionario de datos", align = "c") %>%
  kable_styling(full_width = FALSE)
Diccionario de datos
Variable Descripción Tipo
Zona Zona de la ciudad en la que se encuentra la vivienda Cualitativa
Piso Piso de un edificio en el que se encuentra ubicada la vivienda Cualitativa
Estrato Clasificación de estrato dada a la vivienda dependiendo de su ubicación Cualitativa
Preciom Precio en millones de la vivienda Nominal
Areaconst Área en metros cuadrados de construcción de la casa Nominal
Parquea Número de parqueaderos con los que cuenta la vivienda Nominal
Banios Número de baños con los que cuenta la vivienda Nominal
Habitac Número de habitaciones con los que cuenta la vivienda Nominal
Tipo Tipo de vivienda Cualitativa
Barrio Barrio residencial en el que se encuentra ubicada la vivienda Cualitativa
Precio_m2 Valor del metro cuadrado de la vivienda en millones Nominal
#Revision de las variables (depuración y limpieza)


#Se elimina 3 registros vacios
datos_vacios <- colSums(is.na(datos_8327))
resumen_vacios <- data.frame(Columna = names(datos_vacios),
                                   Datos_Vacios = datos_vacios,
                                   Porcentaje_Datos_Vacios = datos_vacios / nrow(datos_8327) * 100)

#Se ajustan los datos de tipo de vivienda
datos_8327$tipo <- trimws(tolower(datos_8327$tipo))
datos_8327$tipo <- ifelse(grepl("ca", datos_8327$tipo), "Casa",ifelse(grepl("ap", datos_8327$tipo), "Apartamento", datos_8327$tipo))

#Se ajustan los datos de tipo de Barrio
datos_8327$barrio <- trimws(tolower(datos_8327$barrio))

#Se incluye columna de valor del metro cuadrado
datos_8327$precio_m2 <- datos_8327$preciom / datos_8327$areaconst

#Se remplazan los pisos N/A por 1

datos_8327$piso <- ifelse(is.na(datos_8327$piso), 1, datos_8327$piso)

Para las variables del número de parqueaderos (parquea) y piso en que se ubica la vivienda (piso) se presentan varia casos en los que no hay información reportada 1.603 y 2.638 casos respectivamente. Para el caso de la variable del piso al que corresponde la vivienda se imputarán datos de manera tal que los datos que se muestran como N/A serán tomados como primer piso. La razón para esta decisión se centra en el bajo número reportado para el piso 1. Teniendo en cuenta que se trabaja con una muestra aleatoria el piso 1 debería ser el más representativo, en tanto toda construcción inmobiliaria necesariamente debe reportar un primer piso.

Respecto a la variable del parqueadero se propone usar valores de cero para los casos en que no se registra información. Esto teniendo en cuenta que en el país la proporción de viviendas con cero parqueaderos es menor que la de viviendas con al menos un parqueadero. No obstante, esta imputación no será realizada, dado que el argumento requiere un mayor sustento y que la proporción de viviendas sin parqueadero respecto a las que cuenta con algún parqueadero, si es mayor pese a que no sea la esperada.

4. Resultados

De acuerdo con los objetivos planteados el análisis iniciará mostrando un resumen de algunos de los principales datos encontrados. En primer lugar, se analizarán las variables cualitativas.

Variables Cualitativas

Piso

Respecto al estrato se tiene que en el estudio realizado se recolectó información de viviendas que fueran de un estrato 3 o superior. Las viviendas de estrato 5 representan el 34% de las viviendas analizadas, después están las de estratos 4, 6 y 3 con participaciones de 26%, 23% y 27% respectivamente. Lo anterior implica que la empresa desarrolla sus operaciones enfocadas en viviendas de lo que podría considerarse clase media o superior.

kable(summarytools::freq(datos_8327$piso),
                 caption = "**Tabla de frecuencia absoluta y relativa para la variable piso**")
Tabla de frecuencia absoluta y relativa para la variable piso
Freq % Valid % Valid Cum. % Total % Total Cum.
1 3499 42.0199352 42.01994 42.0199352 42.01994
2 1450 17.4132341 59.43317 17.4132341 59.43317
3 1097 13.1740122 72.60718 13.1740122 72.60718
4 607 7.2895401 79.89672 7.2895401 79.89672
5 568 6.8211841 86.71791 6.8211841 86.71791
6 245 2.9422361 89.66014 2.9422361 89.66014
7 207 2.4858893 92.14603 2.4858893 92.14603
8 211 2.5339258 94.67996 2.5339258 94.67996
9 146 1.7533325 96.43329 1.7533325 96.43329
10 130 1.5611865 97.99448 1.5611865 97.99448
11 84 1.0087667 99.00324 1.0087667 99.00324
12 83 0.9967575 100.00000 0.9967575 100.00000
0 NA NA 0.0000000 100.00000
Total 8327 100.0000000 100.00000 100.0000000 100.00000
conteo <- datos_8327 %>% count(piso)
ggplot(conteo, aes(x = piso, y = n)) +
  geom_text(aes(label = n), vjust = -0.5, size = 3) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  labs(title = "Número de viviendas por número de piso", x = "Piso", y = "Frecuencia") +
  theme_minimal()

Tipo de vivienda

Respecto al tipo de vivienda se tiene que la participación de los apartamentos (61%) es superior a la de las casas (39%). Esto puede implicar una preferencia de los compradores por un tipo de vivienda con características como seguridad privada. Esto también puede ser un reflejo de un incremento en la verticalización urbana debido al aumento de la densidad poblacional de la ciudad.

tabla = (table(datos_8327$tipo))
Frecuencia_R=prop.table(tabla)
kable(data.frame(Valor = names(tabla), 
                 Frecuencia = as.vector(tabla), 
                 Frecuencia_R = as.numeric(Frecuencia_R)),
                 caption = "**Tabla de frecuencia absoluta y relativa para la variable tipo**")
Tabla de frecuencia absoluta y relativa para la variable tipo
Valor Frecuencia Frecuencia_R
Apartamento 5106 0.613186
Casa 3221 0.386814
pie(table(datos_8327$tipo))

Ubicación geografica

Para la variable zona se tiene que la zona sur es la que presenta un mayor número de viviendas en Cali cubriendo al rededor del 58% de las propiedades analizadas, le siguen la zona norte con 23%, oeste con 14%, oriente con 4% y centro con 1%.

tabla = (table(datos_8327$zona))
Frecuencia_R=prop.table(tabla)
datos=data.frame(Zona = names(tabla), 
                 Frecuencia = as.vector(tabla), 
                 Frecuencia_R = as.numeric(Frecuencia_R))
kable((datos),caption = "**Tabla de frecuencia absoluta y relativa para la variable zona**")
Tabla de frecuencia absoluta y relativa para la variable zona
Zona Frecuencia Frecuencia_R
Zona Centro 124 0.0148913
Zona Norte 1922 0.2308154
Zona Oeste 1204 0.1445899
Zona Oriente 351 0.0421520
Zona Sur 4726 0.5675513
pie(table(datos_8327$zona))

kable(summarytools::freq(datos_8327$estrato),
                 caption = "**Tabla de frecuencia absoluta y relativa para la variable estrato**")
Tabla de frecuencia absoluta y relativa para la variable estrato
Freq % Valid % Valid Cum. % Total % Total Cum.
3 1453 17.44926 17.44926 17.44926 17.44926
4 2131 25.59145 43.04071 25.59145 43.04071
5 2751 33.03711 76.07782 33.03711 76.07782
6 1992 23.92218 100.00000 23.92218 100.00000
0 NA NA 0.00000 100.00000
Total 8327 100.00000 100.00000 100.00000 100.00000
conteo <- datos_8327 %>% count(estrato)
ggplot(conteo, aes(x = estrato, y = n)) +
  geom_text(aes(label = n), vjust = -0.5, size = 3) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  labs(title = "Número de viviendas por estrato", x = "Estrato", y = "Frecuencia") +
  theme_minimal()

Se revisaron los 5 barrios con un mayor precio de metro cuadrado resaltando los barrios Mamellan, Unicentro Cali, Calicanto viii, Normandía West Point y San Nicolas como aquellos que podrían venderse a un precio más alto por metro cuadrado. Así mismo se revisaron los 5 barrios con mayor promedio en el valor de las viviedas entre los que resaltaron Santa, La Portada, Tequendama, La Riverita y Unicentro Cali.

#google_map(key = "AIzaSyBJRQ-QdyW-hqoNaSS0RcxEsaWleXVwVmI") %>%
#  add_markers(data = datos_8327 , lat = "latitud", lon = "longitud")


valor_promedio_por_barrio <- aggregate(datos_8327$precio_m2, by = list(barrio = datos_8327$barrio), FUN = mean)
barrios_ordenados <- valor_promedio_por_barrio[order(-valor_promedio_por_barrio$x), ]
top_5_barrios <- barrios_ordenados[1:5, ]
kable(top_5_barrios, col.names = c("Barrio", "Valor Promedio por m²"), caption = "Top 5 barrios con mayor valor promedio por metro cuadrado")
Top 5 barrios con mayor valor promedio por metro cuadrado
Barrio Valor Promedio por m²
250 mamellan 7.386364
371 unicentro cali 5.868545
63 calicanto viii 5.067568
268 normandía west point 5.042373
332 san nicolas 5.038760
valor_promedio_por_barrio <- aggregate(datos_8327$preciom, by = list(barrio = datos_8327$barrio), FUN = mean)
barrios_ordenados <- valor_promedio_por_barrio[order(-valor_promedio_por_barrio$x), ]
top_5_barrios <- barrios_ordenados[1:5, ]
kable(top_5_barrios, col.names = c("Barrio", "Valor Promedio de la vivienda"), caption = "Top 5 barrios con viviendas con mayor valor promedio")
Top 5 barrios con viviendas con mayor valor promedio
Barrio Valor Promedio de la vivienda
336 santa 1950
212 la portada al 1500
368 tequendema 1500
218 la riverita 1390
371 unicentro cali 1250

Variables Cuantitativas

Para analizar las variables cuantitativas se realizó un resumen de los principales indicadores de posición y centro. Esta revisión mostro que los tamaños de las viviendas en Cali van desde 30 m² hasta 1.745 m², pese a que existe apartamentos con diferentes medidas los datos reflejan que el 75% de las viviendas no superan los 229 m².

kable(summary(datos_8327[c("preciom","areaconst","parquea","banios","habitac","precio_m2")]), full_width = FALSE,
      caption = "**Tabla de principales indicadores de pocisión centro y dispersión para las variables cuantitativas**")
Tabla de principales indicadores de pocisión centro y dispersión para las variables cuantitativas
preciom areaconst parquea banios habitac precio_m2
Min. : 58.0 Min. : 30 Min. : 1.000 Min. : 0.000 Min. : 0.000 Min. :0.1461
1st Qu.: 220.0 1st Qu.: 80 1st Qu.: 1.000 1st Qu.: 2.000 1st Qu.: 3.000 1st Qu.:1.9167
Median : 330.0 Median : 123 Median : 2.000 Median : 3.000 Median : 3.000 Median :2.6431
Mean : 434.3 Mean : 175 Mean : 1.836 Mean : 3.112 Mean : 3.605 Mean :2.7230
3rd Qu.: 540.0 3rd Qu.: 229 3rd Qu.: 2.000 3rd Qu.: 4.000 3rd Qu.: 4.000 3rd Qu.:3.3810
Max. :1999.0 Max. :1745 Max. :10.000 Max. :10.000 Max. :10.000 Max. :9.4681
NA NA NA’s :1603 NA NA NA
plot(density(datos_8327$areaconst), 
     main = "Gráfica de Densidad de area de la vivienda respecto al precio del metro cuadrado",
     xlab = "m²",
     ylab = "Densidad")

Precio de las viviendas

La distribución del precio de las viviendas refleja una situación similar al precio del metro cuadrado, siendo que pese a existir un rango amplio, los valores se concentran en la izquierda de la gráfica, entiéndase valores más bajos.

limites <- seq(min(datos_8327$preciom), max(datos_8327$preciom), length.out = 10+1)
limites_formateados <- format(limites, nsmall = 0)
etiquetas_intervalos <- paste0(limites_formateados[-length(limites_formateados)], " - ", limites_formateados[-1])
intervalos <- cut(datos_8327$preciom, breaks = limites, include.lowest = TRUE, labels = etiquetas_intervalos)
tabla_frecuencias <- table(intervalos)
kable(tabla_frecuencias)
intervalos Freq
58.0 - 252.1 2831
252.1 - 446.2 2721
446.2 - 640.3 1201
640.3 - 834.4 624
834.4 - 1028.5 395
1028.5 - 1222.6 197
1222.6 - 1416.7 181
1416.7 - 1610.8 87
1610.8 - 1804.9 62
1804.9 - 1999.0 28
ggplot(data.frame(Intervalo = etiquetas_intervalos, Frecuencia = as.numeric(tabla_frecuencias)), aes(x = Intervalo, y = Frecuencia)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  labs(title = "Histograma del precio de la vivienda",
       x = "Precio",
       y = "Frecuencia") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Area Construida

El histograma realizado para representar la frecuencia de la vivienda según su tamaño muestra que la mayoría de las casas son relativamente pequeñas, teniendo en cuenta el rango de construcción existente de 1.715 m², mientras que el promedio es de 175 m².

limites <- seq(min(datos_8327$areaconst), max(datos_8327$areaconst), length.out = 10+1)
limites_formateados <- format(limites, nsmall = 0)
etiquetas_intervalos <- paste0(limites_formateados[-length(limites_formateados)], " - ", limites_formateados[-1])
intervalos <- cut(datos_8327$areaconst, breaks = limites, include.lowest = TRUE, labels = etiquetas_intervalos)
tabla_frecuencias <- table(intervalos)
kable(tabla_frecuencias)
intervalos Freq
30.0 - 201.5 5919
201.5 - 373.0 1690
373.0 - 544.5 525
544.5 - 716.0 109
716.0 - 887.5 46
887.5 - 1059.0 24
1059.0 - 1230.5 6
1230.5 - 1402.0 2
1402.0 - 1573.5 3
1573.5 - 1745.0 3
ggplot(data.frame(Intervalo = etiquetas_intervalos, Frecuencia = as.numeric(tabla_frecuencias)), aes(x = Intervalo, y = Frecuencia)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  labs(title = "Histograma del area de las viviendas",
       x = "tamaño en metros cuadrados",
       y = "Frecuencia") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Número de parqueaderos, baños y habitaciones.

tabla = (table(datos_8327$parquea))
Frecuencia_R=prop.table(tabla)
kable(data.frame(Valor = names(tabla), 
                 Frecuencia = as.vector(tabla), 
                 Frecuencia_R = as.numeric(Frecuencia_R)),
                 caption = "**Tabla de frecuencia absoluta y relativa para la variable parqueadero**")
Tabla de frecuencia absoluta y relativa para la variable parqueadero
Valor Frecuencia Frecuencia_R
1 3156 0.4693635
2 2478 0.3685306
3 521 0.0774836
4 386 0.0574063
5 68 0.0101130
6 68 0.0101130
7 18 0.0026770
8 17 0.0025283
9 4 0.0005949
10 8 0.0011898
datos_8327$parquea <- as.factor(datos_8327$parquea)
conteo <- datos_8327 %>% count(parquea)
ggplot(conteo, aes(x = parquea, y = n)) +
  geom_text(aes(label = n), vjust = -0.5, size = 3) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  labs(title = "Número de viviendas segun número de parqueaderos", x = "Parqueadero", y = "Frecuencia") +
  theme_minimal()

tabla = (table(datos_8327$banios))
Frecuencia_R=prop.table(tabla)
kable(data.frame(Valor = names(tabla), 
                 Frecuencia = as.vector(tabla), 
                 Frecuencia_R = as.numeric(Frecuencia_R)),
                 caption = "**Tabla de frecuencia absoluta y relativa para la variable baños**")
Tabla de frecuencia absoluta y relativa para la variable baños
Valor Frecuencia Frecuencia_R
0 45 0.0054041
1 497 0.0596854
2 2946 0.3537889
3 1994 0.2394620
4 1460 0.1753333
5 891 0.1070013
6 315 0.0378287
7 107 0.0128498
8 48 0.0057644
9 15 0.0018014
10 9 0.0010808
datos_8327$banios <- as.factor(datos_8327$banios)
conteo <- datos_8327 %>% count(banios)
ggplot(conteo, aes(x = banios, y = n)) +
  geom_text(aes(label = n), vjust = -0.5, size = 3) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  labs(title = "Número de viviendas según número de baños", x = "Baños", y = "Frecuencia") +
  theme_minimal()

Respecto al número de parqueaderos, baños y habitaciones se encontraron resultados en los que un parqueadero, un baño o una habitación extra no implican necesariamente incrementos en el precio del metro cuadrado, al contrario, pueden implicar que los compradores buscan estos espacios en una cantidad suficiente la cual satisfaga sus necesidades, posteriormente pueden preferir dedicar espacios de su hogar para otros usos como una cocina más grande o una sala de estar más amplia.

tabla = (table(datos_8327$habitac))
Frecuencia_R=prop.table(tabla)
kable(data.frame(Valor = names(tabla), 
                 Frecuencia = as.vector(tabla), 
                 Frecuencia_R = as.numeric(Frecuencia_R)),
                 caption = "**Tabla de frecuencia absoluta y relativa para la variable habitaciones**")
Tabla de frecuencia absoluta y relativa para la variable habitaciones
Valor Frecuencia Frecuencia_R
0 66 0.0079260
1 59 0.0070854
2 927 0.1113246
3 4101 0.4924943
4 1731 0.2078780
5 680 0.0816621
6 318 0.0381890
7 173 0.0207758
8 138 0.0165726
9 83 0.0099676
10 51 0.0061247
datos_8327$habitac <- as.factor(datos_8327$habitac)
conteo <- datos_8327 %>% count(habitac)
ggplot(conteo, aes(x = habitac, y = n)) +
  geom_text(aes(label = n), vjust = -0.5, size = 3) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  labs(title = "Número de viviendas según número de habitaciones", x = "Habitaciones", y = "Frecuencia") +
  theme_minimal()

promedio_precio_parqueaderos <- tapply(datos_8327$precio_m2, datos_8327$parquea, mean)
barplot(promedio_precio_parqueaderos, 
        xlab = "Número de Parqueaderos", ylab = "Promedio Precio por Metro Cuadrado",
        col = "skyblue", main = "Promedio Precio por Metro Cuadrado por Número de Parqueaderos")

promedio_precio_banios <- tapply(datos_8327$precio_m2, datos_8327$banios, mean)
barplot(promedio_precio_banios, 
        xlab = "Número de Baños", ylab = "Promedio Precio por Metro Cuadrado",
        col = "skyblue", main = "Promedio Precio por Metro Cuadrado por Número de Baños")

promedio_precio_habitaciones <- tapply(datos_8327$precio_m2, datos_8327$habitac, mean)
barplot(promedio_precio_habitaciones, 
        xlab = "Número de Habitaciones", ylab = "Promedio Precio por Metro Cuadrado",
        col = "skyblue", main = "Promedio Precio por Metro Cuadrado por Número de Habitaciones")

Precio del metro cuadrado

Respecto al precio del metro cuadrado se puede concluir que el rango es de casi $ 10 millones, el promedio es de $2,7 millones, bastante inferior al precio máximo, la mediana es de $2,6 millones lo que indica que en términos generales el comportamiento tiende a la normalidad, pero cuenta con datos atípicos que amplían el rango. La conclusión anterior se refuerza con el grafico boxplot, en el cual rango de precio por metro cuadrado va desde $0,146 millones hasta $9,468 millones, el grueso de las viviendas muestra precios por metro cuadrado entre $1,916 millones $3,381 millones y los datos atípicos empiezan poco antes de los $6 millones.

limites <- seq(min(datos_8327$precio_m2), max(datos_8327$precio_m2), length.out = 10 + 1)
etiquetas_intervalos <- paste0(format(round(limites, 2), nsmall = 2)[-length(limites)], " - ", format(round(limites, 2), nsmall = 2)[-1])
intervalos <- cut(datos_8327$precio_m2, breaks = limites, include.lowest = TRUE, xlabels = etiquetas_intervalos)
tabla_frecuencias <- table(intervalos)
kable(tabla_frecuencias)
intervalos Freq
[0.146,1.08] 280
(1.08,2.01] 2079
(2.01,2.94] 2763
(2.94,3.87] 2031
(3.87,4.81] 852
(4.81,5.74] 222
(5.74,6.67] 83
(6.67,7.6] 11
(7.6,8.54] 5
(8.54,9.47] 1
ggplot(data.frame(Intervalo = etiquetas_intervalos, Frecuencia = as.numeric(tabla_frecuencias)), aes(x = Intervalo, y = Frecuencia)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  labs(title = "Histograma del area de las viviendas",
       x = "tamaño en metros cuadrados",
       y = "Frecuencia") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

boxplot(datos_8327$precio_m2, 
        main = "Boxplot del precio por m²",
        ylab = "Precio por m²",
        col = c("skyblue"))

5. Discusión

Para futuros análisis se podría realizar revisiones más profundas en las que se analicen correlaciones entre las variables, esto permitiría contar con un mayor nivel de confianza sobre las hipótesis planteadas respecto al mercado inmobiliario, como por ejemplo las relaciones que han sido presentadas en el informe respecto al valor del metro cuadrado y su relación con el número de parqueaderos, habitaciones y baños.

Algo que también podrá ser de utilidad para futuros análisis puede ser la obtención de una muestra más grande, esto se plantea al contemplar que la mayoría de los datos corresponden a estratos altos. Se podría analizar la posibilidad de incursionar en el nicho de los estratos más bajos de la ciudad, los cuales pueden tener características diferentes. Siendo así sería necesario contar con una muestra más amplia a la usada en el informe actual.

Adicionalmente se plantea la necesidad de usar técnicas de imputación de datos que permitan ajustar las variables de piso y parqueadero. Pese a que en el informe actual se plantearon soluciones originadas en el conocimiento sobre el sector inmobiliario, contar con estas técnicas puede servir en el caso que el conocimiento del sector no sea suficiente.

6. Conclusiones

El análisis estadístico realizado ha mostrado en primer lugar que existe una preferencia por parte de la empresa B&C por el mercado de los estratos 4 y 5, esto indica que el público objetivo son personas con un nivel adquisitivo medio-alto. Dentro de las preferencias de este nicho se encuentra una inclinación por contar con al menos 2 y hasta 3 parqueaderos, respecto al número de baños existe un rango amplio de entre 2 y 5 que representan un valor agregado muy similar, el hallazgo más sorprendente es que para el nicho tratado el mayor precio promedio se da para las viviendas con una única habitación.

El valor agregado al que se hace referencia se basa en el promedio del precio por metro cuadrado que se refleja al cruzar la variable de valor por metro cuadrado y las variables de número de parqueaderos, baños o habitaciones.

Al realizar el análisis sobre los barrios con precios de vivienda más altos y precios de metro cuadrado más altos se tiene que se podría explorar campañas de ventas y marketing dirigidas hacia los barrios Mamellan, Unicentro Cali, Calicanto viii, Normandía West Point, San Nicolas, Santa, La Portada, Tequendama, La Riverita y Unicentro Cali, esto para obtener ventas más altas con el uso minimo de personal y recursos.

7. Anexos