1 INTRODUCCIÓN

El sector inmobiliario ha venido presentando un auge económico en los últimos años, sus ventas son representativas en el PIB nacional, asimismo, contribuye a la generación de empleos y transformación de la sociedad, lo que lo convierte en un pilar para la estabilidad económica. Cali es un ejemplo de desarrollo urbanístico, debido a su crecimiento poblacional, por lo que la demanda de viviendas ha presentado una tendencia alcista.

Por lo anterior, han surgido nuevas empresas dedicadas a prestar servicios del sector inmobiliario, como lo es el caso de la compañía B&C, con una trayectoria de 10 años en el mercado local.

Debido a la competencia, pero también a la posibilidad de expandir sus operaciones y consolidar sus ventas, B&C requiere de un análisis estadístico, que le permita identificar oportunidades de negocio, para que a través de las decisiones que los Directivos tomen, fundamentadas en la estadística descriptiva del presente informe, puedan posicionar mejor a la compañía en el mercado.

2 OBJETIVOS

Realizar un análisis descriptivo de los datos suministrados por B&C, de manera que se puedan caracterizar las viviendas que actualmente están a la venta, para generar estrategias que le permitan expandir su mercado y mejorar la eficiencia de asignación de recursos o margen de beneficios, a través del fortalecimiento de su nicho de mercado.

3 MÉTODOS

La elaboración del presente informe estadístico, partirá de los datos suministrados por la empresa y se ejecutará en tres fases que encierra el análisis exploratorio de datos; iniciando con un reconocimiento de los datos, seguido de un tratamiento, para posteriormente realizar un análisis de las variables más significativas para la empresa, desde donde se puede explorar la generación de valor.

3.1 Reconocimiento de los datos

Inicialmente, se describe de forma superficial la base de datos, para familiarizarse con las variables y su contenido, que en este caso corresponde a características de una muestra de viviendas, que estan a la venta y que se encuentran publicadas en la web:

data(vivienda_faltantes)
vf <- vivienda_faltantes
vf
## # A tibble: 8,330 × 13
##       id zona        piso estrato preciom areaconst parquea banios habitac tipo 
##    <dbl> <chr>      <dbl>   <dbl>   <dbl>     <dbl>   <dbl>  <dbl>   <dbl> <chr>
##  1  8312 Zona Oeste     4       6    1300       318       2      4       2 Apar…
##  2  8311 Zona Oeste     1       6     480       300       1      4       4 Casa 
##  3  8307 Zona Oeste    NA       5    1200       800       4      7       5 Casa 
##  4  8296 Zona Sur       2       3     220       150       1      2       4 Casa 
##  5  8297 Zona Oeste    NA       5     330       112       2      4       3 Casa 
##  6  8298 Zona Sur      NA       5    1350       390       8     10      10 Casa 
##  7  8299 Zona Sur       2       6     305       125       2      3       3 Apar…
##  8  8300 Zona Oeste    NA       5     480       280       4      4       4 Apar…
##  9  8286 Zona Sur      NA       5     275        74       1      2       3 Apar…
## 10  8287 Zona Sur       2       5     285       120       2      4       3 Apar…
## # ℹ 8,320 more rows
## # ℹ 3 more variables: barrio <chr>, longitud <dbl>, latitud <dbl>

Se observa que la base de datos suministrada para el estudio, consta de 13 variables y 8.330 registros, los cuales detallan las características de las viviendas, sin embargo, al verificar los nombres de las variables, no se visualizan que estén correctamente menciondas, lo cual puede ser debido al formato en el que se exportó la data o a errores del instrumento mediante el cual se recolectó la muestra.

En vista de lo anterior, se procede a renombrar las variables, para facilitar su reconocimiento:

renombrar_variables <- function(df, nuevas_variables) {
  df %>%
    rename_with(~nuevas_variables, everything())
}
vf1 <- renombrar_variables(vf, c("Id", "Zona", "Piso", "Estrato", "Precio", "Área", "Parqueaderos", "Baños", "Habitaciones", "Tipo", "Barrio", "Longitud", "Latitud"))
print(vf1)
## # A tibble: 8,330 × 13
##       Id Zona    Piso Estrato Precio  Área Parqueaderos Baños Habitaciones Tipo 
##    <dbl> <chr>  <dbl>   <dbl>  <dbl> <dbl>        <dbl> <dbl>        <dbl> <chr>
##  1  8312 Zona …     4       6   1300   318            2     4            2 Apar…
##  2  8311 Zona …     1       6    480   300            1     4            4 Casa 
##  3  8307 Zona …    NA       5   1200   800            4     7            5 Casa 
##  4  8296 Zona …     2       3    220   150            1     2            4 Casa 
##  5  8297 Zona …    NA       5    330   112            2     4            3 Casa 
##  6  8298 Zona …    NA       5   1350   390            8    10           10 Casa 
##  7  8299 Zona …     2       6    305   125            2     3            3 Apar…
##  8  8300 Zona …    NA       5    480   280            4     4            4 Apar…
##  9  8286 Zona …    NA       5    275    74            1     2            3 Apar…
## 10  8287 Zona …     2       5    285   120            2     4            3 Apar…
## # ℹ 8,320 more rows
## # ℹ 3 more variables: Barrio <chr>, Longitud <dbl>, Latitud <dbl>

A continuación, se clasifican los tipos de variables de trabajo:

Tipo <- sapply(vf1, class)
Tipo
##           Id         Zona         Piso      Estrato       Precio         Área 
##    "numeric"  "character"    "numeric"    "numeric"    "numeric"    "numeric" 
## Parqueaderos        Baños Habitaciones         Tipo       Barrio     Longitud 
##    "numeric"    "numeric"    "numeric"  "character"  "character"    "numeric" 
##      Latitud 
##    "numeric"

Es importante verificar los resultados anteriores, dado que el programa que se está utilizando para realizar el informe, clasifica las variables de acuerdo con su contenido, sin tener en cuenta su naturaleza, por tanto, se deben reclasificar correctamente, y para esto se tuvo que comparar con otras variables del mercado.

Se observa entonces que, la muestra contiene información de 8 variables cuantitativas y 4 cualitativas (descartando el id), las cuales se describen de la siguiente manera, según su definición operacional:

Descripción.v <- data.frame(
  Variable = c("Zona", "Piso", "Estrato", "Precio", "Área",  "Parqueaderos", "Baños", "Habitaciones", "Tipo", "Barrio", "Longitud", "Latitud"),
  Tipo.variabe = c("Cualitativa-Nominal", "Cualitativa-Ordinal" ,"Cualitativa-Ordinal", "Cuantitativa-Continua", "Cuantitativa-Continua", "Cuantitativa-Discreta", "Cuantitativa-Discreta", "Cuantitativa-Discreta", "Cualitativa-Categórica", "Cualitativa-Nominal", "Cuantitativa-Continua", "Cuantitativa-Continua"),
  Unidad.medida = c("Ninguna", "Ninguna", "Nivel", "Millones de COP", "Metros2", "Cantidad", "Cantidad", "Cantidad", "Ninguna", "Ninguna", "Grados" , "Grados"),
  Definición.variable = c("Sector de ubicación de la vivienda", "Nivel de altura en el que se encuentra la vivienda", "Nivel socioeconómico de la vivienda", "Valor de venta de la vivienda", "Extensión de la vivienda", "Número de parqueaderos con que cuenta la vivienda", "Número de baños con que cuenta la vivienda", "Número de habitaciones con que cuenta la vivienda", "Clasificación de la vivienda", "Lugar de ubicación de la vivienda", "Georeferenciación de la vivienda", "Georeferenciación de la vivienda")
)
print(Descripción.v)
##        Variable           Tipo.variabe   Unidad.medida
## 1          Zona    Cualitativa-Nominal         Ninguna
## 2          Piso    Cualitativa-Ordinal         Ninguna
## 3       Estrato    Cualitativa-Ordinal           Nivel
## 4        Precio  Cuantitativa-Continua Millones de COP
## 5          Área  Cuantitativa-Continua         Metros2
## 6  Parqueaderos  Cuantitativa-Discreta        Cantidad
## 7         Baños  Cuantitativa-Discreta        Cantidad
## 8  Habitaciones  Cuantitativa-Discreta        Cantidad
## 9          Tipo Cualitativa-Categórica         Ninguna
## 10       Barrio    Cualitativa-Nominal         Ninguna
## 11     Longitud  Cuantitativa-Continua          Grados
## 12      Latitud  Cuantitativa-Continua          Grados
##                                   Definición.variable
## 1                  Sector de ubicación de la vivienda
## 2  Nivel de altura en el que se encuentra la vivienda
## 3                 Nivel socioeconómico de la vivienda
## 4                       Valor de venta de la vivienda
## 5                            Extensión de la vivienda
## 6   Número de parqueaderos con que cuenta la vivienda
## 7          Número de baños con que cuenta la vivienda
## 8   Número de habitaciones con que cuenta la vivienda
## 9                        Clasificación de la vivienda
## 10                  Lugar de ubicación de la vivienda
## 11                   Georeferenciación de la vivienda
## 12                   Georeferenciación de la vivienda

3.2 Tratamiento de los datos

A continuación, se procede a validar la existencia de datos faltantes, de manera que se pueda evaluar la calidad de la muestra:

Registros <- nrow(vf1)
Faltantes <-  colSums(is.na(vf1))
Participación.Faltantes <- round(Faltantes/Registros,4)*100
datosparciales <- data.frame(Registros, Faltantes, Participación.Faltantes)
datosparciales
##              Registros Faltantes Participación.Faltantes
## Id                8330         3                    0.04
## Zona              8330         3                    0.04
## Piso              8330      2641                   31.70
## Estrato           8330         3                    0.04
## Precio            8330         2                    0.02
## Área              8330         3                    0.04
## Parqueaderos      8330      1606                   19.28
## Baños             8330         3                    0.04
## Habitaciones      8330         3                    0.04
## Tipo              8330         3                    0.04
## Barrio            8330         3                    0.04
## Longitud          8330         3                    0.04
## Latitud           8330         3                    0.04

De acuerdo con la tabla anterior, las variables piso y parqueadero son las que tienen mayores datos faltantes, represenatando el 31.70% y 19.28% del total de registros de cada variable respectivamente. Como la cantidad de datos faltantes en estas variables es alta, no se recomienda su eliminación, dado que conllevaría a una pérdida significativa de información.

Por otra parte, el resto de variables contiene entre 2 y 3 datos faltantes, por lo que en este caso se pueden descartar estos datos.

Se inicia entonces con la depuración de datos ausentes:

Primero, se partió del supuesto de que los datos faltantes en la variable parqueadero, puede ser por un problema de representación de datos, es decir, que la ausencia del atributo corresponde a que la vivienda no tiene parqueadero, por lo que se asumieron que eran ceros.

Adicionalmente, los datos faltantes de la variable piso, se reemplazaron por la mediana de la variable, para que no se distorsione en caso de la existencia de datos atípicos, no obstante, resulta prudente aclarar que, no se tiene información precisa de que esta variable represente el mismo atributo para casas como para apartamentos, dado que en el primero puede corresponder al número de pisos de la vivienda, mientras que en el segundo, al nivel en donde se encuentra ubicada la vivienda, por lo que termina siendo una variable generadora de ruido.

Finalmente, se eliminaron los registros de las demás variables que tenían sólo 2 y 3 datos faltantes.

vf2 <- vf1
vf2$Parqueaderos[is.na(vf2$Parqueaderos)] <- 0
median_piso <- median(vf2$Piso, na.rm = TRUE)
vf2$Piso[is.na(vf2$Piso)] <- median_piso
vf2<- vf2[!is.na(vf2$Id),]
faltantes2<- colSums(is.na(vf2))

A continuación, se verifica que no hayan quedado datos faltantes:

library(naniar)
gg_miss_var(vf2) + labs(x="Variables", y = "Datos Faltantes") +
  theme_grey()

El gráfico anterior, proporciona información acerca de las variables y la cantidad de datos no observados, por lo que se concluye que la base de datos ahora se encuentra completa en datos, sin embargo, aún se debe continuar con la limpieza.

Antes de obtener el dataset final, se analiza el contenido de las variables, para verificar que no hayan datos errados, que dificulten la manipulación de la base de datos.

A modo de ejemplo, la variable tipo se encuentra dividida en:

table(vf2$Tipo)
## 
## Apartamento APARTAMENTO        apto        casa        Casa        CASA 
##        5032          61          13          14        3195          12

En consecuencia, surge la necesidad de unificar contenidos de la variable, para que no se genere dispersión:

vf2 <- vf2 %>%
 dplyr::mutate(Tipo = replace(Tipo, Tipo == "APARTAMENTO", "Apartamento"),
                Tipo = replace(Tipo, Tipo == "apto", "Apartamento"),
                Tipo = replace(Tipo, Tipo == "casa", "Casa"),
                Tipo = replace(Tipo, Tipo == "CASA", "Casa"))
t.frecuencia <- table(vf2$Tipo)
t.frecuencia <- as.data.frame(t.frecuencia)
t.frecuencia$Var1 <- factor(t.frecuencia$Var1, levels = unique(t.frecuencia$Var1))
print(t.frecuencia)
##          Var1 Freq
## 1 Apartamento 5106
## 2        Casa 3221

La variable piso, mencionada anteriormente, fue ajustada bajo la siguiente regla de decisión: entendiendo que hay casas con más de 3 pisos, que normalemnte no se llamarían casas sino edificios, se concluye que, en realidad son apartamentos, indicando el número del piso en donde se encuentra. Por lo anterior, se procede a realizar el cambio de tipo de vivienda para las casas que registren más de 3 pisos:

vf3 <- vf2 %>%
  mutate(Tipo = if_else(Tipo == 'Casa' & Piso >= 4, "Apartamento", Tipo))
t.frecuencia1 <- table(vf3$Tipo)
t.frecuencia1 <- as.data.frame(t.frecuencia1)
t.frecuencia1$Var1 <- factor(t.frecuencia1$Var1,levels = unique(t.frecuencia1$Var1))
print(t.frecuencia1)
##          Var1 Freq
## 1 Apartamento 5180
## 2        Casa 3147

Finalmente, con la tabla anterior, se observa que, la variable tipo se divide en 5.180 registros para apartamentos y en 3.147 para casas.

También, se verifican que no hayan registros duplicados en la base datos:

v.duplicados<- vf3[duplicated(vf3),]
print(v.duplicados)
## # A tibble: 8 × 13
##      Id Zona     Piso Estrato Precio  Área Parqueaderos Baños Habitaciones Tipo 
##   <dbl> <chr>   <dbl>   <dbl>  <dbl> <dbl>        <dbl> <dbl>        <dbl> <chr>
## 1  8309 Zona O…     5       4    150    56            0     1            2 Apar…
## 2  8310 Zona O…     1       6   1600   463            4     6            3 Apar…
## 3  8313 Zona O…     7       6    525   137            2     3            3 Apar…
## 4  8314 Zona O…     7       6   1400   210            3     4            3 Apar…
## 5  8315 Zona O…     3       6    620   167            2     4            4 Apar…
## 6  8316 Zona N…     7       5    400   220            1     4            4 Apar…
## 7  8317 Zona O…     3       6   1100   290            4     4            3 Apar…
## 8  8318 Zona N…     3       4    580   295            2     5            5 Casa 
## # ℹ 3 more variables: Barrio <chr>, Longitud <dbl>, Latitud <dbl>

