Informe de Análisis del mercado inmobiliario en Cali para la empresa B&C

Introducción

En este informe se presenta un análisis descriptivo de datos inmobiliarios para la empresa B&C, con el fin de identificar tendencias y patrones que sean de valor para la compañía. El informe estadístico tiene la finalidad de proporcionar información que aporte en temas relevantes para el secotr, como son el precio de las viviendas, el tipo de mayor interés para la población, las características más apetecidas al momento de adquirir vivienda y la relación de estas características con la ubicación y el precio de las viviendas. La base de datos proporcionada cuenta con atributos numéricos de precio y área construida, también con campos que detallan su ubicación como son la zona y el barrio, y con atributos que denotan sus características, tales como número de habitaciones, baños y parqueaderos. El informe se encuentra organizado de la siguiente forma: inicia con el planteamiento de los objetivos, continua con una descripción estadística general de toda la base de datos, posteriormente se dividen los registros en dos conjuntos de datos según el tipo de vivienda (apartamento o casa), continua con una imputación de datos basada en el promedio de cada tipo para completar los registros que tienen faltantes, se realiza un análisis estadístico descriptivo de las variables categóricas y numéricas para cada tipo de vivienda, se presenta posteriormente un resumen de los resultados y termina el informe con unas conclusiones.

Objetivos

Objetivo Principal

Realizar un análisis descriptivo de datos inmobiliarios para la empresa B&C (Bienes y Casas), con el fin de identificar tendencias y patrones que aporten al negocio.

Objetivos específicos

  1. Proporcionar información sobre los tipos de viviendas más vendidos en Cali.
  2. Reconocer las características más buscadas de las viviendas en Cali.
  3. Suministrar información sobre los precios según las zonas en Cali.

Métodos

Base de Datos

La Base de Datos (BD) utilizada para este informe se denomina “vivienda_faltantes.cvs”. Esta BD contiene 8327 registros de viviendas, los cuales contienen atributos numéricos de precio y área construida en metros cuadrados, atributos sobre la ubicación de las viviendas, como son: la zona, el barrio, el piso y coordenadas geográficas de longitud y latitud, y también variables categóricas tales como el estrato y el número de habitaciones, baños y parqueaderos. A continuación, se presenta un resumen estadístico descriptivo para las variables numéricas.

library(readr)
## Warning: package 'readr' was built under R version 4.3.1
vivienda_faltantes <- read_csv("F:/Maestria_Ciencia_Datos_Javeriana/MetodosSimulacionnEstadistica/Actividad1/vivienda_faltantes.csv")
## Rows: 8330 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (3): zona, tipo, barrio
## dbl (10): id, piso, estrato, preciom, areaconst, parquea, banios, habitac, l...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
summarytools::descr(vivienda_faltantes)
## Non-numerical variable(s) ignored: zona, tipo, barrio
## Descriptive Statistics  
## vivienda_faltantes  
## N: 8330  
## 
##                     areaconst    banios   estrato   habitac        id   latitud    longitud
## ----------------- ----------- --------- --------- --------- --------- --------- -----------
##              Mean      174.99      3.11      4.63      3.61   4163.99    970.37   -21845.13
##           Std.Dev      142.95      1.43      1.03      1.46   2403.93   1539.16    34503.90
##               Min       30.00      0.00      3.00      0.00      1.00      3.33   -76576.00
##                Q1       80.00      2.00      4.00      3.00   2082.00      3.39   -76506.00
##            Median      123.00      3.00      5.00      3.00   4164.00      3.45      -76.54
##                Q3      229.00      4.00      5.00      4.00   6246.00   3367.00      -76.52
##               Max     1745.00     10.00      6.00     10.00   8319.00   3497.00      -76.46
##               MAD       84.51      1.48      1.48      1.48   3086.77      0.10        0.03
##               IQR      149.00      2.00      1.00      1.00   4163.00   3363.61    76429.48
##                CV        0.82      0.46      0.22      0.40      0.58      1.59       -1.58
##          Skewness        2.69      0.92     -0.18      1.64      0.00      0.96       -0.95
##       SE.Skewness        0.03      0.03      0.03      0.03      0.03      0.03        0.03
##          Kurtosis       12.90      1.12     -1.11      3.99     -1.20     -1.07       -1.09
##           N.Valid     8327.00   8327.00   8327.00   8327.00   8327.00   8327.00     8327.00
##         Pct.Valid       99.96     99.96     99.96     99.96     99.96     99.96       99.96
## 
## Table: Table continues below
## 
##  
## 
##                     parquea      piso   preciom
## ----------------- --------- --------- ---------
##              Mean      1.84      3.77    434.24
##           Std.Dev      1.13      2.62    329.02
##               Min      1.00      1.00     58.00
##                Q1      1.00      2.00    220.00
##            Median      2.00      3.00    330.00
##                Q3      2.00      5.00    540.00
##               Max     10.00     12.00   1999.00
##               MAD      1.48      1.48    209.05
##               IQR      1.00      3.00    320.00
##                CV      0.61      0.69      0.76
##          Skewness      2.32      1.28      1.85
##       SE.Skewness      0.03      0.03      0.03
##          Kurtosis      8.29      1.05      3.66
##           N.Valid   6724.00   5689.00   8328.00
##         Pct.Valid     80.72     68.30     99.98

