#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

1. Introducción

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.

2. Objetivos

  • 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.

3. Metodos

Los metodos a utilizar seran los siguientes:

  • Medidas de tendencia central
  • Medidas de dispersión
  • Gráficas descriptivas: boxplot
  • Tablas de frecuencia
  • Tablas de contingencia.

4. Descripcion Bases de datos

4.1 Características de la base de datos

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

4.2 Datos faltantes

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.

5. Resultados

5.1 Análisis de variables cualitativas

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

5.1.1 Estrato

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:

  • El mayor y el menor número de viviendas analizadas pertenecen a los estratos 5 y 3, respectivamente; y
  • El conjunto de viviendas analizadas se encuentra destinadas para la comercialización entre personas de ingreso alto.

5.1.2 Zonas

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%.

5.1.3 Barrios por zona de mayor demanda

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

5.1.4 Tipo

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%.

5.1.5 Tabla de contingencia: Zona vs Estrato

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.

5.1.6 Tabla de contingencia: Zona vs Tipo

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.

5.2 Análisis de variables cuantitativas: Preciom

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.

5.2.1 Medidas de tendencia central

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

5.2.2 Medidas de dispersión

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.

5.2.3 Análisis entre el precio metro cuadrado y categorias

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.

5.2.4 Análisis entre el precio metro cuadrado y diseño: habitaciones, baños y parqueaderos.

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.

6. Análisis de variables cuantitativas: Area

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.

6.1 Medidas de tendencia central

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

6.2 Medidas de dispersión

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.

6.3 Análisis entre el area metro cuadrado y categorias

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.

6.4 Análisis entre el area metro cuadrado y diseño: habitaciones, baños y parqueaderos.

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%.

6.5 Análisis area vs precio

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.

7. Conclusiones

  • 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.