Introducción

Este informe presenta un análisis exploratorio de datos dirigido a la empresa B&C, una agencia de bienes raíces establecida en Cali, Colombia. La base de datos proporcionada contiene 8,330 observaciones y 13 variables que incluyen información detallada sobre las viviendas en Cali, como el precio, la ubicación, el estrato, el área construida y las características específicas de cada propiedad. Con el objetivo de proporcionar una visión detallada del mercado inmobiliario local, este informe se centra en tres objetivos principales: analizar la distribución de precios en diferentes zonas de Cali, determinar los tipos de viviendas más ofertadas y evaluar las características más relevantes de la oferta de vivienda en la ciudad. Estos análisis tienen como objetivo brindar a los directivos de B&C información clave para la definición de su nicho de mercado, el desarrollo de estrategias de marketing efectivas y la optimización de la satisfacción del cliente. Con un enfoque en la utilidad práctica de los resultados obtenidos, este informe pretende ser una herramienta valiosa para la toma de decisiones informadas y el éxito continuo de B&C en un mercado inmobiliario en constante evolución.

Objetivos

1. Precio de las viviendas en diferentes zonas de Cali:

2. Tipo de viviendas más ofertadas en Cali:

3. Características más relevantes de la oferta de vivienda en Cali:

Métodos

1. Recopilación de datos

Se obtuvo una base de datos de la empresa B&C, la cual contiene información detallada sobre 8,330 viviendas ubicadas en Cali, Colombia. Los datos incluyen variables como el precio de venta, la ubicación geográfica, el estrato socioeconómico, el número de habitaciones, baños, parqueaderos, entre otros.

2. Exploración inicial de los datos

Se realizó una exploración preliminar de los datos para identificar posibles inconsistencias, valores atípicos o datos faltantes. Esta etapa incluyó la revisión de estadísticas descriptivas y la visualización gráfica de las variables clave.

3. Análisis descriptivo

Se llevaron a cabo análisis descriptivos detallados para abordar los objetivos establecidos en el informe. Esto incluyó el cálculo de medidas de tendencia central, dispersión y distribución para variables como el precio de las viviendas, así como la realización de tablas de frecuencia y gráficos para examinar la distribución de otras variables como el tipo de vivienda, el estrato y las características específicas de las propiedades.

4. Análisis comparativo

Se realizaron comparaciones entre diferentes subconjuntos de datos, como las viviendas ubicadas en diferentes zonas de la ciudad, los distintos tipos de viviendas (apartamentos vs. casas), y los diferentes estratos socioeconómicos. Esto permitió identificar patrones y tendencias significativas en el mercado inmobiliario de Cali.

5. Validación de resultados

Se validaron los resultados obtenidos mediante análisis adicionales y la revisión exhaustiva de los hallazgos por parte del equipo de investigación. Además, se tomaron medidas para garantizar la precisión y la fiabilidad de los resultados presentados en el informe final.

Resultados

Evaluación de la Validez Interna y Externa de los Datos Recopilados

Es crucial reconocer ciertas consideraciones al evaluar la validez interna y externa de los datos recopilados. En términos de validez interna, se parte del supuesto de que los instrumentos de medición utilizados para recopilar la información fueron seleccionados siguiendo criterios adecuados. Sin embargo, la certeza absoluta sobre la idoneidad de estos instrumentos no está garantizada, lo que plantea la posibilidad de que algunas mediciones no reflejen con precisión las características reales de las viviendas estudiadas.

En cuanto a la validez externa, se ha analizado un total de 8,330 viviendas en la ciudad de Cali. No obstante, es esencial tener en cuenta que esta muestra no abarca la totalidad del universo de viviendas en Cali, lo que podría limitar la generalización de los resultados obtenidos a toda la población de viviendas en la ciudad.

A pesar de estas posibles limitaciones, los datos recopilados ofrecen una perspectiva significativa del mercado inmobiliario local. Esto permite realizar análisis relevantes para la toma de decisiones en el contexto de la agencia de bienes raíces, aunque se recomienda considerar estas limitaciones al interpretar los resultados obtenidos.