Se encontrarion 8 filas de valores duplicados, que es una inconsistencia en la recolección de la data, por lo que se procede con su eliminación para no generar ruido:

vf4 <- vf3[!duplicated(vf3),]
nrow(vf4[duplicated(vf4),])
## [1] 0

Ahora, también se encontró que los datos de ubicación de las viviendas mediante longitud y latitud no eran correctos en algunos casos, dado que no coincidían con las coordenadas geográficas de la ciudad de Cali, por lo que se procedió con su ajuste.

vf5 <- vf4

vf5$Longitud <- ifelse(vf4$Longitud < -1000, vf4$Longitud/1000, vf4$Longitud)

vf5$Latitud <- ifelse(vf4$Latitud > 100, vf4$Latitud/1000, vf4$Latitud)
vf5 <- data.frame(vf5, latitud_inicial = vf4$Latitud, longitud_inicial = vf4$Longitud, latitud_ajustada = vf5$Latitud, longitud_ajustada = vf5$Longitud)

plot_inicial <- ggplot(vf5, aes(x = longitud_inicial, y = latitud_inicial)) +
  geom_point(color = "red", size = 3, alpha = 0.7, shape = 16) +
  labs(title = "Coordenadas Iniciales",
       x = "Longitd",
       y = "Latitud") +
  theme_grey()

plot_ajustado <- ggplot(vf5, aes(x = longitud_ajustada, y = latitud_ajustada)) +
  geom_point(color = "green", size = 3, alpha = 0.7, shape = 1) +
  labs(title = "Coordenadas Ajustadas",
       x = "Longitud",
       y = "Latitud") +
  theme_grey()

grid.arrange(plot_inicial, plot_ajustado, ncol = 2)

Con los gráficos anteriores, se puede conocer el antes y después de la corrección en las coordenadas, notando que ahora las viviendas, se encuentran distribuidas en un plano similar al mapa de la ciudad.

Como complemento de lo anterior, se procede a verificar la distribución de las viviendas en el mapa de la ciudad, según las zonas en que se encuentran ubicadas:

    ggplot(vf5, aes(x = Longitud, y = Latitud, color = Zona)) +
      geom_point() +
      labs(title = "Distribución de viviendas por zona",
           x = "Longitud", y = "Latitud",
           color = "Zona") +
      theme_grey()

Se encuentra que, hay algunas viviendas que no se encuentran correctamente clasificadas en su zona, por lo que se debe verificar la data, para aclarar la ubicación adecuada, sin embargo, para efectos del presente informe, no se entrará a discutir este detalle, puesto que la mayoría de las viviendas si se encuentran apropiadamente asignadas en las zonas.

Finalmente, luego del tratamiento de datos, el número de registros del dataset quedó en 8.319 observaciones:

conteo <- table(vf5$Id)
numero_registros <- length(vf5$Id)
print(numero_registros)
## [1] 8319

3.3 Estadística descriptiva

A continuación, se presenta un análisis de las variables más relevantes:

Inicialmente, se realiza un análisis individual superficial, a través de diagramas de cajas y bigotes.

par(mfrow = c(1, 2))
boxplot(x = vf5$Piso, col="#00B2EE", main="Ditribución Variable Piso")
boxplot(x = vf5$Estrato, col="#CDAD00", main="Distribución Variable Estrato")

Al revisar la variable piso, se observa que presenta algunos datos atípicos, que pueden ser por errores en la recolección de la muestra, dado que como se mencionaba anteriormente, no es claro qué pretende medir la variable. Los datos atípicos corresponden a los puntos ubicados después de los bigotes. Por otra parte, la mediana de la variable piso se ubica en la mitad entre el cuartil inferior y el superior, lo que significa que posiblemente los datos están distribuidos uniformemente, asimismo, el tamaño de la caja, indica que los datos no presentan mayor dispersión, sin embargo, como los bigotes no tienen la misma longitud, es posible la presencia de asimetría o sesgo en la distribución de los datos.

Por el lado de la variable estrato, no presenta valores atípicos, su mediana se ubica en el cuartil superior, sin embargo, no representan mayor dispersión, dado que entre el cuartil 1 y cuartil 3 sólo hay un estrato de diferencia, asimismo, sus bigotes parecen tener la misma longitud, por lo que es probable que no haya mucho sesgo o asimetría.

Más adelante se complementará esta información, a través del análisis de histogramas.

par(mfrow = c(1, 2))
boxplot(x = vf5$Precio, col="#7FFF00", main="Ditribución Variable Precio")
boxplot(x = vf5$Área, col="aquamarine2", main="Ditribución Variable Área")

Al revisar la variable precio, se observa la presencia de muchos datos atípicos, no obstante, resulta necesario establecer que, los precios de las viviendas en ocasiones pueden llegar a ser muy subjetivos, de acuerdo con lo que el inmueble represente para el vendedor, por esta razón, aunque son valores atípicos, siguien siendo valores reales dentro de la muestra, por lo que se deben considerar para el estudio. Por otra parte, la mediana de la variable se ubica más cerca del cuartil inferior, por lo que los datos no están distribuidos uniformemente, también, la longitud de ambos bigotes es diferente, lo que representa la presencia de asimetría o sesgo en la distribución.

Por el lado de la variable área, también se presentan una cantidad considerable de valores atípicos, pero se pueden justificar debido a que la muestra contienen tanto apartamentos como casas, y estas últimas puede que no se encuentren ubicadas en condominios, por lo que su área puede ser dispersa o también la variable depende mucho de la zona en que se encuentre, dado que el precio del metro cuadrado puede ser menor en ciertas zonas y esto se aprovecha, para construir viviendas con mayor área. Por su parte, la mediana se ubica cerca al cuartil 1, por lo que los datos no están distribuidos uniformemente, también, la longitud de ambos bigotes es diferente, lo que representa la presencia de asimetría o sesgo en la distribución.

Más adelante se complementará esta información, a través del análisis de histogramas.

par(mfrow = c(1, 3))
boxplot(x = vf5$Parqueaderos, col="#B23AEE", main="Ditribución Variable Parqueaderos")
boxplot(x = vf5$Baños, col="#CD1076", main="Ditribución Variable Baños")
boxplot(x = vf5$Habitaciones, col="#C1CDC1", main="Ditribución Variable Habitaciones")

Al revisar las variables parqueaderos, baños y habitaciones, se observa que todas se expresan en la misma unidad de medida que son cantidad de atributos, si bien todas presentan valores atípicos, estos pueden ser por la variabilidad de los tipos de vivienda, es decir, las casas suelen tener mayor cantidad de estos atributos que los apartamentos, aún con lo anterior, para parqueaderos y habitaciones, la mediana se ubica cerca del cuartil inferior y la diferencia entre el cuartil 1 y cuartil 3 representa una unidad de atributo, por lo que no hay mucha variabilidad, asimismo, la longitud de los bigotes parecen similares en ambos costados, por lo que se espera que no haya mucha asimetría o sesgo. Para el caso de la variable baño, su mediana se ubica en la mitad del rango intercuartílico, por lo que los datos se distribuyen uniformemente, aunque la longitud de sus bigotes es diferente, por lo que es probable que si haya presencia de asimetría o sesgo.