Análisis de Datos Faltanntes (NA)

Del resumen anterior es posible apreciar que los atributos de número de parqueaderos y piso presentan una cantida considerable de datos NA, por lo que se realiza una búsqueda y cuantificación de los datos faltantes en todo la BD.

faltantes <- colSums(is.na(vivienda_faltantes))
faltantes
##        id      zona      piso   estrato   preciom areaconst   parquea    banios 
##         3         3      2641         3         2         3      1606         3 
##   habitac      tipo    barrio  longitud   latitud 
##         3         3         3         3         3

Se presenta a continuación, una visualización de los datos faltantes.

# install.packages("naniar")
library(naniar)
## Warning: package 'naniar' was built under R version 4.3.1
gg_miss_var(vivienda_faltantes)

# install.packages("mice")
library(mice)
## Warning: package 'mice' was built under R version 4.3.1
## 
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
## 
##     filter
## The following objects are masked from 'package:base':
## 
##     cbind, rbind
grafico <-md.pattern(vivienda_faltantes, rotate.names = TRUE)

De la última visualización se obtiene que existen 2 registros con sólo valores nulos y un registro que tiene solamente el precio, por lo anterior, se hace necesario eliminar esos 3 registros.

vivienda_faltantes <- vivienda_faltantes %>%
  filter(id != "NA")

Se vuelve a graficar para verificar el borrado de registros.

grafico <-md.pattern(vivienda_faltantes, rotate.names = TRUE)

Normalización de los datos

Se realiza una verificación de los valores únicos por atributo.

zona = unique(vivienda_faltantes$zona)
zona
## [1] "Zona Oeste"   "Zona Sur"     "Zona Norte"   "Zona Oriente" "Zona Centro"
barrio = unique(vivienda_faltantes$barrio)
#barrio

El atributo de “zonas” no presenta inconsistencias respecto a valores únicos. Para el caso de “barrios” Existen 436 registros únicos, en los cuales se aprecia inconsistencia en el uso de caracteres especiales, uso de mayúsculas y minínisculas, numeración en diferentes formatos e inconsistencia en los nombres al usar los artículos determinados como “el” o “la” antes del nombre.En este informe no se hará uso de este atributo en el análisis de datos debio a que no fue incluido en el alcance de la consultoria, por lo que sólo se presenta el resumen del hallazgo.

tipo = unique(vivienda_faltantes$tipo)
tipo
## [1] "Apartamento" "Casa"        "APARTAMENTO" "casa"        "CASA"       
## [6] "apto"

Se identifican sólo dos tipos de vivienda en la BD: Apartamento o Casa, sin embargo, se aprecia inconsistencia en los nombres y 3 valores únicos distintos por tipo, por lo que se debe proceder con la corrección para que queden sólo 1 valor por tipo de vivienda.Se realzia primero la correción para tipo “Apartamento”.

vivienda_faltantes$tipo[vivienda_faltantes$tipo == 'APARTAMENTO'] <- 'Apartamento'
vivienda_faltantes$tipo[vivienda_faltantes$tipo == 'apto'] <- 'Apartamento'

Se realiza la correción para el tipo “Casa”.

vivienda_faltantes$tipo[vivienda_faltantes$tipo == 'casa'] <- 'Casa'
vivienda_faltantes$tipo[vivienda_faltantes$tipo == 'CASA'] <- 'Casa'

Se verifican que se hayan realziado los cambios.

tipo_corregido = unique(vivienda_faltantes$tipo)
tipo_corregido
## [1] "Apartamento" "Casa"

Análisis de Atributos Cualitativos Nominales de: Tipo y Zona

Este análisis se realiza en primera instancia para todo el conjunto de datos. ### Tipo de vivienda