Importación de librerías y datos

Para iniciar la exploración de datos, se procede a importar las librerías que serán utilizadas en el análisis.

library(paqueteMETODOS)
library(dplyr)
library(ggplot2)
library(mice)
library(tidyverse)
library(ggmice)
library(plotly)
library(scales)
library(DescTools)
library(openxlsx)
library(stringi)

Ahora se procede a importar los datos para su análisis.

data(vivienda_faltantes)

#Limpieza de datos

La limpieza de datos es esencial para asegurar resultados coherentes y precisos. Para comenzar, se analizará la cantidad de observaciones y variables en la base de datos actual.

dim(vivienda_faltantes)
## [1] 8330   13

La base de datos inicial consta de 8330 observaciones y 13 variables. A continuación, se presenta un resumen descriptivo de estas variables.

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

El resumen descriptivo ofrece estadísticas clave como mínimo, máximo, primer y tercer cuartil, mediana y promedio para cada variable. Se observan valores nulos en varias variables, lo que afecta la calidad de la base de datos. Por lo tanto, se realizará una limpieza eliminando estas observaciones.

Datos Nulos

Para llevar a cabo un análisis detallado de los datos nulos o faltantes, se emplea la librería ggmice. Se utiliza el comando plot_pattern para visualizar de manera gráfica la distribución de los datos faltantes en la base de datos.

plot_pattern(vivienda_faltantes, rotate = TRUE)

Se identificó que existen 2 registros o viviendas con información completamente vacía, así como 1 registro con solo la variable “preciom”. Para mejorar la calidad de la base de datos, se procede a eliminar estos 3 registros.

En primer lugar, se removerán las dos filas que no contienen ninguna información, es decir, están completamente vacías.

vivienda_faltantes <- vivienda_faltantes[rowSums(is.na(vivienda_faltantes)) != ncol(vivienda_faltantes),]

Posteriormente, se procede a eliminar la tercera fila que contiene únicamente la variable “preciom”.

vivienda_faltantes <- vivienda_faltantes[complete.cases(vivienda_faltantes$id),]

Después de eliminar los registros con información faltante, se procede a realizar un nuevo análisis de la matriz de valores nulos para asegurar que no queden registros con datos incompletos:

plot_pattern(vivienda_faltantes, rotate = TRUE)

Tras la eliminación de los registros con datos vacíos, se observa una mejora significativa en la calidad de la base de datos. Sin embargo, aún persisten valores nulos en las variables “parqueadero” y “piso”. Estas dos columnas conservan un número considerable de casos vacíos, con 1603 y 2638 registros vacíos respectivamente. Aunque se ha reducido el ruido en la base de datos, es importante tener en cuenta estos valores nulos al realizar análisis posteriores.

Presencia de duplicados

Se identificó la presencia de 8 registros duplicados en la base de datos. Por lo tanto, se llevará a cabo la eliminación de estos duplicados para conservar únicamente valores únicos y garantizar la integridad de los datos.

duplicados <- duplicated(vivienda_faltantes)
sum(duplicados)
## [1] 8
filter(vivienda_faltantes, duplicados)
## # A tibble: 8 × 13
##      id zona        piso estrato preciom areaconst parquea banios habitac tipo  
##   <dbl> <chr>      <dbl>   <dbl>   <dbl>     <dbl>   <dbl>  <dbl>   <dbl> <chr> 
## 1  8309 Zona Oeste     5       4     150        56      NA      1       2 Apart…
## 2  8310 Zona Oeste     1       6    1600       463       4      6       3 Apart…
## 3  8313 Zona Oeste     7       6     525       137       2      3       3 Apart…
## 4  8314 Zona Oeste     7       6    1400       210       3      4       3 Apart…
## 5  8315 Zona Oeste    NA       6     620       167       2      4       4 Apart…
## 6  8316 Zona Norte     7       5     400       220       1      4       4 Apart…
## 7  8317 Zona Oeste    NA       6    1100       290       4      4       3 Apart…
## 8  8318 Zona Norte    NA       4     580       295       2      5       5 Casa  
## # ℹ 3 more variables: barrio <chr>, longitud <dbl>, latitud <dbl>