Más adelante se complementará esta información, a través del análisis de histogramas.

Ahora se realiza un análisis más detallado de las variables.

Variable Piso:

Pasamos a los cuartiles de la variable:

summary(vf5$Piso) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   2.000   3.000   3.527   4.000  12.000

La moda es:

datamodap <- c(vf5$Piso)
moda <- function(x) {
    uniq <- unique(x)
    uniq[which.max(tabulate(match(x, uniq)))]
}
moda_valor <- moda(datamodap)
print(moda_valor)
## [1] 3

La desviación estándar es:

sd(vf5$Piso)
## [1] 2.190874

La curtosis es:

kurtosis(vf5$Piso)
## [1] 3.356909

La asimetría es:

skewness(vf5$Piso)
## [1] 1.808261
hist(vf5$Piso, prob = TRUE, col="#00B2EE", main="Histograma de N° de Piso de la vivienda", xlab="", ylab="Densidad")
abline(v=3, col="#EE6363",lwd=3)
abline(v=3.5, col="#EEC900",lwd=3)
legend("topright", lwd=c(3,3), lty=c(1,1), col=c("#EE6363","#EEC900"),
  legend=c("Mediana","Media"), cex=0.8)

La variable piso (ubicación y cantidad de pisos) presenta media de 3.5, mediana de 3 y moda de 3. Como la media es mayor que la moda y la mediana, se presenta asimetría positiva, es decir, hay más datos separados de la media hacia su derecha. Esto se corrobora con el indicador de asimetría que fue de 1.80, asimismo, su curtosis fue de 3.35, lo que representa que la distribución es leptocúrtica. Por otra parte, la desviación estándar es de 2.19, lo que también es sinónimo de dispersión.

Variable Estrato:

Pasamos a los cuartiles de la variable:

summary(vf5$Estrato) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.000   4.000   5.000   4.634   5.000   6.000
datamodae <- c(vf5$Estrato)
moda <- function(x) {
    uniq <- unique(x)
    uniq[which.max(tabulate(match(x, uniq)))]
}
moda_valor <- moda(datamodae)
print(moda_valor)
## [1] 5

La desviación estándar es:

sd(vf5$Estrato)
## [1] 1.029222

La curtosis es:

kurtosis(vf5$Estrato)
## [1] -1.107418

La asimetría es:

skewness(vf5$Estrato)
## [1] -0.1843226
hist(vf5$Estrato, prob = TRUE, col="#CDAD00", main="Histograma de Estrato de las viviendas", xlab="", ylab="Densidad") 
abline(v=5, col="#EE6363",lwd=3)
abline(v=4.6, col="#EEC900",lwd=3)
legend("topright", lwd=c(3,3), lty=c(1,1), col=c("#EE6363","#EEC900"),
  legend=c("Mediana","Media"), cex=0.8)

La variable estrato (nivel socioeconómico) presenta media de 4.6, mediana de 5 y moda de 5. Como la media es menor que la moda y la mediana, se presenta asimetría negativa, es decir, hay más datos separados de la media hacia su izquierda. Esto se corrobora con el indicador de asimetría que fue de -1.10, asimismo, su curtosis fue de -0.18, lo que representa que la distribución es platicúrtica. Por otra parte, la desviación estándar es de 1.02, lo que también es sinónimo de dispersión. Se puede observar también que, el menor estrato de las viviendas es el 3, el 50% de las viviendas se encuentran ubicadas entre el estrato 3 y 5, y el 25% de las viviendas en estrato 6.

Variable Precio:

Pasamos a los cuartiles de la variable:

summary(vf5$Precio) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    58.0   220.0   330.0   433.9   540.0  1999.0
datamodapr <- c(vf5$Precio)
moda <- function(x) {
    uniq <- unique(x)
    uniq[which.max(tabulate(match(x, uniq)))]
}
moda_valor <- moda(datamodapr)
print(moda_valor)
## [1] 350

La desviación estándar es:

sd(vf5$Precio)
## [1] 328.665

La curtosis es:

kurtosis(vf5$Precio)
## [1] 3.671372

La asimetría es:

skewness(vf5$Precio)
## [1] 1.849068
hist(vf5$Precio, prob = TRUE, col="#7FFF00", main="Histograma de Precio de viviendas", xlab="", ylab="Densidad") 
abline(v=330, col="#EE6363",lwd=3)
abline(v=433.9, col="#EEC900",lwd=3)
lines(density(vf5$Precio), col = "#8B7E66", lwd = 3)
legend("topright", lwd=c(3,3,3), lty=c(1,1,1), col=c("#EE6363","#EEC900","#8B7E66"),
  legend=c("Mediana","Media","Densidad"), cex=0.8)

La variable precio (millones de pesos) presenta media de 433, mediana de 330 y moda de 350. Como la media es mayor que la moda y la mediana, se presenta asimetría positiva, es decir, la cola a la derecha de la media es más larga que la de la izquierda. Esto se corrobora con el indicador de asimetría que fue de 1.84, asimismo, su curtosis fue de 3.67, lo que representa que la distribución es leptocúrtica. Por otra parte, la desviación estándar es de 3.28, lo que también es sinónimo de una mayor dispersión. Se puede observar también que, el 25% de las viviendas presentan precio de venta mayor a 540, mientras que el 50% tienen precio de venta menor o igual a 330.

Variable Área:

Pasamos a los cuartiles de la variable:

summary(vf5$Área) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    30.0    80.0   123.0   174.9   229.0  1745.0
datamodaa <- c(vf5$Área)
moda <- function(x) {
    uniq <- unique(x)
    uniq[which.max(tabulate(match(x, uniq)))]
}
moda_valor <- moda(datamodaa)
print(moda_valor)
## [1] 60

La desviación estándar es:

sd(vf5$Área)
## [1] 142.9641

La curtosis es:

kurtosis(vf5$Área)
## [1] 12.91382

La asimetría es:

skewness(vf5$Área)
## [1] 2.69336
hist(vf5$Área, prob = TRUE, col="aquamarine2", main="Histograma de Área de las viviendas", xlab="", ylab="Densidad") 
abline(v=123, col="#EE6363",lwd=3)
abline(v=174.9, col="#EEC900",lwd=3)
lines(density(vf5$Área), col = "#8B7E66", lwd = 3)
legend("topright", lwd=c(3,3,3), lty=c(1,1,1), col=c("#EE6363","#EEC900","#8B7E66"),
  legend=c("Mediana","Media","Densidad"), cex=0.8)

La variable área (metros cuadrados) presenta media de 174, mediana de 123 y moda de 60. Como la media es mayor que la moda y la mediana, se presenta asimetría positiva, es decir, la cola a la derecha de la media es más larga que la de la izquierda. Esto se corrobora con el indicador de asimetría que fue de 2.69, asimismo, su curtosis fue de 12.91, lo que representa que la distribución es leptocúrtica. Por otra parte, la desviación estándar es de 142, lo que también es sinónimo de una mayor dispersión. Se puede observar también que, el 25% de las viviendas presentan área mayor a 229, mientras que el 50% tienen área menor o igual a 123.

Variable Parqueaderos:

Pasamos a los cuartiles de la variable:

summary(vf5$Parqueaderos) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   1.000   1.000   1.482   2.000  10.000
datamodapa <- c(vf5$Parqueaderos)
moda <- function(x) {
    uniq <- unique(x)
    uniq[which.max(tabulate(match(x, uniq)))]
}
moda_valor <- moda(datamodapa)
print(moda_valor)
## [1] 1

La desviación estándar es:

sd(vf5$Parqueaderos)
## [1] 1.243158

