Introducción.

En el competitivo mundo de la industria inmobiliaria en Cali, donde la dinámica del mercado fluctúa constantemente, la capacidad de tomar decisiones estratégicas basadas en datos sólidos se convierte en un factor determinante para el éxito empresarial. En 2023, este sector representó una impresionante cifra de $6100 mil millones, reflejando su importancia económica y su papel crucial en el desarrollo de la región. Se espera que esta tendencia continúe en los próximos años, lo que no solo promoverá un crecimiento sostenido en la industria inmobiliaria, sino que también impulsará un desarrollo dinámico en la economía regional en su conjunto. El presente informe se centra en la utilización de la estadística como una herramienta fundamental para impulsar el crecimiento y la rentabilidad de B&C (Bines y Casas) inmobiliaria. A través de la aplicación de análisis estadístico, este informe tiene como finalidad definir el nicho de mercado específico al que la empresa debe dirigirse, identificar oportunidades y desafíos, con el propósito de desarrollar estrategias de marketing efectivas para llegar a su público objetivo. Asimismo, se explorará la importancia de establecer precios de venta competitivos, basados en la relación precio - ubicación, así como la necesidad de ofrecer servicios personalizados que satisfagan las necesidades individuales de los clientes.

Objetivos.

  1. Analizar y comparar el precio de las viviendas en diversas zonas de Cali, identificando las fluctuaciones y tendencias de mercado en cada área geográfica.

  2. Determinar los tipos de viviendas más ofertadas en el mercado inmobiliario de Cali, examinando factores como tamaño, diseño, y comodidades ofrecidas para comprender las preferencias del público.

  3. Identificar y destacar las características más relevantes de la oferta de vivienda en Cali, incluyendo aspectos como la ubicación, nivel socio económico y características arquitectónicas, con el fin de proporcionar una visión integral del panorama inmobiliario en la ciudad.

Metodos.

Para el análisis estadístico de los datos suministrados por la inmobiliaria, se llevó a cabo un análisis exploratorio que incluyó varias etapas de procesamiento de datos. Inicialmente, se identificaron valores nulos en variables importantes como el piso de la vivienda y el número de parqueaderos.a los cuales se les modifico el valor a cero; Dado que si se omitiian estos registros resultaría en la pérdida de aproximadamente el 45% de la información suministrada. Además, se realizaron acciones para mejorar la calidad de los datos, como la eliminación de duplicados para garantizar la precisión de la información. También se creó una nueva variable denominada “precio por área” para llevar a cabo un análisis más detallado y preciso de las relaciones entre el precio de la vivienda y su superficie. Estas técnicas de procesamiento de datos permitieron obtener un conjunto de datos limpio y preparado para un análisis estadístico más profundo y significativo. En este análisis, se aplicaron diversas técnicas estadísticas para examinar la distribución de los precios de las viviendas, identificar valores atípicos, y explorar posibles relaciones entre diferentes variables, como el tipo de vivienda, la ubicación geográfica y las características específicas de las propiedades. Además, se realizaron gráficos y visualizaciones para representar los datos de manera efectiva y facilitar la identificación de patrones o tendencias significativas.

Resultados.

Limpieza de Datos:

La información proporcionada por la compañía reveló la presencia de algunos valores nulos, lo que impulsó la validación del porcentaje de estos datos faltantes. Tras este análisis, se llevó a cabo una exhaustiva limpieza de los mismos, junto con la eliminación de cualquier duplicidado que pudiera existir en los registros. Además, como parte del proceso de preparación de los datos, se estandarizaron todas las variables, convirtiéndolas en minúsculas para garantizar una agrupación precisa y coherente.
## [1] "Total de datos suministrados: 8330"
## [1] "Total de datos Null: 4279"
## [1] "Porcentaje de datos Null: 51%"

Los valores nulos se asignaron a cero para preservar la integridad y la cantidad significativa de datos disponibles. Eliminar el 51% de la data, como habría sido el caso si simplemente se hubieran excluido los registros con valores nulos, habría tenido un impacto devastador en el análisis subsiguiente.

