El análisis de los datos desempeña un papel fundamental en la comprensión de las tendencias y dinámicas que influyen en varios sectores de la economía. Para el mercado inmobiliario se puede recopilar y analizar información asociada a la oferta y la demanda de las propiedades, los precios de compra y alquiler, así como factores económicos, sociales y urbanísticos, que le permiten a los profesionales del sector, inversionistas y formuladores de políticas tomar decisiones informadas y estratégicas. El mercado inmobiliario en Cali ha crecido debido a factores como el crecimiento de la población, inversión extranjera y desarrollo de proyectos inmobiliarios. El siguiente informe proporciona una visión integral y basada en el análisis de los datos del mercado inmobiliario en Cali. Para realizar el análisis descriptivo se utilizó la información suministrada ‘vivienda_faltantes’ y se complentó con información suministrada por la Alcaldía de Santiago de Cali.
Brindar a la empresa B&C información valiosa asociada al mercado inmobiliario en Cali y apoyar la toma de deciisiones con el fin de crear un mercado más transperente, eficiente y adaptable a las necesidades cambiantes de los consumidores y la economía.
Proporcionar información sobre aspectos que le ayuden a la empresa B&C a:
Mejorar la fijación de precios.
Definir nicho de mercado.
Desarrollar estrategias de marketing.
Ofrecer servicios personalizados a sus clientes.
Cargar Librerías
Cargamos algunas de las librerías que utilizaremos durante toda la preparación y análisis de los datos y configuramos los decimales para las tablas.
library(paqueteMET)
library(tidyverse)
library(dplyr)
library(lubridate)
library(stringi)
library(scales)
library(summarytools)
library(flextable)
library(plotly)
library(ggplot2)
library(leaflet)
options(scipen = 100, digits = 6)
Crear Funciones
Se crean funciones que nos ayudarán a limpiar la información. La primera función tiene como finalidad dejar los campos tipos caracter en mayúscula y eliminar los espacios. La segunda función tiene como finalidad contar la longitud de un número antes del punto decimal.
LimpiarNombres <- function(s){
x<-trimws(str_to_upper(gsub("([\\s])\\1+","\\1",s, perl=T)))
return(x)
}
contar_int <- function(x){
if(length(x)==0){
numeric()
}else{
floor(x) %>%
abs() %>%
nchar()
}
}
Cargar datos
data(vivienda_faltantes)
Inspección de datos
Se utiliza la función ‘glimpse’ que nos proporcioará una vista general de los datos. El número de registros, el número de campos y la clase a la que pertenecen esos campos.
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, …
Al ver los datos podemos concluir que tenemos un total de 8330 registros con 13 campos, 10 de estos son númericos y los restantes son tipo caracter.
Id: este dato es la identificación del registro por lo que tendremos en cuenta para saber si hay datos duplicados.
zona: Variable cualitativa nominal.
piso: Variable cuantitativa discreta.
estrato: Variable cualitativa ordinal.
preciom (Precio): Variable cuantitativa continua.
areaconst (Área construida): Variable cuantitativa continua.
parquea (Número de parqueaderos): Variable cuantitativa discreta.
banios (Número de Baños): Variable cuantitativa discreta.
habitac (Número de Habitaciones): Variable cuantitativa discreta.
tipo (Tipo de vivienda): Variable cualitativa nominal.
barrio: Variable cualitativa nominal.
longitud: Variable cuantitativa continua.
latitud: Variable cuantitativa continua.
Estandarizar las variables tipo caracter
Creamos un objeto llamado vivienda_faltantes y aplicamos la función que nos ayuda a estandarizar y limpiar la información de tipo caracter.
vivienda_faltantes <- vivienda_faltantes %>%
mutate_if(is.character, LimpiarNombres)
Identificar registros duplicados y vacíos
identificacionId<- vivienda_faltantes %>%
group_by(id) %>%
summarise(contar=n()) %>%
filter(contar>1)
print(identificacionId)
## # A tibble: 9 × 2
## id contar
## <dbl> <int>
## 1 8309 2
## 2 8310 2
## 3 8313 2
## 4 8314 2
## 5 8315 2
## 6 8316 2
## 7 8317 2
## 8 8318 2
## 9 NA 3
Encontramos que existen 3 id con NA, y 8 id duplicados: 8309, 8310, 8313, 8314, 8315, 8316, 8317, 8318. Vemos los NA y se pueden eliminar por lo que no contienen información relevante.Casi todos los campos están en NA.
identificacionId<- vivienda_faltantes %>%
filter(is.na(id))
print(identificacionId)
## # A tibble: 3 × 13
## id zona piso estrato preciom areaconst parquea banios habitac tipo
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 NA <NA> NA NA NA NA NA NA NA <NA>
## 2 NA <NA> NA NA NA NA NA NA NA <NA>
## 3 NA <NA> NA NA 330 NA NA NA NA <NA>
## # ℹ 3 more variables: barrio <chr>, longitud <dbl>, latitud <dbl>
Examinamos los 8 id duplicados y estos contienen la misma información por lo que eliminaremos los duplicados posteriormente.
identificacionId<- vivienda_faltantes %>%
filter(id%in%c(8309, 8310, 8313, 8314, 8315, 8316, 8317, 8318)) %>%
arrange(id)
print(identificacionId)
## # A tibble: 16 × 13
## id zona piso estrato preciom areaconst parquea banios habitac tipo
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 8309 ZONA OESTE 5 4 150 56 NA 1 2 APAR…
## 2 8309 ZONA OESTE 5 4 150 56 NA 1 2 APAR…
## 3 8310 ZONA OESTE 1 6 1600 463 4 6 3 APAR…
## 4 8310 ZONA OESTE 1 6 1600 463 4 6 3 APAR…
## 5 8313 ZONA OESTE 7 6 525 137 2 3 3 APAR…
## 6 8313 ZONA OESTE 7 6 525 137 2 3 3 APAR…
## 7 8314 ZONA OESTE 7 6 1400 210 3 4 3 APAR…
## 8 8314 ZONA OESTE 7 6 1400 210 3 4 3 APAR…
## 9 8315 ZONA OESTE NA 6 620 167 2 4 4 APAR…
## 10 8315 ZONA OESTE NA 6 620 167 2 4 4 APAR…
## 11 8316 ZONA NORTE 7 5 400 220 1 4 4 APAR…
## 12 8316 ZONA NORTE 7 5 400 220 1 4 4 APAR…
## 13 8317 ZONA OESTE NA 6 1100 290 4 4 3 APAR…
## 14 8317 ZONA OESTE NA 6 1100 290 4 4 3 APAR…
## 15 8318 ZONA NORTE NA 4 580 295 2 5 5 CASA
## 16 8318 ZONA NORTE NA 4 580 295 2 5 5 CASA
## # ℹ 3 more variables: barrio <chr>, longitud <dbl>, latitud <dbl>
Eliminamos los id analizados anteriormente y quedan en total 8.319 registros.
vivienda_faltantes <- distinct(vivienda_faltantes)
vivienda_faltantes <-vivienda_faltantes[!is.na(vivienda_faltantes$id),]
Corregir campos de latitud, longitud y tipo
Al observar los campos de las coordenadas encontramos que la información es inconsistente puesto que existen datos sin punto decimal (característica de las coordenadas)
El campo tipo, tiene 2 opciones: Apartamento o Vivienda. Sin embargo, en algunos casos no aparece Apartamento sino Apto, por lo que es necesario cambiarlo.
Utilizamos la función mutate para modificar los campos longitud, latitud y tipo. Para la longitud y latitud, aplicamos la función contar_int para dterminar en qué registros tenemos que hacer un cambio, es decir, multiplicarlo para que quede como decimal.
vivienda_faltantes <- vivienda_faltantes %>%
mutate(longitud = ifelse(contar_int(longitud)==2, longitud, longitud*0.001),
latitud = ifelse(contar_int(latitud)==1, latitud, latitud*0.001),
tipo = ifelse(tipo=="APTO", "APARTAMENTO", tipo))
Corregir datos de Barrio
Los caracteres “É” y “Ú” los está tomando con los caracteres “√©” y “√∫”, respectivamente. Por lo tanto hacemos los cambios.
vivienda_faltantes$barrio <- gsub("√©", "É", vivienda_faltantes$barrio)
vivienda_faltantes$barrio <- gsub("√∫", "Ú", vivienda_faltantes$barrio)
Con la información limpia, analizamos la información en general.
summary(vivienda_faltantes)
## id zona piso estrato
## Min. : 1 Length:8319 Min. : 1.00 Min. :3.00
## 1st Qu.:2080 Class :character 1st Qu.: 2.00 1st Qu.:4.00
## Median :4160 Mode :character Median : 3.00 Median :5.00
## Mean :4160 Mean : 3.77 Mean :4.63
## 3rd Qu.:6240 3rd Qu.: 5.00 3rd Qu.:5.00
## Max. :8319 Max. :12.00 Max. :6.00
## NA's :2635
## preciom areaconst parquea banios habitac
## Min. : 58 Min. : 30 Min. : 1.00 Min. : 0.00 Min. : 0.00
## 1st Qu.: 220 1st Qu.: 80 1st Qu.: 1.00 1st Qu.: 2.00 1st Qu.: 3.00
## Median : 330 Median : 123 Median : 2.00 Median : 3.00 Median : 3.00
## Mean : 434 Mean : 175 Mean : 1.83 Mean : 3.11 Mean : 3.61
## 3rd Qu.: 540 3rd Qu.: 229 3rd Qu.: 2.00 3rd Qu.: 4.00 3rd Qu.: 4.00
## Max. :1999 Max. :1745 Max. :10.00 Max. :10.00 Max. :10.00
## NA's :1602
## tipo barrio longitud latitud
## Length:8319 Length:8319 Min. :-76.6 Min. :3.33
## Class :character Class :character 1st Qu.:-76.5 1st Qu.:3.38
## Mode :character Mode :character Median :-76.5 Median :3.42
## Mean :-76.5 Mean :3.42
## 3rd Qu.:-76.5 3rd Qu.:3.45
## Max. :-76.5 Max. :3.50
##
A continuación, analizaremos cada una de las variables para tener un panorama general, las operaciones serán muy similares en los casos de las varibales que se asocian a las características de las propiedades.
Zona
Creamos una tabla de frecuencia para la variable Zona con la función freq y data.frame. En este caso, la tabla muestra automáticamente si tiene valores NA. Como no los tiene, eliminamos de la tabla esta fila y seleccionamos únicamente los campos que nos interesan, Zona, Freq. Absoluta, Freq. Relativa %. COn la función flextable, creamos una tabla que se vea mucho mejor.
Zona <- data.frame(freq(vivienda_faltantes$zona))
Zona<- rownames_to_column(Zona,"Zona") %>%
drop_na() %>%
select(Zona, Freq, X..Valid)
colnames(Zona) = c("Zona", "Freq. Absoluta", "Freq. Relativa %")
flextable(Zona)
Zona | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
ZONA CENTRO | 124 | 1.49056 |
ZONA NORTE | 1,920 | 23.07970 |
ZONA OESTE | 1,198 | 14.40077 |
ZONA ORIENTE | 351 | 4.21926 |
ZONA SUR | 4,726 | 56.80971 |
Total | 8,319 | 100.00000 |
Construimos un gráfico de barras para ver la distribución. Para ello, eliminamos la fila “Total” y utilizamos la función plot_ly con type = “bar”
dataZona <- Zona%>%
filter(Zona!="Total")
plot_ly(data = dataZona, x=~Zona, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataZona$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E6E6FA", "#FFE4B5", "#FFDAB9", "#EEE8AA", "#BDB76B")))%>%
layout(title = list(text="Distribución Zonas Mercado inmobiliario Cali",
font=list(family = "Arial, sans-serif",size = 18,color = "#17202A")),
xaxis = list(title=list(text="Zonas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Piso
Creamos una tabla de frecuencia para la variable Piso con la función freq y data.frame. Seleccionamos únicamente los campos que nos interesan, Piso, Freq. Absoluta, Freq. Relativa %. COn la función flextable, creamos una tabla que se vea mucho mejor.
Piso <- data.frame(freq(vivienda_faltantes$piso))
Piso<- rownames_to_column(Piso,"Piso") %>%
select(Piso, Freq, X..Valid)
colnames(Piso) = c("Piso", "Freq. Absoluta", "Freq. Relativa %")
flextable(Piso)
Piso | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 860 | 15.13019 |
2 | 1,450 | 25.51020 |
3 | 1,097 | 19.29979 |
4 | 607 | 10.67910 |
5 | 567 | 9.97537 |
6 | 245 | 4.31034 |
7 | 204 | 3.58902 |
8 | 211 | 3.71217 |
9 | 146 | 2.56861 |
10 | 130 | 2.28712 |
11 | 84 | 1.47783 |
12 | 83 | 1.46024 |
<NA> | 2,635 | |
Total | 8,319 | 100.00000 |
Construimos un gráfico de barras para ver la distribución. Para ello, eliminamos la fila “Total” y los NA. Dejamos la variable Piso como factor y determinamos los niveles. Utilizamos la función plot_ly con type = “bar”
dataPiso <- Piso%>%
drop_na() %>%
filter(Piso!="Total")
dataPiso$Piso<-factor(dataPiso$Piso, ordered = T,levels = c("1","2","3","4","5","6","7","8","9","10","11","12"))
plot_ly(data = dataPiso, x=~Piso, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataPiso$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#556B2F", "#A52A2A")))%>%
layout(title = list(text="Número de piso de las viviendas del Mercado inmobiliario Cali",
font=list(family = "Arial, sans-serif",size = 18,color = "#17202A")),
xaxis = list(title=list(text="Piso", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Estrato
Creamos una tabla de frecuencia para la variable Estrato con la función freq y data.frame. En este caso, la tabla muestra automáticamente si tiene valores NA. Como no los tiene, eliminamos de la tabla esta fila. Seleccionamos únicamente los campos que nos interesan, Estrato, Freq. Absoluta, Freq. Relativa %. COn la función flextable, creamos una tabla que se vea mucho mejor.
Estrato <- data.frame(freq(vivienda_faltantes$estrato))
Estrato<- rownames_to_column(Estrato,"Estrato") %>%
select(Estrato, Freq, X..Valid) %>%
drop_na()
colnames(Estrato) = c("Estrato", "Freq. Absoluta", "Freq. Relativa %")
flextable(Estrato)
Estrato | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
3 | 1,453 | 17.4660 |
4 | 2,129 | 25.5920 |
5 | 2,750 | 33.0569 |
6 | 1,987 | 23.8851 |
Total | 8,319 | 100.0000 |
Construimos un gráfico de barras para ver la distribución. Para ello, eliminamos la fila “Total” y utilizamos la función plot_ly con type = “bar” Dejamos la variable Estrato como factor y determinamos los niveles.
dataEstrato <- Estrato%>%
filter(Estrato!="Total")
dataEstrato$Estrato<-factor(dataEstrato$Estrato, ordered = T,levels = c("1","2","3","4","5","6"))
plot_ly(data = dataEstrato, x=~Estrato, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataEstrato$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E6E6FA","#BDB76B", "#556B2F", "#A52A2A")))%>%
layout(title = list(text="Estrato en las viviendas del Mercado inmobiliario Cali",
font=list(family = "Arial, sans-serif",size = 18,color = "#17202A")),
xaxis = list(title=list(text="Estrato", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Parqueaderos
Creamos una tabla de frecuencia para la variable Parqueadero con la función freq y data.frame. Seleccionamos únicamente los campos que nos interesan, Parqueadero, Freq. Absoluta, Freq. Relativa %. Con la función flextable, creamos una tabla que se vea mucho mejor.
Parqueadero <- data.frame(freq(vivienda_faltantes$parquea))
Parqueadero<- rownames_to_column(Parqueadero,"Parqueadero") %>%
select(Parqueadero, Freq, X..Valid)
colnames(Parqueadero) = c("Parqueadero", "Freq. Absoluta", "Freq. Relativa %")
flextable(Parqueadero)
Parqueadero | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 3,155 | 46.9703737 |
2 | 2,475 | 36.8468066 |
3 | 520 | 7.7415513 |
4 | 384 | 5.7168379 |
5 | 68 | 1.0123567 |
6 | 68 | 1.0123567 |
7 | 18 | 0.2679768 |
8 | 17 | 0.2530892 |
9 | 4 | 0.0595504 |
10 | 8 | 0.1191008 |
<NA> | 1,602 | |
Total | 8,319 | 100.0000000 |
Construimos un gráfico de barras para ver la distribución. Para ello, eliminamos la fila “Total” y los valores NA. Utilizamos la función plot_ly con type = “bar” Dejamos la variable Parqueadero como factor y determinamos los niveles.
dataParqueadero <- Parqueadero%>%
drop_na() %>%
filter(Parqueadero!="Total")
dataParqueadero$Parqueadero<-factor(dataParqueadero$Parqueadero, ordered = T,levels = c("1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataParqueadero, x=~Parqueadero, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataParqueadero$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B")))%>%
layout(title = list(text="Número de parqueaderos en las viviendas del Mercado inmobiliario Cali",
font=list(family = "Arial, sans-serif",size = 18,color = "#17202A")),
xaxis = list(title=list(text="Parqueaderos", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Baños
Creamos una tabla de frecuencia para la variable Baño con la función freq y data.frame. En este caso, la tabla muestra automáticamente si tiene valores NA. Como no los tiene, eliminamos de la tabla esta fila. Seleccionamos únicamente los campos que nos interesan, Baños, Freq. Absoluta, Freq. Relativa %. Con la función flextable, creamos una tabla que se vea mucho mejor.
Baños <- data.frame(freq(vivienda_faltantes$banios))
Baños<- rownames_to_column(Baños,"Baños") %>%
drop_na() %>%
select(Baños, Freq, X..Valid)
colnames(Baños) = c("Baños", "Freq. Absoluta", "Freq. Relativa %")
flextable(Baños)
Baños | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 45 | 0.540930 |
1 | 496 | 5.962255 |
2 | 2,946 | 35.412910 |
3 | 1,993 | 23.957206 |
4 | 1,456 | 17.502104 |
5 | 890 | 10.698401 |
6 | 314 | 3.774492 |
7 | 107 | 1.286212 |
8 | 48 | 0.576992 |
9 | 15 | 0.180310 |
10 | 9 | 0.108186 |
Total | 8,319 | 100.000000 |
Construimos un gráfico de barras para ver la distribución. Para ello, eliminamos la fila “Total” y los valores NA. Utilizamos la función plot_ly con type = “bar” Dejamos la variable Baño como factor y determinamos los niveles.
dataBaños <- Baños%>%
filter(Baños!="Total")
dataBaños$Baños<-factor(dataBaños$Baños, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataBaños, x=~Baños, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataBaños$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#A52A2A")))%>%
layout(title = list(text="Número de baños en las viviendas del Mercado inmobiliario Cali",
font=list(family = "Arial, sans-serif",size = 18,color = "#17202A")),
xaxis = list(title=list(text="Baños", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Habitaciones
Creamos una tabla de frecuencia para la variable Habitaciones con la función freq y data.frame. En este caso, la tabla muestra automáticamente si tiene valores NA. Como no los tiene, eliminamos de la tabla esta fila. Seleccionamos únicamente los campos que nos interesan, Habitaciones, Freq. Absoluta, Freq. Relativa %. Con la función flextable, creamos una tabla que se vea mucho mejor.
Habitaciones <- data.frame(freq(vivienda_faltantes$habitac))
Habitaciones<- rownames_to_column(Habitaciones,"Habitaciones") %>%
drop_na() %>%
select(Habitaciones, Freq, X..Valid)
colnames(Habitaciones) = c("Habitaciones", "Freq. Absoluta", "Freq. Relativa %")
flextable(Habitaciones)
Habitaciones | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 66 | 0.793365 |
1 | 59 | 0.709220 |
2 | 926 | 11.131146 |
3 | 4,097 | 49.248708 |
4 | 1,729 | 20.783748 |
5 | 679 | 8.162039 |
6 | 318 | 3.822575 |
7 | 173 | 2.079577 |
8 | 138 | 1.658853 |
9 | 83 | 0.997716 |
10 | 51 | 0.613054 |
Total | 8,319 | 100.000000 |
Construimos un gráfico de barras para ver la distribución. Para ello, eliminamos la fila “Total” y los valores NA. Utilizamos la función plot_ly con type = “bar” Dejamos la variable Habitación como factor y determinamos los niveles.
dataHabitaciones <- Habitaciones%>%
filter(Habitaciones!="Total")
dataHabitaciones$Habitaciones<-factor(dataHabitaciones$Habitaciones, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataHabitaciones, x=~Habitaciones, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataHabitaciones$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#A52A2A")))%>%
layout(title = list(text="Número de habitaciones en las viviendas del Mercado inmobiliario Cali",
font=list(family = "Arial, sans-serif",size = 18,color = "#17202A")),
xaxis = list(title=list(text="Habitaciones", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Tipo
Creamos una tabla de frecuencia para la variable Tipo con la función freq y data.frame. En este caso, la tabla muestra automáticamente si tiene valores NA. Como no los tiene, eliminamos de la tabla esta fila. Seleccionamos únicamente los campos que nos interesan, Tipo, Freq. Absoluta, Freq. Relativa %. Con la función flextable, creamos una tabla que se vea mucho mejor.
Tipo <- data.frame(freq(vivienda_faltantes$tipo))
Tipo<- rownames_to_column(Tipo,"Tipo") %>%
drop_na() %>%
select(Tipo, Freq, X..Valid)
colnames(Tipo) = c("Tipo", "Freq. Absoluta", "Freq. Relativa %")
flextable(Tipo)
Tipo | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
APARTAMENTO | 5,099 | 61.2934 |
CASA | 3,220 | 38.7066 |
Total | 8,319 | 100.0000 |
Construimos un gráfico de pastel para ver la distribución. Para ello, eliminamos la fila “Total” y los valores NA. Utilizamos la función plot_ly con type = “pie”
dataTipo <- Tipo%>%
filter(Tipo!="Total")
plot_ly(data = dataTipo, labels = ~Tipo, values=~`Freq. Absoluta`, type="pie",
marker = list(colors = c("#BDB76B", "#A52A2A")),
textposition = 'inside',
textinfo = 'label+percent',
showlegend = FALSE)
Barrio
Creamos una tabla de frecuencia para la variable Barrio con la función freq y data.frame. En este caso, la tabla muestra automáticamente si tiene valores NA. Como no los tiene, eliminamos de la tabla esta fila. Seleccionamos únicamente los campos que nos interesan, Barrio, Freq. Absoluta, Freq. Relativa %. Con la función flextable, creamos una tabla que se vea mucho mejor.
Barrio <- data.frame(freq(vivienda_faltantes$barrio))
NOTA: No presento la tabla asociada a la variable barrio porque tiene más de 30 registros. Lo que si se puede identificar es que existen barrios que están duplicados porque los escribieron de otra forma. Por otro lado, en algunos casos no aparece el barrio sino que aparace la Zona. Lo mejor que se podría hacer en este caso sería ver la distribución geográfica con las coordenadas.
Latitud y Longitud
Con la función leaflet creamos el mapa de viviendas. Como son 8.319 registros, se demora en cargar el archivo y no se visualiza muy bien la distribución geográfica. Por lo tanto dejo la formulación y un pantallazo de lo que arroja el código.
vivienda_faltantes %>% leaflet() %>% addTiles() %>% addMarkers(~longitud, ~latitud)
preciom
Para el precio, extraemos toda la información estadística asociada a indicadores de tendencia central, dispersión, posición e indicadores de forma. También construimos un histograma para comprenderla distribución de la variable.
descr(vivienda_faltantes$preciom)
## Descriptive Statistics
## vivienda_faltantes$preciom
## N: 8319
##
## preciom
## ----------------- ---------
## Mean 433.90
## Std.Dev 328.67
## Min 58.00
## Q1 220.00
## Median 330.00
## Q3 540.00
## Max 1999.00
## MAD 207.56
## IQR 320.00
## CV 0.76
## Skewness 1.85
## SE.Skewness 0.03
## Kurtosis 3.67
## N.Valid 8319.00
## Pct.Valid 100.00
hist(vivienda_faltantes$preciom, main = "Histograma de Precio",
xlab = "Precio", ylab = "Frecuencia", col = "#BDB76B")
areaconst
Para el área, extraemos toda la información estadística asociada a indicadores de tendencia central, dispersión, posición e indicadores de forma. También construimos un histograma para comprenderla distribución de la variable.
descr(vivienda_faltantes$areaconst)
## Descriptive Statistics
## vivienda_faltantes$areaconst
## N: 8319
##
## areaconst
## ----------------- -----------
## Mean 174.93
## Std.Dev 142.96
## 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.91
## N.Valid 8319.00
## Pct.Valid 100.00
hist(vivienda_faltantes$areaconst,main = "Histograma de Área",
xlab = "Área", ylab = "Frecuencia", col="#A52A2A")
Analizaremos las variables de precio y área junto con las demás, para saber cómo se distribuyen los datos.Para ello utilizaremos la función boxplot que nos proporciona un gráfico de cajas y bigotes.
Precio vs Zona
par(cex.axis=0.8)
boxplot(vivienda_faltantes$preciom ~ vivienda_faltantes$zona,
main="Distribución del precio por zona",
ylab="Precio",
xlab="Zona",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
Área vs Zona
par(cex.axis=0.8)
boxplot(vivienda_faltantes$areaconst ~ vivienda_faltantes$zona,
main="Distribución del área por zona",
ylab="Área",
xlab="Zona",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
Precio vs Estrato
par(cex.axis=0.8)
boxplot(vivienda_faltantes$preciom ~ vivienda_faltantes$estrato,
main="Distribución del precio de acuerdo al estrato",
ylab="Precio",
xlab="Estrato",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
Área vs Estrato
par(cex.axis=0.8)
boxplot(vivienda_faltantes$areaconst ~ vivienda_faltantes$estrato,
main="Distribución del área por estrato",
ylab="Área",
xlab="Estrato",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
Precio vs Piso
par(cex.axis=0.8)
boxplot(vivienda_faltantes$preciom ~ vivienda_faltantes$piso,
main="Distribución del precio de acuerdo al piso",
ylab="Precio",
xlab="Piso",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
Precio vs Parqueaderos
par(cex.axis=0.8)
boxplot(vivienda_faltantes$preciom ~ vivienda_faltantes$parquea,
main="Distribución del precio de acuerdo al número de parqueaderos",
ylab="Precio",
xlab="Parquedaeros",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
Precio vs Tipo
par(cex.axis=0.8)
boxplot(vivienda_faltantes$preciom ~ vivienda_faltantes$tipo,
main="Distribución del precio de acuerdo al tipo de vivienda",
ylab="Precio",
xlab="Tipo",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
Precio vs Área
Con la función breaks creamos intervalos para los precios y área. Esto con el fin de analizar las dos variables.
breaksPrecio =c(250, 500,750,1000,1250,1500,1750,2000)
breaksArea =c(100, 200,300,400,500,600,700,800, 900,1000,1100,1200,1300,1400,1500,1600,1700,1800)
Precio = cut(vivienda_faltantes$preciom, breaks = breaksPrecio)
Area = cut(vivienda_faltantes$areaconst, breaks = breaksArea)
table(Precio, Area)
## Area
## Precio (100,200] (200,300] (300,400] (400,500] (500,600]
## (250,500] 1513 545 188 40 12
## (500,750] 568 269 167 110 26
## (750,1e+03] 114 199 123 54 22
## (1e+03,1.25e+03] 19 87 55 28 18
## (1.25e+03,1.5e+03] 1 63 41 32 21
## (1.5e+03,1.75e+03] 0 12 28 18 7
## (1.75e+03,2e+03] 0 5 11 20 6
## Area
## Precio (600,700] (700,800] (800,900] (900,1e+03] (1e+03,1.1e+03]
## (250,500] 1 0 0 1 0
## (500,750] 11 6 0 0 0
## (750,1e+03] 6 6 6 6 0
## (1e+03,1.25e+03] 11 10 2 4 0
## (1.25e+03,1.5e+03] 11 5 4 4 1
## (1.5e+03,1.75e+03] 2 4 2 2 2
## (1.75e+03,2e+03] 3 3 2 0 2
## Area
## Precio (1.1e+03,1.2e+03] (1.2e+03,1.3e+03] (1.3e+03,1.4e+03]
## (250,500] 0 0 0
## (500,750] 1 0 0
## (750,1e+03] 0 0 0
## (1e+03,1.25e+03] 1 0 0
## (1.25e+03,1.5e+03] 1 1 0
## (1.5e+03,1.75e+03] 0 0 0
## (1.75e+03,2e+03] 0 0 0
## Area
## Precio (1.4e+03,1.5e+03] (1.5e+03,1.6e+03] (1.6e+03,1.7e+03]
## (250,500] 1 0 0
## (500,750] 0 0 0
## (750,1e+03] 0 0 0
## (1e+03,1.25e+03] 0 0 0
## (1.25e+03,1.5e+03] 1 0 0
## (1.5e+03,1.75e+03] 1 1 0
## (1.75e+03,2e+03] 0 1 0
## Area
## Precio (1.7e+03,1.8e+03]
## (250,500] 1
## (500,750] 0
## (750,1e+03] 0
## (1e+03,1.25e+03] 0
## (1.25e+03,1.5e+03] 0
## (1.5e+03,1.75e+03] 0
## (1.75e+03,2e+03] 0
Resumen Primera Parte
En esta primera parte pudimos identificar algunos aspectos generales, como que por ejemplo, el 80% de los datos se encuentran concentrados en la Zona Oeste (14.4%) y Zona Sur(56.8%). Al analizar cada una de las variables podemos generalizar, pero para ser más asertivos, analizaremos cada una de las zonas puesto que como pudimos ver algunas variables están muy dispersas.
La Zona Centro cuenta con 124 viviendas que representan el 1.5% de los registros analizados. Filtramos la información para que solo nos muestre la información de la Zona Centro
dataZonaCentro <- vivienda_faltantes %>%
filter(zona == "ZONA CENTRO")
descr(dataZonaCentro)
## Descriptive Statistics
## dataZonaCentro
## N: 124
##
## areaconst banios estrato habitac id latitud longitud parquea
## ----------------- ----------- -------- --------- --------- --------- --------- ---------- ---------
## Mean 194.04 2.84 3.20 4.70 3782.92 3.44 -76.53 1.41
## Std.Dev 109.78 1.54 0.53 2.35 1389.70 0.01 0.01 1.03
## Min 52.00 0.00 3.00 0.00 440.00 3.40 -76.54 1.00
## Q1 122.50 2.00 3.00 3.00 2912.50 3.44 -76.53 1.00
## Median 160.00 2.50 3.00 4.00 3807.50 3.44 -76.53 1.00
## Q3 247.50 4.00 3.00 6.00 4847.50 3.45 -76.52 1.00
## Max 750.00 9.00 6.00 10.00 6662.00 3.49 -76.50 6.00
## MAD 94.15 0.74 0.00 1.48 1383.27 0.01 0.01 0.00
## IQR 122.50 2.00 0.00 3.00 1915.50 0.01 0.01 0.00
## CV 0.57 0.54 0.16 0.50 0.37 0.00 0.00 0.74
## Skewness 1.75 0.99 2.86 0.45 -0.56 0.80 1.30 3.21
## SE.Skewness 0.22 0.22 0.22 0.22 0.22 0.22 0.22 0.30
## Kurtosis 5.07 1.65 8.53 -0.46 -0.26 5.63 2.04 10.41
## N.Valid 124.00 124.00 124.00 124.00 124.00 124.00 124.00 64.00
## Pct.Valid 100.00 100.00 100.00 100.00 100.00 100.00 100.00 51.61
##
## Table: Table continues below
##
##
##
## piso preciom
## ----------------- ------- ---------
## Mean 2.26 309.69
## Std.Dev 1.97 162.15
## Min 1.00 100.00
## Q1 1.00 187.50
## Median 2.00 297.00
## Q3 3.00 362.50
## Max 11.00 1100.00
## MAD 1.48 126.02
## IQR 2.00 172.50
## CV 0.87 0.52
## Skewness 2.66 1.94
## SE.Skewness 0.29 0.22
## Kurtosis 8.68 5.92
## N.Valid 69.00 124.00
## Pct.Valid 55.65 100.00
Haremos lo mismo que se hizo al analizar las variables de manera general:
Piso Zona Centro
Tabla:
Piso <- data.frame(freq(dataZonaCentro$piso))
Piso<- rownames_to_column(Piso,"Piso") %>%
select(Piso, Freq, X..Valid)
colnames(Piso) = c("Piso", "Freq. Absoluta", "Freq. Relativa %")
flextable(Piso)
Piso | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 33 | 47.82609 |
2 | 16 | 23.18841 |
3 | 8 | 11.59420 |
4 | 5 | 7.24638 |
5 | 5 | 7.24638 |
11 | 2 | 2.89855 |
<NA> | 55 | |
Total | 124 | 100.00000 |
Gráfico:
dataPiso <- Piso%>%
drop_na() %>%
filter(Piso!="Total")
dataPiso$Piso<-factor(dataPiso$Piso, ordered = T,levels = c("1","2","3","4","5","11"))
plot_ly(data = dataPiso, x=~Piso, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataPiso$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9")))%>%
layout(title = list(text="Número de piso de las viviendas del Mercado inmobiliario Cali- Zona Centro",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Piso", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Estrato Zona Centro
Tabla:
Estrato <- data.frame(freq(dataZonaCentro$estrato))
Estrato<- rownames_to_column(Estrato,"Estrato") %>%
select(Estrato, Freq, X..Valid) %>%
drop_na()
colnames(Estrato) = c("Estrato", "Freq. Absoluta", "Freq. Relativa %")
flextable(Estrato)
Estrato | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
3 | 105 | 84.677419 |
4 | 14 | 11.290323 |
5 | 4 | 3.225806 |
6 | 1 | 0.806452 |
Total | 124 | 100.000000 |
Gráfico
dataEstrato <- Estrato%>%
filter(Estrato!="Total")
dataEstrato$Estrato<-factor(dataEstrato$Estrato, ordered = T,levels = c("3","4","5","6"))
plot_ly(data = dataEstrato, x=~Estrato, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataEstrato$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E6E6FA","#BDB76B", "#556B2F", "#A52A2A")))%>%
layout(title = list(text="Estrato en las viviendas del Mercado inmobiliario Cali Zona Centro",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Estrato", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Parqueaderos Zona Centro
Tabla.
Parqueadero <- data.frame(freq(dataZonaCentro$parquea))
Parqueadero<- rownames_to_column(Parqueadero,"Parqueadero") %>%
select(Parqueadero, Freq, X..Valid)
colnames(Parqueadero) = c("Parqueadero", "Freq. Absoluta", "Freq. Relativa %")
flextable(Parqueadero)
Parqueadero | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 50 | 78.125 |
2 | 10 | 15.625 |
4 | 2 | 3.125 |
6 | 2 | 3.125 |
<NA> | 60 | |
Total | 124 | 100.000 |
Gráfico
dataParqueadero <- Parqueadero%>%
drop_na() %>%
filter(Parqueadero!="Total")
dataParqueadero$Parqueadero<-factor(dataParqueadero$Parqueadero, ordered = T,levels = c("1","2","3","4","5","6"))
plot_ly(data = dataParqueadero, x=~Parqueadero, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataParqueadero$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8")))%>%
layout(title = list(text="Número de parqueaderos en las viviendas del Mercado inmobiliario Cali Zona Centro",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Parqueaderos", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Baños Zona Centro
Tabla:
Baños <- data.frame(freq(dataZonaCentro$banios))
Baños<- rownames_to_column(Baños,"Baños") %>%
drop_na() %>%
select(Baños, Freq, X..Valid)
colnames(Baños) = c("Baños", "Freq. Absoluta", "Freq. Relativa %")
flextable(Baños)
Baños | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 3 | 2.419355 |
1 | 16 | 12.903226 |
2 | 43 | 34.677419 |
3 | 26 | 20.967742 |
4 | 19 | 15.322581 |
5 | 11 | 8.870968 |
6 | 4 | 3.225806 |
8 | 1 | 0.806452 |
9 | 1 | 0.806452 |
Total | 124 | 100.000000 |
Gráfico:
dataBaños <- Baños%>%
filter(Baños!="Total")
dataBaños$Baños<-factor(dataBaños$Baños, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataBaños, x=~Baños, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataBaños$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C")))%>%
layout(title = list(text="Número de baños en las viviendas del Mercado inmobiliario Cali Zona Centro",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Baños", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Habitaciones Zona Centro
Tabla:
Habitaciones <- data.frame(freq(dataZonaCentro$habitac))
Habitaciones<- rownames_to_column(Habitaciones,"Habitaciones") %>%
drop_na() %>%
select(Habitaciones, Freq, X..Valid)
colnames(Habitaciones) = c("Habitaciones", "Freq. Absoluta", "Freq. Relativa %")
flextable(Habitaciones)
Habitaciones | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 3 | 2.41935 |
1 | 3 | 2.41935 |
2 | 12 | 9.67742 |
3 | 28 | 22.58065 |
4 | 19 | 15.32258 |
5 | 20 | 16.12903 |
6 | 11 | 8.87097 |
7 | 9 | 7.25806 |
8 | 8 | 6.45161 |
9 | 7 | 5.64516 |
10 | 4 | 3.22581 |
Total | 124 | 100.00000 |
Gráfico:
dataHabitaciones <- Habitaciones%>%
filter(Habitaciones!="Total")
dataHabitaciones$Habitaciones<-factor(dataHabitaciones$Habitaciones, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataHabitaciones, x=~Habitaciones, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataHabitaciones$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#A52A2A")))%>%
layout(title = list(text="Número de habitaciones en las viviendas del Mercado inmobiliario Cali Zona Centro",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Habitaciones", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Tipo Zona Centro
Tabla
Tipo <- data.frame(freq(dataZonaCentro$tipo))
Tipo<- rownames_to_column(Tipo,"Tipo") %>%
drop_na() %>%
select(Tipo, Freq, X..Valid)
colnames(Tipo) = c("Tipo", "Freq. Absoluta", "Freq. Relativa %")
flextable(Tipo)
Tipo | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
APARTAMENTO | 24 | 19.3548 |
CASA | 100 | 80.6452 |
Total | 124 | 100.0000 |
Gáfico:
dataTipo <- Tipo%>%
filter(Tipo!="Total")
plot_ly(data = dataTipo, labels = ~Tipo, values=~`Freq. Absoluta`, type="pie",
marker = list(colors = c("#BDB76B", "#A52A2A")),
textposition = 'inside',
textinfo = 'label+percent',
showlegend = FALSE)
Barrio Zona Centro
En total aparecen 33 barrios, se organizan de manera descendente y con la función head se presentan los 6 primeros.
Tabla:
Barrio <- data.frame(freq(dataZonaCentro$barrio)) %>%
select(Freq, "Freq. Relativa %" = X..Valid) %>%
arrange(desc(Freq))
head(Barrio)
## Freq Freq. Relativa %
## Total 124 100.00000
## JUNIN 17 13.70968
## ARANJUEZ 14 11.29032
## GUAYAQUIL 14 11.29032
## BRETAÑA 13 10.48387
## ALAMEDA 11 8.87097
Latitud y Longitud Zona Centro
dataZonaCentro %>%
leaflet() %>%
addTiles() %>%
addMarkers(~longitud, ~latitud)
preciom Zona Centro
descr(dataZonaCentro$preciom)
## Descriptive Statistics
## dataZonaCentro$preciom
## N: 124
##
## preciom
## ----------------- ---------
## Mean 309.69
## Std.Dev 162.15
## Min 100.00
## Q1 187.50
## Median 297.00
## Q3 362.50
## Max 1100.00
## MAD 126.02
## IQR 172.50
## CV 0.52
## Skewness 1.94
## SE.Skewness 0.22
## Kurtosis 5.92
## N.Valid 124.00
## Pct.Valid 100.00
hist(dataZonaCentro$preciom, main = "Histograma de Precio Zona Centro",
xlab = "Precio", ylab = "Frecuencia", col = "#BDB76B")
areaconst Zona Centro
descr(dataZonaCentro$areaconst)
## Descriptive Statistics
## dataZonaCentro$areaconst
## N: 124
##
## areaconst
## ----------------- -----------
## Mean 194.04
## Std.Dev 109.78
## Min 52.00
## Q1 122.50
## Median 160.00
## Q3 247.50
## Max 750.00
## MAD 94.15
## IQR 122.50
## CV 0.57
## Skewness 1.75
## SE.Skewness 0.22
## Kurtosis 5.07
## N.Valid 124.00
## Pct.Valid 100.00
hist(dataZonaCentro$areaconst,main = "Histograma de Área Zona Centro",
xlab = "Área", ylab = "Frecuencia", col="#A52A2A")
Precio vs Tipo Zona Centro
boxplot(dataZonaCentro$preciom ~ dataZonaCentro$tipo,
main="Distribución del precio por tipo de vivienda Zona Centro",
ylab="Precio",
xlab="Tipo",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
La Zona Oriente cuenta con 351 viviendas que representan el 4.2% de los registros analizados. Filtramos la información para que solo nos muestre la información de la Zona Oriente
dataZonaOriente <- vivienda_faltantes %>%
filter(zona == "ZONA ORIENTE")
descr(dataZonaOriente)
## Descriptive Statistics
## dataZonaOriente
## N: 351
##
## areaconst banios estrato habitac id latitud longitud parquea
## ----------------- ----------- -------- --------- --------- --------- --------- ---------- ---------
## Mean 192.33 2.75 3.04 4.92 1392.36 3.43 -76.51 1.38
## Std.Dev 157.32 1.57 0.26 2.32 1597.25 0.02 0.02 0.80
## Min 40.00 0.00 3.00 0.00 21.00 3.34 -76.56 1.00
## Q1 90.00 2.00 3.00 3.00 424.00 3.42 -76.52 1.00
## Median 160.00 2.00 3.00 4.00 976.00 3.44 -76.51 1.00
## Q3 240.00 4.00 3.00 7.00 1417.00 3.45 -76.50 2.00
## Max 1745.00 10.00 6.00 10.00 8271.00 3.49 -76.47 6.00
## MAD 103.78 1.48 0.00 2.97 787.26 0.02 0.01 0.00
## IQR 150.00 2.00 0.00 4.00 992.00 0.03 0.02 0.50
## CV 0.82 0.57 0.09 0.47 1.15 0.01 0.00 0.58
## Skewness 4.47 1.19 7.42 0.35 2.23 -0.56 -0.41 2.77
## SE.Skewness 0.13 0.13 0.13 0.13 0.13 0.13 0.13 0.19
## Kurtosis 34.76 2.15 63.20 -0.83 4.79 0.49 0.32 9.26
## N.Valid 351.00 351.00 351.00 351.00 351.00 351.00 351.00 163.00
## Pct.Valid 100.00 100.00 100.00 100.00 100.00 100.00 100.00 46.44
##
## Table: Table continues below
##
##
##
## piso preciom
## ----------------- -------- ---------
## Mean 2.13 228.53
## Std.Dev 1.19 122.06
## Min 1.00 58.00
## Q1 1.00 145.00
## Median 2.00 210.00
## Q3 3.00 290.00
## Max 10.00 1350.00
## MAD 1.48 103.78
## IQR 2.00 145.00
## CV 0.56 0.53
## Skewness 1.87 2.87
## SE.Skewness 0.17 0.13
## Kurtosis 8.14 20.21
## N.Valid 208.00 351.00
## Pct.Valid 59.26 100.00
Haremos lo mismo que se hizo al analizar las variables de manera general:
Piso Zona Oriente
Tabla:
Piso <- data.frame(freq(dataZonaOriente$piso))
Piso<- rownames_to_column(Piso,"Piso") %>%
select(Piso, Freq, X..Valid)
colnames(Piso) = c("Piso", "Freq. Absoluta", "Freq. Relativa %")
flextable(Piso)
Piso | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 74 | 35.576923 |
2 | 63 | 30.288462 |
3 | 54 | 25.961538 |
4 | 8 | 3.846154 |
5 | 8 | 3.846154 |
10 | 1 | 0.480769 |
<NA> | 143 | |
Total | 351 | 100.000000 |
Gráfico:
dataPiso <- Piso%>%
drop_na() %>%
filter(Piso!="Total")
dataPiso$Piso<-factor(dataPiso$Piso, ordered = T,levels = c("1","2","3","4","5","11"))
plot_ly(data = dataPiso, x=~Piso, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataPiso$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9")))%>%
layout(title = list(text="Número de piso de las viviendas del Mercado inmobiliario Cali- Zona Oriente",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Piso", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Estrato Zona Oriente
Tabla:
Estrato <- data.frame(freq(dataZonaOriente$estrato))
Estrato<- rownames_to_column(Estrato,"Estrato") %>%
select(Estrato, Freq, X..Valid) %>%
drop_na()
colnames(Estrato) = c("Estrato", "Freq. Absoluta", "Freq. Relativa %")
flextable(Estrato)
Estrato | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
3 | 340 | 96.866097 |
4 | 8 | 2.279202 |
5 | 2 | 0.569801 |
6 | 1 | 0.284900 |
Total | 351 | 100.000000 |
Gráfico
dataEstrato <- Estrato%>%
filter(Estrato!="Total")
dataEstrato$Estrato<-factor(dataEstrato$Estrato, ordered = T,levels = c("3","4","5","6"))
plot_ly(data = dataEstrato, x=~Estrato, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataEstrato$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E6E6FA","#BDB76B", "#556B2F", "#A52A2A")))%>%
layout(title = list(text="Estrato en las viviendas del Mercado inmobiliario Cali Zona Oriente",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Estrato", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Parqueaderos Zona Oriente
Tabla.
Parqueadero <- data.frame(freq(dataZonaOriente$parquea))
Parqueadero<- rownames_to_column(Parqueadero,"Parqueadero") %>%
select(Parqueadero, Freq, X..Valid)
colnames(Parqueadero) = c("Parqueadero", "Freq. Absoluta", "Freq. Relativa %")
flextable(Parqueadero)
Parqueadero | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 122 | 74.846626 |
2 | 28 | 17.177914 |
3 | 8 | 4.907975 |
4 | 3 | 1.840491 |
5 | 1 | 0.613497 |
6 | 1 | 0.613497 |
<NA> | 188 | |
Total | 351 | 100.000000 |
Gráfico
dataParqueadero <- Parqueadero%>%
drop_na() %>%
filter(Parqueadero!="Total")
dataParqueadero$Parqueadero<-factor(dataParqueadero$Parqueadero, ordered = T,levels = c("1","2","3","4","5","6"))
plot_ly(data = dataParqueadero, x=~Parqueadero, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataParqueadero$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#BDB76B", "#556B2F")))%>%
layout(title = list(text="Número de parqueaderos en las viviendas del Mercado inmobiliario Cali Zona Oriente",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Parqueaderos", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Baños Zona Oriente
Tabla:
Baños <- data.frame(freq(dataZonaOriente$banios))
Baños<- rownames_to_column(Baños,"Baños") %>%
drop_na() %>%
select(Baños, Freq, X..Valid)
colnames(Baños) = c("Baños", "Freq. Absoluta", "Freq. Relativa %")
flextable(Baños)
Baños | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 5 | 1.424501 |
1 | 68 | 19.373219 |
2 | 108 | 30.769231 |
3 | 78 | 22.222222 |
4 | 52 | 14.814815 |
5 | 19 | 5.413105 |
6 | 13 | 3.703704 |
7 | 2 | 0.569801 |
8 | 4 | 1.139601 |
9 | 1 | 0.284900 |
10 | 1 | 0.284900 |
Total | 351 | 100.000000 |
Gráfico:
dataBaños <- Baños%>%
filter(Baños!="Total")
dataBaños$Baños<-factor(dataBaños$Baños, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataBaños, x=~Baños, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataBaños$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C")))%>%
layout(title = list(text="Número de baños en las viviendas del Mercado inmobiliario Cali Zona Oriente",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Baños", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Habitaciones Zona Oriente
Tabla:
Habitaciones <- data.frame(freq(dataZonaOriente$habitac))
Habitaciones<- rownames_to_column(Habitaciones,"Habitaciones") %>%
drop_na() %>%
select(Habitaciones, Freq, X..Valid)
colnames(Habitaciones) = c("Habitaciones", "Freq. Absoluta", "Freq. Relativa %")
flextable(Habitaciones)
Habitaciones | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 6 | 1.709402 |
1 | 2 | 0.569801 |
2 | 31 | 8.831909 |
3 | 89 | 25.356125 |
4 | 52 | 14.814815 |
5 | 34 | 9.686610 |
6 | 42 | 11.965812 |
7 | 31 | 8.831909 |
8 | 32 | 9.116809 |
9 | 26 | 7.407407 |
10 | 6 | 1.709402 |
Total | 351 | 100.000000 |
Gráfico:
dataHabitaciones <- Habitaciones%>%
filter(Habitaciones!="Total")
dataHabitaciones$Habitaciones<-factor(dataHabitaciones$Habitaciones, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataHabitaciones, x=~Habitaciones, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataHabitaciones$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#A52A2A")))%>%
layout(title = list(text="Número de habitaciones en las viviendas del Mercado inmobiliario Cali Zona Oriente",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Habitaciones", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Tipo Zona Oriente
Tabla
Tipo <- data.frame(freq(dataZonaOriente$tipo))
Tipo<- rownames_to_column(Tipo,"Tipo") %>%
drop_na() %>%
select(Tipo, Freq, X..Valid)
colnames(Tipo) = c("Tipo", "Freq. Absoluta", "Freq. Relativa %")
flextable(Tipo)
Tipo | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
APARTAMENTO | 62 | 17.6638 |
CASA | 289 | 82.3362 |
Total | 351 | 100.0000 |
Gáfico:
dataTipo <- Tipo%>%
filter(Tipo!="Total")
plot_ly(data = dataTipo, labels = ~Tipo, values=~`Freq. Absoluta`, type="pie",
marker = list(colors = c("#BDB76B", "#A52A2A")),
textposition = 'inside',
textinfo = 'label+percent',
showlegend = FALSE)
Barrio Zona Oriente
En total aparecen más de 70 barrios, se organizan de manera descendente y con la función head se presentan los 6 primeros.
Tabla:
Barrio <- data.frame(freq(dataZonaOriente$barrio)) %>%
select(Freq, "Freq. Relativa %" = X..Valid) %>%
arrange(desc(Freq))
head(Barrio)
## Freq Freq. Relativa %
## Total 351 100.00000
## ALFONSO LÓPEZ 21 5.98291
## CIUDAD CORDOBA 20 5.69801
## LAS CEIBAS 19 5.41311
## ZONA ORIENTE 17 4.84330
## EL TRONCAL 16 4.55840
Latitud y Longitud Zona Oriente
dataZonaOriente %>%
leaflet() %>%
addTiles() %>%
addMarkers(~longitud, ~latitud)
preciom Zona Oriente
descr(dataZonaOriente$preciom)
## Descriptive Statistics
## dataZonaOriente$preciom
## N: 351
##
## preciom
## ----------------- ---------
## Mean 228.53
## Std.Dev 122.06
## Min 58.00
## Q1 145.00
## Median 210.00
## Q3 290.00
## Max 1350.00
## MAD 103.78
## IQR 145.00
## CV 0.53
## Skewness 2.87
## SE.Skewness 0.13
## Kurtosis 20.21
## N.Valid 351.00
## Pct.Valid 100.00
hist(dataZonaOriente$preciom, main = "Histograma de Precio Zona Oriente",
xlab = "Precio", ylab = "Frecuencia", col = "#BDB76B")
areaconst Zona Oriente
descr(dataZonaOriente$areaconst)
## Descriptive Statistics
## dataZonaOriente$areaconst
## N: 351
##
## areaconst
## ----------------- -----------
## Mean 192.33
## Std.Dev 157.32
## Min 40.00
## Q1 90.00
## Median 160.00
## Q3 240.00
## Max 1745.00
## MAD 103.78
## IQR 150.00
## CV 0.82
## Skewness 4.47
## SE.Skewness 0.13
## Kurtosis 34.76
## N.Valid 351.00
## Pct.Valid 100.00
hist(dataZonaOriente$areaconst,main = "Histograma de Área Zona Oriente",
xlab = "Área", ylab = "Frecuencia", col="#A52A2A")
Precio vs Tipo Zona Oriente
boxplot(dataZonaOriente$preciom ~ dataZonaOriente$tipo,
main="Distribución del precio por tipo de vivienda Zona Oriente",
ylab="Precio",
xlab="Tipo",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
La Zona Oeste cuenta con 1.198 viviendas que representan el 14.4% de los registros analizados. Filtramos la información para que solo nos muestre la información de la Zona Oeste
dataZonaOeste <- vivienda_faltantes %>%
filter(zona == "ZONA OESTE")
descr(dataZonaOeste)
## Descriptive Statistics
## dataZonaOeste
## N: 1198
##
## areaconst banios estrato habitac id latitud longitud parquea
## ----------------- ----------- --------- --------- --------- --------- --------- ---------- ---------
## Mean 196.40 3.51 5.48 3.29 6786.41 3.44 -76.55 2.15
## Std.Dev 122.44 1.31 0.81 1.14 1620.04 0.01 0.01 0.87
## Min 44.00 0.00 3.00 0.00 2.00 3.36 -76.59 1.00
## Q1 112.00 3.00 5.00 3.00 6314.00 3.44 -76.55 2.00
## Median 165.50 4.00 6.00 3.00 7274.00 3.45 -76.55 2.00
## Q3 240.00 4.00 6.00 4.00 7842.00 3.45 -76.54 2.00
## Max 1200.00 9.00 6.00 10.00 8317.00 3.49 -76.46 7.00
## MAD 92.66 1.48 0.00 0.00 965.91 0.01 0.01 0.00
## IQR 127.75 1.00 1.00 1.00 1527.50 0.01 0.01 0.00
## CV 0.62 0.37 0.15 0.35 0.24 0.00 0.00 0.40
## Skewness 2.04 0.32 -1.59 1.75 -2.18 -1.61 2.23 1.38
## SE.Skewness 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07
## Kurtosis 7.25 0.40 1.83 7.60 5.20 5.90 8.71 3.71
## N.Valid 1198.00 1198.00 1198.00 1198.00 1198.00 1198.00 1198.00 1098.00
## Pct.Valid 100.00 100.00 100.00 100.00 100.00 100.00 100.00 91.65
##
## Table: Table continues below
##
##
##
## piso preciom
## ----------------- -------- ---------
## Mean 4.70 677.58
## Std.Dev 2.82 391.58
## Min 1.00 85.00
## Q1 2.00 393.00
## Median 4.00 580.00
## Q3 6.00 900.00
## Max 12.00 1999.00
## MAD 2.97 326.17
## IQR 4.00 506.50
## CV 0.60 0.58
## Skewness 0.67 0.99
## SE.Skewness 0.09 0.07
## Kurtosis -0.39 0.47
## N.Valid 805.00 1198.00
## Pct.Valid 67.20 100.00
Haremos lo mismo que se hizo al analizar las variables de manera general:
Piso Zona Oeste
Tabla:
Piso <- data.frame(freq(dataZonaOeste$piso))
Piso<- rownames_to_column(Piso,"Piso") %>%
select(Piso, Freq, X..Valid)
colnames(Piso) = c("Piso", "Freq. Absoluta", "Freq. Relativa %")
flextable(Piso)
Piso | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 86 | 10.68323 |
2 | 121 | 15.03106 |
3 | 134 | 16.64596 |
4 | 99 | 12.29814 |
5 | 84 | 10.43478 |
6 | 80 | 9.93789 |
7 | 57 | 7.08075 |
8 | 43 | 5.34161 |
9 | 41 | 5.09317 |
10 | 28 | 3.47826 |
11 | 20 | 2.48447 |
12 | 12 | 1.49068 |
<NA> | 393 | |
Total | 1,198 | 100.00000 |
Gráfico:
dataPiso <- Piso%>%
drop_na() %>%
filter(Piso!="Total")
dataPiso$Piso<-factor(dataPiso$Piso, ordered = T,levels = c("1","2","3","4","5","6","7","8","9","10","11","12"))
plot_ly(data = dataPiso, x=~Piso, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataPiso$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#556B2F", "#A52A2A")))%>%
layout(title = list(text="Número de piso de las viviendas del Mercado inmobiliario Cali Zona Oeste",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Piso", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Estrato Zona Oeste
Tabla:
Estrato <- data.frame(freq(dataZonaOeste$estrato))
Estrato<- rownames_to_column(Estrato,"Estrato") %>%
select(Estrato, Freq, X..Valid) %>%
drop_na()
colnames(Estrato) = c("Estrato", "Freq. Absoluta", "Freq. Relativa %")
flextable(Estrato)
Estrato | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
3 | 54 | 4.50751 |
4 | 84 | 7.01169 |
5 | 290 | 24.20701 |
6 | 770 | 64.27379 |
Total | 1,198 | 100.00000 |
Gráfico
dataEstrato <- Estrato%>%
filter(Estrato!="Total")
dataEstrato$Estrato<-factor(dataEstrato$Estrato, ordered = T,levels = c("3","4","5","6"))
plot_ly(data = dataEstrato, x=~Estrato, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataEstrato$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E6E6FA","#BDB76B", "#556B2F", "#A52A2A")))%>%
layout(title = list(text="Estrato en las viviendas del Mercado inmobiliario Cali Zona Oeste",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Estrato", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Parqueaderos Zona Oeste
Tabla.
Parqueadero <- data.frame(freq(dataZonaOeste$parquea))
Parqueadero<- rownames_to_column(Parqueadero,"Parqueadero") %>%
select(Parqueadero, Freq, X..Valid)
colnames(Parqueadero) = c("Parqueadero", "Freq. Absoluta", "Freq. Relativa %")
flextable(Parqueadero)
Parqueadero | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 195 | 17.759563 |
2 | 653 | 59.471767 |
3 | 166 | 15.118397 |
4 | 68 | 6.193078 |
5 | 8 | 0.728597 |
6 | 6 | 0.546448 |
7 | 2 | 0.182149 |
<NA> | 100 | |
Total | 1,198 | 100.000000 |
Gráfico
dataParqueadero <- Parqueadero%>%
drop_na() %>%
filter(Parqueadero!="Total")
dataParqueadero$Parqueadero<-factor(dataParqueadero$Parqueadero, ordered = T,levels = c("1","2","3","4","5","6"))
plot_ly(data = dataParqueadero, x=~Parqueadero, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataParqueadero$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#BDB76B", "#556B2F", "#8B0000")))%>%
layout(title = list(text="Número de parqueaderos en las viviendas del Mercado inmobiliario Cali Zona Oeste",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Parqueaderos", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Baños Zona Oeste
Tabla:
Baños <- data.frame(freq(dataZonaOeste$banios))
Baños<- rownames_to_column(Baños,"Baños") %>%
drop_na() %>%
select(Baños, Freq, X..Valid)
colnames(Baños) = c("Baños", "Freq. Absoluta", "Freq. Relativa %")
flextable(Baños)
Baños | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 7 | 0.584307 |
1 | 38 | 3.171953 |
2 | 237 | 19.782972 |
3 | 315 | 26.293823 |
4 | 350 | 29.215359 |
5 | 185 | 15.442404 |
6 | 43 | 3.589316 |
7 | 19 | 1.585977 |
8 | 2 | 0.166945 |
9 | 2 | 0.166945 |
Total | 1,198 | 100.000000 |
Gráfico:
dataBaños <- Baños%>%
filter(Baños!="Total")
dataBaños$Baños<-factor(dataBaños$Baños, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataBaños, x=~Baños, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataBaños$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C", "#FA8072", "#B22222")))%>%
layout(title = list(text="Número de baños en las viviendas del Mercado inmobiliario Cali Zona Oeste",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Baños", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Habitaciones Zona Oeste
Tabla:
Habitaciones <- data.frame(freq(dataZonaOeste$habitac))
Habitaciones<- rownames_to_column(Habitaciones,"Habitaciones") %>%
drop_na() %>%
select(Habitaciones, Freq, X..Valid)
colnames(Habitaciones) = c("Habitaciones", "Freq. Absoluta", "Freq. Relativa %")
flextable(Habitaciones)
Habitaciones | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 8 | 0.667780 |
1 | 16 | 1.335559 |
2 | 173 | 14.440735 |
3 | 622 | 51.919866 |
4 | 272 | 22.704508 |
5 | 64 | 5.342237 |
6 | 22 | 1.836394 |
7 | 6 | 0.500835 |
8 | 5 | 0.417362 |
9 | 6 | 0.500835 |
10 | 4 | 0.333890 |
Total | 1,198 | 100.000000 |
Gráfico:
dataHabitaciones <- Habitaciones%>%
filter(Habitaciones!="Total")
dataHabitaciones$Habitaciones<-factor(dataHabitaciones$Habitaciones, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataHabitaciones, x=~Habitaciones, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataHabitaciones$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#A52A2A")))%>%
layout(title = list(text="Número de habitaciones en las viviendas del Mercado inmobiliario Cali Zona Oeste",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Habitaciones", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Tipo Zona Oeste
Tabla
Tipo <- data.frame(freq(dataZonaOeste$tipo))
Tipo<- rownames_to_column(Tipo,"Tipo") %>%
drop_na() %>%
select(Tipo, Freq, X..Valid)
colnames(Tipo) = c("Tipo", "Freq. Absoluta", "Freq. Relativa %")
flextable(Tipo)
Tipo | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
APARTAMENTO | 1,029 | 85.8932 |
CASA | 169 | 14.1068 |
Total | 1,198 | 100.0000 |
Gáfico:
dataTipo <- Tipo%>%
filter(Tipo!="Total")
plot_ly(data = dataTipo, labels = ~Tipo, values=~`Freq. Absoluta`, type="pie",
marker = list(colors = c("#BDB76B", "#A52A2A")),
textposition = 'inside',
textinfo = 'label+percent',
showlegend = FALSE)
Barrio Zona Oeste
En total aparecen más de 50 barrios, se organizan de manera descendente y con la función head se presentan los 6 primeros.
Tabla:
Barrio <- data.frame(freq(dataZonaOeste$barrio)) %>%
select(Freq, "Freq. Relativa %" = X..Valid) %>%
arrange(desc(Freq))
head(Barrio)
## Freq Freq. Relativa %
## Total 1198 100.00000
## SANTA TERESITA 255 21.28548
## LOS CRISTALES 154 12.85476
## NORMANDÍA 153 12.77129
## AGUACATAL 108 9.01503
## CRISTALES 81 6.76127
Latitud y Longitud Zona Oeste
dataZonaOeste %>%
leaflet() %>%
addTiles() %>%
addMarkers(~longitud, ~latitud)
precio Zona Oeste
descr(dataZonaOeste$preciom)
## Descriptive Statistics
## dataZonaOeste$preciom
## N: 1198
##
## preciom
## ----------------- ---------
## Mean 677.58
## Std.Dev 391.58
## Min 85.00
## Q1 393.00
## Median 580.00
## Q3 900.00
## Max 1999.00
## MAD 326.17
## IQR 506.50
## CV 0.58
## Skewness 0.99
## SE.Skewness 0.07
## Kurtosis 0.47
## N.Valid 1198.00
## Pct.Valid 100.00
hist(dataZonaOeste$preciom, main = "Histograma de Precio Zona Oeste",
xlab = "Precio", ylab = "Frecuencia", col = "#BDB76B")
areaconst Zona Oeste
descr(dataZonaOeste$areaconst)
## Descriptive Statistics
## dataZonaOeste$areaconst
## N: 1198
##
## areaconst
## ----------------- -----------
## Mean 196.40
## Std.Dev 122.44
## Min 44.00
## Q1 112.00
## Median 165.50
## Q3 240.00
## Max 1200.00
## MAD 92.66
## IQR 127.75
## CV 0.62
## Skewness 2.04
## SE.Skewness 0.07
## Kurtosis 7.25
## N.Valid 1198.00
## Pct.Valid 100.00
hist(dataZonaOeste$areaconst,main = "Histograma de Área Zona Oeste",
xlab = "Área", ylab = "Frecuencia", col="#A52A2A")
Precio vs Tipo Zona Oeste
boxplot(dataZonaOeste$preciom ~ dataZonaOeste$tipo,
main="Distribución del precio por tipo de vivienda Zona Oeste",
ylab="Precio",
xlab="Tipo",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
La Zona Norte cuenta con 1.920 viviendas que representan el 23.1% de los registros analizados. Filtramos la información para que solo nos muestre la información de la Zona Norte
dataZonaNorte <- vivienda_faltantes %>%
filter(zona == "ZONA NORTE")
descr(dataZonaNorte)
## Descriptive Statistics
## dataZonaNorte
## N: 1920
##
## areaconst banios estrato habitac id latitud longitud parquea
## ----------------- ----------- --------- --------- --------- --------- --------- ---------- ---------
## Mean 161.12 2.78 4.28 3.50 2558.00 3.46 -76.52 1.65
## Std.Dev 137.71 1.33 0.99 1.46 1933.38 0.03 0.02 1.01
## Min 30.00 0.00 3.00 0.00 31.00 3.33 -76.59 1.00
## Q1 70.00 2.00 3.00 3.00 832.50 3.46 -76.53 1.00
## Median 107.00 2.00 4.00 3.00 2400.50 3.47 -76.52 1.00
## Q3 215.50 3.00 5.00 4.00 3869.50 3.48 -76.50 2.00
## Max 1440.00 10.00 6.00 10.00 8319.00 3.50 -76.47 10.00
## MAD 68.20 1.48 1.48 0.00 2263.93 0.02 0.02 0.00
## IQR 145.25 1.00 2.00 1.00 3035.00 0.03 0.03 1.00
## CV 0.85 0.48 0.23 0.42 0.76 0.01 0.00 0.62
## Skewness 2.57 1.17 -0.03 1.59 0.71 -1.81 0.04 2.74
## SE.Skewness 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.07
## Kurtosis 10.51 2.12 -1.23 4.34 -0.24 2.89 -0.11 11.43
## N.Valid 1920.00 1920.00 1920.00 1920.00 1920.00 1920.00 1920.00 1287.00
## Pct.Valid 100.00 100.00 100.00 100.00 100.00 100.00 100.00 67.03
##
## Table: Table continues below
##
##
##
## piso preciom
## ----------------- --------- ---------
## Mean 3.98 345.61
## Std.Dev 2.95 240.87
## Min 1.00 65.00
## Q1 2.00 160.00
## Median 3.00 300.00
## Q3 5.00 430.00
## Max 12.00 1940.00
## MAD 1.48 200.15
## IQR 3.00 270.00
## CV 0.74 0.70
## Skewness 1.27 1.97
## SE.Skewness 0.07 0.06
## Kurtosis 0.74 5.75
## N.Valid 1139.00 1920.00
## Pct.Valid 59.32 100.00
Haremos lo mismo que se hizo al analizar las variables de manera general:
Piso Zona Norte
Tabla:
Piso <- data.frame(freq(dataZonaNorte$piso))
Piso<- rownames_to_column(Piso,"Piso") %>%
select(Piso, Freq, X..Valid)
colnames(Piso) = c("Piso", "Freq. Absoluta", "Freq. Relativa %")
flextable(Piso)
Piso | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 177 | 15.53995 |
2 | 293 | 25.72432 |
3 | 189 | 16.59350 |
4 | 129 | 11.32572 |
5 | 117 | 10.27217 |
6 | 33 | 2.89728 |
7 | 33 | 2.89728 |
8 | 39 | 3.42406 |
9 | 32 | 2.80948 |
10 | 27 | 2.37050 |
11 | 33 | 2.89728 |
12 | 37 | 3.24846 |
<NA> | 781 | |
Total | 1,920 | 100.00000 |
Gráfico:
dataPiso <- Piso%>%
drop_na() %>%
filter(Piso!="Total")
dataPiso$Piso<-factor(dataPiso$Piso, ordered = T,levels = c("1","2","3","4","5","6","7","8","9","10","11","12"))
plot_ly(data = dataPiso, x=~Piso, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataPiso$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#556B2F", "#A52A2A")))%>%
layout(title = list(text="Número de piso de las viviendas del Mercado inmobiliario Cali Zona Norte",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Piso", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Estrato Zona Norte
Tabla:
Estrato <- data.frame(freq(dataZonaNorte$estrato))
Estrato<- rownames_to_column(Estrato,"Estrato") %>%
select(Estrato, Freq, X..Valid) %>%
drop_na()
colnames(Estrato) = c("Estrato", "Freq. Absoluta", "Freq. Relativa %")
flextable(Estrato)
Estrato | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
3 | 572 | 29.79167 |
4 | 407 | 21.19792 |
5 | 769 | 40.05208 |
6 | 172 | 8.95833 |
Total | 1,920 | 100.00000 |
Gráfico
dataEstrato <- Estrato%>%
filter(Estrato!="Total")
dataEstrato$Estrato<-factor(dataEstrato$Estrato, ordered = T,levels = c("3","4","5","6"))
plot_ly(data = dataEstrato, x=~Estrato, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataEstrato$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E6E6FA","#BDB76B", "#556B2F", "#A52A2A")))%>%
layout(title = list(text="Estrato en las viviendas del Mercado inmobiliario Cali Zona Norte",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Estrato", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Parqueaderos Zona Norte
Tabla.
Parqueadero <- data.frame(freq(dataZonaNorte$parquea))
Parqueadero<- rownames_to_column(Parqueadero,"Parqueadero") %>%
select(Parqueadero, Freq, X..Valid)
colnames(Parqueadero) = c("Parqueadero", "Freq. Absoluta", "Freq. Relativa %")
flextable(Parqueadero)
Parqueadero | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 727 | 56.4879565 |
2 | 418 | 32.4786325 |
3 | 69 | 5.3613054 |
4 | 46 | 3.5742036 |
5 | 11 | 0.8547009 |
6 | 8 | 0.6216006 |
7 | 5 | 0.3885004 |
8 | 1 | 0.0777001 |
9 | 1 | 0.0777001 |
10 | 1 | 0.0777001 |
<NA> | 633 | |
Total | 1,920 | 100.0000000 |
Gráfico
dataParqueadero <- Parqueadero%>%
drop_na() %>%
filter(Parqueadero!="Total")
dataParqueadero$Parqueadero<-factor(dataParqueadero$Parqueadero, ordered = T,levels = c("1","2","3","4","5","6"))
plot_ly(data = dataParqueadero, x=~Parqueadero, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataParqueadero$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#BDB76B", "#556B2F", "#8B0000")))%>%
layout(title = list(text="Número de parqueaderos en las viviendas del Mercado inmobiliario Cali Zona Norte",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Parqueaderos", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Baños Zona Norte
Tabla:
Baños <- data.frame(freq(dataZonaNorte$banios))
Baños<- rownames_to_column(Baños,"Baños") %>%
drop_na() %>%
select(Baños, Freq, X..Valid)
colnames(Baños) = c("Baños", "Freq. Absoluta", "Freq. Relativa %")
flextable(Baños)
Baños | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 12 | 0.6250000 |
1 | 186 | 9.6875000 |
2 | 811 | 42.2395833 |
3 | 438 | 22.8125000 |
4 | 270 | 14.0625000 |
5 | 130 | 6.7708333 |
6 | 48 | 2.5000000 |
7 | 11 | 0.5729167 |
8 | 11 | 0.5729167 |
9 | 1 | 0.0520833 |
10 | 2 | 0.1041667 |
Total | 1,920 | 100.0000000 |
Gráfico:
dataBaños <- Baños%>%
filter(Baños!="Total")
dataBaños$Baños<-factor(dataBaños$Baños, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataBaños, x=~Baños, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataBaños$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C", "#FA8072", "#B22222")))%>%
layout(title = list(text="Número de baños en las viviendas del Mercado inmobiliario Cali Zona Norte",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Baños", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Habitaciones Zona Norte
Tabla:
Habitaciones <- data.frame(freq(dataZonaNorte$habitac))
Habitaciones<- rownames_to_column(Habitaciones,"Habitaciones") %>%
drop_na() %>%
select(Habitaciones, Freq, X..Valid)
colnames(Habitaciones) = c("Habitaciones", "Freq. Absoluta", "Freq. Relativa %")
flextable(Habitaciones)
Habitaciones | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 29 | 1.510417 |
1 | 17 | 0.885417 |
2 | 220 | 11.458333 |
3 | 1,008 | 52.500000 |
4 | 342 | 17.812500 |
5 | 146 | 7.604167 |
6 | 60 | 3.125000 |
7 | 42 | 2.187500 |
8 | 29 | 1.510417 |
9 | 14 | 0.729167 |
10 | 13 | 0.677083 |
Total | 1,920 | 100.000000 |
Gráfico:
dataHabitaciones <- Habitaciones%>%
filter(Habitaciones!="Total")
dataHabitaciones$Habitaciones<-factor(dataHabitaciones$Habitaciones, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataHabitaciones, x=~Habitaciones, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataHabitaciones$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#A52A2A")))%>%
layout(title = list(text="Número de habitaciones en las viviendas del Mercado inmobiliario Cali Zona Norte",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Habitaciones", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Tipo Zona Norte
Tabla
Tipo <- data.frame(freq(dataZonaNorte$tipo))
Tipo<- rownames_to_column(Tipo,"Tipo") %>%
drop_na() %>%
select(Tipo, Freq, X..Valid)
colnames(Tipo) = c("Tipo", "Freq. Absoluta", "Freq. Relativa %")
flextable(Tipo)
Tipo | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
APARTAMENTO | 1,198 | 62.3958 |
CASA | 722 | 37.6042 |
Total | 1,920 | 100.0000 |
Gáfico:
dataTipo <- Tipo%>%
filter(Tipo!="Total")
plot_ly(data = dataTipo, labels = ~Tipo, values=~`Freq. Absoluta`, type="pie",
marker = list(colors = c("#BDB76B", "#A52A2A")),
textposition = 'inside',
textinfo = 'label+percent',
showlegend = FALSE)
Barrio Zona Norte
En total aparecen más de 100 barrios, se organizan de manera descendente y con la función head se presentan los 6 primeros.
Tabla:
Barrio <- data.frame(freq(dataZonaNorte$barrio)) %>%
select(Freq, "Freq. Relativa %" = X..Valid) %>%
arrange(desc(Freq))
head(Barrio)
## Freq Freq. Relativa %
## Total 1920 100.00000
## LA FLORA 367 19.11458
## ACOPI 157 8.17708
## PRADOS DEL NORTE 125 6.51042
## URBANIZACIÓN LA FLORA 83 4.32292
## BRISAS DE LOS 82 4.27083
Latitud y Longitud Zona Norte
Uilizamos el mismo código para generar el mapa. Sin embargo, debido a fallas en el procesamiento dejo la imagen.
dataZonaNorte %>% leaflet() %>% addTiles() %>% addMarkers(~longitud, ~latitud)
precio Zona Norte
descr(dataZonaNorte$preciom)
## Descriptive Statistics
## dataZonaNorte$preciom
## N: 1920
##
## preciom
## ----------------- ---------
## Mean 345.61
## Std.Dev 240.87
## Min 65.00
## Q1 160.00
## Median 300.00
## Q3 430.00
## Max 1940.00
## MAD 200.15
## IQR 270.00
## CV 0.70
## Skewness 1.97
## SE.Skewness 0.06
## Kurtosis 5.75
## N.Valid 1920.00
## Pct.Valid 100.00
hist(dataZonaNorte$preciom, main = "Histograma de Precio Zona Norte",
xlab = "Precio", ylab = "Frecuencia", col = "#BDB76B")
areaconst Zona Norte
descr(dataZonaNorte$areaconst)
## Descriptive Statistics
## dataZonaNorte$areaconst
## N: 1920
##
## areaconst
## ----------------- -----------
## Mean 161.12
## Std.Dev 137.71
## Min 30.00
## Q1 70.00
## Median 107.00
## Q3 215.50
## Max 1440.00
## MAD 68.20
## IQR 145.25
## CV 0.85
## Skewness 2.57
## SE.Skewness 0.06
## Kurtosis 10.51
## N.Valid 1920.00
## Pct.Valid 100.00
hist(dataZonaNorte$areaconst,main = "Histograma de Área Zona Norte",
xlab = "Área", ylab = "Frecuencia", col="#A52A2A")
Precio vs Tipo Zona Norte
boxplot(dataZonaNorte$preciom ~ dataZonaNorte$tipo,
main="Distribución del precio por tipo de vivienda Zona Norte",
ylab="Precio",
xlab="Tipo",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
La Zona Sur cuenta con 4.726 viviendas que representan el 56.8%% de los registros analizados. Filtramos la información para que solo nos muestre la información de la Zona Sur
dataZonaSur <- vivienda_faltantes %>%
filter(zona == "ZONA SUR")
descr(dataZonaSur)
## Descriptive Statistics
## dataZonaSur
## N: 4726
##
## areaconst banios estrato habitac id latitud longitud parquea
## ----------------- ----------- --------- --------- --------- --------- --------- ---------- ---------
## Mean 173.31 3.18 4.72 3.60 4360.51 3.39 -76.53 1.83
## Std.Dev 148.68 1.45 0.90 1.35 2080.10 0.03 0.01 1.21
## Min 40.00 0.00 3.00 0.00 1.00 3.33 -76.57 1.00
## Q1 78.00 2.00 4.00 3.00 2574.00 3.37 -76.54 1.00
## Median 113.00 3.00 5.00 3.00 4378.50 3.38 -76.53 1.00
## Q3 220.00 4.00 5.00 4.00 6057.00 3.41 -76.52 2.00
## Max 1600.00 10.00 6.00 10.00 8305.00 3.50 -76.46 10.00
## MAD 71.16 1.48 1.48 1.48 2554.52 0.03 0.01 0.00
## IQR 142.00 2.00 1.00 1.00 3482.50 0.04 0.02 1.00
## CV 0.86 0.46 0.19 0.38 0.48 0.01 0.00 0.66
## Skewness 2.70 1.00 -0.08 1.69 -0.07 0.57 1.12 2.40
## SE.Skewness 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04
## Kurtosis 12.15 1.11 -0.86 4.42 -0.99 0.06 3.49 8.18
## N.Valid 4726.00 4726.00 4726.00 4726.00 4726.00 4726.00 4726.00 4105.00
## Pct.Valid 100.00 100.00 100.00 100.00 100.00 100.00 100.00 86.86
##
## Table: Table continues below
##
##
##
## piso preciom
## ----------------- --------- ---------
## Mean 3.61 426.52
## Std.Dev 2.43 322.72
## Min 1.00 75.00
## Q1 2.00 222.00
## Median 3.00 320.00
## Q3 5.00 520.00
## Max 12.00 1900.00
## MAD 1.48 192.74
## IQR 3.00 298.00
## CV 0.67 0.76
## Skewness 1.35 2.00
## SE.Skewness 0.04 0.04
## Kurtosis 1.42 4.29
## N.Valid 3463.00 4726.00
## Pct.Valid 73.28 100.00
Haremos lo mismo que se hizo al analizar las variables de manera general:
Piso Zona Sur
Tabla:
Piso <- data.frame(freq(dataZonaSur$piso))
Piso<- rownames_to_column(Piso,"Piso") %>%
select(Piso, Freq, X..Valid)
colnames(Piso) = c("Piso", "Freq. Absoluta", "Freq. Relativa %")
flextable(Piso)
Piso | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 490 | 14.149581 |
2 | 957 | 27.634999 |
3 | 712 | 20.560208 |
4 | 366 | 10.568871 |
5 | 353 | 10.193474 |
6 | 132 | 3.811724 |
7 | 114 | 3.291943 |
8 | 129 | 3.725094 |
9 | 73 | 2.107999 |
10 | 74 | 2.136876 |
11 | 29 | 0.837424 |
12 | 34 | 0.981808 |
<NA> | 1,263 | |
Total | 4,726 | 100.000000 |
Gráfico:
dataPiso <- Piso%>%
drop_na() %>%
filter(Piso!="Total")
dataPiso$Piso<-factor(dataPiso$Piso, ordered = T,levels = c("1","2","3","4","5","6","7","8","9","10","11","12"))
plot_ly(data = dataPiso, x=~Piso, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataPiso$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#556B2F", "#A52A2A")))%>%
layout(title = list(text="Número de piso de las viviendas del Mercado inmobiliario Cali Zona Sur",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Piso", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Estrato Zona Sur
Tabla:
Estrato <- data.frame(freq(dataZonaSur$estrato))
Estrato<- rownames_to_column(Estrato,"Estrato") %>%
select(Estrato, Freq, X..Valid) %>%
drop_na()
colnames(Estrato) = c("Estrato", "Freq. Absoluta", "Freq. Relativa %")
flextable(Estrato)
Estrato | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
3 | 382 | 8.08295 |
4 | 1,616 | 34.19382 |
5 | 1,685 | 35.65383 |
6 | 1,043 | 22.06940 |
Total | 4,726 | 100.00000 |
Gráfico
dataEstrato <- Estrato%>%
filter(Estrato!="Total")
dataEstrato$Estrato<-factor(dataEstrato$Estrato, ordered = T,levels = c("3","4","5","6"))
plot_ly(data = dataEstrato, x=~Estrato, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataEstrato$`Freq. Absoluta`, accuracy = 1), marker = list(color = c("#E6E6FA","#BDB76B", "#556B2F", "#A52A2A")))%>%
layout(title = list(text="Estrato en las viviendas del Mercado inmobiliario Cali Zona Sur",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Estrato", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Parqueaderos Zona Sur
Tabla.
Parqueadero <- data.frame(freq(dataZonaSur$parquea))
Parqueadero<- rownames_to_column(Parqueadero,"Parqueadero") %>%
select(Parqueadero, Freq, X..Valid)
colnames(Parqueadero) = c("Parqueadero", "Freq. Absoluta", "Freq. Relativa %")
flextable(Parqueadero)
Parqueadero | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
1 | 2,061 | 50.2070646 |
2 | 1,366 | 33.2764921 |
3 | 277 | 6.7478685 |
4 | 265 | 6.4555420 |
5 | 48 | 1.1693057 |
6 | 51 | 1.2423873 |
7 | 11 | 0.2679659 |
8 | 16 | 0.3897686 |
9 | 3 | 0.0730816 |
10 | 7 | 0.1705238 |
<NA> | 621 | |
Total | 4,726 | 100.0000000 |
Gráfico
dataParqueadero <- Parqueadero%>%
drop_na() %>%
filter(Parqueadero!="Total")
dataParqueadero$Parqueadero<-factor(dataParqueadero$Parqueadero, ordered = T,levels = c("1","2","3","4","5","6"))
plot_ly(data = dataParqueadero, x=~Parqueadero, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataParqueadero$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#BDB76B", "#556B2F", "#8B0000")))%>%
layout(title = list(text="Número de parqueaderos en las viviendas del Mercado inmobiliario Cali Zona Sur",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Parqueaderos", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Baños Zona Sur
Tabla:
Baños <- data.frame(freq(dataZonaSur$banios))
Baños<- rownames_to_column(Baños,"Baños") %>%
drop_na() %>%
select(Baños, Freq, X..Valid)
colnames(Baños) = c("Baños", "Freq. Absoluta", "Freq. Relativa %")
flextable(Baños)
Baños | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 18 | 0.380872 |
1 | 188 | 3.977994 |
2 | 1,747 | 36.965722 |
3 | 1,136 | 24.037241 |
4 | 765 | 16.187050 |
5 | 545 | 11.531951 |
6 | 206 | 4.358866 |
7 | 75 | 1.586966 |
8 | 30 | 0.634786 |
9 | 10 | 0.211595 |
10 | 6 | 0.126957 |
Total | 4,726 | 100.000000 |
Gráfico:
dataBaños <- Baños%>%
filter(Baños!="Total")
dataBaños$Baños<-factor(dataBaños$Baños, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataBaños, x=~Baños, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataBaños$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C", "#FA8072", "#B22222")))%>%
layout(title = list(text="Número de baños en las viviendas del Mercado inmobiliario Cali Zona Sur",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Baños", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Habitaciones Zona Sur
Tabla:
Habitaciones <- data.frame(freq(dataZonaSur$habitac))
Habitaciones<- rownames_to_column(Habitaciones,"Habitaciones") %>%
drop_na() %>%
select(Habitaciones, Freq, X..Valid)
colnames(Habitaciones) = c("Habitaciones", "Freq. Absoluta", "Freq. Relativa %")
flextable(Habitaciones)
Habitaciones | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
0 | 20 | 0.423191 |
1 | 21 | 0.444350 |
2 | 490 | 10.368176 |
3 | 2,350 | 49.724926 |
4 | 1,044 | 22.090563 |
5 | 415 | 8.781210 |
6 | 183 | 3.872196 |
7 | 85 | 1.798561 |
8 | 64 | 1.354211 |
9 | 30 | 0.634786 |
10 | 24 | 0.507829 |
Total | 4,726 | 100.000000 |
Gráfico:
dataHabitaciones <- Habitaciones%>%
filter(Habitaciones!="Total")
dataHabitaciones$Habitaciones<-factor(dataHabitaciones$Habitaciones, ordered = T,levels = c("0","1","2","3","4","5","6","7","8","9","10"))
plot_ly(data = dataHabitaciones, x=~Habitaciones, y=~`Freq. Absoluta`, type = "bar",
text = comma(dataHabitaciones$`Freq. Absoluta`, accuracy = 1),
marker = list(color = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5", "#FFDAB9", "#D2B48C","#EEE8AA", "#F0E68C","#BDB76B", "#A52A2A")))%>%
layout(title = list(text="Número de habitaciones en las viviendas del Mercado inmobiliario Cali Zona Sur",
font=list(family = "Arial, sans-serif",size = 14,color = "#17202A")),
xaxis = list(title=list(text="Habitaciones", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 10,color = "#17202A")),
yaxis = list(tickformat = ",",
title=list(text="Número de viviendas", font= list(family = "Arial, sans-serif",size = 16,color = "#17202A")),
tickfont= list(family = "Arial, sans-serif",size = 14,color = "#17202A")
),
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)') %>%
config(displayModeBar=F)
Tipo Zona Sur
Tabla
Tipo <- data.frame(freq(dataZonaSur$tipo))
Tipo<- rownames_to_column(Tipo,"Tipo") %>%
drop_na() %>%
select(Tipo, Freq, X..Valid)
colnames(Tipo) = c("Tipo", "Freq. Absoluta", "Freq. Relativa %")
flextable(Tipo)
Tipo | Freq. Absoluta | Freq. Relativa % |
|---|---|---|
APARTAMENTO | 2,786 | 58.9505 |
CASA | 1,940 | 41.0495 |
Total | 4,726 | 100.0000 |
Gáfico:
dataTipo <- Tipo%>%
filter(Tipo!="Total")
plot_ly(data = dataTipo, labels = ~Tipo, values=~`Freq. Absoluta`, type="pie",
marker = list(colors = c("#BDB76B", "#A52A2A")),
textposition = 'inside',
textinfo = 'label+percent',
showlegend = FALSE)
Barrio Zona Sur
En total aparecen más de 150 barrios, se organizan de manera descendente y con la función head se presentan los 6 primeros.
Tabla:
Barrio <- data.frame(freq(dataZonaSur$barrio)) %>%
select(Freq, "Freq. Relativa %" = X..Valid) %>%
arrange(desc(Freq))
head(Barrio)
## Freq Freq. Relativa %
## Total 4726 100.00000
## VALLE DEL LILI 1005 21.26534
## CIUDAD JARDÍN 515 10.89716
## PANCE 411 8.69657
## EL CANEY 209 4.42234
## EL INGENIO 203 4.29539
Latitud y Longitud Zona Sur
Uilizamos el mismo código para generar el mapa. Sin embargo, debido a fallas en el procesamiento dejo la imagen. dataZonaSur %>% leaflet() %>% addTiles() %>% addMarkers(~longitud, ~latitud)
precio Zona Sur
descr(dataZonaSur$preciom)
## Descriptive Statistics
## dataZonaSur$preciom
## N: 4726
##
## preciom
## ----------------- ---------
## Mean 426.52
## Std.Dev 322.72
## Min 75.00
## Q1 222.00
## Median 320.00
## Q3 520.00
## Max 1900.00
## MAD 192.74
## IQR 298.00
## CV 0.76
## Skewness 2.00
## SE.Skewness 0.04
## Kurtosis 4.29
## N.Valid 4726.00
## Pct.Valid 100.00
hist(dataZonaSur$preciom, main = "Histograma de Precio Zona Sur",
xlab = "Precio", ylab = "Frecuencia", col = "#BDB76B")
areaconst Zona Sur
descr(dataZonaSur$areaconst)
## Descriptive Statistics
## dataZonaSur$areaconst
## N: 4726
##
## areaconst
## ----------------- -----------
## Mean 173.31
## Std.Dev 148.68
## Min 40.00
## Q1 78.00
## Median 113.00
## Q3 220.00
## Max 1600.00
## MAD 71.16
## IQR 142.00
## CV 0.86
## Skewness 2.70
## SE.Skewness 0.04
## Kurtosis 12.15
## N.Valid 4726.00
## Pct.Valid 100.00
hist(dataZonaSur$areaconst,main = "Histograma de Área Zona Sur",
xlab = "Área", ylab = "Frecuencia", col="#A52A2A")
Precio vs Tipo Zona Sur
boxplot(dataZonaSur$preciom ~ dataZonaSur$tipo,
main="Distribución del precio por tipo de vivienda Zona Sur",
ylab="Precio",
xlab="Tipo",
col = c("#E0FFFF","#B0E0E6","#E6E6FA", "#D8BFD8", "#FFE4B5")
)
Al analizar la información procesada de 8.319 propiedades podemos identificar diferentes aspectos:
El 80% de las propiedades se encuentran ubicadas en las Zonas Norte (23%) y Sur (57%). Las propiedades de las Zonas Centro y Oriente representan un 5,7%.
En la variable Piso, el 31% de los datos están vacíos. Al analizar el 69% restante,encontramos que el máximo número de piso es 12 y que más del 50% de los datos tienen entre 1 y 4 pisos.
Las propiedades se encuentran en los estratos 3, 4, 5 y 6. No se presentan diferencias significativas entre los estratos pero si podemos decir que la minoría (17%) de las propiedades, se encuentran en el estrato 3, mientras que la mayoría (33%) son propiedades de estrato 5.
En la variable parqueadero, el 19% de los datos están vacíos. Al hacer el análisis sobre el 81% de los datos restantes, encontramos que el máximo número de parqueaderos es 10, y que la mayoría de las propiedades (80%) cuenta con entre 1 y 2 parqueaderos.
En la variable baño, se identifican 45 propiedades que no tienen baño. El máximo número de baños son 10, además el 76.8% de las propiedades cuenta con 2 a 4 baños.
En la variable habitaciones, existen 66 propiedades que no cuentan con habitaciones. El máximo número de habitaciones son 10, y el 80% de las propiedades cuentan con 3 (49.2%) a 4 habitaciones (20.7%).
El 61% de las propiedades son apartamentos.
En la variable Barrio, se identificaron más de 200 barrios. Como lo que se estaba intentando era tener una vista general, en esta variable no se concentra la información en barrios particulares.
Las variables latitud y longitud presentan el mismo inconveniente que la variable barrio.
La variable precio tiene una media de 433.9 y una mediana de 330, donde el precio máximo es de 1.999 y el mínimo de 58. Al ver la distribución del precio, identificamos que tiene un Coeficiente de variación del 76% por lo que los datos no son homogéneos y la distribución es asimétrica a la derecha.
La variable área tiene una media de 174.93 y una mediana de 123, donde el precio máximo es de 1.745 y el mínimo de 30. Al ver la distribución del área, identificamos que tiene un Coeficiente de variación del 82% por lo que los datos no son homogéneos y la distribución es asimétrica a la derecha.
Al analizar las variables precio y zona conjuntamente, vemos que la Zona Norte y Sur, son las que tienen más valores atípicos. La Zona Oeste es la que tiene el rango más grande entre el valor inferior y superior. Las Zonas Centro y Norte tienen una mediana de precio muy parecida, la Zona Oeste es la que tiene la mediana de precio mayor, mientras que la Zona Oriente es la que tiene la mediana de precio más baja.
Al analizar las variables área y zona conjuntamente, vemos que la Zona Sur, es la que tiene más valores atípicos. La Zona Centro, Oeste y Norte presentan la mediana de área mayor y es muy parecida entre ellas; mientras que la Zona Norte y Sur tienen la mediana de área más baja.
Al analizar las variables precio y estrato, vemos que a medida que incrementa el estrato, incrementa el precio, sin embargo, es importante tener en cuenta que el estrato 4 y 5 presentan bastantes datos atípicos.
Al analizar las variables área y estrato, vemos que a medida que incrementa el estrato, incrementa la mediana del área, sin embargo, es importante tener en cuenta que todos los estratos presentan datos atípicos. Es importante resalta que la propiedad con mayor área se encuentra es estrato 3.
Al analizar el precio junto con el número de parqueaderos vemos que no necesariamente que tenga más parqueaderos significa que incrementa el precio.
Al analizar el precio junto con el tipo de vivienda, vemos que las casas tienen un mayor precio respecto a los apartamentos, la mediana del precio de las casas corresponde al cuartil 3 de los apartamentos.
Al analizar la tabla que nos relaciona el precio y el área podemos ver que existe (aunque no en todos los casos),una relación inversa. Sin embargo, existe un dato atípico que tiene la máxima área de las propiedades y el precio está dentro del rango más pequeño.
Zona Centro
La Zona Centro tiene propiedades que en su mayoría son estrato 3 (84%), la mayoría son casas (80.6%), por lo que tiene sentido que el 80% de las propiedades estén ubicadas los pisos 1 y 2, la mayoría (75%) cuenta con un parqueadero, el 70.8% cuenta con 2 a 4 baños y el 58.07% cuenta con 2 a 5 habitaciones. Aunque los datos de los precios no son homogéneos, podemos ver que la media es de 309, el valor mínimo es de 100 y el máximo de 1.100; en cuanto al área también presenta datos heterogéneos, pero tenemos una media de 194.04 m2, con un mínimo de 52m2 y un máximo de 750 m2. Al ver la relación precio tipo de vivienda, presenta el mismo comportamiento del análisis general.Se evidencia que las casas tienen un mayor precio. Al ver el mapa, la concentración si se ve en el centro, pero también son frecuentes los datos que están en otras zonas.
Zona Oriente
La Zona Oriente tiene propiedades que en su mayoría son estrato 3 (96%), la mayoría son casas (82.3%), las propiedades están ubicadas en los pisos 1, 2 y 3 (90%), el 74% cuenta con un parqueadero, el 87% cuenta con 1 a 4 baños y el 61.6% cuenta con 3 a 6 habitaciones. Aunque los datos de los precios no son homogéneos, podemos ver que la media es de 228.5, el valor mínimo es de 58 y el máximo de 1.350; en cuanto al área también presenta datos heterogéneos, pero tenemos una media de 192.33 m2, con un mínimo de 40m2 y un máximo de 1.745 m2. Al ver la relación precio tipo de vivienda, vemos una gran diferencia entre los precios de los apartamentos y las casas.Se evidencia que las casas tienen un mayor precio. Al ver el mapa, la concentración si se ve en el oriente, pero también son frecuentes los datos que están en otras zonas.
Zona Oeste
La Zona Oeste tiene propiedades que en su mayoría son estrato 5 (24.2%) y 6 (64.2%), la mayoría son apartamentos (85.9%). Las propiedades presentan pisos del 1 al 12, sin embargo, los más frecuentes son los pisos del 2 al 5 (64,1%); las propiedades cuentan con 1 (17.7%) a 2 parqueaderos (59.4%); el 75.2% cuenta con 2 a 5 baños y el 74.6% cuenta con 3 a 4 habitaciones. Aunque los datos de los precios no son homogéneos, podemos ver que la media es de 677.58, el valor mínimo es de 85 y el máximo de 1.999; en cuanto al área también presenta datos heterogéneos, per tenemos una media de 196.40 m2, con un mínimo de 44m2 y un máximo de 1.200 m2. Al ver la relación precio tipo de vivienda, vemos que no existe una diferencia significativa entre los precios de las casas y los apartamentos, sin embargo, si se evidencia que las casas tienen un mayor precio. Al ver el mapa, la concentración si se ve en el oeste, pero también son frecuentes los datos que están en otras zonas.
Zona Norte
La Zona Norte tiene propiedades que en su mayoría son estrato 3 (29.8%), 4 (21.2%) y 5 (40.0%), la mayoría son apartamentos (62.4%). Las propiedades presentan pisos del 1 al 12, sin embargo, los más frecuentes son los pisos del 1 al 5 (80%); las propiedades cuentan con 1 (56.4%) a 2 parqueaderos (32.4%); el 80% cuenta con 2 a 4 baños y el 80% cuenta con 2 a 4 habitaciones. Aunque los datos de los precios no son homogéneos, podemos ver que la media es de 341.61, el valor mínimo es de 65 y el máximo de 1.940; en cuanto al área también presenta datos heterogéneos, per tenemos una media de 161.12 m2, con un mínimo de 30m2 y un máximo de 1.440 m2. Al ver la relación precio tipo de vivienda, vemos que existe una diferencia entre los precios de las casas y los apartamentos, sin embargo, si se evidencia que las casas tienen un mayor precio.
Al ver el mapa, no se presenta concentración, los datos se encuentran por toda la ciudad de Cali.
Zona Sur
La Zona Sur tiene propiedades que en su mayoría son estrato 4 (34.2%), 5 (35.6%) y 6 (22.1%), la mayoría son apartamentos (59%). El 80% de las propiedades se encuentran entre los pisos 1 y 5; las propiedades cuentan con 1 (50.2%) a 2 parqueaderos (33.3%); el 77% cuenta con 2 a 4 baños y el 72% cuenta con 3 a 4 habitaciones. Aunque los datos de los precios no son homogéneos, podemos ver que la media es de 426.52, el valor mínimo es de 75 y el máximo de 1.900; en cuanto al área también presenta datos heterogéneos, pero tenemos una media de 173.31 m2, con un mínimo de 40m2 y un máximo de 1.600 m2. Al ver la relación precio tipo de vivienda, vemos que existe una diferencia entre los precios de las casas y los apartamentos bastante significativa. Se evidencia que las casas tienen un mayor precio.
Al ver el mapa, no se presenta concentración, los datos se encuentran por toda la ciudad de Cali.
Existen diferentes aspectos que hacen diferentes a cada una de las zonas analizadas. Es importante que la empresa B&C tenga presente que las propiedades se encuentran mayoritariamente en las Zonas Norte y Sur, puesto que representan el 80%.
Las Zonas Norte y Sur cuentan en su mayoría con Apartamentos
La Zona Norte está comprendida por la comuna 2, 4 y 5. Esta zona se caracteriza por ser una zona comercial e industrial. Se pueden encontrar centros comerciales como el Centro Comercial Chipichape, el Hotel Torre de Cali, existen diferentes centros educativos incluido el Sena y también se encuentran clínicas y puestos de salud. Las propiedades de esta Zona se encuentra entre el estrato 3 y 5 y por las características, puede ser apropiada para una familia mediana.
La Zona Sur está comprendida por la comuna 17 y 22 que se caracteriza por su gran número de urbanizaciones, se encuentran varias Universidades así como terrenos destinados a la construcción de vivienda, es una zona con una alta valorización y lujosos edificios. Las propiedades de esta zona se encuentran entre el estrato 4 y 6 y por sus características, puede ser apropiada para una familia grande.
Si el mercado busca casas, las opciones estarían en las Zonas Centro y Zona Oriente, sin embargo, estas zonas corresponden al 5,7% de la data analizada. Más del 80% de las casas son estrato 3 y por las características, son apropiadas para familias grandes.
En la Zona Oeste encontramos el 14% de las propiedades de la base total, esta zona presenta las propiedades más costosas, con los estratos más altos, la mayoría son apartamentos y pueden ser apropiadas para cualquier familia.
La data inicial presentaba algunos inconvenientes principalmente en los campos barrio y las coordenadas. Sería interesante saber cómo se están diligenciando estos datos, porque se podría pensar que lo están haciendo de manera manual. Los datos no están estandarizados y por otro lado, algunos campos se diligenciaron mal. Sin embargo,al final la información es muy buena para analizar algunos aspectos.
Si se analiza la data de manera general, vamos a encontrar bastante variabilidad puesto que cada zona se comporta de manera diferente. La vista general nos permitió ver dónde se encuentran la mayoría de las propiedades, el comportamiento del precio y el área; pero no podemos suministrar información relevante si lo analizaramos como un todo. Por lo tanto, se hizo el análisis por zona para encontrar patrones y diferencias. Vemos que cada zona tiene sus particularidades y que depende de lo que busque una persona, se le podrá ofrecer algo personalizado.
Sería interesante poder tener información respecto a aspectos socieconómicos de las personas para complementar la información y apuntar a una venta segura. También sería bueno complementar la información con ventas históricas, identificando los diferentes canales. Sin embargo, con esta información preliminar se puede perfilar a un potencial cliente y tomar decisiones con base a la información.