La curtosis es:

kurtosis(vf5$Parqueaderos)
## [1] 5.42065

La asimetría es:

skewness(vf5$Parqueaderos)
## [1] 1.648124
hist(vf5$Parqueaderos, prob = TRUE, col="#B23AEE", main="Histograma de Parqueaderos", xlab="", ylab="Densidad") 
abline(v=1, col="#EE6363",lwd=3)
abline(v=1.482, col="#EEC900",lwd=3)
legend("topright", lwd=c(3,3), lty=c(1,1), col=c("#EE6363","#EEC900"),
  legend=c("Mediana","Media"), cex=0.8)

La variable parqueaderos (cantidad) presenta media de 1.4, mediana de 1 y moda de 1. Como la media es mayor que la moda y la mediana, se presenta asimetría positiva, es decir, hay valores más separados de la media a la derecha. Esto se corrobora con el indicador de asimetría que fue de 1.64, asimismo, su curtosis fue de 5.42, lo que representa que la distribución es leptocúrtica. Por otra parte, la desviación estándar es de 1.24, lo que representa una menor dispersión, dado que la mayoría de los datos se concentran cerca a la media, en este caso, en promedio, el número de parqueaderos se desvía de la media aproximadamente en 1.24 parqueaderos. Se puede observar también que, el 25% de las viviendas presentan más de 2 parqueaderos, mientras que el 50% tienen uno o no tienen parqueaderos.

Variable Baños:

Pasamos a los cuartiles de la variable:

summary(vf5$Baños) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   2.000   3.000   3.111   4.000  10.000
datamodab <- c(vf5$Baños)
moda <- function(x) {
    uniq <- unique(x)
    uniq[which.max(tabulate(match(x, uniq)))]
}
moda_valor <- moda(datamodab)
print(moda_valor)
## [1] 2

La desviación estándar es:

sd(vf5$Baños)
## [1] 1.42821

La curtosis es:

kurtosis(vf5$Baños)
## [1] 1.12711

La asimetría es:

skewness(vf5$Baños)
## [1] 0.9252097
hist(vf5$Baños, prob = TRUE, col="#CD1076", main="Histograma de Baños", xlab="", ylab="Densidad") 
abline(v=3, col="#EE6363",lwd=3)
abline(v=3.111, col="#EEC900",lwd=3)
legend("topright", lwd=c(3,3), lty=c(1,1), col=c("#EE6363","#EEC900"),
  legend=c("Mediana","Media"), cex=0.8)

La variable baños (cantidad) presenta media de 3.1, mediana de 3 y moda de 2. Como la media es ligeramente mayor que la moda y la mediana, de todas formas se presenta asimetría positiva, es decir, hay valores más separados de la media a la derecha. Esto se corrobora con el indicador de asimetría que fue de 0.92, asimismo, su curtosis fue de 1.12, lo que representa que la distribución es leptocúrtica. Por otra parte, la desviación estándar es de 1.42, lo que representa una menor dispersión, dado que la mayoría de los datos se concentran cerca a la media, en este caso, en promedio, el número de baños se desvía de la media aproximadamente en 1.4 baños. Se puede observar también que, el 25% de las viviendas presentan más de 4 baños, mientras que el 50% tienen 3 o menos baños.

Variable Habitaciones:

Pasamos a los cuartiles de la variable:

summary(vf5$Habitaciones) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   3.000   3.000   3.605   4.000  10.000
datamodah <- c(vf5$Habitaciones)
moda <- function(x) {
    uniq <- unique(x)
    uniq[which.max(tabulate(match(x, uniq)))]
}
moda_valor <- moda(datamodah)
print(moda_valor)
## [1] 3

La desviación estándar es:

sd(vf5$Habitaciones)
## [1] 1.459537

La curtosis es:

kurtosis(vf5$Habitaciones)
## [1] 3.984035

La asimetría es:

skewness(vf5$Habitaciones)
## [1] 1.634804
hist(vf5$Habitaciones, prob = TRUE, col="#C1CDC1", main="Histograma de Habitaciones", xlab="", ylab="Densidad") 
abline(v=3, col="#EE6363",lwd=3)
abline(v=3.605, col="#EEC900",lwd=3)
legend("topright", lwd=c(3,3), lty=c(1,1), col=c("#EE6363","#EEC900"),
  legend=c("Mediana","Media"), cex=0.8)

La variable habitaciones (cantidad) presenta media de 3.6, mediana de 3 y moda de 3. Como la media es ligeramente mayor que la moda y la mediana, de todas formas se presenta asimetría positiva, es decir, hay valores más separados de la media a la derecha. Esto se corrobora con el indicador de asimetría que fue de 1.63, asimismo, su curtosis fue de 3.98, lo que representa que la distribución es leptocúrtica. Por otra parte, la desviación estándar es de 1.45, lo que representa una menor dispersión, en este caso, en promedio, el número de habitaciones se desvía de la media aproximadamente en 1.45 baños. Se puede observar también que, el 25% de las viviendas presentan más de 4 habitaciones, mientras que el 50% tienen 3 o menos habitaciones.

Ahora pasamos a un análisis en conjunto de las variables anteriores:

data <- vf5[, 3:9]
corPlot(data, cex = 0.8, main = "Matriz de correlación")
## Warning in abbreviate(dimnames(ans)[[2L]], minlength = abbr.colnames):
## abreviatura utilizada con caracteres no ASCII

La matriz de correlación, mide el grado de relación lineal entre cada par de variables, cuyos resultados se ubican entre -1 y +1

Así, de acuerdo con las correlaciones anteriores, se resalta que, la variable Piso, prácticamente no se correlaciona con Precio, Parqueaderos y Baños, dado que el indicador da cercano a 0, mientras que con Estrato hay una correlación positiva débil y con Área y Habitaciones se presenta una correlación negativa débil.

La variable Estrato muestra una correlación positiva moderada frente a Precio, Parqueaderos y Baños.

La variable Precio muestra una correlación positiva moderada con Estrato, Área, Parqueaderos y Baños.

La variable Área muestra una correlación positiva moderada con Precio, Parqueaderos, Baños y Habitaciones.

La variable Parqueaderos muestra una correlación positiva moderada con Estrato, Precio, Área y Baños.

La variable Baños muestra una correlación positiva moderada con Estrato, Precio, Área, Parqueaderos y Habitaciones.

La variable Habitaciones muestra una correlación positiva moderada con Área y Baños

En términos generales, la mayor correlación se presentó entre las variables precio y área con un indicador de 0.69, es decir, cuando aumenta el área, también aumenta el precio de la vivienda. También se presentó una mayor correlación entre precio y baños con un resultado de 0.67 y entre precio y parqueaderos con un resultado de 0.64, sin embargo, al revisar la asociación lineal entre área y parqueaderos no es tán fuerte como entre área y baños o área y habitaciones, lo que conlleva a pensar que posiblemente se pueda presentar presencia de multicolinealidad, es decir, que tanto los baños como las habitaciones se encuentran dentro de la variable área, sin embargo, este tema no se detallará en el presente informe. Por otra parte, la relación lineal entre área y parqueaderos se puede soportar en que, para los apartamentos, los parqueaderos no hacen parte del área construida, es decir, tienden a ser atributos independientes.

En vista de las relaciones anteriores, se procede con el análisis de las variables que reflejan un moderada correlación, incluyendo en el estudio a las variables categóricas:

tipovivienda <- table(vf5$Tipo,vf5$Estrato)
tipovivienda = ggplot(vf5, aes(Estrato, fill=Tipo) ) +
  labs(title = "Tipo de vivienda x Estrato")+ylab("Cantidad") +
  theme(plot.title = element_text(size = rel(1.5), colour = "black"))