## [1] "Total de datos limpios: 8260"

Zonas más populares de Cali (Agrupación Geográfica):

El análisis geoespacial revela que la mayoría de las agrupaciones se concentran en la zona suroeste de la ciudad de Cali.

Zonas más populares de Cali (Distribución de Ventas por Zona Diagrama de Torta):

Zona Conteo Porcentaje
zona centro 124 1.5%
zona norte 1907 23.09%
zona oeste 1195 14.47%
zona oriente 350 4.24%
zona sur 4684 56.71%


La tabla de frecuencia y el diagrama de torta revelan una clara división de las zonas en Cali. La distribución porcentual muestra que la zona centro representa el 1.5%, la zona norte el 23.09%, la zona oeste el 14.47%, la zona oriente el 4.24%, y finalmente, la zona con mayor representación es la sur con un 56.71%.

Zonas Centro:




En la zona centro de la ciudad de Cali, se observa el predominio del estrato socio económico tres, tanto para apartamentos como para casas, representando un 58% y un 91% respectivamente. Además, se destaca que el costo por metro cuadrado en promedio es de 1.949.520 pesos colombianos para los apartamentos y de 1.697.014 pesos colombianos para las casas.

Zonas Norte:




En la zona norte de la ciudad de Cali, se observa el predominio del estrato socio económico cinco, tanto para apartamentos como para casas, representando un 41.8% y un 37.4% respectivamente. Además, se destaca que el costo por metro cuadrado en promedio es de 2.810.967 pesos colombianos para los apartamentos y de 1.847.137 pesos colombianos para las casas.

Zonas Oeste:




En la zona oeste de la ciudad de Cali, se observa el predominio del estrato socio económico seis, tanto para apartamentos como para casas, representando un 69.20% y un 34.91% respectivamente. Además, se destaca que el costo por metro cuadrado en promedio es de 3.852.246 pesos colombianos para los apartamentos y de 2.386.436 pesos colombianos para las casas.

Zonas Oriente:




En la zona oriente de la ciudad de Cali, se observa el predominio del estrato socio económico tres, tanto para apartamentos como para casas, representando un 93.44% y un 97.56% respectivamente. Además, se destaca que el costo por metro cuadrado en promedio es de 1.674.800 pesos colombianos para los apartamentos y de 1.388.767 pesos colombianos para las casas.

Zonas Sur:




En la zona sur de la ciudad de Cali, se observa el predominio del estrato socio económico cuatro y cinco, tanto para apartamentos como para casas, representando para el estraro cuatro un 38.9% y un 27.1% respectivamente y para el estraro cinco un 37.1% y un 33.5% respectivamente. Además, se destaca que el costo por metro cuadrado en promedio es de 2.989.337pesos colombianos para los apartamentos y de 2.337.840 pesos colombianos para las casas.

Promedio de Características:

Zona Tipo PromedioBaños PromedioParqueadero PromedioHabitacion PromedioPecioArea
zona centro apartamento 2 0 3 1.949.520
zona centro casa 3 1 5 1.697.014
zona norte apartamento 2 1 3 2.810.967
zona norte casa 4 1 5 1.847.137
zona oeste apartamento 3 2 3 3.852.246
zona oeste casa 4 2 5 2.386.436
zona oriente apartamento 2 0 3 1.674.800
zona oriente casa 3 1 5 1.388.767
zona sur apartamento 2 1 3 2.989.337
zona sur casa 4 2 5 2.337.840

En el análisis de datos por zona y tipo de vivienda en Cali, se han obtenido los siguientes promedios:

Zona Centro:

Apartamento: Promedio de 2 baños, sin parqueadero, 3 habitaciones, con un precio promedio por área de 1.949.520 pesos.
Casa: Promedio de 3 baños, 1 parqueadero, 5 habitaciones, con un precio promedio por área de 1.697.014 pesos.

Zona Norte:

Apartamento: Promedio de 2 baños, 1 parqueadero, 3 habitaciones, con un precio promedio por área de 2.810.967 pesos.
Casa: Promedio de 4 baños, 1 parqueadero, 5 habitaciones, con un precio promedio por área de 1.847.137 pesos.