t=table(vivienda_faltantes$tipo)
summarytools::freq(vivienda_faltantes$tipo, cumul = FALSE)
## Frequencies  
## vivienda_faltantes$tipo  
## Type: Character  
## 
##                     Freq   % Valid   % Total
## ----------------- ------ --------- ---------
##       Apartamento   5106     61.32     61.32
##              Casa   3221     38.68     38.68
##              <NA>      0                0.00
##             Total   8327    100.00    100.00
# Tipo Vivienda Gráfico
lbs=unique(vivienda_faltantes$tipo)
pct=round(t/sum(t)*100)
labs=paste(lbs, pct)
labs=paste(labs, "%", sep = " ") 
pie(t, labels=labs)

Zona

t=table(vivienda_faltantes$zona)
summarytools::freq(vivienda_faltantes$zona, cumul = FALSE)
## Frequencies  
## vivienda_faltantes$zona  
## Type: Character  
## 
##                      Freq   % Valid   % Total
## ------------------ ------ --------- ---------
##        Zona Centro    124      1.49      1.49
##         Zona Norte   1922     23.08     23.08
##         Zona Oeste   1204     14.46     14.46
##       Zona Oriente    351      4.22      4.22
##           Zona Sur   4726     56.76     56.76
##               <NA>      0                0.00
##              Total   8327    100.00    100.00
# Zona Gráfico
lbs=c("Zona Centro","Zona Norte","Zona Oeste","Zona Oriente","Zona Sur")
pct=round(t/sum(t)*100)
labs=paste(lbs, pct)
labs=paste(labs, "%", sep = " ") 
pie(t, labels=labs)

Análisis Atributos Cualitativos Ordinales: Estrato, piso, parqueadero, baños y habitaciones

Se presenta el análisis de los atributos cuantitativos ordinales para toda la BD. #### Estrato

summarytools::freq(vivienda_faltantes$estrato)
## Frequencies  
## vivienda_faltantes$estrato  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           3   1453     17.45          17.45     17.45          17.45
##           4   2131     25.59          43.04     25.59          43.04
##           5   2751     33.04          76.08     33.04          76.08
##           6   1992     23.92         100.00     23.92         100.00
##        <NA>      0                               0.00         100.00
##       Total   8327    100.00         100.00    100.00         100.00
ev=table(vivienda_faltantes$estrato)
names(ev)=c("3","4","5","6")
barplot(ev,  col=c("#ee964b", "#f4d35e", "#faf0ca", "#0d3b66"), 
        main = "Estrato socioeconómico viviendas",
        las=1 )

Habitaciones

t=table(vivienda_faltantes$habitac)
summarytools::freq(vivienda_faltantes$habitac)
## Frequencies  
## vivienda_faltantes$habitac  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           0     66      0.79           0.79      0.79           0.79
##           1     59      0.71           1.50      0.71           1.50
##           2    927     11.13          12.63     11.13          12.63
##           3   4101     49.25          61.88     49.25          61.88
##           4   1731     20.79          82.67     20.79          82.67
##           5    680      8.17          90.84      8.17          90.84
##           6    318      3.82          94.66      3.82          94.66
##           7    173      2.08          96.73      2.08          96.73
##           8    138      1.66          98.39      1.66          98.39
##           9     83      1.00          99.39      1.00          99.39
##          10     51      0.61         100.00      0.61         100.00
##        <NA>      0                               0.00         100.00
##       Total   8327    100.00         100.00    100.00         100.00
ev=table(vivienda_faltantes$habitac)
names(ev)=c("0","1","2","3","4","5","6","7","8","9","10")
barplot(ev, 
        main = "Habitaciones viviendas",
        las=1 )

Baños

t=table(vivienda_faltantes$banios)
summarytools::freq(vivienda_faltantes$banios)
## Frequencies  
## vivienda_faltantes$banios  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           0     45      0.54           0.54      0.54           0.54
##           1    497      5.97           6.51      5.97           6.51
##           2   2946     35.38          41.89     35.38          41.89
##           3   1994     23.95          65.83     23.95          65.83
##           4   1460     17.53          83.37     17.53          83.37
##           5    891     10.70          94.07     10.70          94.07
##           6    315      3.78          97.85      3.78          97.85
##           7    107      1.28          99.14      1.28          99.14
##           8     48      0.58          99.71      0.58          99.71
##           9     15      0.18          99.89      0.18          99.89
##          10      9      0.11         100.00      0.11         100.00
##        <NA>      0                               0.00         100.00
##       Total   8327    100.00         100.00    100.00         100.00
ev=table(vivienda_faltantes$banios)
names(ev)=c("0","1","2","3","4","5","6","7","8","9","10")
barplot(ev, 
        main = "Baños viviendas",
        las=1 )

Parqueaderos

