1.Introducción

En el emocionante mundo de los bienes raíces, es fundamental tomar decisiones informadas y estratégicas para que cualquier empresa tenga éxito. Con el fin de brindar a los directivos de B&C una visión completa y basada en datos del mercado inmobiliario en la ciudad de Cali, se ha desarrollado este informe estadístico.

Este análisis se enfoca en varios aspectos importantes, que van desde la ubicación por zona, características de las propiedades hasta las tendencias de precios y el comportamiento del mercado.

2.Objetivos

A continuación se presentan los objetivos del informe:

1.Evaluar las tendencias de precios en distintas zonas de la ciudad, identificando áreas de crecimiento potencial y fluctuaciones significativas.

2.Describir la distribución geográfica de las propiedades, destacando los tipos de viviendas más ofertadas y oportunidades de inversión.

3.Analizar las preferencias del mercado en cuanto a características específicas de las propiedades, como el número de pisos, parqueaderos y baños.

3.Metodos

Para la elaboración de este informe, se ha utilizado un enfoque estadístico riguroso, basándose en los datos recopilados por la organizacion B&C. La información se analizó mediante estadistica descriptiva, la cual incluye herramientas de análisis como: tablas frecuencia, indicadores de centro, de disperción entre otros.

4.Resultados

En esta sección del informe se pretende dar a conocer los resultados obtenidos del análisis de la información, basado en el cumplimiento de los objetivos.

4.1. Caracterizacion de precios por zonas

Es importante resaltar que los resultados obetnidos se calcularón a partir de una base de datos de 8327 observaciones, de las cuales cada observacion corresponde a un inmueble. A continuación, se clasifican los datos por cada tipo de zona.

De la anterior grafica se puede interpretar que poco más de la mitad de los registros (56.8%), corresponden a inmuebles ubicados en la zona sur. El 43.2% restante corresponde a inmuebles que se distribuyen en su mayoria en la zona norte (23.1%), seguido de la zona oeste (14.5%), zona oriente (4.2%) y por ultimo zona centro con el (1.5%) de los registros.

Despues de una clasificacion de los datos por zona, es importante caracterizar la oferta por zona y tipo de inmueble:

Como se puede observar, en las zonas sur, norte y oeste predomina la oferta de apartamentos, mientras que en la zonas oriente y centro predomina la oferta de casas.

Posterior a la caracterizacion de la demanada, se procede a análizar el comportamiento de los precios por zona:

En el diagrama de cajas, podemos observar que la zona oeste tiene un precio promedio mayor que todas las zonas, ademas cuenta con un menor nunmero de valores atipicos. Por el contrario la zona sur y norte presentan una mayor variacion en los precios (con un sesgo hacia la derecha) y un mayor numero de valores atipicos.

Tambien se puede observar que la zona centro presenta un precio promedio similar a la zona norte pero con menor numero de valores atipicos y finalmente la zona oriente con el menor precio promedio y el menor numero de valores atipicos.

Una alta presencia de valores atipicos puede representar:

1.Posible presencia de errores o problemas en la recopilacion de los datos.

2.Una alta variabilidad natural de los datos.

Para ampliar el análisis se realizan las estadisticas descriptivas sobre el precio promedio por zona y tipo de inmueble.

## # A tibble: 5 × 6
## # Groups:   zona [5]
##   zona         tipo        Precio_prom Mediana_Precio Desvest_Precio Curt_Precio
##   <chr>        <chr>             <dbl>          <dbl>          <dbl>       <dbl>
## 1 Zona Centro  Apartamento        187.           152.           90.8       -0.51
## 2 Zona Norte   Apartamento        285.           250           200.         6.82
## 3 Zona Oeste   Apartamento        669.           570           391.         0.39
## 4 Zona Oriente Apartamento        153.           115           165.        41.3 
## 5 Zona Sur     Apartamento        297.           245           192.        10.4

De la anterior tabla podemos interpretar que el precio promedio más elevado corresponde a los apartamentos de la zona Oeste. Adicionalmente, tambien presenta la desviacion más alta de todas la zonas para este tipo de inmueble y una curtosis baja lo que indica que la mayoria de datos se distribuyen con mayor frecuencia cerca al promedio. Sin embargo, pueden existir apartamentos de alto valor en menor frecuencia que aumentan la variabilidad del precio de los apartamentos para esta zona.