Zona Oeste:

Apartamento: Promedio de 3 baños, 2 parqueaderos, 3 habitaciones, con un precio promedio por área de 3.852.246 pesos.
Casa: Promedio de 4 baños, 2 parqueaderos, 5 habitaciones, con un precio promedio por área de 2.386.436 pesos.

Zona Oriente:

Apartamento: Promedio de 2 baños, sin parqueadero, 3 habitaciones, con un precio promedio por área de 1.674.800 pesos.
Casa: Promedio de 3 baños, 1 parqueadero, 5 habitaciones, con un precio promedio por área de 1.388.767 pesos.

Zona Sur:

Apartamento: Promedio de 2 baños, 1 parqueadero, 3 habitaciones, con un precio promedio por área de 2.989.337 pesos.
Casa: Promedio de 4 baños, 2 parqueaderos, 5 habitaciones, con un precio promedio por área de 2.337.840 pesos.

Discusión.

El análisis detallado de los datos proporciona una visión integral del mercado inmobiliario en Cali, permitiendo identificar tendencias y patrones significativos. En primer lugar, se observa una clara división geográfica en la distribución de las viviendas, con la zona sur destacándose como la más representativa en términos de oferta. Esto sugiere una mayor demanda o desarrollo en esta área en particular, lo que podría influir en los precios y las preferencias del público.
Al examinar los tipos de viviendas más ofertadas en el mercado, se observa una variación significativa en cuanto a características como el número de baños, habitaciones y parqueaderos. Por ejemplo, las casas tienden a ofrecer un mayor número de baños y habitaciones en comparación con los apartamentos, lo que puede reflejar las necesidades y preferencias de los compradores en diferentes segmentos del mercado.
Además, al analizar el estrato socioeconómico predominante en cada zona, se pueden identificar patrones socioeconómicos específicos que pueden influir en la dinámica del mercado inmobiliario. Por ejemplo, en la zona sur se observa un predominio de estratos cuatro y cinco, mientras que en la zona oeste predomina el estrato seis. Estos hallazgos son importantes para comprender las preferencias y capacidades financieras de los compradores en cada Zona.
Sin embargo para llegar a este análisis se presentaron desafíos asociados con la calidad de los datos. La presencia inicial de valores nulos en la información suministrada planteó un obstáculo significativo en el proceso de análisis. Esta anomalía requirió una atención inmediata, ya que los datos faltantes representaban un impresionante 51% del total de la muestra. La validación y limpieza de estos valores nulos a 0 fueron pasos cruciales para garantizar la integridad y fiabilidad de los resultados posteriores, por lo que es recomendado que en estudios futuros, esto se tenga en cuenta mejorando los métodos de recolección.

Conclusiones.

El análisis exhaustivo del mercado inmobiliario en Cali revela una serie de tendencias significativas que proporcionan una visión clara del panorama actual. Destaca la marcada división geográfica, con la zona sur emergiendo como el epicentro de la actividad inmobiliaria, lo que sugiere un interés sustancial por parte de compradores e inversores en esta área en particular.
Al profundizar en las preferencias de los compradores, se observa una variedad de características en las viviendas ofertadas, desde el número de baños y habitaciones hasta la disponibilidad de parqueaderos. Este análisis subraya la importancia de comprender las necesidades y preferencias del público objetivo al desarrollar nuevos proyectos o establecer precios competitivos.
Además, la distribución del estrato socioeconómico en cada zona ofrece información valiosa sobre las dinámicas demográficas y económicas locales. Por ejemplo, la predominancia de estratos cuatro y cinco en la zona sur puede indicar un mayor poder adquisitivo en comparación con otras áreas de la ciudad.
En resumen, estos hallazgos son esenciales tanto para los actores del mercado inmobiliario como para los compradores potenciales. Para los agentes inmobiliarios, proporcionan una guía clave para la toma de decisiones estratégicas, mientras que los inversionistas pueden utilizar esta información para tomar decisiones informadas y encontrar la vivienda que mejor se adapte a sus necesidades y presupuesto en la ciudad de Cali.