t=table(vivienda_faltantes$parquea)
summarytools::freq(vivienda_faltantes$parquea)
## Frequencies  
## vivienda_faltantes$parquea  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           1   3156    46.936         46.936    37.901         37.901
##           2   2478    36.853         83.789    29.759         67.659
##           3    521     7.748         91.538     6.257         73.916
##           4    386     5.741         97.278     4.636         78.552
##           5     68     1.011         98.290     0.817         79.368
##           6     68     1.011         99.301     0.817         80.185
##           7     18     0.268         99.569     0.216         80.401
##           8     17     0.253         99.822     0.204         80.605
##           9      4     0.059         99.881     0.048         80.653
##          10      8     0.119        100.000     0.096         80.749
##        <NA>   1603                             19.251        100.000
##       Total   8327   100.000        100.000   100.000        100.000
ev=table(vivienda_faltantes$parquea)
names(ev)=c("1","2","3","4","5","6","7","8","9","10")
barplot(ev, 
        main = "Parqueaderos viviendas",
        las=1 )

Piso

t=table(vivienda_faltantes$piso)
summarytools::freq(vivienda_faltantes$piso)
## Frequencies  
## vivienda_faltantes$piso  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           1    861     15.13          15.13     10.34          10.34
##           2   1450     25.49          40.62     17.41          27.75
##           3   1097     19.28          59.91     13.17          40.93
##           4    607     10.67          70.57      7.29          48.22
##           5    568      9.98          80.56      6.82          55.04
##           6    245      4.31          84.87      2.94          57.98
##           7    207      3.64          88.50      2.49          60.47
##           8    211      3.71          92.21      2.53          63.00
##           9    146      2.57          94.78      1.75          64.75
##          10    130      2.29          97.06      1.56          66.31
##          11     84      1.48          98.54      1.01          67.32
##          12     83      1.46         100.00      1.00          68.32
##        <NA>   2638                              31.68         100.00
##       Total   8327    100.00         100.00    100.00         100.00
ev=table(vivienda_faltantes$piso)
names(ev)=c("1","2","3","4","5","6","7","8","9","10","11","12")
barplot(ev, 
        main = "Piso viviendas",
        las=1 )

Análisis variables cuanttitativas de precio y área consturida para todas las viviendas

Precio

summarytools::descr(vivienda_faltantes$preciom)
## Descriptive Statistics  
## vivienda_faltantes$preciom  
## N: 8327  
## 
##                     preciom
## ----------------- ---------
##              Mean    434.25
##           Std.Dev    329.03
##               Min     58.00
##                Q1    220.00
##            Median    330.00
##                Q3    540.00
##               Max   1999.00
##               MAD    209.05
##               IQR    320.00
##                CV      0.76
##          Skewness      1.85
##       SE.Skewness      0.03
##          Kurtosis      3.66
##           N.Valid   8327.00
##         Pct.Valid    100.00
boxplot(vivienda_faltantes$preciom,  xlab = "Precio viviendas", ylab = "Valor en millones", 
        las=1)

Área construida

summarytools::descr(vivienda_faltantes$areaconst)
## Descriptive Statistics  
## vivienda_faltantes$areaconst  
## N: 8327  
## 
##                     areaconst
## ----------------- -----------
##              Mean      174.99
##           Std.Dev      142.95
##               Min       30.00
##                Q1       80.00
##            Median      123.00
##                Q3      229.00
##               Max     1745.00
##               MAD       84.51
##               IQR      149.00
##                CV        0.82
##          Skewness        2.69
##       SE.Skewness        0.03
##          Kurtosis       12.90
##           N.Valid     8327.00
##         Pct.Valid      100.00
boxplot(vivienda_faltantes$areaconst,  xlab = "Área viviendas", ylab = "metros cuadrados", 
        las=1)

Generación de conjuntos de datos según el tipo vivvienda: Apartamento y Casa

Se generan dos conjuntos de datos considerando el tipo de vivienda, esto con el fin de realizar un análisis más detallado entendiendo que cada tipo de vivienda tiene características diferentes y deben ser analizados de manera independiente.

vivienda_apto = subset(vivienda_faltantes, vivienda_faltantes$tipo=="Apartamento")
vivienda_casa = subset(vivienda_faltantes, vivienda_faltantes$tipo=="Casa")

Aplicación de técnicas de imputación

Se aplica la técnica de imputación basada en el promedio para los datasets de Apartamentos y de Casas de manera independiente. #### Imputación de datos para Apartamentos Se cuantifican datos faltantes para Apartamentos

faltantesApto <- colSums(is.na(vivienda_apto))

Se visualizan los datos faltantes de Apartamentos

