El mercado inmobiliario en Colombia, y específicamente en la ciudad de Cali, ha mostrado un crecimiento sostenido que se proyecta continuará en el futuro. Dada esta tendencia, es crucial para B&C (Bienes y Casas) contar con un informe detallado que incluya un análisis estadístico profundo y relevante para su nicho de mercado y su expansión. Este análisis proporciona información clave para la toma de decisiones en áreas como mercadeo, fijación de precios, expansión del mercado, y la personalización de servicios para diferentes clientes. Todo esto contribuirá a que la empresa no solo incremente su rentabilidad y mitigue riesgos, sino que también fortalezca su reputación (goodwill) y eleve la satisfacción de sus clientes
Este informe busca lograr los siguientes objetivos:
En la realización del informe, es necesario tener en cuenta:
La tabla de frecuencia está dada por:
| Freq | % Valid | % Total | |
|---|---|---|---|
| Zona Centro | 124 | 1.489 | 1.489 |
| Zona Norte | 1922 | 23.082 | 23.073 |
| Zona Oeste | 1204 | 14.459 | 14.454 |
| Zona Oriente | 351 | 4.215 | 4.214 |
| Zona Sur | 4726 | 56.755 | 56.735 |
| 3 | 0.036 | ||
| Total | 8330 | 100.000 | 100.000 |
Las diferentes zonas se muestran en los siguientes gráficos:
El gráfico indica que la mayor preferencia de elección en la
compra de vivienda está en el número 2 y número 3.
Es notorio que en los pisos 11 y 12 no hay mucha frecuencia, en comparación con los demás pisos.
Columna estrato:
El gráfico indica que la mayor estrato es el número 5 y existe una diferencia leve entre los estratos 4 y 6.
Columna parque:
El gráfico indica que la mayor preferencia por un espacio vehicular es de uno por hogar.
Columna baños:
Con el análisis de los datos NA se pude determinar que los últimos tres datos no son relevantes para el análisis, por lo que la decisión es eliminar los registros que presentan inconsistencias y carecen de información por fila.
Es importante resaltar, que igualmente se analizan aquellos valores que poseen diferente definición de tipo vivienda en el que se encontró alguna semejanza, como lo son:
Por lo que se estandariza el tipo de vivienda, dejandole una etiquetaen inicial minúscula, de la siguiente manera:
A continuación se muestra la tabla de distribución de frecuencia correspondiente al tipo de vivienda:
| Freq | % Valid | % Total | |
|---|---|---|---|
| apartamento | 5106 | 61.319 | 61.297 |
| casa | 3221 | 38.681 | 38.667 |
| 3 | 0.036 | ||
| Total | 8330 | 100.000 | 100.000 |
Con respecto al precio de las propiedades:
| 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 |
Con respecto al área de construcción:
| 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 |
Anexo a este documento, se adjunta el código trabajado para la obtención de los anteriores resultados, la cual, puede ser contemplada en el archivo .Rmd.
#Observar el número de columnas definido en la base de datos.
names(vivienda_faltantes)
table(vivienda_faltantes$zona)
table(vivienda_faltantes$piso)
table(vivienda_faltantes$estrato)
table(vivienda_faltantes$parquea)
table(vivienda_faltantes$banios)
table(vivienda_faltantes$habitac)
table(vivienda_faltantes$tipo)
table(vivienda_faltantes$barrio)
# Los N/A en las columna.
sum(is.na(vivienda_faltantes$zona))
sum(is.na(vivienda_faltantes$piso))
sum(is.na(vivienda_faltantes$estrato))
sum(is.na(vivienda_faltantes$preciom))
sum(is.na(vivienda_faltantes$areaconst))
sum(is.na(vivienda_faltantes$parquea))
sum(is.na(vivienda_faltantes$banios))
sum(is.na(vivienda_faltantes$habitac))
sum(is.na(vivienda_faltantes$tipo))
sum(is.na(vivienda_faltantes$barrio))
na.omit(vivienda_faltantes)
# Ver los valores distintos en cada columna zona.
VF_ZonaCentro = subset(vivienda_faltantes, vivienda_faltantes$zona == 'Zona Centro')
VF_ZonaSur = subset(vivienda_faltantes, vivienda_faltantes$zona == 'Zona Sur')
VF_ZonaOeste = subset(vivienda_faltantes, vivienda_faltantes$zona == 'Zona Oeste')
VF_ZonaNorte = subset(vivienda_faltantes, vivienda_faltantes$zona == 'Zona Norte')
VF_ZonaOriente = subset(vivienda_faltantes, vivienda_faltantes$zona == 'Zona Oriente')
# Saber que valores distintos están en cada columna.
distinct(select(vivienda_faltantes, piso))
distinct(select(vivienda_faltantes, estrato))
distinct(select(vivienda_faltantes, parquea))
distinct(select(vivienda_faltantes, banios))
distinct(select(vivienda_faltantes, habitac))
distinct(select(vivienda_faltantes, tipo))
# Arreglo de la data para que sea uniforme para la columna tipo estrato
vivienda_faltantes$tipo=str_to_lower(vivienda_faltantes$tipo)
vivienda_faltantes$tipo[vivienda_faltantes$tipo=='apto']='apartamento'
vf_zonaCentro_estrato3 = subset(VF_ZonaCentro, VF_ZonaCentro$estrato == 3)
vf_zonaCentro_estrato4 = subset(VF_ZonaCentro, VF_ZonaCentro$estrato == 4)
vf_zonaCentro_estrato5 = subset(VF_ZonaCentro, VF_ZonaCentro$estrato == 5)
vf_zonaCentro_estrato6 = subset(VF_ZonaCentro, VF_ZonaCentro$estrato == 6)
vf_zonaNorte_estrato3 = subset(VF_ZonaNorte, VF_ZonaNorte$estrato == 3)
vf_zonaNorte_estrato4 = subset(VF_ZonaNorte, VF_ZonaNorte$estrato == 4)
vf_zonaNorte_estrato5 = subset(VF_ZonaNorte, VF_ZonaNorte$estrato == 5)
vf_zonaNorte_estrato6 = subset(VF_ZonaNorte, VF_ZonaNorte$estrato == 6)
vf_zonaSur_estrato3 = subset(VF_ZonaSur, VF_ZonaSur$estrato == 3)
vf_zonaSur_estrato4 = subset(VF_ZonaSur, VF_ZonaSur$estrato == 4)
vf_zonaSur_estrato5 = subset(VF_ZonaSur, VF_ZonaSur$estrato == 5)
vf_zonaSur_estrato6 = subset(VF_ZonaSur, VF_ZonaSur$estrato == 6)
vf_zonaOeste_estrato3 = subset(VF_ZonaOeste, VF_ZonaOeste$estrato == 3)
vf_zonaOeste_estrato4 = subset(VF_ZonaOeste, VF_ZonaOeste$estrato == 4)
vf_zonaOeste_estrato5 = subset(VF_ZonaOeste, VF_ZonaOeste$estrato == 5)
vf_zonaOeste_estrato6 = subset(VF_ZonaOeste, VF_ZonaOeste$estrato == 6)
vf_zonaOriente_estrato3 = subset(VF_ZonaOriente, VF_ZonaOriente$estrato == 3)
vf_zonaOriente_estrato4 = subset(VF_ZonaOriente, VF_ZonaOriente$estrato == 4)
vf_zonaOriente_estrato5 = subset(VF_ZonaOriente, VF_ZonaOriente$estrato == 5)
vf_zonaOriente_estrato6 = subset(VF_ZonaOriente, VF_ZonaOriente$estrato == 6)
#Graficos:
#Zona: Apart vs casa
id <- 1:10
zona <- c("Norte", "Sur", "Este", "Oeste", "Norte", "Sur", "Este", "Oeste", "Norte", "Sur")
piso <- sample(1:10, 10, replace = TRUE)
estrato <- sample(1:6, 10, replace = TRUE)
preciom <- runif(10, min = 100000, max = 500000)
areaconst <- runif(10, min = 50, max = 200)
parquea <- sample(0:1, 10, replace = TRUE)
banios <- sample(1:4, 10, replace = TRUE)
habitac <- sample(1:5, 10, replace = TRUE)
tipo <- sample(c("Casa", "Apartamento"), 10, replace = TRUE)
barrio <- sample(c("Barrio A", "Barrio B", "Barrio C"), 10, replace = TRUE)
longitud <- runif(10, min = -75, max = -74)
latitud <- runif(10, min = 4, max = 5)
# Crear el data frame con la variable 'zona' en minúsculas
df <- data.frame(id, zona, piso, estrato, preciom, areaconst, parquea, banios, habitac, tipo, barrio, longitud, latitud)
# Gráfico de barras apiladas usando ggplot2
ggplot(df, aes(x = zona, fill = tipo)) +
geom_bar(position = "fill") +
labs(title = "Proporción de Tipos de Propiedad por Zona", x = "Zona", y = "Proporción")
#Zona de preferencia
frecuencia <- c(124, 1922, 1204, 351, 4726)
df <- data.frame(zona, frecuencia) # Data frame
# Gráfico de barras
ggplot(df, aes(x = zona, y = frecuencia, fill = zona)) +
geom_bar(stat = "identity") +
labs(title = "Frecuencia de Observaciones por Zona", x = "Zona", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
#Pisos
piso <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
frecuencia_piso <- c(861, 1450, 1097, 607, 568, 245, 207, 211, 146, 130, 84, 83)
df_piso <- data.frame(piso, frecuencia_piso)
# Gráfico de barras
ggplot(df_piso, aes(x = factor(piso), y = frecuencia_piso)) +
geom_bar(stat = "identity", fill = "violet") +
labs(title = "Frecuencia por Número de Pisos", x = "Número de Pisos", y = "Frecuencia") +
theme_minimal()
#Estrato
estrato <- c(3, 4, 5, 6)
frecuencia_estrato <- c(1453, 2131, 2751, 1992)
# Data frame
df_estrato <- data.frame(estrato, frecuencia_estrato)
# Gráfico de barras
ggplot(df_estrato, aes(x = factor(estrato), y = frecuencia_estrato)) +
geom_bar(stat = "identity", fill = "lightgreen") +
labs(title = "Frecuencia por Estrato", x = "Estrato", y = "Frecuencia") +
theme_minimal()
#Parqueadero
parquea <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
frecuencia_parquea <- c(3156, 2478, 521, 386, 68, 68, 18, 17, 4, 8)
# Crear un data frame
df_parquea <- data.frame(parquea, frecuencia_parquea)
# Gráfico de barras
ggplot(df_parquea, aes(x = factor(parquea), y = frecuencia_parquea)) +
geom_bar(stat = "identity", fill = "orange") +
labs(title = "Frecuencia por Número de Plazas de Aparcamiento", x = "Número de Plazas", y = "Frecuencia") +
theme_minimal()
#Baños
banios <- c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
frecuencia_banios <- c(45, 497, 2946, 1994, 1460, 891, 315, 107, 45, 15, 9)
# Crear un data frame
df_banios <- data.frame(banios, frecuencia_banios)
# Gráfico de barras
ggplot(df_banios, aes(x = factor(banios), y = frecuencia_banios)) +
geom_bar(stat = "identity", fill = "purple") +
labs(title = "Frecuencia por Número de Baños", x = "Número de Baños", y = "Frecuencia") +
theme_minimal()
#N/A
categorias <- c("piso", "parquea", "zona", "estrato", "areaconst", "preciom", "banios", "habitac", "tipo", "barrio")
frecuencias <- c(2641, 1606, 3, 3, 3, 2, 3, 3, 3, 3)
# Crear un data frame
df <- data.frame(categorias, frecuencias)
# Crear gráfico de barras
ggplot(df, aes(x = categorias, y = frecuencias, fill = categorias)) +
geom_bar(stat = "identity") + # Ajusta el ancho de las barras
labs(title = "Frecuencia de Categorías", x = "Categorías", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
#Circular para Zona:
summarytools::descr(VF_ZonaCentro$preciom)
summarytools::freq(vivienda_faltantes$zona, cumul = F)
t1 = table(vivienda_faltantes$zona)
pie(t1, vivienda_faltantes$zona)
t2=table(vivienda_faltantes$zona, vivienda_faltantes$estrato)
barplot(t2,last=1)