Anexos.

comparto el codigo desarrollado:

#Importar Librerias
#devtools::install_github("dgonxalex80/paqueteMETODOS") #instalar el paquete de metodos
#install.packages("devtools")
#install.packages("stringdist")
#devtools::install_github("ropensci/skimr")
#install.packages("leaflet") #Mapas
#Install.packages("kableExtra")
#install.packages("reshape")
#install.packages("ggplot2")
#install.packages("tidyverse")

library(paqueteMETODOS) # usar las librerias del paquete de metodos
library(dplyr)
library(reshape)
library(stringdist)
library(ggplot2)
library(scales)
#Cargar Datos
#data(vivienda_faltantes) # trae la base de datos
#saveRDS(vivienda_faltantes, file = "vivienda_faltantes.RDS")  # Guardamos los datos para no tener que descargarlos nuevamente para eventos futuros
vivienda_faltantes<- readRDS("vivienda_faltantes.RDS") # abre la base de datos guardada en la linea anterior
#rm(Ana) # elimina los datos de memoria


#renombrar las columnas
names(vivienda_faltantes)
vivienda_faltantes = rename(vivienda_faltantes, c( id ="Id"))
vivienda_faltantes = rename(vivienda_faltantes, c( zona ="Zona"))
vivienda_faltantes = rename(vivienda_faltantes, c( piso ="Piso"))
vivienda_faltantes = rename(vivienda_faltantes, c( estrato ="Estrato"))
vivienda_faltantes = rename(vivienda_faltantes, c( preciom ="Precio"))
vivienda_faltantes = rename(vivienda_faltantes, c( areaconst ="AreaConstruida"))
vivienda_faltantes = rename(vivienda_faltantes, c( parquea ="Parqueadero"))
vivienda_faltantes = rename(vivienda_faltantes, c( banios ="Ba?o"))
vivienda_faltantes = rename(vivienda_faltantes, c( habitac ="Habitacion"))
vivienda_faltantes = rename(vivienda_faltantes, c( tipo ="Tipo"))
vivienda_faltantes = rename(vivienda_faltantes, c( barrio ="Barrio"))
vivienda_faltantes = rename(vivienda_faltantes, c( longitud ="Longitud"))
vivienda_faltantes = rename(vivienda_faltantes, c( latitud ="Latitud"))

#Limpieza de datos
#round(sum(is.na(vivienda_faltantes)) *100/(count(vivienda_faltantes)))
#colSums(sapply(vivienda_faltantes, is.na)) #Validar numero de columnas nulas
vivienda_faltantes <- vivienda_faltantes[!is.na(vivienda_faltantes$Id),] # Sobre escribir la base de datos para eliminar los nullos

#unificacion informacion cuantitativa
vivienda_faltantes$Piso=as.integer(vivienda_faltantes$Piso) # Convertir a valor entero
vivienda_faltantes$Piso[is.na(vivienda_faltantes$Piso)] <- 0 # convertir piso en 0
table(vivienda_faltantes$Piso)

sin_decimales <- vivienda_faltantes$Longitud[!grepl("\\.", as.character(vivienda_faltantes$Longitud))] 
sin_decimales_divididos <- sin_decimales / 1000 
vivienda_faltantes$Longitud[!grepl("\\.", as.character(vivienda_faltantes$Longitud))] <- sin_decimales_divididos

sin_decimales <- vivienda_faltantes$Latitud[!grepl("\\.", as.character(vivienda_faltantes$Latitud))] 
sin_decimales_divididos <- sin_decimales / 1000 
vivienda_faltantes$Latitud[!grepl("\\.", as.character(vivienda_faltantes$Latitud))] <- sin_decimales_divididos


vivienda_faltantes$Parqueadero=as.integer(vivienda_faltantes$Parqueadero) # Convertir a valor entero
vivienda_faltantes$Parqueadero[is.na(vivienda_faltantes$Parqueadero)] <- 0 # convertir piso en 0
table(vivienda_faltantes$Parqueadero)