Por otra parte, se puede observar que los apartamentos de la zona sur son en promeido más costosos que los de la zona norte, aunque presenten una menor variabilidad, tienen una curtosis mayor lo que indica que los precios son similares entre si pero se encuentran distribuidos en mayor frecuencia alejados del promedio.

Los apartamentos de la zona norte presentan una mayor variacion en precios y algo que tienen en común con los apartamentos de la zona sur es que el promedio de los precios se encuentra por encima de la mediana, lo que indica que hay apartamentos con valores altos que sesgan el precio promedio a la alza (sesgo a la derecha).

Finalmente las zonas más economicas para el alquiler de apartamentos son la zona centro y la zona oriente siendo la ultima en promedio la más economica de todas.

A continuacion, se realiza el mismo analisis por zonas pero esta vez para las casa. Lo anterior con la finalidad de observar si algun cambio en cuanto al comportamiento de precios por inmueble y zona.

## # A tibble: 5 × 6
## # Groups:   zona [5]
##   zona         tipo  Precio_prom Mediana_Precio Desvest_Precio Curt_Precio
##   <chr>        <chr>       <dbl>          <dbl>          <dbl>       <dbl>
## 1 Zona Centro  Casa         339.            310           162.        6.15
## 2 Zona Norte   Casa         446.            390           268.        4.65
## 3 Zona Oeste   Casa         736.            680           398.        0.71
## 4 Zona Oriente Casa         245.            235           104.        2.47
## 5 Zona Sur     Casa         612.            480           378.        1.36

De la anterior tabla podemos observar que las casas de la zona oeste siguen siendo las más valorizadas de todas las zonas de Cali y sus precios presentan una alta variabilidad. Sin embargo, la curtosis es baja lo que indica que los datos estan distribuidos en mayor frecuencia cerca al promedio.

Por otra parte, podemos observar que las casas de la zona sur en promedio son mucho mas valorizadas que los apartamentos de la zona sur, casi por el doble del valor. Aunque la variabilidad de precios para estas casas es alta su curtosis es baja por lo que los precios estan cercanos al promedio en mayor frecuencia.

Respecto a las casas de la zona norte, se puede decir que estas son menos valoradas que las de la casa sur, caso contrario de lo que sucede con los apartamentos.

Finalmente, las casas de la zona centro y oriente son las más economicas de todas las zonas.

A continuacion, mediante el siguiente grafico de barras se puede observar el precio promedio por tipo de inmueble y zona, logrando ilustrar de una mejor manera lo explicado anteriomente.

De la anterior imagen podemos interpretar que las zonas mas economicas de la ciudad para cada tipo de inmueble estan ubicadas en la Zona Oriente y centro de la ciudad. Por el contrario, las zonas más costosas estan ubicadas en la zona oeste y sur.La zona norte comprende precios moderados o equilibrados y tambien se puede observar que en mayor medida las casas siempre seran más costosas que los apartamentos.

Si bien, todas la zonas tienen una variabilidad de precios, el precio promedio nos da una idea de los nichos de mercado que abarcan estas zonas, ya que el precio del alquiler de un inmueble se puede asociar con la capacidad adquisitiva del nicho de mercado.

4.2. Caracteristicas de las viviendas.

Para las caracteristicas de las viviendas se proceden a analizar 3 variables importantes las cuales son el numero de baños, habitaciones y parqueaderos.

De la anterior grafica se puede observar las caracteristicas principales de cada uno de los inmuebles ubicados en las diferentes zonas de la ciudad y se puede concluir que:

1.De acuerdo con la cantidad de habitaciones el análisis descriptivo arroja que todos los apartamentos sin importar la zona en promedio tienen 3 habiticiones.

2.En lo que respécta a las casas, aquellas que se encuentran en la zona centro y oriente poseen un mayor numero de habitaciones en promedio, alcanzando un valor de 5 y superando a la cantidad de habitaciones que tienen las casas de las zonas norte, sur y oeste.

3.Todos los apartamentos excepto los de la zona oeste en promedio tienen 2 baños, los de la zona oeste tienen 3.

4.Referente a las casas las de la zona oeste y sur en promedio cuentan con 4 baños, es decir que en promedio tienen un baño por habitación, mientras que las casas de la zona centro, norte y oriente tienen 3 baños en promedio.

5.Todos los apartamentos exceptuando a los de la zona oeste cuentan en promedio con un parqueadero, mientras que los de la zona oeste poseen de a 2 en promedio.

6.Referente a las casas, todas las que se ubican en la zona oriente y centro de la ciudad poseen 1 parqueadero en promedio, mientras que aquellas que se encuentran en la zona norte, sur y oeste cuentan con 2 parqueaderos en promedio.