grafico <-md.pattern(vivienda_apto, rotate.names = TRUE) 

Se calcula la media del atributo de parqueadero y se reemplaza su valor en los datos faltantes.

medParqApto <- mean(vivienda_apto$parquea, na.rm = TRUE)
vivienda_apto$parquea[is.na(vivienda_apto$parquea)] <- round(medParqApto)

Se calcula la media del atributo piso y se reemplaza su valor en los datos faltantes.

medPisApto <- mean(vivienda_apto$piso, na.rm = TRUE)
vivienda_apto$piso[is.na(vivienda_apto$piso)] <- round(medPisApto)

Se viualizan los resutlados de la imputación de datos para Apartamentos.

grafico <-md.pattern(vivienda_apto, rotate.names = TRUE)
##  /\     /\
## {  `---'  }
## {  O   O  }
## ==>  V <==  No need for mice. This data set is completely observed.
##  \  \|/  /
##   `-----'

Imputación de datos para Casas

Se cuantifican datos faltantes para Casas.

faltantesCasa <- colSums(is.na(vivienda_casa))

Se visualizan los datos faltantes de Casas

grafico <-md.pattern(vivienda_casa, rotate.names = TRUE) 

Se calcula la media del atributo de parqueadero y se reemplaza su valor en los datos faltantes.

medParqCasa <- mean(vivienda_casa$parquea, na.rm = TRUE)
vivienda_casa$parquea[is.na(vivienda_casa$parquea)] <- round(medParqCasa)

Se calcula la media del atributo piso y se reemplaza su valor en los datos faltantes.

medPisCasa <- mean(vivienda_casa$piso, na.rm = TRUE)
vivienda_casa$piso[is.na(vivienda_casa$piso)] <- round(medPisCasa)

Se viualizan los resutlados de la imputación de datos para Casas

grafico <-md.pattern(vivienda_casa, rotate.names = TRUE)
##  /\     /\
## {  `---'  }
## {  O   O  }
## ==>  V <==  No need for mice. This data set is completely observed.
##  \  \|/  /
##   `-----'

Análisis de las variabes cualitativas para Apartamentos

Zona Apartamentos

t=table(vivienda_apto$zona)
summarytools::freq(vivienda_apto$zona, cumul = FALSE)
## Frequencies  
## vivienda_apto$zona  
## Type: Character  
## 
##                      Freq   % Valid   % Total
## ------------------ ------ --------- ---------
##        Zona Centro     24      0.47      0.47
##         Zona Norte   1199     23.48     23.48
##         Zona Oeste   1035     20.27     20.27
##       Zona Oriente     62      1.21      1.21
##           Zona Sur   2786     54.56     54.56
##               <NA>      0                0.00
##              Total   5106    100.00    100.00
# Zona Apartamento Gráfico
lbs=c("Zona Centro","Zona Norte","Zona Oeste","Zona Oriente","Zona Sur")
pct=round(t/sum(t)*100)
labs=paste(lbs, pct)
labs=paste(labs, "%", sep = " ") 
pie(t, labels=labs, main="Zona para apartamentos")

Estrato Apartamentos

summarytools::freq(vivienda_apto$estrato)
## Frequencies  
## vivienda_apto$estrato  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           3    639     12.51          12.51     12.51          12.51
##           4   1404     27.50          40.01     27.50          40.01
##           5   1767     34.61          74.62     34.61          74.62
##           6   1296     25.38         100.00     25.38         100.00
##        <NA>      0                               0.00         100.00
##       Total   5106    100.00         100.00    100.00         100.00
ev=table(vivienda_apto$estrato)
names(ev)=c("3","4","5","6")
barplot(ev,  col=c("#ee964b", "#f4d35e", "#faf0ca", "#0d3b66"), 
        main = "Estrato socioeconómico Apartamentos",
        las=1 )

Habitaciones Apartamentos

t=table(vivienda_apto$habitac)
summarytools::freq(vivienda_apto$habitac)
## Frequencies  
## vivienda_apto$habitac  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           0     21      0.41           0.41      0.41           0.41
##           1     49      0.96           1.37      0.96           1.37
##           2    859     16.82          18.19     16.82          18.19
##           3   3388     66.35          84.55     66.35          84.55
##           4    716     14.02          98.57     14.02          98.57
##           5     63      1.23          99.80      1.23          99.80
##           6      8      0.16          99.96      0.16          99.96
##           7      1      0.02          99.98      0.02          99.98
##           9      1      0.02         100.00      0.02         100.00
##        <NA>      0                               0.00         100.00
##       Total   5106    100.00         100.00    100.00         100.00
ev=table(vivienda_apto$habitac)
names(ev)=c("0","1","2","3","4","5","6","7","9")
barplot(ev, 
        main = "Habitaciones apartamentos",
        las=1 )

