#install.packages(paqueteMODELOS)
#install.packages(Amelia)
#install.packages(tidyverse)
#install.packages(summarytools)
library(paqueteMODELOS)
library(Amelia)#Paquete para tratamiento de datos perdidos.
## Loading required package: Rcpp
## ##
## ## Amelia II: Multiple Imputation
## ## (Version 1.8.1, built: 2022-11-18)
## ## Copyright (C) 2005-2023 James Honaker, Gary King and Matthew Blackwell
## ## Refer to http://gking.harvard.edu/amelia/ for more information
## ##
library(tidyverse) # Paquete de preferencia personal para tratamiento de bases de datos
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(summarytools)
##
## Attaching package: 'summarytools'
##
## The following object is masked from 'package:tibble':
##
## view
df_BC <- vivienda_faltantes
El crecimiento del sector constructor durante los últimos años ha sido significativo en materia de comercialización de vivienda; la buena dinámica entre la oferta y la demanda permite un despliegue de la actividad edificadora destacable en inversión, empleo y bienestar para el país.
En este sentido, Cali, durante los últimos años se ha consolidado como uno de los mercados referentes en venta de vivienda, jalonando alta inversión extranjera y nacional, y en consecuencia, ha aumentado sus niveles de competitividad en el marco residencial.
Así las cosas, se dispondrá un análisis investigativo del mercado inmobilidario de la ciudad; esto, en aras de tomar decisiones asertivas en la formulación de proyectos residenciales de éxito, manteniendo y mejorando la participación en el mercado.
Por lo anterior, se pondrá en manifiesto las características principales de la base de datos de origen y a partir de un análisis exploratorio se impartirán diferentes conclusiones.
Identificar las tendencias en el mercado acorde a las variables de diseño de unidad residencial y su ubicación.
Definir una estrategia de mercado acorde a los resultados base.
Los metodos a utilizar seran los siguientes:
dim(df_BC) #Dimensiones de la base de datos
## [1] 8330 13
summary(df_BC) #Lectura de cada Variable
## 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
A continuación, se describen algunas características significativas de la base de datos a estudiar:
La base comprende 8330 observaciones distribuidas en 13 variables
Se encontró que 10 variables: id, piso, preciom, estrato, areaconst, parquea, banios, habitac, longitud y latitud, son de tipo numérico; sin embargo, la variable estrato debe ser convertida a variable cualitativa ordinal, dada su naturaleza y comprensión socioeconomica.
Se encontró que 3 variables: zona, barrio y tipo, son de carácter cualitativo; sin embargo se debe convertir la variable tipo en cualitativa nominal
De esta manera, a continuación se procede a cambiar las variables señaladas:
Estrato
df_BC$estrato <- as.factor(df_BC$estrato)
summary(df_BC$estrato)
## 3 4 5 6 NA's
## 1453 2131 2751 1992 3
df_BC$tipo <- as.factor(df_BC$tipo)
summary(df_BC$tipo)
## Apartamento APARTAMENTO apto casa Casa CASA
## 5032 61 13 14 3195 12
## NA's
## 3
Se halla un nuevo inconveniente y es que las etiquetas de la variable tipo no son homogéneas en tanto a sus clasificaciones: Casa o Apartamento. En este sentido, se procede a hacer la correcion pertinente.
df_BC$tipo <- as.factor(str_to_sentence(df_BC$tipo))
df_BC$tipo <- as.factor(str_replace_all(df_BC$tipo, "Apto", "Apartamento"))
summary(df_BC$tipo)
## Apartamento Casa NA's
## 5106 3221 3
Adicionalmente, la base de datos arroja una serie de observaciones faltante o NA’s (not available) que pueden perpetuar en la lectura de la base de datos a estudiar.
missmap(df_BC, col=c('gray','DarkBlue'),y.at=1,y.labels=' ',legend=TRUE,
main = "Datos Faltantes")
Acorde a la gráfica anterior, se observa una gran cantidad de NA’s para las variables de piso y parqueadero, en donde del total de las observaciones el 4% corresponde a datos faltantes y el 96% a datos observables. Por lo tanto, se debe ir con precaución al momento de utilizar dichas variables.
Para este ejercicio, se omitiran los NA’s extrayendo sub-bases de los caracteres a tratar.
Se expone en primer lugar la categorizacion y clasificacion de las viviendas estudiadas por variable cualitativa (Sin NA’s), teniendo el siguiente orden: Estrato, Zonas, Barrios y Tipo
variable_1 <- df_BC[!is.na(df_BC$estrato),]
variable_1$estrato <- as.factor(variable_1$estrato)
ggplot(variable_1, aes(x = estrato, fill = "red",))+
geom_histogram(stat="count", show.legend = FALSE)+
ylab(" ")+xlab("Estrato")+ ggtitle("Vivienda en Cali, según estrato socieconómico\n")+
geom_text(stat = "count", aes(x = estrato, label = ..count..),vjust = -0.5)+
theme_minimal() + scale_y_continuous(limits = c(0,3000))
freq(variable_1$estrato, style = "simple", justify = "center", headings = TRUE,
report.nas = F)
## Frequencies
## variable_1$estrato
## Type: Factor
##
## Freq % % Cum.
## ----------- ------ -------- --------
## 3 1453 17.45 17.45
## 4 2131 25.59 43.04
## 5 2751 33.04 76.08
## 6 1992 23.92 100.00
## Total 8327 100.00 100.00
Tanto la representación gráfica como la tabla de frecuencia determinan las siguientes características en la variable de estrato:
freq(df_BC$zona, style = "simple", justify = "center", headings = TRUE,
report.nas = F)
## Frequencies
## df_BC$zona
## Type: Character
##
## Freq % % Cum.
## ------------------ ------ -------- --------
## Zona Centro 124 1.49 1.49
## Zona Norte 1922 23.08 24.57
## Zona Oeste 1204 14.46 39.03
## Zona Oriente 351 4.22 43.24
## Zona Sur 4726 56.76 100.00
## Total 8327 100.00 100.00
Con respecto a las zonas analizadas, se tiene que la mayoría de las viviendas se encuentran ubicadas en el sur, con un 56,76% de participación, mientras que la zona menos participativa se ubica en la zona centro con un 1,49%.
df_barrios <- select(df_BC, zona, barrio)
df_barrios$place <- na.omit(paste(df_barrios$zona,"-",df_barrios$barrio))
zon_nor <- df_barrios %>% filter(zona == "Zona Norte")
sort(table(zon_nor$place),decreasing = T)[1:3]
##
## Zona Norte - la flora Zona Norte - acopi
## 366 157
## Zona Norte - prados del norte
## 124
zon_sur <- df_barrios %>% filter(zona == "Zona Sur")
sort(table(zon_sur$place),decreasing = T)[1:3]
##
## Zona Sur - valle del lili Zona Sur - ciudad jardín Zona Sur - pance
## 1004 513 408
zon_oes <- df_barrios %>% filter(zona == "Zona Oeste")
sort(table(zon_oes$place),decreasing = T)[1:3]
##
## Zona Oeste - santa teresita Zona Oeste - normandía
## 254 157
## Zona Oeste - los cristales
## 154
zon_ori <- df_barrios %>% filter(zona == "Zona Oriente")
sort(table(zon_ori$place),decreasing = T)[1:3]
##
## Zona Oriente - alfonso lópez Zona Oriente - ciudad cordoba
## 21 20
## Zona Oriente - las ceibas
## 19
freq(df_BC$tipo, style = "simple", justify = "center", headings = TRUE,
report.nas = F)
## Frequencies
## df_BC$tipo
## Type: Factor
##
## Freq % % Cum.
## ----------------- ------ -------- --------
## Apartamento 5106 61.32 61.32
## Casa 3221 38.68 100.00
## Total 8327 100.00 100.00
El mercado inmobiliario de Cali, se compone principalmente por apartamentos con un 61,32% versus casas, con un 38,68%.
contingencia_1 <- drop_na(select(df_BC, zona, estrato))
contingencia_1 <- table(contingencia_1)
round(prop.table(contingencia_1,1)*100,2)
## estrato
## zona 3 4 5 6
## Zona Centro 84.68 11.29 3.23 0.81
## Zona Norte 29.76 21.23 40.06 8.95
## Zona Oeste 4.49 7.06 24.09 64.37
## Zona Oriente 96.87 2.28 0.57 0.28
## Zona Sur 8.08 34.19 35.65 22.07
Dada el cruce de información entre las variables zona y estrato, se tiene que:
La Zona centro posee mayoritariamente viviendas de estrato 3 y minimamente aquellas de estrato 6.
La Zona Norte se encuentra en su gran mayoría poblada por vivienda de estrato 5 y 3, con una menor participación de estrato 6.
La Zona Oeste es liderada por estrato 6, seguido del 5, y muy poca participación de los demás estratos, siendo la zona más cotizada del territorio.
La Zona Oriente, esta en su mayoría conformada por estrato 3
La Zona Sur, se encuentra en su gran mayoría poblada por vivienda de estrato 5 y 4, con una menor participación de estrato 3.
contingencia_2 <- drop_na(select(df_BC, zona, tipo))
contingencia_2 <- table(contingencia_2)
round(prop.table(contingencia_2,1)*100,2)
## tipo
## zona Apartamento Casa
## Zona Centro 19.35 80.65
## Zona Norte 62.38 37.62
## Zona Oeste 85.96 14.04
## Zona Oriente 17.66 82.34
## Zona Sur 58.95 41.05
Dada el cruce de información entre las variables zona y tipo, y teniendo en cuenta las conclusiones de la tabla anterior, se tiene que:
Las personas del menor estrato estudiado, tiene una preferencia a primera instancia por casas; esto, dado a que las viviendas de tipo casa lideran en las zonas centro y oriente, en donde el porcentaje participativo del tipo habitacional mencionado es mayor al 80%.
Por al contrario, las viviendas 5 y 6, encontradas mayormente en las zonas sur y oeste, poseen cierta preferencia hacia los apartamentos.
variable_2 <- df_BC[!is.na(df_BC$preciom),]
ggplot(variable_2, aes(x = preciom, fill = "red",))+
geom_histogram( show.legend = FALSE)+
ylab(" ")+xlab("Precio")+ ggtitle("Vivienda en Cali, según precio\n")+
theme_minimal()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
A primera instancia se observa que el precio por metro cuadrado comercial se concentra en aquellas unidades menores a 500 mil pesos. Adicionalmente, el histograma muestra los datos con una asimetría positiva, es decir, moda y mediana menor a la media.
mediat <- round(mean(variable_2$preciom),2)
Encontramos una media del: 434.24
moda <- table(variable_2$preciom)
sort(moda, decreasing = T)[1]
## 350
## 201
Por su parte, la moda en los precios por metro cuadrado es de: 350
mediana <- median(variable_2$preciom)
De igual forma su mediana sería: 330
varia <- sd(variable_2$preciom)
round(varia,1)
## [1] 329
Los precios pueden variar 329.0157036 pesos
coeficiente <- varia/mean(variable_2$preciom)
coeficiente
## [1] 0.7576806
Al tener un coeficiente de variación mayor al 30%, se interpreta de que la variabilidad es alta con respecto a la media, es decir, los datos están dispersos y puede tener valores extremos o atipicos.
zon_precio <- variable_2[!is.na(variable_2$zona),]
ggplot(zon_precio, aes(x = zona, y = preciom))+
geom_jitter(aes(color = estrato))+
geom_boxplot(outlier.shape = NA, alpha = 0.5, outlier.color = NA) +
scale_y_continuous(limits = c(0,1600)) +
ggtitle("Vivienda en Cali, según estrato, tipo, zona y precio metro cuadrado\n")+
labs(x = "Zona", y = "Precio m2", color = "Estrato") +
theme_minimal()+facet_wrap(~tipo)+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5))
Acorde al gráfico de apartamentos, la zona que presenta una mayor variabilidad es la Oeste; se puede observar que ésta se encuentra en gran parte constituida por viviendas de estrato 6 y 5 teniendo un precio por metro cuadrado entre los 300 a 800 aproximadamente. Por otro lado, se presenta una concentración acentuada en los datos para la zona sur, compuesto en su mayoría viviendas de estrato 5 y 4. Cabe destacar que las medianas de las zonas norte y sur, a primera instancia parecen similares y su precio metro cuadrado oscila entre los 100 a 400 mil pesos; por último, la zona centro destaca por su poca ausencia de apartamentos.
En este mismo sentido, la gráfica de las casas presenta a la zona norte y sur, como los territorios de casas entre estrato 5 y 6; mientras que la zona oriente se encuentra comprendida por estrato 3; de igual forma, la zona oeste resalta por ser un territorio de poca existencia de la tipología señalada.
pre_dis$habitac <- as.factor(pre_dis$habitac)
s <- (max(pre_dis$preciom,na.rm=T) - min(pre_dis$preciom,na.rm=T))/round(1 + log2(length(pre_dis))) # A través de la diferencia del máximo valor observado menos el mínimo y los intervalos determinados por Sturges se llega a una amplitud determinada
vector_preci <- cut_width(pre_dis$preciom, width = s)
table(vector_preci, pre_dis$habitac)
##
## vector_preci 1 2 3 4 5 6 7 8 9 10
## [-194,194] 14 432 1112 110 21 16 6 6 2 0
## (194,582] 41 461 2354 1022 364 189 111 102 57 26
## (582,970] 2 27 425 381 186 71 39 22 18 13
## (970,1.36e+03] 1 5 137 142 61 27 9 2 4 7
## (1.36e+03,1.75e+03] 1 1 62 51 35 12 7 4 2 4
## (1.75e+03,2.14e+03] 0 1 11 25 13 3 1 2 0 1
round(prop.table(table(vector_preci, pre_dis$habitac))*100,2)
##
## vector_preci 1 2 3 4 5 6 7 8 9
## [-194,194] 0.17 5.23 13.46 1.33 0.25 0.19 0.07 0.07 0.02
## (194,582] 0.50 5.58 28.50 12.37 4.41 2.29 1.34 1.23 0.69
## (582,970] 0.02 0.33 5.14 4.61 2.25 0.86 0.47 0.27 0.22
## (970,1.36e+03] 0.01 0.06 1.66 1.72 0.74 0.33 0.11 0.02 0.05
## (1.36e+03,1.75e+03] 0.01 0.01 0.75 0.62 0.42 0.15 0.08 0.05 0.02
## (1.75e+03,2.14e+03] 0.00 0.01 0.13 0.30 0.16 0.04 0.01 0.02 0.00
##
## vector_preci 10
## [-194,194] 0.00
## (194,582] 0.31
## (582,970] 0.16
## (970,1.36e+03] 0.08
## (1.36e+03,1.75e+03] 0.05
## (1.75e+03,2.14e+03] 0.01
La relación entre el precio y las habitaciones, muestra una solida oferta de viviendas cuyo metro cuadrado cuesta de 194 a 582 mil pesos y poseen 3 habitaciones, concentrando el 28,50% del mercado, con un total de 2354 unidades habitacionales existentes.
pre_dis_ban <- variable_2[!is.na(variable_2$banios),]
pre_dis_ban <- variable_2[(variable_2$banios) > 0,]
pre_dis_ban$banios <- as.factor(pre_dis_ban$banios)
s_2 <- (max(pre_dis_ban$preciom,na.rm=T) - min(pre_dis_ban$preciom,na.rm=T))/round(1 + log2(length(pre_dis_ban))) # A través de la diferencia del máximo valor observado menos el mínimo y los intervalos determinados por Sturges se llega a una amplitud determinada
vector_preci <- cut_width(pre_dis_ban$preciom, width = s_2)
table(vector_preci, pre_dis_ban$banios)
##
## vector_preci 1 2 3 4 5 6 7 8 9 10
## [-194,194] 428 1178 100 12 1 1 0 0 0 1
## (194,582] 67 1733 1662 859 316 75 14 12 4 1
## (582,970] 1 34 192 408 385 109 33 19 5 3
## (970,1.36e+03] 0 1 26 124 123 81 27 7 1 3
## (1.36e+03,1.75e+03] 1 0 13 45 46 34 26 8 5 1
## (1.75e+03,2.14e+03] 0 0 1 12 20 15 7 2 0 0
round(prop.table(table(vector_preci, pre_dis_ban$banios))*100,2)
##
## vector_preci 1 2 3 4 5 6 7 8 9
## [-194,194] 5.17 14.22 1.21 0.14 0.01 0.01 0.00 0.00 0.00
## (194,582] 0.81 20.92 20.07 10.37 3.82 0.91 0.17 0.14 0.05
## (582,970] 0.01 0.41 2.32 4.93 4.65 1.32 0.40 0.23 0.06
## (970,1.36e+03] 0.00 0.01 0.31 1.50 1.49 0.98 0.33 0.08 0.01
## (1.36e+03,1.75e+03] 0.01 0.00 0.16 0.54 0.56 0.41 0.31 0.10 0.06
## (1.75e+03,2.14e+03] 0.00 0.00 0.01 0.14 0.24 0.18 0.08 0.02 0.00
##
## vector_preci 10
## [-194,194] 0.01
## (194,582] 0.01
## (582,970] 0.04
## (970,1.36e+03] 0.04
## (1.36e+03,1.75e+03] 0.01
## (1.75e+03,2.14e+03] 0.00
En relación a los baños, se encuentra una gran participación en el mercado de unidades cuyo valor oscila entre los 194 a 582 mil pesos y poseen 2 o 3 habitaciones del 20%.
df_interiores <- drop_na(select(df_BC, zona, habitac, banios))
df_interiores <- filter(df_interiores, banios>0, habitac>0)
round(prop.table(table(df_interiores$zona, df_interiores$habitac),1)*100,2)
##
## 1 2 3 4 5 6 7 8 9 10
## Zona Centro 2.48 9.92 23.14 15.70 16.53 9.09 7.44 6.61 5.79 3.31
## Zona Norte 0.90 11.64 53.28 18.10 7.78 3.17 2.17 1.53 0.74 0.69
## Zona Oeste 1.26 14.57 52.35 22.86 5.36 1.84 0.50 0.42 0.50 0.34
## Zona Oriente 0.58 8.99 25.80 15.07 9.86 12.17 8.99 9.28 7.54 1.74
## Zona Sur 0.45 10.42 49.93 22.21 8.81 3.89 1.81 1.36 0.64 0.49
De esta forma se tiene que el número de habitaciones óptimo para todas las zonas es de 3.
round(prop.table(table(df_interiores$zona, df_interiores$banios),1)*100,2)
##
## 1 2 3 4 5 6 7 8 9 10
## Zona Centro 13.22 35.54 21.49 15.70 9.09 3.31 0.00 0.83 0.83 0.00
## Zona Norte 9.79 42.65 22.96 14.07 6.83 2.43 0.58 0.53 0.05 0.11
## Zona Oeste 3.18 19.77 26.47 29.48 15.49 3.69 1.59 0.17 0.17 0.00
## Zona Oriente 19.71 31.01 22.61 15.07 5.51 3.77 0.58 1.16 0.29 0.29
## Zona Sur 4.00 37.08 24.14 16.23 11.59 4.38 1.60 0.64 0.21 0.13
De esta forma se tiene que el número de habitaciones óptimo por zona es el siguiente: las zonas centro, norte, sur y oriente presentan mayoritariamente 2 baños; mientras que la zona oeste 4 baños.
df_parqueaderos <- drop_na(select(df_BC, zona, parquea))
round(prop.table(table(df_parqueaderos$zona, df_parqueaderos$parquea),1)*100,2)
##
## 1 2 3 4 5 6 7 8 9 10
## Zona Centro 78.12 15.62 0.00 3.12 0.00 3.12 0.00 0.00 0.00 0.00
## Zona Norte 56.48 32.51 5.35 3.57 0.85 0.62 0.39 0.08 0.08 0.08
## Zona Oeste 17.68 59.38 15.14 6.35 0.73 0.54 0.18 0.00 0.00 0.00
## Zona Oriente 74.85 17.18 4.91 1.84 0.61 0.61 0.00 0.00 0.00 0.00
## Zona Sur 50.21 33.28 6.75 6.46 1.17 1.24 0.27 0.39 0.07 0.17
La Zona Centro, Norte, Oriente y Sur debe tener al menos un parqueadero; mientras que la zona oeste debe tener 2.
variable_3 <- df_BC[!is.na(df_BC$areaconst),]
ggplot(variable_3, aes(x = areaconst))+
geom_histogram( show.legend = FALSE)+
ylab(" ")+xlab("Area construida")+ ggtitle("Vivienda en Cali, segun area\n")+
theme_minimal()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
A primera instancia se observa que el área construida se concentra en aquellas unidades menores a 250 mil pesos. Adicionalmente, el histograma muestra los datos con una asimetría positiva, es decir, moda y mediana menor a la media.
mediat_2 <- round(mean(variable_3$areaconst),2)
Se encuentra una media del: 174.99
moda_2 <- table(variable_3$areaconst)
sort(moda_2, decreasing = T)[1]
## 60
## 314
Por su parte, la moda en el area construida es de: 60
mediana_2 <- median(variable_3$areaconst)
De igual forma su mediana sería: 330
varia_2 <- sd(variable_3$areaconst)
round(varia_2,1)
## [1] 142.9
el área construída puede variar 329.0157036 metros
cuadrados
coeficiente_2 <- varia_2/mean(variable_3$areaconst)
coeficiente_2
## [1] 0.8169142
Al tener un coeficiente de variación mayor al 30%, se interpreta de que la variabilidad es alta con respecto a la media, es decir, los datos están dispersos y puede tener valores extremos o atipicos.
zon_precio_2 <- variable_3[!is.na(variable_3$zona),]
ggplot(zon_precio_2, aes(x = zona, y = areaconst))+
geom_jitter(aes(color = estrato))+
geom_boxplot(outlier.shape = NA, alpha = 0.5, outlier.color = NA) +
scale_y_continuous(limits = c(0,1600)) +
ggtitle("Vivienda en Cali, segun estrato, tipo, zona y area metro cuadrado\n")+
labs(x = "Zona", y = "Area m2", color = "Estrato") +
theme_minimal()+facet_wrap(~tipo)+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5))
Acorde al gráfico de apartamentos, la zona que presenta una mayor variabilidad es la Oeste; se puede observar que ésta se encuentra en gran parte constituida por viviendas de estrato 6 teniendo un area por metro cuadrado menor a 250 m2 aproximadamente. Cabe destacar que las medianas de las zonas norte y sur, a primera instancia parecen similares, teniendo un área metro cuadrado similar; por último.
En este mismo sentido, la gráfica de las casas presenta a la zona norte y sur, como los territorios de casas entre estrato 5 y 6; mientras que la zona oriente se encuentra comprendida por estrato 3; de igual forma, la zona oeste resalta por ser un territorio de poca existencia de la tipología señalada.
are_dis <- variable_3[!is.na(variable_3$habitac),]
are_dis <- variable_3[(variable_3$habitac) > 0,]
are_dis$habitac <- as.factor(are_dis$habitac)
s_3 <- (max(are_dis$areaconst,na.rm=T) - min(are_dis$areaconst,na.rm=T))/round(1 + log2(length(are_dis))) # A través de la diferencia del máximo valor observado menos el mínimo y los intervalos determinados por Sturges se llega a una amplitud determinada
vector_area <- cut_width(are_dis$areaconst, width = s_3)
table(vector_area, are_dis$habitac)
##
## vector_area 1 2 3 4 5 6 7 8 9 10
## [-172,172] 54 890 3413 799 105 47 18 14 10 5
## (172,514] 5 34 673 880 514 226 136 116 65 33
## (514,858] 0 2 9 41 55 39 17 7 8 7
## (858,1.2e+03] 0 0 3 10 5 5 2 1 0 5
## (1.2e+03,1.54e+03] 0 0 3 1 0 0 0 0 0 1
## (1.54e+03,1.89e+03] 0 1 0 0 1 1 0 0 0 0
round(prop.table(table(vector_area, are_dis$habitac))*100,2)
##
## vector_area 1 2 3 4 5 6 7 8 9
## [-172,172] 0.65 10.77 41.31 9.67 1.27 0.57 0.22 0.17 0.12
## (172,514] 0.06 0.41 8.15 10.65 6.22 2.74 1.65 1.40 0.79
## (514,858] 0.00 0.02 0.11 0.50 0.67 0.47 0.21 0.08 0.10
## (858,1.2e+03] 0.00 0.00 0.04 0.12 0.06 0.06 0.02 0.01 0.00
## (1.2e+03,1.54e+03] 0.00 0.00 0.04 0.01 0.00 0.00 0.00 0.00 0.00
## (1.54e+03,1.89e+03] 0.00 0.01 0.00 0.00 0.01 0.01 0.00 0.00 0.00
##
## vector_area 10
## [-172,172] 0.06
## (172,514] 0.40
## (514,858] 0.08
## (858,1.2e+03] 0.06
## (1.2e+03,1.54e+03] 0.01
## (1.54e+03,1.89e+03] 0.00
La relación entre el area y las habitaciones, muestra una solida oferta de viviendas cuyo metro cuadrado construido es menor a 172 m2 y poseen 3 habitaciones, concentrando el 41m31% del mercado, con un total de 3413 unidades habitacionales existentes.
are_dis_ban <- variable_3[!is.na(variable_3$banios),]
are_dis_ban <- variable_3[(variable_3$banios) > 0,]
are_dis_ban$banios <- as.factor(are_dis_ban$banios)
s_4 <- (max(are_dis_ban$areaconst,na.rm=T) - min(are_dis_ban$areaconst,na.rm=T))/round(1 + log2(length(are_dis_ban))) # A través de la diferencia del máximo valor observado menos el mínimo y los intervalos determinados por Sturges se llega a una amplitud determinada
vector_area_2 <- cut_width(are_dis_ban$areaconst, width = s_4)
table(vector_area_2, are_dis_ban$banios)
##
## vector_area_2 1 2 3 4 5 6 7 8 9 10
## [-172,172] 479 2760 1429 517 164 11 1 1 0 0
## (172,514] 17 183 555 902 681 243 65 32 11 7
## (514,858] 0 3 7 34 33 53 36 15 3 1
## (858,1.2e+03] 0 0 2 5 10 7 5 0 1 1
## (1.2e+03,1.54e+03] 1 0 0 1 3 0 0 0 0 0
## (1.54e+03,1.89e+03] 0 0 1 1 0 1 0 0 0 0
round(prop.table(table(vector_area_2, are_dis_ban$banios))*100,2)
##
## vector_area_2 1 2 3 4 5 6 7 8 9
## [-172,172] 5.78 33.33 17.25 6.24 1.98 0.13 0.01 0.01 0.00
## (172,514] 0.21 2.21 6.70 10.89 8.22 2.93 0.78 0.39 0.13
## (514,858] 0.00 0.04 0.08 0.41 0.40 0.64 0.43 0.18 0.04
## (858,1.2e+03] 0.00 0.00 0.02 0.06 0.12 0.08 0.06 0.00 0.01
## (1.2e+03,1.54e+03] 0.01 0.00 0.00 0.01 0.04 0.00 0.00 0.00 0.00
## (1.54e+03,1.89e+03] 0.00 0.00 0.01 0.01 0.00 0.01 0.00 0.00 0.00
##
## vector_area_2 10
## [-172,172] 0.00
## (172,514] 0.08
## (514,858] 0.01
## (858,1.2e+03] 0.01
## (1.2e+03,1.54e+03] 0.00
## (1.54e+03,1.89e+03] 0.00
En relación a los baños, se encuentra una gran participación en el mercado de unidades cuyo metro cuadrado oscila es menor a 172 m2 y poseen 2 habitaciones del 33.3%.
are_pre <- select(df_BC, areaconst, preciom, tipo, zona)
are_pre <- na.omit(are_pre)
ggplot(are_pre, aes(x = preciom, y = areaconst))+
geom_point(aes(color = tipo))+
ggtitle("Viviendas en Cali segun tipo, area y precio m2")+
labs(x = "Precio m2", y = "Area m2", color = "Tipo")+
theme_minimal()
Dada la concentración de los datos, los apartamentos poseen menor metro cuadrado construido a comparación de las casas. De igual manera, se constata de que entre mayor es el precio metro cuadrado, mayor será el área de la vivienda
ggplot(are_pre, aes(x = preciom, y = areaconst))+
geom_point(aes(color = tipo))+
ggtitle("Viviendas en Cali segun tipo, zona, area y precio m2")+
labs(x = "Precio m2", y = "Area m2", color = "Tipo")+
facet_wrap(~zona)+
theme_minimal()
En la zona oriente y sur existen viviendas de más de 1500 metros cuadrados; sin embargo, en la zona oriente el precio m2 es menor o igual a 250 mil pesos.
EL mercado inmobiliario de Cali se encuentra mayoritariamente comprendido por apartamentos; sin embargo, por zonas, las distinciones son diferentes. Las zonas centro y oriente tienen una preferencia marcada por casas, con más del 80% de las unidades habitacionales pertenecientes a esta tipología. En consecuencia, los lineamientos de marketing e identificación de nichos de mercado deben estar definidos por esta distinción, entre territorios.
Los barrios de mayor demanda por zona son: en zona norte están La flora, Acopi y Prados del norte; Zona sur, se encuentra Valle Lili, Ciudad Jardin y Pan; la zona oeste, esta Santa teresita, normandia y los cristales; por ultimo la zona oriente, se encuentra Alfonso López, ciudad cordoba y las ceibas.
Por otra parte, en cuanto al diseño de interiores, se desatacan unidades habitacionales de al menos 172 m2 construidos, 3 habitaciones, 2 baños y un parqueadero, siendo otro punto referente entre lo que los clientes potenciales buscan en el mercado.
El precio promedio metro cuadrado del mercado se encuentra en 434 mil pesos y el área en 330 metros cuadrados.
Todo lo anterior es necesario para poder abordar el mercado de gran manera y continuar con un papel significativo en él.