5.Discución

Si bien, el analisis descriptivo obtenido a partir de los datos recolectadoss es acertado en algunos conceptos como lo es el precio de los inmuebles, se han encontrado ciertas inconsistencias en las caracteristicas de los inmuebles como por ejemplo:

1.La cantidad de habtiaciones que poseen los inmuebles, y esto se puede deber a errores en el registro de la información , un claro ejemplo de ello, es que se encuentren casas en la zona oriente con 9 habitaciones en un area construida de 72 m2, esto no tiene sentido en una vivienda de area pequeña.

2.Durante el proceso de analisis exploratorio de los datos se encontrarón 1603 datos nulos en lo que respecta a parqueaderos, una cantidad importante de informacion que puede afectar la estadistica descriptiva de esta caracteristica del bien inmueble. Para el análisis de esta variable se excluyeron estos datos.

## # A tibble: 1 × 4
## # Groups:   zona, tipo [1]
##   zona         tipo  areaconst habitac
##   <chr>        <chr>     <dbl>   <dbl>
## 1 Zona Oriente Casa         72      10

3.Se encontrarón viviendas con 0 baños o 0 habitaciones, lo cual no es acorde con la realidad si de casas y apartamentos se tratara.

4.Durante la revisión de los datos tambien se pudó observar datos mal registrados en cuanto al nombre del barrio, coordenadas que no coinciden con la ubicacion registrada (zona) y el numero de pisos en algunas ocasiones no concordaba con la realidad, razón por la cual no se utilizarón estas variables para el análisis.

Para futuras investigaciones y un detalle más especializado de los inmuebles se sugiere mejorar la calidad de la fuente de los datos, puesto que se encontrarón muchas inconsistencias como las mencionadas anteriormente, que afectan los resultados descriptivos de la información y un posterior análisis inferencial.

6.Conclusiones

De acuerdo con los análisis realizados, se recomienda a la junta directiva de B&C invertir con dos tipos de estrategias.

En primer lugar buscar los apartamentos de mayor rentabilidad como aquellos que se encuentran en la zona oeste, que si bien la oferta es menor que los de la zona sur, estos inmuebles tienen un mayor precio promedio en alquiler, se encuentran en puntos estrategicos de la ciudad para el turismo. Lo anterior, le permitiría a la empresa incursionar en el negocio de alquiler para turistas, el cual es más rentable que el alquiler tradicional y en menor tiempo.

Por orta parte, la zona sur es atractiva para residentes y estudiantes, pues la expanción territorial de la Ciudad de Cali es hacia dicha y ahi se encuentran ubicadas en gran mayoria los institutos universitarios de la ciudad. Por lo que invertir en apartamentos ubicados al sur de la ciudad puede ser una alternativa atractiva y rentable con el paso del tiempo, ya que la zona se puede valorizar con la construcción de nuevas sitios de interes como centros comerciales, restaurantes, entre otros. Adicionalmente, se puede aplicar el modelo de negocio de los apartamentos de la zona oeste.

7. Anexos

Para la limpieza de los datos incialmente se procedio a caracterizar los tipos de datos mediante el comando Str(), la cual arrojó que se tenia una base de datos de 8330 datos.Posteriormente se identificarón los faltantes los cuales se ven reflejados en el siguiente graficos:

A Continuación, se muestra el codigo utilizado:

library(paqueteMETODOS)
data(vivienda_faltantes)

str(vivienda_faltantes)

library(dplyr) # llamado a la libreria
faltantes <- colSums(is.na(vivienda_faltantes)) %>% as.data.frame() 
faltantes # muestra la variables faltantes

library(naniar)# llamado a la libreria
Grafica_faltantes<-gg_miss_var(vivienda_faltantes)

Hasta este punto Se encontrarón 3 registros totalmente nulos, los cuales fueron eliminados con el siguiente codigo:

is.na(vivienda_faltantes$id)
which(is.na(vivienda_faltantes$id))
vivienda_faltantes[-which(is.na(vivienda_faltantes$id)),]
vivienda_faltantes=vivienda_faltantes[-which(is.na(vivienda_faltantes$id)),]

La base de datos se redujó a 8327 registros. Adicionalmente, se encontrarón 2641 registros de la variable piso y 1606 registros de la variable parqueadero nulos.

Se procede a rellenar los campos de las variables nulos con el valor “No registra”.