Baños Apartamentos

t=table(vivienda_apto$banios)
summarytools::freq(vivienda_apto$banios)
## Frequencies  
## vivienda_apto$banios  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           0     14      0.27           0.27      0.27           0.27
##           1    400      7.83           8.11      7.83           8.11
##           2   2502     49.00          57.11     49.00          57.11
##           3   1201     23.52          80.63     23.52          80.63
##           4    639     12.51          93.15     12.51          93.15
##           5    301      5.90          99.04      5.90          99.04
##           6     40      0.78          99.82      0.78          99.82
##           7      8      0.16          99.98      0.16          99.98
##           8      1      0.02         100.00      0.02         100.00
##        <NA>      0                               0.00         100.00
##       Total   5106    100.00         100.00    100.00         100.00
ev=table(vivienda_apto$banios)
names(ev)=c("0","1","2","3","4","5","6","7","8")
barplot(ev, 
        main = "Baños Apartamentos",
        las=1 )

Parqueaderos Apartamentos

t=table(vivienda_apto$parquea)
summarytools::freq(vivienda_apto$parquea)
## Frequencies  
## vivienda_apto$parquea  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           1   2299    45.025         45.025    45.025         45.025
##           2   2455    48.081         93.106    48.081         93.106
##           3    253     4.955         98.061     4.955         98.061
##           4     90     1.763         99.824     1.763         99.824
##           5      4     0.078         99.902     0.078         99.902
##           6      2     0.039         99.941     0.039         99.941
##           7      1     0.020         99.961     0.020         99.961
##          10      2     0.039        100.000     0.039        100.000
##        <NA>      0                              0.000        100.000
##       Total   5106   100.000        100.000   100.000        100.000
ev=table(vivienda_apto$parquea)
names(ev)=c("1","2","3","4","5","6","7","10")
barplot(ev, 
        main = "Parqueaderos Apartamentos",
        las=1 )

Análisis de las distintas variables con respecto al Precio para Apartamentos

Relación entre Precio y Zona Apartamentos

SumPreZonApto<-boxplot(vivienda_apto$preciom~vivienda_apto$zona,
        main = "Distribución del precio de los apartamentos según la zona",
        ylab="precio (mill)",
        xlab = "zona", las=1)$stats

colnames(SumPreZonApto)<-c("Zona Centro","Zona Norte","Zona Oeste","Zona Oriente","Zona Sur")
rownames(SumPreZonApto)<-c("Min","First Quartile","Median","Third Quartile","Maximum")
SumPreZonApto
##                Zona Centro Zona Norte Zona Oeste Zona Oriente Zona Sur
## Min                  100.0       65.0         85           58       75
## First Quartile       120.0      138.5        386           99      175
## Median               152.5      250.0        570          115      245
## Third Quartile       240.0      360.0        900          150      335
## Maximum              400.0      690.0       1650          205      575

Relación entre Precio Apartamentos y Estrato

SumPreEstApto<-boxplot(vivienda_apto$preciom~vivienda_apto$estrato,
        main = "Distribución del precio de los apartamentos según el estrato",
        ylab="precio (mill)",
        xlab = "estrato", las=1)$stats

colnames(SumPreEstApto)<-c("3","4","5","6")
rownames(SumPreEstApto)<-c("Min","First Quartile","Median","Third Quartile","Maximum")
SumPreEstApto
##                  3     4   5    6
## Min             58  78.0  89  128
## First Quartile 105 155.0 250  450
## Median         120 189.5 300  610
## Third Quartile 140 240.0 380  870
## Maximum        190 360.0 570 1500

Relación entre Precio y Área de los Apartamentos

plot(vivienda_apto$areaconst,vivienda_apto$preciom,  
     xlab = "Área (m2)", 
     ylab = "Precio Apto",
     col="#447270",
     las=1)
grid()

Análisis de las variabes cualitativas para Casas

Zona Casas

t=table(vivienda_casa$zona)
summarytools::freq(vivienda_casa$zona, cumul = FALSE)
## Frequencies  
## vivienda_casa$zona  
## Type: Character  
## 
##                      Freq   % Valid   % Total
## ------------------ ------ --------- ---------
##        Zona Centro    100      3.10      3.10
##         Zona Norte    723     22.45     22.45
##         Zona Oeste    169      5.25      5.25
##       Zona Oriente    289      8.97      8.97
##           Zona Sur   1940     60.23     60.23
##               <NA>      0                0.00
##              Total   3221    100.00    100.00
# Zona Casa Gráfico
lbs=c("Zona Centro","Zona Norte","Zona Oeste","Zona Oriente","Zona Sur")
pct=round(t/sum(t)*100)
labs=paste(lbs, pct)
labs=paste(labs, "%", sep = " ") 
pie(t, labels=labs, main="Zona para Casas")