table(vivienda_faltantes$Estrato)
table(vivienda_faltantes$Precio)
table(vivienda_faltantes$AreaConstruida)
table(vivienda_faltantes$Ba?o)
table(vivienda_faltantes$Habitacion)

# unificacion de informacion cualitativa
vivienda_faltantes$Zona=tolower(vivienda_faltantes$Zona) # Minuscula
table(vivienda_faltantes$Zona)
vivienda_faltantes$Tipo =tolower(vivienda_faltantes$Tipo ) # Miniscula
vivienda_faltantes$Tipo [vivienda_faltantes$Tipo =="apto"]="apartamento" 
table(vivienda_faltantes$Tipo )
limpiar_barrios <- function(nombres) { 
  nombres <- tolower(trimws(iconv(nombres, from = "UTF-8", to = "ASCII//TRANSLIT"))) 
  nombres <- gsub("[_ ]", "", nombres) 
  return(nombres) }
vivienda_faltantes$Barrio <- limpiar_barrios(vivienda_faltantes$Barrio)
#table(vivienda_faltantes$Barrio)

#Eliminar duplicados 
#sin_duplicados <- vivienda_faltantes %>% group_by(Zona,Piso,Estrato,Precio,AreaConstruida,Parqueadero,Ba?o,Habitacion,Tipo,Barrio,Longitud,Latitud) %>% filter (! duplicated(Zona,Piso,Estrato,Precio,AreaConstruida,Parqueadero,Ba?o,Habitacion,Tipo,Barrio,Longitud,Latitud))
#Eliminar duplicados teniendo en cuenta barrios
sin_duplicados <- vivienda_faltantes %>% group_by(Zona,Piso,Estrato,Precio,AreaConstruida,Parqueadero,Ba?o,Habitacion,Tipo,Longitud,Latitud) %>% filter (! duplicated(Zona,Piso,Estrato,Precio,AreaConstruida,Parqueadero,Ba?o,Habitacion,Tipo,Barrio,Longitud,Latitud))
#table(vivienda_faltantes$Tipo, vivienda_faltantes$Piso)


# Analisis de Valores Univariados 

vivienda_normalizada <- sin_duplicados

################################################################################
##GRAFICOS
#Install.packages("kableExtra")
#install.packages("reshape")
library(kableExtra)
library(formattable)
library(tidyverse)
library(tidyr)
library(dplyr)
library(readr)
library(reshape)

#Creación tabla de Frecuencia de Zona
tablaZona <- as.data.frame(table(Zona = vivienda_normalizada$Zona))
tablaZona = rename(tablaZona, c( Freq ="Conteo"))#Renombrar la frecuencia por conteo para el usuario Zona
tablaZona <- transform(tablaZona, 
                      # Porcentaje = (round( (Freq/ sum(Freq))*100, 2)),
                       Porcentaje= paste0((round( (Conteo/ sum(Conteo))*100, 2)),"%"))
#Creación de la Tabla
tablaZonaT <- tablaZona %>%
  kbl(align="cr") %>% #Centrar la info
  kable_paper(full_width = FALSE) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1:1,bold = T, width = "2.2cm",color = "black", background= "#2B8CBE") %>%
  column_spec(3:3, width = "2.1cm") %>%
  row_spec(0, bold = T, color = "black", background = "#045A8D",align = "center")
tablaZonaT # Mostrar la tabla formateada

tablaZona <- transform(tablaZona, 
                       Porcentaje = (round( (Conteo/ sum(Conteo))*100, 2)))
                       #Porcentaje= paste0((round( (Freq/ sum(Freq))*100, 2)),"%"))

library(ggrepel)
library(ggplot2)
library(tidyverse)
library(tidyr)
library(dplyr)
library(tidytext)

GraficoTorta <- tablaZona
GraficoTorta2 <- GraficoTorta %>% 
  mutate(csum = rev(cumsum(rev(Porcentaje))), 
         pos = Porcentaje/2 + lead(csum, 1),
         pos = if_else(is.na(pos), Porcentaje/2, pos))