which(is.na(vivienda_faltantes$piso))
#vivienda_faltantes$piso=ifelse(is.na(vivienda_faltantes$piso),"No registra",vivienda_faltantes$piso)
table(vivienda_faltantes$piso)
which(is.na(vivienda_faltantes$parquea))
#vivienda_faltantes$parquea=ifelse(is.na(vivienda_faltantes$parquea),"No registra",vivienda_faltantes$parquea)
table(vivienda_faltantes$parquea)

No fue posible considerar la eliminación de esta información ya que es una cantidad de datos significativos para el análisis.

Posteriormente, se estandariza la variable tipo, ya que inicialmente existian diferentes categorias por la forma en como se registró el tipo de vivienda.

#vivienda_faltantes$tipo=ifelse(vivienda_faltantes$tipo=="APARTAMENTO","Apartamento",vivienda_faltantes$tipo)
#vivienda_faltantes$tipo=ifelse(vivienda_faltantes$tipo=="apto","Apartamento",vivienda_faltantes$tipo)
#vivienda_faltantes$tipo=ifelse(vivienda_faltantes$tipo=="CASA","Casa",vivienda_faltantes$tipo)
#vivienda_faltantes$tipo=ifelse(vivienda_faltantes$tipo=="casa","Casa",vivienda_faltantes$tipo)

Luego, se agrupan las variables por zona y tipo con el fin de obtener de estadisticas descriptivas ara los baños y las habitaciones:

# estadisticas descriptivas agrupadas por zona y tipo para baños
library(dplyr)
resumen_zona_banio <- vivienda_faltantes %>%
  group_by(zona, tipo) %>%
  summarise(
    Promedio_banio = round(mean(as.numeric(banios)),0),
    Mediana_banio = round(median(as.numeric(banios)),0),
    Max_banio = round(max(as.numeric(banios)),0),
    Min_banio = round(min(as.numeric(banios)),0),
    Desviacion_Estandar_banio = round(sd(as.numeric(banios)),0),
    curtosis_ban=round(kurtosis(banios),0)
  )
# estadisticas descriptivas agrupadas por zona y tipo para habitaciones
library(dplyr)
resumen_zona_habitac <- vivienda_faltantes %>%
  group_by(zona, tipo) %>%
  summarise(
    Promedio_hab = round(mean(as.numeric(habitac)),0),
    Mediana_hab = round(median(as.numeric(habitac)),0),
    Max_hab = round(max(as.numeric(habitac)),0),
    Min_hab = round(min(as.numeric(habitac)),0),
    Desviacion_Estandar_hab = round(sd(as.numeric(habitac)),0),
    curtosis_hab=round(kurtosis(habitac),0)
  )

Aqui se indentifican datos que baños y habitaciones con valor 0 mediante la funcion table(), se procede a hacer una imputación por el valor de la mediana de los valores agrupados. Se escoge la media por ser una medida de tendencia central que no se ve afectada por valores extremos a diferencia del promedio.

#imputacion de baños 0 y habitaciones 0 por media agrupada por zona y tipo
    vivienda_faltantes <- vivienda_faltantes %>%
    group_by(zona,tipo) %>%
    mutate(banios = ifelse(banios==0, median(as.numeric(banios), na.rm = TRUE),banios)) %>% 
    mutate(habitac = ifelse(habitac==0, median(as.numeric(habitac), na.rm = TRUE),habitac))

Finalmente, se agrupan las varialbes zona y tipo para obtener estadisticas descriptivas del precio:

library(dplyr)
resumen_zona_tipo <- vivienda_faltantes %>%
  group_by(zona, tipo) %>%
  summarise(
    Frecuencia= n(tipo),
    Precio_prom = round(mean(preciom),2),
    Mediana_Precio = round(median(preciom),2),
    Max_Precio = round(max(preciom),2),
    Min_Precio = round(min(preciom),2),
    Desvest_Precio = round(sd(preciom),2),
    Curt_Precio=round(kurtosis(preciom),2)
  )

se separan las estadisticas descriptivas por tipo de inmueble:

Resumen_zona_apto_precio<-filter(resumen_zona_tipo,tipo=="Apartamento")

Resumen_zona_casa_precio<-filter(resumen_zona_tipo,tipo=="Casa")

Se hace la misma operación para los datos de la variable parqueadero:

library(dplyr)
resumen_park <- vivienda_faltantes %>%
  group_by(zona, tipo) %>%
  summarise(
    Frecuencia= n(tipo),
    Park_prom = round(mean(as.numeric(parquea)),0),
    Mediana_Park = round(median(as.numeric(parquea)),0),
    Max_Park = round(max(as.numeric(parquea)),0),
    Min_Park = round(min(as.numeric(parquea)),0),
    Desvest_Park = round(sd(as.numeric(parquea)),0),
    Curt_Park=round(kurtosis(as.numeric(parquea)),0)
  )

Nota: La variable parqueadero al tener datos tipo String se debe tratar como numerico, por defecto R no tiene en cuenta estos datos para el calculo de las estadisticas descriptivas de esta variable.

Final mente se procede a realizar los graficos observados a lo largo del informe con las librerias ggplot2 y Rbase:

grafico de circular

definicion de los %

library(dplyr)
porcentajezonas<-vivienda_faltantes %>% 
  group_by(zona) %>% 
  count() %>% 
  ungroup() %>% 
mutate(porcentaje=`n`/sum(`n`)*100)


library(ggplot2)
ggplot(data=porcentajezonas,
       aes(x=1,y=porcentaje,fill=zona))+
  geom_bar(stat="identity")+
  geom_text(aes(label=paste0(round(porcentaje,1),"%")),
            color="black",
  position=position_stack(vjust=0.5))+
  coord_polar(theta="y")+
  theme_void()+
  scale_fill_brewer(palette = "Blues")+
  labs(title = "Porcentaje de inmuebles por zona")+
theme(plot.title = element_text(hjust = 0.5))

Grafico de barras 1

library(ggplot2)
ggplot(resumen_zona_tipo,aes(x=zona,y=Frecuencia,fill=tipo))+ 
         geom_col(position="dodge")+
  geom_text(aes(label=round(Frecuencia,2)),
            size=3,
            color="black",# color de la etiqueta
            position=position_dodge(1),#posicion horizontal de la etiqueta 
            vjust=-0.5)+# posicion vertical de la etiqueta
              labs(title = "Frecuencia de los tipos de inmueble",
                   x = "Tipo de inmueble",
                   y = "Frecuencia")+
           theme(plot.title = element_text(hjust = 0.5))

Boxplot

boxplot(vivienda_faltantes$preciom~vivienda_faltantes$zona,
        main="Diagrama de cajas zona vs precio",
        ylab= "Precio (en miles)",
        xlab= "Zonas")

Grafico de barras 2

library(ggplot2)
ggplot(resumen_zona_tipo,aes(x=zona,y=Precio_prom,fill=tipo))+
         geom_col(position="dodge")+
  geom_text(aes(label=round(Precio_prom,2)),
            size=3,
            color="white",
            position=position_dodge(1),
            vjust=3.5)+# posicion vertical de la etiqueta
              labs(title = "Precio promedio por zona y tipo de inmueble",
                   x = "zona",
                   y = "Precio Promedio (en miles)")+
           theme(plot.title = element_text(hjust = 0.5))

Grafico de barras unificado

library(ggplot2)
plot1<-ggplot(resumen_park,aes(x=zona,y=Park_prom,fill=tipo))+
         geom_col(position="dodge")+
  geom_text(aes(label=round(Park_prom,0)),
            size=3,
            color="white",
            position=position_dodge(1), 
            vjust=3.5)+
              labs(title = "Parqueaderos promedio por tipo y zona",
                   x = "zona",
                   y = "Parqueaderos promedio")+
           theme(plot.title = element_text(hjust = 0.5))


plot2<-ggplot(resumen_zona_banio,aes(x=zona,y=Mediana_banio,fill=tipo))+
         geom_col(position="dodge")+
  geom_text(aes(label=round(Mediana_banio,0)),
            size=3,
            color="white",
            position=position_dodge(1),
            vjust=3.5)+
              labs(title = "Banios promedio por tipo y zona",
                   x = "zona",
                   y = "Banios promedio")+
           theme(plot.title = element_text(hjust = 0.5))


plot3<-ggplot(resumen_zona_habitac,aes(x=zona,y=Mediana_hab,fill=tipo))+
         geom_col(position="dodge")+
  geom_text(aes(label=round(Mediana_hab,0)),
            size=3,
            color="white",
            position=position_dodge(1),
            vjust=3.5)+
              labs(title = "Habitaciones promedio por tipo y zona",
                   x = "zona",
                   y = "Habitaciones promedio")+
           theme(plot.title = element_text(hjust = 0.5))


require(gridExtra)
unificado<-grid.arrange(plot3,plot2,plot1,nrow=3).