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.
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.
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
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)
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"
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)
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)
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 )
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 )
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 )
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 )
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 )
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)
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)
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")
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.
## \ \|/ /
## `-----'
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.
## \ \|/ /
## `-----'
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")
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 )
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 )
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 )
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 )
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
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
plot(vivienda_apto$areaconst,vivienda_apto$preciom,
xlab = "Área (m2)",
ylab = "Precio Apto",
col="#447270",
las=1)
grid()
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")
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 )
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 )
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 )
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 )
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
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
plot(vivienda_casa$areaconst,vivienda_casa$preciom,
xlab = "Área (m2)",
ylab = "Precio Casa",
col="#447270",
las=1)
grid()
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.
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.