ggplot(GraficoTorta, aes(x = "" , y = Porcentaje, fill = Zona)) +
  geom_col(width = 1, color = 1) +
  coord_polar(theta = "y", start = 3) +
  scale_fill_brewer(palette = "PuBu") +
  geom_label_repel(data = GraficoTorta2,
                   aes(y = pos, label = paste0(Porcentaje, "%")),
                   size = 4.5, nudge_x = 1, show.legend = FALSE) +
  guides(fill = guide_legend(title = "Zonas")) +
  ggtitle("Porcentaje Por Zona")+
  theme_void()

###########################################################################
vivienda_normalizadaPrecio <- vivienda_normalizada 
vivienda_normalizadaPrecio <- transform(vivienda_normalizadaPrecio, 
                             PreciocxArea = round(((Precio*1000000)/AreaConstruida)))

###########################################################################
ZonaCentro=subset(vivienda_normalizadaPrecio, vivienda_normalizadaPrecio$Zona=="zona centro") 
ZonaNorte=subset(vivienda_normalizadaPrecio, vivienda_normalizadaPrecio$Zona=="zona norte") 
ZonaOeste=subset(vivienda_normalizadaPrecio, vivienda_normalizadaPrecio$Zona=="zona oeste") 
ZonaOriente=subset(vivienda_normalizadaPrecio, vivienda_normalizadaPrecio$Zona=="zona oriente") 
ZonaSur=subset(vivienda_normalizadaPrecio, vivienda_normalizadaPrecio$Zona=="zona sur") 

ZonaCentroEstratoTipo=subset(ZonaCentro,select =c(Estrato,Tipo))
ZonaNorteEstratoTipo=subset(ZonaNorte,select =c(Estrato,Tipo))
ZonaOesteEstratoTipo=subset(ZonaOeste,select =c(Estrato,Tipo))
ZonaOrienteEstratoTipo=subset(ZonaOriente,select =c(Estrato,Tipo))
ZonaSurEstratoTipo=subset(ZonaSur,select =c(Estrato,Tipo))

ZonaCentroPrecioArea <- ZonaCentro 
ZonaCentroPrecioArea <- transform(ZonaCentroPrecioArea, 
                             PreciocxArea = round(((Precio*1000000)/AreaConstruida)))
ZonaNortePrecioArea <- ZonaNorte 
ZonaNortePrecioArea <- transform(ZonaNortePrecioArea, 
                                  PreciocxArea = round(((Precio*1000000)/AreaConstruida)))
ZonaOestePrecioArea <- ZonaOeste 
ZonaOestePrecioArea <- transform(ZonaOestePrecioArea, 
                                  PreciocxArea = round(((Precio*1000000)/AreaConstruida)))
ZonaOrientePrecioArea <- ZonaOriente 
ZonaOrientePrecioArea <- transform(ZonaOrientePrecioArea, 
                                  PreciocxArea = round(((Precio*1000000)/AreaConstruida)))
ZonaSurPrecioArea <- ZonaSur 
ZonaSurPrecioArea <- transform(ZonaSurPrecioArea, 
                                  PreciocxArea = round(((Precio*1000000)/AreaConstruida)))



library(ggplot2)
library(dplyr)
library(tidyverse)
library(dplyr)
library(tidytext)
library(dplyr)

ZonaCentroEstratoTipo %>% group_by(Tipo,Estrato) %>%
  summarise(count = n()) %>%
  mutate(cut.count = sum(count),
         PorcentajeEstrato = count/sum(count)) %>%
  ungroup() %>%
  ggplot(aes(x = Tipo, y = PorcentajeEstrato, width = cut.count, fill = Estrato)) +
  geom_bar(stat = "identity", position = "fill", colour = "black") +
  geom_text(aes(label = paste0(scales::percent(PorcentajeEstrato))), position = position_stack(vjust = 0.5)) + # if labels are desired
  facet_grid(~Tipo, scales = "free_x", space = "free_x")+
  ggtitle("Zona Centro Estrato-Tipo")+
  theme(strip.background = element_blank(),strip.text = element_blank())