Para eliminar los duplicados se procede de la siguiente manera.

vivienda_faltantes <- distinct(vivienda_faltantes)
duplicados <- duplicated(vivienda_faltantes)
sum(duplicados)
## [1] 0

Se observa que ahora ya no hay presencia de duplicados en la base de adtos.

#Reemplazo de valores inconsistentes

Identificamos datos mal tabulados que generan múltiples registros incorrectos. Corregirlos asegura la precisión de nuestra base de datos.

unique(vivienda_faltantes$zona)
## [1] "Zona Oeste"   "Zona Sur"     "Zona Norte"   "Zona Oriente" "Zona Centro"
unique(vivienda_faltantes$tipo)
## [1] "Apartamento" "Casa"        "APARTAMENTO" "casa"        "CASA"       
## [6] "apto"

Unificaremos las palabras ‘APARTAMENTO’ y ‘apto’ en un único dato ‘Apartamento’, así como las palabras ‘casa’ y ‘CASA’ en ‘Casa’, para homogeneizar la categorización de propiedades en nuestra base de datos.

vivienda_faltantes$tipo <- str_replace_all(vivienda_faltantes$tipo, pattern = "APARTAMENTO|apto", replacement= "Apartamento")
vivienda_faltantes$tipo <- str_replace_all(vivienda_faltantes$tipo, pattern = "CASA|casa", replacement= "Casa")

Ahora verificaremos que no haya inconsistencias en el tipo de vivienda.

unique(vivienda_faltantes$tipo)
## [1] "Apartamento" "Casa"

Revisión final de valores nulos o vacíos

Ahora revisaremos la base de datos para determinar la cantidad de datos vacíos por variable después de realizar los cambios aplicados en los pasos anteriores.

colSums(is.na(vivienda_faltantes)) %>%
                 as.data.frame() 
##              .
## id           0
## zona         0
## piso      2635
## estrato      0
## preciom      0
## areaconst    0
## parquea   1602
## banios       0
## habitac      0
## tipo         0
## barrio       0
## longitud     0
## latitud      0

Tras la limpieza de datos, se observa que las variables ‘piso’ y ‘parqueadero’ contienen 2635 y 1602 registros nulos, respectivamente.

Imputación de datos

Tras analizar nuestro conjunto de datos, hemos identificado que las variables ‘piso’ y ‘parqueadero’ son las únicas afectadas por valores nulos. Para abordar esta situación y garantizar la integridad de nuestros análisis, proponemos considerar las siguientes alternativas para la imputación de estos datos faltantes:

Antes de optar por alguna de estas opciones, es necesario comprender el contexto y plantearnos por qué estos datos podrían estar vacíos. ¿Cuál podría haber sido la razón?

Algunas posibles razones podrían incluir:

La presencia de datos nulos en la base sugiere que la información sobre piso o parqueadero puede no ser relevante para ciertas viviendas. Es probable que algunas casas no tengan parqueadero, y en el caso de apartamentos, pueden no haber asignaciones previas de parqueadero. Por lo tanto, hemos optado por imputar todos los valores nulos con 0.

Para el proceso de reemplazo de los valores nulos por 0 en la variable parqueadero se realiza de la siguiente manera.

vivienda_faltantes$parquea[is.na(vivienda_faltantes$parquea)] <- 0

Para la variable “piso”, dado que no puede tener un valor de 0 y es una variable cualitativa ordinal, se opta por reemplazar los datos faltantes por la moda. En este caso, la moda sería el piso 2, ya que es el que tiene la mayor frecuencia.

moda_piso <- Mode(vivienda_faltantes$piso, na.rm = TRUE)
vivienda_faltantes$piso[is.na(vivienda_faltantes$piso)] <- moda_piso

Ahora si finalmente observamos la base de datos:

colSums(is.na(vivienda_faltantes)) %>%
                 as.data.frame() 