tipovivienda+geom_bar(position="dodge") + scale_fill_manual(values = alpha(c("#54FF9F", "#FFFF00"), 1)) +
  theme(axis.title.x = element_text(face="bold", size=10))

El estrato 5 es el nivel que representa una mayor oferta de viviendas, con mayor cantidad de apartamentos que de casas, seguido del estrato 4 y 6 con similares distribuciones de apartamento y casas. Por su parte, el estrato 3 es el nivel que presenta menor oferta de viviendas, en donde la cantidad de casas a la venta es mayor que los apartamentos. Así, se infiere que hay una mayor preferencia por las viviendas de estrato socioeconómico más alto.

tipovivienda = ggplot(vf5, aes(Zona, fill=Tipo) ) +
  labs(title = "Tipo de vivienda x Zona")+ylab("Cantidad") +
  theme(plot.title = element_text(size = rel(1.5), colour = "black"))

tipovivienda+geom_bar(position="stack") + scale_fill_manual(values = alpha(c("#4EEE94", "#EEEE00"), 1)) +
  theme(axis.title.x = element_text(face="bold", size=10))

Al verificar el tipo de vivienda de acuerdo con la zona de ubicación en la ciudad, se encuentra que, los apartamentos son el tipo de vivienda que más se ofertan para las zonas norte, oeste y sur, situación contraria ocurre para las zonas centro y oriente en donde se ofertan más las casas.

ggplot(vf5,mapping=aes(x=Tipo, y=Precio, fill=Tipo )) +
  geom_boxplot()+
  labs(title = "Precio x tipo de vivienda",
       x = "Tipo de vivienda",
       y = "Precio en millones $")+
  theme(plot.title = element_text(hjust = 0.5))

Al comparar los precios de las viviendas ofertadas, según el tipo de inmueble, se obtiene que las casas presentan un mayor precio de venta, dado que la mediana es mayor que en los apartamentos, asimismo, su cuartil 1 y 3 son mayores, lo que representa una mayor dispersión de viviendas en cuanto a precios. Por su parte, ambos tipos de vivienda presentan una mediana cercana al cuartil inferior, por lo que las distribuciones se encuentran sesgadas negativamente. Cabe resaltar que, en ambos casos se presentan valores atípicos, por lo que se debe buscar la características de estos inmuebles, a continuación se intenta responder al interrogante desde la segmentación de viviendas por zona y tipo de inmueble y su relación con el precio:

ggplot(vf5,mapping=aes(x=Tipo, y=Precio, fill=Zona )) +
  geom_boxplot()+
  labs(title = "Precio x tipo de vivienda y zona",
       x = "Tipo de vivienda",
       y = "Precio en millones $")+
  theme(plot.title = element_text(hjust = 0.5))

mediana_grupos <- aggregate(Precio ~ Zona + Tipo, data = vf5, FUN = median)
print(mediana_grupos)
##            Zona        Tipo Precio
## 1   Zona Centro Apartamento    155
## 2    Zona Norte Apartamento    250
## 3    Zona Oeste Apartamento    570
## 4  Zona Oriente Apartamento    116
## 5      Zona Sur Apartamento    248
## 6   Zona Centro        Casa    310
## 7    Zona Norte        Casa    390
## 8    Zona Oeste        Casa    665
## 9  Zona Oriente        Casa    233
## 10     Zona Sur        Casa    480

Los apartamentos concentran los mayores precios de ventas de las viviendas, especialmente en la zona oeste, en donde la mitad de los mismos, presentan precio de venta igual o mayor a 570 millones. Asimismo, la zona oriente es la que menor precio de venta refleja, con una mediana de 116 millones, seguido de la zona centro con una mediana de 155 millones. Por el lado de las zonas norte y sur, se encuentran que sus medianas son similares, 250 y 248 millones respectivamente.

En relación con los precios de las casas, se presenta un similar comportamiento que en los apartamentos, sin embargo, reflejan mayores precios en sus zonas, es decir, la zona oeste se destaca por ser la que mayor mediana de precio tiene con 665 millones, mientras que la zona oriente es la de menor precio con un 50% de viviendas con precio menor o igual a 233 millones.

ggplot(vf5,mapping=aes(x=Baños, y=Tipo, fill=Zona)) +
  geom_boxplot()+
  labs(title = "Baños x  tipo de vivienda y zona",
       x = "Cantidad",
       y = "Tipo de vivienda")+
  theme(plot.title = element_text(hjust = 0.5))

mediana_grupos2 <- aggregate(Baños ~ Zona + Tipo, data = vf5, FUN = median)
print(mediana_grupos2)
##            Zona        Tipo Baños
## 1   Zona Centro Apartamento     2
## 2    Zona Norte Apartamento     2
## 3    Zona Oeste Apartamento     3
## 4  Zona Oriente Apartamento     2
## 5      Zona Sur Apartamento     2
## 6   Zona Centro        Casa     3
## 7    Zona Norte        Casa     3
## 8    Zona Oeste        Casa     4
## 9  Zona Oriente        Casa     3
## 10     Zona Sur        Casa     4

Las casas ubicadas en la zona oeste y sur tienen una mediana de 4 baños, mientras que el 50% de las casas de las otras zonas, tienen 3 baños o menos.

En relación con los apartamentos, para los que se encuentran ubicados en la zona oeste, tienen una mediana de 3 baños, el resto de zonas presentan mediana de 2 baños.

ggplot(vf5,mapping=aes(x=Parqueaderos, y=Tipo, fill=Zona )) +
  geom_boxplot()+
  labs(title = "Parqueaderos x tipo de vivienda y zona",
       x = "Cantidad",
       y = "Tipo de vivienda")+
  theme(plot.title = element_text(hjust = 0.5))

mediana_grupos3 <- aggregate(Parqueaderos ~ Zona + Tipo, data = vf5, FUN = median)
print(mediana_grupos3)
##            Zona        Tipo Parqueaderos
## 1   Zona Centro Apartamento            0
## 2    Zona Norte Apartamento            1
## 3    Zona Oeste Apartamento            2
## 4  Zona Oriente Apartamento            0
## 5      Zona Sur Apartamento            1
## 6   Zona Centro        Casa            1
## 7    Zona Norte        Casa            1
## 8    Zona Oeste        Casa            2
## 9  Zona Oriente        Casa            0
## 10     Zona Sur        Casa            2

Las casas ubicadas en la zona oeste y sur tienen una mediana de 2 parqueaderos, mientras que en la zona oriente la mitad de las casas no cuentan con parqueaderos. Por su parte, las zonas centro y norte tienen una mediana de un parqueadero.

En relación con los apartamentos, la zona oeste es la que mayor mediana tiene con 2 parqueaderos, seguido por las zonas norte y sur con una mediana de un parqueadero, mientras que el 50% de los apartamentos en las zonas centro y oriente no cuentan con parqueaderos.

ggplot(vf5, aes(x = Área, y = Precio, color= factor(Estrato))) +
  geom_point() +
  facet_wrap(~ Estrato) +
  stat_smooth(method = "loess", formula = y ~ x) +
  scale_x_continuous(labels = scales::number_format(scale = 2, accuracy = 2, big.mark = ",")) +
  scale_y_continuous(labels = scales::number_format(scale = 2, accuracy = 2, big.mark = ","))+
 labs(title = "Precio x Área y Estrato")

En todos los estratos, hay una relación directa entre precio y área, la cual es mas prolongada en los estratos 5 y 6, y menos dispersa en los estratos 3 y 4, lo que significa que a mayor estrato, en promedio mayor es el precio de venta, pero esto se da porque las casas ubicadas en mayores estratos, tienden a tener un mayor área, que se puede observar a continuación:

ggplot(vf5,mapping=aes(x=Tipo, y=Área, fill=Zona )) +
  geom_boxplot()+
  labs(title = "Área x Tipo y Zona",
       x = "Tipo de vivienda",
       y = "Área de vivienda en mts2")+
  theme(plot.title = element_text(hjust = 0.5))

El gráfico anterior permite distinguir que las casas presentan mayor mediana de área para todas las zonas frente a los apartamentos, comportamiento similar cuando se estudiaron los tipos de vivienda y zona en función del precio, por esto se aprecia la relación directa entre precio y área. Además, permite deducir que, las zonas oeste y sur son las que mayores niveles de estratos tienen para la oferta de viviendas, lo cual se corrobora con la siguiente tabla de medianas:

mediana_grupos4 <- aggregate(Estrato ~ Zona, data = vf5, FUN = median)
print(mediana_grupos4)
##           Zona Estrato
## 1  Zona Centro       3
## 2   Zona Norte       4
## 3   Zona Oeste       6
## 4 Zona Oriente       3
## 5     Zona Sur       5

En vista de lo anterior, se comienza a vislumbrar un mayor precio de las viviendas en función del área y estrato:

ggplot(vf5, aes(x = Área, y = Precio, color= factor(Zona))) +
  geom_point() +
  facet_wrap(~ Zona) +
  stat_smooth(method = "loess", formula = y ~ x) +
  scale_x_continuous(labels = scales::number_format(scale = 2, accuracy = 2, big.mark = ",")) +
  scale_y_continuous(labels = scales::number_format(scale = 2, accuracy = 2, big.mark = ","))+
 labs(title = "Precio x Área y Zona")

De acuerdo con las zonas de ubicación de las viviendas, la sur es la que presenta mayor área y por tanto mayor precio de venta, seguido de las zonas norte y oeste, mientras que las zonas centro y oriente tienen menor dispersión de área y precio. Lo anterior se puede justificar en que hay una importante concentración de casas en las zonas sur y norte, mientras que en la zona oeste predominan los apartamentos, por tal motivo estas zonas pueden gozar de mayores áreas y estratos, entre tanto, las zonas centro y oriente no deben tener mayores áreas, dado que su precio no crece tanto en función del área.

ggplot(vf5, aes(x = Área, y = Precio, color= factor(Tipo))) +
  geom_point() +
  facet_wrap(~ Tipo) +
  stat_smooth(method = "loess", formula = y ~ x) +
  scale_x_continuous(labels = scales::number_format(scale = 2, accuracy = 2, big.mark = ",")) +
  scale_y_continuous(labels = scales::number_format(scale = 2, accuracy = 2, big.mark = ","))+
 labs(title = "Precio x Área y Tipo")

El gráfico anterior muestra que, la relación entre precio y área es mayor en las viviendas tipo casas que en apartamentos, esto se debe a que se valoran más las extensiones de las casas, dado que se le pueden crear más atributos en la construcción, tales como habitaciones, baños, parqueaderos, entre otros, mientras que para los apartamentos hay una limitación por el espacio, no obstante, quizás su relación de área precio se pude soportar mejor con el estrato:

viviendas.tipo <- split(vf5, f=vf5$Tipo)
ggplot(viviendas.tipo[["Apartamento"]], aes(x = Área, y = Precio, color= factor(Estrato))) +
  geom_point() +
  facet_wrap(~ Estrato) +
  stat_smooth(method = "loess", formula = y ~ x) +
  scale_x_continuous(labels = scales::number_format(scale = 2, accuracy = 2, big.mark = ",")) +
  scale_y_continuous(labels = scales::number_format(scale = 2, accuracy = 2, big.mark = ","))+
 labs(title = "Precio x Área x Estrato y Tipo(Apartamento)")

viviendas.tipo <- split(vf5, f=vf5$Tipo)
ggplot(viviendas.tipo[["Casa"]], aes(x = Área, y = Precio, color= factor(Estrato))) +
  geom_point() +
  facet_wrap(~ Estrato) +
  stat_smooth(method = "loess", formula = y ~ x) +
  scale_x_continuous(labels = scales::number_format(scale = 2, accuracy = 2, big.mark = ",")) +
  scale_y_continuous(labels = scales::number_format(scale = 2, accuracy = 2, big.mark = ","))+
 labs(title = "Precio x Área x Estrato y Tipo(Casa)")

De acuerdo con lo anterior, el precio de los apartamentos aumenta a medida que se incrementa el área, pero a la vez si también se encuentra en un estrato mayor, la relación se refleja más en los estratos 5 y 6, mientras que la dispersión es menor en los estratos 3 y 4, especialmente en el 3, en donde el precio crece lentamente en función del área.

Por el lado de las casas, la relación se fortalece más cuando el área aumenta en estratos mayores, es decir, las casas tienden a tener un mayor precio de venta, pero cuando se está en estratos 3 y 4 el precio es menos disperso en función del área, especialmente en el estrato 3 en donde también el precio crece lentamente.

4 RESULTADOS

De acuerdo con el estudio anterior, se pueden destacar los siguientes aspectos:

  • Las ventas de viviendas abarcan los estratos del 3 al 6, concentrando mayores cantidad de inmuebles tipo apartamentos que casas, de manera que se observa más preferencias por los apartamentos, aunque en precios, las casas tienden a presentar mayores valores.

  • La variable piso, por no tener bien definido su objetivo de medición, no es apta para establecer análisis, dado que termina siendo generadora de ruido por la presencia de datos atípicos. Por esta razón tampoco se correlaciona moderadamente con las demás variables. En cambio, la variable precio está linealmente correlacionada con el área de las viviendas y a la vez con el estrato socioeconómico.

  • La mayor cantidad de apartamentos se distribuyen entre los estratos 4 al 6 y en las zonas norte, oeste y sur, mientras que las casas se concentran más en el estrato 3 y en las zonas centro y oriente.

  • Las dos variables cuantitativas continuas; precio y área, presentan una distribución de datos con asimetría positiva, curtosis platicúrtica y una significativa dispersión en los datos, debido a la presencia de valores atípicos, que no fueron excluidos de la muestra, dado que pueden representar datos reales basados en otros factores para definir el precio de la vivienda.

  • Las zonas oeste y sur son las de mayor valorización para las casas, dado que tienden a presentar mayores precios de venta en sus viviendas, mientras que la zona oeste es la de mayor valoraización para los apartamentos, de igual modo, la zona oriente para ambos tipos de vivienda es la que presenta en promedio un menor precio de venta.

  • Si bien el área de la vivienda representa un mayor precio de venta del inmueble, también se considera que la cantidad de baños y habitaciones influyen en el precio, pero es probable que se deba a que para calcular el precio por metro cuadrado, se encuentren implícitas estas dos variables, por lo que se requiere de otro estudio, para determinar la incidencia real en el precio, caso contrario ocurre con la cantidad de parqueaderos, en donde se observa que entre más parqueaderos tenga también será mayor el precio de venta.

  • Las casas tienden a tener más parqueaderos si se encuentran ubicas en las zonas oeste y sur, mientras que los apartamentos si se encuentran ubicados en la zona oeste, de resto, las otras zonas cuentan con mayores restricciones para este atributo, razón por la cual, también se puede afirmar que la cantidad de parqueaderos hace que el precio de venta suba.

  • En términos generales, las casas concentran un mayor precio de venta en función del área, mientras que los apartamentos en función del área y la zona, que a su vez depende del estrato socioeconómico; las casas de la zona sur y oeste son las que tienen mayor área y mayor precio de venta, mientras que los apartamentos en la zona oeste son los de mayor área, aunque en menor proporción que en las casas, pero también presentan los precios de venta más altos.

  • Prácticamente los apartamentos de la zona norte y sur, tienden a contar con similares precios de venta, similar cantidad de baños y parqueaderos, en otras palabras, cuando de apartamentos se trata, casi que resulta indiferente si se encuentran ubicados en el norte o en el sur de la ciudad, para determinar su precio de venta.

  • La variable barrio no fue tenida en cuenta para el presente informe, dado que al representar gráficamente la ubicación de las viviendas de la muestra, se encontró que algunos datos se pasaban de una zona a otra, por lo que estos registros no estaban clasificados adecuadamente y asimismo, podrían generar ruido a través de la variable barrio, dado que este atributo es muy disperso; la ciudad de cali cuenta con más de 250 barrios.