ZonaNorteEstratoTipo %>% group_by(Tipo,Estrato) %>%
  summarise(count = n()) %>%
  mutate(cut.count = sum(count),
         PorcentajeEstrato = count/sum(count)) %>%
  ungroup() %>%
  ggplot(aes(x = Tipo, y = PorcentajeEstrato, width = cut.count, fill = Estrato)) +
  geom_bar(stat = "identity", position = "fill", colour = "black") +
  geom_text(aes(label = paste0(scales::percent(PorcentajeEstrato))), position = position_stack(vjust = 0.5)) + # if labels are desired
  facet_grid(~Tipo, scales = "free_x", space = "free_x")+
  ggtitle("Zona Norte Estrato-Tipo")+
  theme(strip.background = element_blank(),strip.text = element_blank())

ZonaOesteEstratoTipo %>% group_by(Tipo,Estrato) %>%
  summarise(count = n()) %>%
  mutate(cut.count = sum(count),
         PorcentajeEstrato = count/sum(count)) %>%
  ungroup() %>%
  ggplot(aes(x = Tipo, y = PorcentajeEstrato, width = cut.count, fill = Estrato)) +
  geom_bar(stat = "identity", position = "fill", colour = "black") +
  geom_text(aes(label = paste0(scales::percent(PorcentajeEstrato))), position = position_stack(vjust = 0.5)) + # if labels are desired
  facet_grid(~Tipo, scales = "free_x", space = "free_x")+
  ggtitle("Zona Oeste Estrato-Tipo")+
  theme(strip.background = element_blank(),strip.text = element_blank())

ZonaOrienteEstratoTipo %>% group_by(Tipo,Estrato) %>%
  summarise(count = n()) %>%
  mutate(cut.count = sum(count),
         PorcentajeEstrato = count/sum(count)) %>%
  ungroup() %>%
  ggplot(aes(x = Tipo, y = PorcentajeEstrato, width = cut.count, fill = Estrato)) +
  geom_bar(stat = "identity", position = "fill", colour = "black") +
  geom_text(aes(label = paste0(scales::percent(PorcentajeEstrato))), position = position_stack(vjust = 0.5)) + # if labels are desired
  facet_grid(~Tipo, scales = "free_x", space = "free_x")+
  ggtitle("Zona Oriente Estrato-Tipo")+
  theme(strip.background = element_blank(),strip.text = element_blank())

ZonaSurEstratoTipo %>% group_by(Tipo,Estrato) %>%
  summarise(count = n()) %>%
  mutate(cut.count = sum(count),
         PorcentajeEstrato = count/sum(count)) %>%
  ungroup() %>%
  ggplot(aes(x = Tipo, y = PorcentajeEstrato, width = cut.count, fill = Estrato)) +
  geom_bar(stat = "identity", position = "fill", colour = "black") +
  geom_text(aes(label = paste0(scales::percent(PorcentajeEstrato))), position = position_stack(vjust = 0.5)) + # if labels are desired
  facet_grid(~Tipo, scales = "free_x", space = "free_x")+
  ggtitle("Zona Sur Estrato-Tipo")+
  theme(strip.background = element_blank(),strip.text = element_blank())
#############################################################################
#CARACTERISTICAS

ZonaCentroCaracteristicas=subset(ZonaCentro,select =c(Estrato,Tipo))
ZonaCentroCaracteristicas<- ZonaCentro %>%
  group_by(Tipo,Ba?o,Habitacion,Piso) %>%
  summarise(meanprecio = mean(preciom))

table(ZonaCentro$Ba?o,ZonaCentro$Ba?o)

#############################################################################
#MAPA
library(leaflet)

mapa <- leaflet(vivienda_faltantes,options = leafletOptions(minZoom = 11, maxZoom = 40)) %>%
  addTiles() %>%
  addCircleMarkers(
    ~Longitud, ~Latitud,
    color = "#034A94",
    clusterOptions = markerClusterOptions(spiderfyDistanceMultiplier=1.5)
  )

mapa

###############################################################################