##           .
## id        0
## zona      0
## piso      0
## estrato   0
## preciom   0
## areaconst 0
## parquea   0
## banios    0
## habitac   0
## tipo      0
## barrio    0
## longitud  0
## latitud   0

Se puede observar que ya no existen datos nulos o vacíos en la base de datos.

Por último, se intentará homogeneizar la variable “barrio”. Dado que hay una gran cantidad de barrios diferentes y puede ser difícil encontrar palabras mal tabuladas, se opta por estandarizar el texto para mejorar la calidad de los datos mediante la colocación de minúsculas a todas las palabras y quitar tildes o acentos en las palabras.

vivienda_faltantes$barrio <- tolower(vivienda_faltantes$barrio)
vivienda_faltantes$barrio <- stri_trans_general(vivienda_faltantes$barrio, "Latin-ASCII")

Precios de las viviendas en diferentes zonas de Cali

Se analizará la distribución de precios en las diferentes zonas de Cali mediante el uso de estadisticas descriptivas mediante indicadores de tendencia central, de dispersión y de centro.

De igual forma se plantea analizar si existe alguna relación entre el estrato y el precio de las viviendas en cada zona.

summarytools::descr(vivienda_faltantes$preciom)
## Descriptive Statistics  
## vivienda_faltantes$preciom  
## N: 8319  
## 
##                     preciom
## ----------------- ---------
##              Mean    433.90
##           Std.Dev    328.67
##               Min     58.00
##                Q1    220.00
##            Median    330.00
##                Q3    540.00
##               Max   1999.00
##               MAD    207.56
##               IQR    320.00
##                CV      0.76
##          Skewness      1.85
##       SE.Skewness      0.03
##          Kurtosis      3.67
##           N.Valid   8319.00
##         Pct.Valid    100.00

Este análisis indica que :

Media (Mean): El precio medio de la variable es de $433.90.

Desviación estándar (Std.Dev): La dispersión de los precios alrededor de la media es bastante alta, con una desviación estándar de $328.67.

Valores Mínimo y Máximo (Min, Max): El precio mínimo es de $58.00, mientras que el precio máximo es de $1999.00.

Cuartiles (Q1, Q3) y Mediana (Median): El primer cuartil (Q1) es de $220.00, el tercer cuartil (Q3) es de $540.00 y la mediana es de $330.00. Esto indica que la mitad de los precios están entre $220.00 y $540.00.

Rango Intercuartílico (IQR): El rango intercuartílico es de $320.00, lo que sugiere que la mitad central de los datos está relativamente concentrada.

Coeficiente de Variación (CV): El coeficiente de variación es del 0.76, lo que indica que la variabilidad relativa de los precios es moderada.

Asimetría (Skewness) y Kurtosis: La asimetría es positiva (1.85), lo que sugiere que la distribución de precios está sesgada hacia la derecha. La kurtosis (3.67) indica que la distribución tiene una mayor concentración de datos en la cola en comparación con una distribución normal.

N.Valid y Pct.Valid: Todos los 8319 datos son válidos (100% de los datos válidos), lo que significa que no hay valores faltantes en esta variable.

En resumen, los precios de esta variable tienen una amplia variabilidad y una distribución sesgada hacia la derecha. La mayoría de los precios se encuentran en el rango entre $220.00 y $540.00, con algunos valores extremadamente altos llegando hasta $1999.00.

Ahora al hacer una representación gráfica:

ggplotly(ggplot(vivienda_faltantes, mapping = aes(x = "", y = preciom))+
  geom_boxplot()+
  coord_flip()+
  labs(title = "Distribucion de precio en millones",
       x = "Preciom",
       y = "Precio en millones")+
  theme_minimal())

Complementando la información escrita anteriormente, se observa que el primer cuartil (Q1) o el 25% de los precios de las viviendas es de 220 millones, la mediana (Q2) o el 50% de los precios es de 330 millones, y el tercer cuartil (Q3) o el 75% de los precios es de 540 millones. El precio mínimo registrado es de 58 millones, mientras que el máximo es de 1999 millones. Es importante destacar que esto indica que el 50% de las viviendas tienen un precio igual o inferior a 330 millones. También observamos que los datos no siguen una distribución completamente simétrica, ya que la diferencia entre Q1 y Q2 es diferente a la diferencia entre Q2 y Q3. Asimismo, se aprecian valores atípicos que se desvían del patrón normal de los datos.