5 DISCUSIÓN

El trabajo anterior se enfocó en estudiar patrones de comportamiento, para las diferentes variables recolectadas a través de una base de datos web, en donde los propietarios de viviendas, suelen publicar clasificados acerca de las características de los inmuebles, incluyendo el precio de venta.

Con base en lo anterior, desde el inicio del análisis, se encontró que la muestra no estaba bien representada, por tener problemas de sesgo, esto tiene que ver con la calibración del instrumento al momento de recolectar los datos, dado que le permite al usuario poner los valores que desee sin seguir unas reglas de clasificación, lo que conlleva a demorar el proceso de estudio, por tener que acudir al ajuste de variables.

Así, se comprueba que los resultados de cualquier investigación estadística, depende de la calidad de los datos suministrados, que para el estudio en mención, se tuvo que tratar con aproximaciones y modificaciones en algunas de las variables; Tipo, Parqueaderos, Piso, Latitud y Longitud, lo que termina condicionando los hallazgos al tipo de adecuación de los datos realizados.

Posterior a la limpieza de los datos, se realizó el análisis descriptivo, encontrando novedades relevantes como la identificación de preferencias por apartamentos o casas de acuerdo con las zonas de la ciudad, lo que podría definir una clara tendencia de valorización en las casas según las zonas con mayor área construida, y en los apartamentos además del área construida, involucrando el estrato socioeconómico, no obstante, también es necesario destacar que, las cinco zonas comparadas no presentaban la misma cantidad de observaciones para el análisis, es decir, las muestras estaban desbalanceadas, por lo que se sugiere realizar otro estudio, que incluya inferencia estadística, para corroborar los patrones hallados para cada una de las categorías revisadas.

Pese a las limitaciones de la data, al verificar los diagramas de cajas y bigotes, al igual que los histogramas, se pudo evidenciar la distribución asimétrica y platicúrtica en la mayoría de variables, así como la variabilidad en los datos, que en general presentó mayor dispersión para las variables de estudio Precio y Área.

También resulta indispensable conocer que los precios de las viviendas, normalmente estan relacionados con atributos propios de cada inmueble; Parqueaderos, Baños, Habitaciones, pero con los cálculos realizados, se demostró que sólo con el Área, Estrato y Zona se puede representar mejor la asociación con la variable Precio.

Por otra parte, al comparar las medianas de todas las variables y utilizando el tipo de vivienda como factor, se pudo demostrar que pese a que tanto apartamentos como casas, tienen similares características en cuanto al contenido de atributos, dependiendo de la zona en que se encuentren ubicadas, su precio será mayor o menor, resaltando que la zona de menor precio para cualquier tipo de vivienda es la zona oriente, mientras que la de mayor precio, para cualquier tipo es la zona oeste, resultados que están acorde con la realidad del sector inmobiliario en la ciudad.

Por último, resulta necesario aclarar que, el estudio no tuvo en cuenta otros factores que pueden incidir en el precio de las viviendas, como por ejemplo, si está en condominio o cerca de centros comerciales, vías principales, clínicas, universidades, colegios, parques, entre otros, es decir, su entorno, que es al final el que define el nivel de valorización por ubicación del inmueble. Si bien es posible que muchas de las viviendas que se analizaron tengan algunos de estos factores, no se identificaron, dado que no fueron suministrados en la muestra.

6 CONCLUSIONES

El mercado inmobiliario en la ciudad de Cali, representa una oportunidad para que las empresas dedicadas a este sector, puedan mejorar sus beneficios, partiendo de la asignación de recursos acorde con las necesidades de los clientes y los intereses de la empresa. La variabilidad de precios, muestra que hay mucho mercado por abarcar, sin embargo, facilita la aplicación de estrategias de venta, teniendo en cuenta el conocimiento del sector y de la distribución de las viviendas.

Así, de acuerdo con los hallazgos del presente informe, se recomienda a B&C desarrollar las siguientes estrategias:

  • Aunar esfuerzos en la venta de viviendas en las zonas oeste y sur, dado que se definen como las de mayor valorización, por estar cerca de sitios de interés, lo que conlleva a ser más anheladas por los clientes, especialmente las casas para la zona sur y los apartamentos para la zona oeste, puesto que estas zonas se encuentran posicionadas en la ciudad, específicamente por tener los estratos socioeconómicos más altos. Cabe resaltar que, este planteamiento va dirigido a un determinado grupo de clientes, que cuenta con el nivel de ingresos suficientes para adquirir las viviendas del sector.

  • Ahora, también debido a la variabilidad de los datos, se deduce que hay posibilidades de poder compensar ingresos, a través de la venta de viviendas en estratos inferiores, no obstante, en este caso los beneficios se maximizarían vía cantidad de viviendas vendidas, pero en todo caso, permitiría ampliar la base de clientes, facilitando el accesos a viviendas de todos los estratos y zonas de la ciudad.

  • Crear su propia base de datos de viviendas para la venta, segmentando por variables de interés como las que influyen directamente en el precio de venta, que se mencionaron en la última parte de las discusiones, dado que de esta manera, se podrá estar actualizando con facilidad el estudio estadístico, monitoreando las preferencias de los clientes, debido a que el mercado es dinámico y responde a variaciones en factores como la ubicación de la vivienda.

  • Realizar un estudio de la zona sur, para descubrir otros factores asociados al nivel de valorización que han tenido las viviendas, dado que se presume que pueda ser porque la ciudad está creciendo hacia ese sector, lo que con el tiempo llevará a que el precio por metro cuadrado se incremente.

  • Se podría pensar en crear un programa de referidos, en donde se le reconozca un beneficio a los clientes que permitan conectar con otros clientes, para que así, se amplíe la base de viviendas que se administra para la venta, lo que permite obtener mayores utilidades, a través del incremento del número de inmuebles vendidos.

  • Generar valor agregado para los clientes, ofreciendo la posibiliad de asesorarlos y acompañarlos en los trámites notariales y de registro para las partes relacionadas (comprador y vendedor), que en ocasiones llegan a ser confusos y engorrosos, por lo que mediante el pago de este servicio, se puede ampliar el portafolio del mismo y así generar un nuevos ingresos.

  • Finalmente, a largo plazo, se podría sacar provecho del conocimiento de la zona centro, puesto que si bien no es una zona de alta valorización en el momento, a futuro se podría presentar por tener bastante comercio, lo que conlleva a que muchas viviendas sean utilizadas para convertirlas en locales comerciales y con esto el precio tendería a incrementarse.

7 ANEXOS

Los códigos ejecutados en el programa R, para realizar el presente informe, se pueden encontrar en el siguiente enlace: https://rpubs.com/cdescobara/1150624