En el siguiente informe se realizará el análisis de la oferta inmobiliaria de la ciudad de Cali, mediante un análisis exploratorio y descriptivo, cuyo fin es proporcionar una comprensión de las dinámicas que influyen en el mercado de vivienda en la ciudad. Este estudio se enfoca en variables clave como el tipo de vivienda, zona residencial, precio, estrato y otras que serán exploradas en su desarrollo.
Al examinar estas variables, se busca identificar patrones, tendencias y posibles relaciones que permitan entender mejor la oferta y la demanda de viviendas en Cali, así como las preferencias de los compradores y los factores que influyen en los precios.
Se inicia con una exploración a la base de datos, reconociendo sus variables y total de registros. Posteriormente, se realiza la limpieza de sus datos, encontrando registros duplicados, datos faltantes, se realiza estandarización a variables nominales y analisis de imputación de datos. Finalmente, se lleva a cabo un analisis descritivo univariado, mostrando el comportamiento de cada variables y un analisis de frecuencias.
Se inicia con la instalación y carga de paquetes, que contienen la base de datos “vivienda_faltantes”. Se cuenta con un total de 8,330 registros y 13 variables.
# Cargar los datos
data(vivienda_faltantes)
# Visión general de los datos
glimpse(vivienda_faltantes)
## Rows: 8,330
## Columns: 13
## $ id <dbl> 8312, 8311, 8307, 8296, 8297, 8298, 8299, 8300, 8286, 8287, …
## $ zona <chr> "Zona Oeste", "Zona Oeste", "Zona Oeste", "Zona Sur", "Zona …
## $ piso <dbl> 4, 1, NA, 2, NA, NA, 2, NA, NA, 2, 1, NA, 6, NA, 2, 8, NA, 6…
## $ estrato <dbl> 6, 6, 5, 3, 5, 5, 6, 5, 5, 5, 5, 3, 6, 3, 5, 6, 5, 6, 6, 6, …
## $ preciom <dbl> 1300, 480, 1200, 220, 330, 1350, 305, 480, 275, 285, 310, 17…
## $ areaconst <dbl> 318, 300, 800, 150, 112, 390, 125, 280, 74, 120, 166, 155, 1…
## $ parquea <dbl> 2, 1, 4, 1, 2, 8, 2, 4, 1, 2, 2, NA, 2, NA, 1, 2, 2, 2, 4, 1…
## $ banios <dbl> 4, 4, 7, 2, 4, 10, 3, 4, 2, 4, 4, 4, 3, 2, 2, 3, 3, 5, 7, 1,…
## $ habitac <dbl> 2, 4, 5, 4, 3, 10, 3, 4, 3, 3, 3, 6, 3, 3, 2, 4, 3, 4, 3, 2,…
## $ tipo <chr> "Apartamento", "Casa", "Casa", "Casa", "Casa", "Casa", "Apar…
## $ barrio <chr> "arboleda", "normandía", "miraflores", "el guabal", "bella s…
## $ longitud <dbl> -76576, -76571, -76568, -76565, -76565, -76565, -76565, -765…
## $ latitud <dbl> 3454.00000, 3454.00000, 3455.00000, 3417.00000, 3408.00000, …
Se inicia identificando por cada variable el total de datos faltantes
md.pattern(vivienda_faltantes,rotate.names = TRUE)
## preciom id zona estrato areaconst banios habitac tipo barrio longitud
## 4812 1 1 1 1 1 1 1 1 1 1
## 1912 1 1 1 1 1 1 1 1 1 1
## 877 1 1 1 1 1 1 1 1 1 1
## 726 1 1 1 1 1 1 1 1 1 1
## 1 1 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0
## 2 3 3 3 3 3 3 3 3 3
## latitud parquea piso
## 4812 1 1 1 0
## 1912 1 1 0 1
## 877 1 0 1 1
## 726 1 0 0 2
## 1 0 0 0 12
## 2 0 0 0 13
## 3 1606 2641 4279
faltantes_variables
## Datos Faltantes
## id 3
## zona 3
## piso 2641
## estrato 3
## preciom 2
## areaconst 3
## parquea 1606
## banios 3
## habitac 3
## tipo 3
## barrio 3
## longitud 3
## latitud 3
Siendo la variable “id” un identificador unico, se verifica que no contenga registros duplicados y proceder a su eliminación
# Contar el total de registros duplicados basados en la variable "id"
total_duplicados_id <- sum(duplicated(vivienda_faltantes$id))
# Eliminar registros duplicados basados en la variable "id"
id_sin_dup <- distinct(vivienda_faltantes, id, .keep_all = TRUE)
print(paste("Total registros duplicados:", total_duplicados_id))
## [1] "Total registros duplicados: 10"
print(paste("Total sin duplicados:",length(id_sin_dup$id)))
## [1] "Total sin duplicados: 8320"
#Eliminar registros faltantes (NA) variable "id"
id_sin_dup_na <- id_sin_dup %>% filter(!is.na(id))
faltantes <- colSums(is.na(id_sin_dup_na)) %>% as.data.frame()
faltantes
## .
## id 0
## zona 0
## piso 2635
## estrato 0
## preciom 0
## areaconst 0
## parquea 1602
## banios 0
## habitac 0
## tipo 0
## barrio 0
## longitud 0
## latitud 0
print(paste("Total de registros:", nrow(id_sin_dup_na)))
## [1] "Total de registros: 8319"
print(paste("Total de variables:", ncol(id_sin_dup_na)))
## [1] "Total de variables: 13"
bd_sin_dup <- id_sin_dup_na
You can also embed plots, for example:
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.