Ahora al analizar el comportamiento de los precios en distintas zonas de la ciudad de Cali:

vivienda_faltantes %>% 
group_by(zona) %>% 
summarytools::descr(vivienda_faltantes$preciom)
## Descriptive Statistics  
## preciom by zona  
## Data Frame: vivienda_faltantes  
## N: 124  
## 
##                     Zona Centro   Zona Norte   Zona Oeste   Zona Oriente   Zona Sur
## ----------------- ------------- ------------ ------------ -------------- ----------
##              Mean        309.69       345.61       677.58         228.53     426.52
##           Std.Dev        162.15       240.87       391.58         122.06     322.72
##               Min        100.00        65.00        85.00          58.00      75.00
##                Q1        187.50       160.00       393.00         145.00     222.00
##            Median        297.00       300.00       580.00         210.00     320.00
##                Q3        362.50       430.00       900.00         290.00     520.00
##               Max       1100.00      1940.00      1999.00        1350.00    1900.00
##               MAD        126.02       200.15       326.17         103.78     192.74
##               IQR        172.50       270.00       506.50         145.00     298.00
##                CV          0.52         0.70         0.58           0.53       0.76
##          Skewness          1.94         1.97         0.99           2.87       2.00
##       SE.Skewness          0.22         0.06         0.07           0.13       0.04
##          Kurtosis          5.92         5.75         0.47          20.21       4.29
##           N.Valid        124.00      1920.00      1198.00         351.00    4726.00
##         Pct.Valid        100.00       100.00       100.00         100.00     100.00

Por lo tanto, se observa que:

Promedio (Mean): El precio promedio más alto se encuentra en la Zona Oeste ($677.58), seguido por la Zona Sur ($426.52), la Zona Norte ($345.61), la Zona Centro ($309.69) y la Zona Oriente ($228.53).

Desviación Estándar (Std.Dev): La mayor variabilidad en los precios se observa en la Zona Oeste ($391.58), seguida por la Zona Sur ($322.72), la Zona Norte ($240.87), la Zona Centro ($162.15) y la Zona Oriente ($122.06).

Valores Mínimo y Máximo (Min, Max): Los precios más bajos se encuentran en la Zona Oriente, mientras que los precios más altos se encuentran en la Zona Oeste y la Zona Sur.

Cuartiles (Q1, Q3) y Mediana (Median): Las medianas de los precios están en el siguiente orden: Zona Oeste, Zona Sur, Zona Norte, Zona Centro y Zona Oriente. Esto sugiere que la mediana de los precios es más alta en las zonas occidentales y meridionales.

Rango Intercuartílico (IQR): La mayor variabilidad intercuartílica se observa en la Zona Oeste y la Zona Sur.

Coeficiente de Variación (CV): La mayor variabilidad relativa de los precios se encuentra en la Zona Sur.

Asimetría (Skewness) y Kurtosis: Las distribuciones de precios para todas las zonas son sesgadas hacia la derecha (asimetría positiva), pero la Zona Oriente muestra la mayor asimetría y kurtosis.

Cantidad de Datos Válidos (N.Valid) y Porcentaje de Datos Válidos (Pct.Valid): Todas las zonas tienen diferentes cantidades de datos válidos, pero el porcentaje de datos válidos es del 100% para todas las zonas.

En resumen, los precios varían significativamente entre las diferentes zonas, con la Zona Oeste y la Zona Sur generalmente teniendo precios más altos y mayor variabilidad. La distribución de precios tiende a ser sesgada hacia la derecha en todas las zonas, pero la Zona Oriente muestra la mayor asimetría y kurtosis.

Ahora al hacer una representación gráfica:

ggplotly(ggplot(vivienda_faltantes, mapping = aes(x = zona, y = preciom)) +
  geom_boxplot() +
  labs(title = "Distribucion de precio en millones por zona",
       x = "Preciom",
       y = "Precio en millones") +
  theme_minimal())