Estrato Casas

summarytools::freq(vivienda_casa$estrato)
## Frequencies  
## vivienda_casa$estrato  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           3    814     25.27          25.27     25.27          25.27
##           4    727     22.57          47.84     22.57          47.84
##           5    984     30.55          78.39     30.55          78.39
##           6    696     21.61         100.00     21.61         100.00
##        <NA>      0                               0.00         100.00
##       Total   3221    100.00         100.00    100.00         100.00
ev=table(vivienda_casa$estrato)
names(ev)=c("3","4","5","6")
barplot(ev,  col=c("#ee964b", "#f4d35e", "#faf0ca", "#0d3b66"), 
        main = "Estrato socioeconómico Casas",
        las=1 )

Habitaciones Casas

t=table(vivienda_casa$habitac)
summarytools::freq(vivienda_casa$habitac)
## Frequencies  
## vivienda_casa$habitac  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           0     45      1.40           1.40      1.40           1.40
##           1     10      0.31           1.71      0.31           1.71
##           2     68      2.11           3.82      2.11           3.82
##           3    713     22.14          25.95     22.14          25.95
##           4   1015     31.51          57.47     31.51          57.47
##           5    617     19.16          76.62     19.16          76.62
##           6    310      9.62          86.25      9.62          86.25
##           7    172      5.34          91.59      5.34          91.59
##           8    138      4.28          95.87      4.28          95.87
##           9     82      2.55          98.42      2.55          98.42
##          10     51      1.58         100.00      1.58         100.00
##        <NA>      0                               0.00         100.00
##       Total   3221    100.00         100.00    100.00         100.00
ev=table(vivienda_casa$habitac)
names(ev)=c("0","1","2","3","4","5","6","7","9")
barplot(ev, 
        main = "Habitaciones casas",
        las=1 )

Baños Casas

t=table(vivienda_casa$banios)
summarytools::freq(vivienda_casa$banios)
## Frequencies  
## vivienda_casa$banios  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           0     31      0.96           0.96      0.96           0.96
##           1     97      3.01           3.97      3.01           3.97
##           2    444     13.78          17.76     13.78          17.76
##           3    793     24.62          42.38     24.62          42.38
##           4    821     25.49          67.87     25.49          67.87
##           5    590     18.32          86.18     18.32          86.18
##           6    275      8.54          94.72      8.54          94.72
##           7     99      3.07          97.80      3.07          97.80
##           8     47      1.46          99.25      1.46          99.25
##           9     15      0.47          99.72      0.47          99.72
##          10      9      0.28         100.00      0.28         100.00
##        <NA>      0                               0.00         100.00
##       Total   3221    100.00         100.00    100.00         100.00
ev=table(vivienda_casa$banios)
names(ev)=c("0","1","2","3","4","5","6","7","8")
barplot(ev, 
        main = "Baños Casas",
        las=1 )

Parqueadero Casas

t=table(vivienda_casa$parquea)
summarytools::freq(vivienda_casa$parquea)
## Frequencies  
## vivienda_casa$parquea  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           1    857     26.61          26.61     26.61          26.61
##           2   1626     50.48          77.09     50.48          77.09
##           3    268      8.32          85.41      8.32          85.41
##           4    296      9.19          94.60      9.19          94.60
##           5     64      1.99          96.58      1.99          96.58
##           6     66      2.05          98.63      2.05          98.63
##           7     17      0.53          99.16      0.53          99.16
##           8     17      0.53          99.69      0.53          99.69
##           9      4      0.12          99.81      0.12          99.81
##          10      6      0.19         100.00      0.19         100.00
##        <NA>      0                               0.00         100.00
##       Total   3221    100.00         100.00    100.00         100.00
ev=table(vivienda_casa$parquea)
names(ev)=c("1","2","3","4","5","6","7","8","9","10")
barplot(ev, 
        main = "Parqueaderos Casas",
        las=1 )

Análisis de las distintas variables con respecto al Precio para Casas

Relación entre Precio y Zona Casas

SumPreZonCasa<-boxplot(vivienda_casa$preciom~vivienda_casa$zona,
        main = "Distribución del precio de las casas según la zona",
        ylab="precio (mill)",
        xlab = "zona", las=1)$stats