Se puede observar los valores de Q1, Q2 o mediana y Q3, así mismo los valores minimos y maximos y los datos atipicos, también por la posición de la caja y el tamaño de la misma se aprecia la variabilidad.

Al realizar un análisis por zona, basado en la gráfica de cajas y bigotes y en la tabla de estadísticas descriptivas se observa que:

Zona Centro: se observa un precio promedio de $309.69 con una desviación estándar de $162.15, indicando una variabilidad considerable en los precios de las propiedades. Los precios oscilan entre $100.00 y $1100.00, con una mediana de $297.00, sugiriendo una distribución sesgada hacia la derecha y colas pesadas. El coeficiente de variación de 0.52 muestra una moderada variabilidad relativa, mientras que se dispone de un total de 124 observaciones válidas para esta zona. Zona Norte: se observa un precio promedio más alto de $345.61 con una desviación estándar de $240.87, lo que indica una mayor variabilidad en los precios de las propiedades en comparación con la Zona Centro. Los precios varían desde $65.00 hasta $1940.00, con una mediana de $300.00, sugiriendo una distribución sesgada hacia la derecha y colas pesadas. El coeficiente de variación de 0.70 refleja una variabilidad relativa moderada, mientras que se dispone de un total de 1920 observaciones válidas para esta zona, lo que indica una muestra más amplia en comparación con la Zona Centro. Zona Oeste: se destaca un precio promedio significativamente más alto de $677.58, con una desviación estándar de $391.58, lo que sugiere una mayor variabilidad en los precios de las propiedades en comparación con la Zona Centro y la Zona Norte. Los precios oscilan desde $85.00 hasta $1999.00, con una mediana de $580.00, indicando una distribución sesgada hacia la derecha y colas pesadas. El coeficiente de variación de 0.58 refleja una variabilidad relativa moderada, y se dispone de un total de 1198 observaciones válidas para esta zona. Esto sugiere una muestra considerablemente grande, lo que proporciona una base sólida para el análisis de precios en esta área. Zona Oriente: se observa un precio promedio de $228.53, con una desviación estándar de $122.06, indicando una menor variabilidad en los precios en comparación con otras zonas. Los precios varían desde $58.00 hasta $1350.00, con una mediana de $210.00, sugiriendo una distribución sesgada hacia la derecha y colas muy pesadas, como indican la asimetría (Skewness) de 2.87 y la kurtosis de 20.21. El coeficiente de variación de 0.53 refleja una variabilidad relativa moderada, y se dispone de un total de 351 observaciones válidas para esta zona, lo que sugiere una muestra más pequeña en comparación con otras zonas, pero aún así suficiente para realizar análisis significativos. Zona Sur: se observa un precio promedio de $426.52, con una desviación estándar de $322.72, indicando una variabilidad considerable en los precios de las propiedades. Los precios varían desde $75.00 hasta $1900.00, con una mediana de $320.00, sugiriendo una distribución sesgada hacia la derecha y colas pesadas, como se refleja en la asimetría (Skewness) de 2.00 y la kurtosis de 4.29. El coeficiente de variación de 0.76 indica una variabilidad relativa moderada, y se dispone de un total de 4726 observaciones válidas para esta zona, lo que sugiere una muestra grande y representativa para el análisis de precios en esta área.

Relación entre el estrato y el tipo de vivienda en el precio de las viviendas en cada zona

ggplotly(ggplot(vivienda_faltantes, mapping = aes(x = zona, y = preciom)) +
  geom_boxplot() +
  facet_grid(~estrato)+
  coord_flip()+
  labs(title = "Distribucion de precio en millones por estrato, tipo de vivienda y zona",
       x = "Zona",
       y = "Precio en millones") +
  theme_minimal())

Se observa que, a medida que aumenta el estrato, también lo hace el precio de las viviendas, lo cual era de esperarse. Cabe resaltar la presencia de valores atípicos, por ejemplo, en el estrato 3 con precios de vivienda de 1600 millones en la Zona Oeste, 1100 millones en la Zona Norte y 1350 millones en la Zona Sur, así como en los demás estratos. Sin embargo, el tamaño de las cajas permite observar la concentración del 50% de los datos, lo cual muestra que en el estrato 6 las cajas son más grandes.

Tipos de viviendas más ofertadas en Cali

Se busca determinar la proporción de apartamentos y casas en el mercado inmobiliario de Cali, así como comparar la distribución de precios entre apartamentos y casas, y analizar la demanda de cada tipo de vivienda en diferentes estratos socioeconómicos de la ciudad.

Proporción de apartamentos y casas

Se presenta una gráfica de torta que permite observar la relación entre apartamentos y casas en Cali:

vivienda_faltantes %>% 
  group_by(tipo) %>% 
  summarise(count = n()) %>% 
  plot_ly(type = 'pie', labels = ~tipo, values = ~count) %>% 
  layout(title = "Numero de viviendas por tipo de vivienda")

Se observa que el 61.3% de las viviendas en Cali son apartamentos, mientras que el 38.7% restante corresponde a casas.

Comparación de precios entre apartamentos y casas

Primero realizaremos las estadisticas descriptivas para hacer la comparación de precios entre apartamentos y casas.

vivienda_faltantes %>% 
group_by(tipo) %>% 
summarytools::descr(vivienda_faltantes$preciom)
## Descriptive Statistics  
## preciom by tipo  
## Data Frame: vivienda_faltantes  
## N: 5099  
## 
##                     Apartamento      Casa
## ----------------- ------------- ---------
##              Mean        366.99    539.86
##           Std.Dev        289.23    358.22
##               Min         58.00     77.00
##                Q1        175.00    300.00
##            Median        279.00    430.00
##                Q3        430.00    670.00
##               Max       1950.00   1999.00
##               MAD        176.43    237.22
##               IQR        255.00    370.00
##                CV          0.79      0.66
##          Skewness          2.16      1.57
##       SE.Skewness          0.03      0.04
##          Kurtosis          5.43      2.28
##           N.Valid       5099.00   3220.00
##         Pct.Valid        100.00    100.00

Ahora al realizar un diagrama de cajas y bigotes.

ggplotly(ggplot(vivienda_faltantes, mapping = aes(x = tipo, y = preciom)) +
  geom_boxplot() +
  labs(title = "Distribucion de precio en millones por tipo de vivienda",
       x = "Tipo de vivienda",
       y = "Precio en millones") +
  theme_minimal())

Al observar la tabla de estadísticas descriptivas y el diagrama de cajas y bigotes se analiza que:

En resumen, los datos sugieren que, aunque los apartamentos tienen un precio promedio más bajo, su variabilidad de precios es mayor en comparación con las casas. Las casas tienden a tener precios más altos en general, con una distribución de precios más concentrada alrededor de la mediana.

Demanda de los diferentes tipos de vivienda en los diferentes estratos socioeconómicos de la ciudad

  ggplotly(vivienda_faltantes %>% 
  group_by(estrato, tipo) %>% 
  summarise(count= n()) %>% 
  mutate(pct = count/sum(count)) %>% 
  ggplot(aes(x= estrato, y = count , fill = tipo)) +
  geom_bar(stat = "identity")+
   geom_text(aes(label = number(count)),
            position = position_stack(vjust = 0.5))+
    labs(title = "Numero de viviendas por estrato y tipo",
         x = "Estrato", y = "No de viviendas")+
    coord_flip())
## `summarise()` has grouped output by 'estrato'. You can override using the
## `.groups` argument.

Se observa que la mayoría de las viviendas se encuentran en el estrato 5 y son apartamentos, seguidas de viviendas en el estrato 4, donde también predominan los apartamentos. Posteriormente, en el estrato 6, predominan de igual forma los apartamentos, mientras que en el estrato 3 predominan las casas.

Características mas relevantes de la oferta de vivienda en Cali

Ahora se determinarán las caracteristicas mas comunes de las viviendas en Cali.