colnames(SumPreZonCasa)<-c("Zona Centro","Zona Norte","Zona Oeste","Zona Oriente","Zona Sur")
rownames(SumPreZonCasa)<-c("Min","First Quartile","Median","Third Quartile","Maximum")
SumPreZonCasa
##                Zona Centro Zona Norte Zona Oeste Zona Oriente Zona Sur
## Min                  148.0       89.0        135           80       77
## First Quartile       237.5      262.5        430          160      350
## Median               310.0      390.0        680          235      480
## Third Quartile       385.0      550.0        930          310      780
## Maximum              547.0      950.0       1650          500     1400

Relación entre Precio Casas y Estrato

SumPreEstCasa<-boxplot(vivienda_casa$preciom~vivienda_casa$estrato,
        main = "Distribución del precio de las casas según el estrato",
        ylab="precio (mill)",
        xlab = "estrato", las=1)$stats

colnames(SumPreEstCasa)<-c("3","4","5","6")
rownames(SumPreEstCasa)<-c("Min","First Quartile","Median","Third Quartile","Maximum")
SumPreEstCasa
##                  3   4    5    6
## Min             77 121  125  270
## First Quartile 180 300  380  700
## Median         250 360  480  890
## Third Quartile 330 465  650 1250
## Maximum        550 710 1050 1950

Relación entre Precio y Área de los Casas

plot(vivienda_casa$areaconst,vivienda_casa$preciom,  
     xlab = "Área (m2)", 
     ylab = "Precio Casa",
     col="#447270",
     las=1)
grid()

Resultados

Resultados conjunto de Datos de Apartamentos

El tipo de vivienda más vendida son los Apartamentos con un 61%. Respecto a las caracteríticas más buscadas, los apartamentos tuvieron los siguientes resultados: - La zona que presenta el mayor porcentaje de apartamentos es la zona sur con el 55% y le sigue la zona norte con el 23%. - El 34.6% de los apartamentos se encuentran en estrato 5 y le sigue el estrato 4 con el 27.5%. - El 66.3% tiene 3 habitaciones y el 16.8% cuentan con 2 habitaciones. - Para el número de baños, el 49% tiene 2 baños y el 23.5% aparece con 3 baños. - El 48% de los apartamentos tienen 2 parqueaderos y el 45% cuenta con 1 sólo. Respecto al precio, los apartamentos presentan los siguientes resultados: - La relación con el estrato es directamente proporcional respecto al estrato, commo era de esperarse, con el estrato 6 teniendo una mediana con un valor de $610 millones. - La zona que presenta los precios más altos es la zona oeste, la cual tiene una mediana con valor de $570 millones, le sigue la zona norte con una mediana de $250 millones.

Resultados conjunto de Datos de Casas

Las casas ocupan el 39% de las viviendas de la BD. Respecto a las caracteríticas más buscadas, las casas tuvieron los siguientes resultados: - La zona que presenta el mayor porcentaje de casas es la zona sur con el 60%, le sigue la zona norte con el 22%. - El 30.5% de las casas se encuentran en estrato 5 y le sigue el estrato 3 con el 25.2%. - El 31.5% de las casas tiene 4 habitaciones y el 22.4% cuentan con 3 habitaciones. - Para el número de baños, el 25.4% tiene 4 baños y el 24.6% aparece con 3 baños. - El 50.4% de las casas tienen 2 parqueaderos y el 26.6% cuenta con 1 sólo. Respecto al precio, las casas presentan los siguientes resultados: - La relación con el estrato es directamente proporcional respecto al estrato, con el estrato 6 teniendo una mediana con un valor de $890 millones. - La zona que presenta los precios más altos es la zona oeste, la cual tiene una mediana con valor de $680 millones, le sigue la zona sur con una mediana de precio de $480 millones.

Conclusiones

Conclusiones para los apartamentos

  • Los apartamentos son el tipo de vivienda más vendida en Cali con un 61%.
  • Las características preferidas para los apartamentos estarían dadas por 3 habitaciones, 2 baños, 2 parqueaderos y ubicación en estrato 5.
  • La zona con los precios más altos para apartamentos es la zona oeste, a pesar de que el mayor número de apartamentos se encuentran en la zona sur y zona norte. Esta última presenta los precios que ocupan el segundo lugar si se tiene en cuenta la mediana como criterio.

Conclusiones para las casas

  • Las características preferidas para las casas estarían dadas por 4 habitaciones, 4 baños, 2 parqueaderos y ubicación en estrato 5.
  • La zona con los precios más altos para casas es la zona oeste, le sigue la zona sur, la cual a su vez presenta el mayor número de casas. El 82% de las casas se encuentran ubicadas entre las zonas sur y norte.