Habitaciones

 ggplotly(ggplot(data = vivienda_faltantes, aes(x= habitac)) +
  geom_histogram(binwidth = 0.5, fill = "lightblue", color = "black", alpha = 0.7) + 
  scale_x_continuous(breaks = seq(0, 20, 1))+
  labs(title = "Numero de viviendas por numero de habitaciones", x = "No de habitaciones", y = "No de viviendas")
  ) 

Se observa que la mayoría de viviendas son de 3 habitaciones.

Baños

ggplotly(ggplot(data = vivienda_faltantes, aes(x= banios)) +
  geom_histogram(binwidth = 0.5, fill = "lightblue", color = "black", alpha = 0.7) + 
  scale_x_continuous(breaks = seq(0, 20, 1))+
  labs(title = "Numero de viviendas por numero de banos", x = "No de banos", y = "No de viviendas")
  ) 

Se observa que la mayoría de viviendas cuentan con 2 baños.

Área construida

ggplotly(ggplot(data = vivienda_faltantes, aes(x= areaconst)) +
  geom_histogram(binwidth = 10, fill = "lightblue", color = "black", alpha = 0.7) +
  labs(title = "Numero de viviendas por area construida", x = "Area construida", y = "No de viviendas")
  ) 

Se observa que la mayoría de las viviendas tienen un área construida entre 30 y 200 metros, ya que a partir de este punto la tendencia en la gráfica comienza a disminuir.

#Número de parqueaderos

ggplotly(ggplot(data = vivienda_faltantes, aes(x= parquea)) +
  geom_histogram(binwidth = 0.5, fill = "lightblue", color = "black", alpha = 0.7) +
  scale_x_continuous(breaks = seq(0, 20, 1))+
  labs(title = "Numero de viviendas por cantidad de parqueaderos", x = "No de parqueaderos", y = "No de viviendas")
  ) 

Se observa que la mayoría de viviendas cuentan con un solo parqueadero, seguidas por viviendas con dos parqueaderos, y luego viviendas que no cuentan con parqueadero.

Conclusiones

Gracias a este estudio, se pudo analizar los diferentes comportamientos de las variables involucradas con el fin de definir nichos de mercado, desarrollar estrategias de marketing, establecer precios de venta y ofrecer servicios personalizados a los clientes.

Análisis Detallado de Precios: El análisis detallado de los precios revela una amplia variabilidad en el mercado inmobiliario de Cali, con precios que oscilan desde montos relativamente bajos hasta cifras considerablemente altas. Esta diversidad de precios refleja la heterogeneidad del mercado y ofrece oportunidades para adaptar estrategias de precios a diferentes segmentos de clientes. Segmentación de Mercado por Zona: La diferenciación de precios por zona geográfica resalta la importancia de considerar las ubicaciones específicas al establecer precios. Las áreas de alta demanda, como la Zona Oeste y la Zona Sur, tienden a tener precios más elevados, mientras que las áreas menos demandadas, como la Zona Oriente, exhiben precios más bajos. Esta segmentación permite una estrategia de precios más precisa y ajustada a las condiciones locales. Análisis del Mercado Local: Se realizó un análisis exhaustivo del mercado inmobiliario en Cali, revelando patrones significativos sobre la distribución de precios, los tipos de viviendas más solicitadas y las características predominantes de las propiedades en la región. Esta información es invaluable para comprender el panorama actual del mercado y planificar estrategias efectivas. Definición de Nicho de Mercado: Los hallazgos indican una alta demanda de apartamentos, especialmente en los estratos medios y altos. Esto proporciona una guía clara para enfocar los esfuerzos en promocionar apartamentos en áreas urbanizadas, al mismo tiempo que explorar oportunidades para atender la demanda de casas en estratos más bajos. Estrategias de Marketing: Con una comprensión más profunda de la distribución de precios por zona y tipo de vivienda, se pueden desarrollar estrategias de marketing más efectivas. Por ejemplo, resaltar la accesibilidad de los apartamentos en áreas específicas o destacar las características únicas de las casas en estratos más altos para atraer a los compradores adecuados.