1. INTRODUCCIÓN
La empresa B&C (Bines y Casas) es una agencia de bienes raíces que opera en la ciudad de Cali, Colombia. La empresa fue fundada por Sandra Milena hace 10 años y actualmente cuenta con ocho agentes de bienes raíces. [1.]
El análisis descriptivo de datos se ha convertido en una herramienta fundamental para las empresas. Permite comprender la información, detectar datos erróneos o atípicos, identificar patrones y tendencias, y formular hipótesis que pueden ser probadas con herramientas estadísticas más avanzadas.
Este documento presenta un análisis descriptivo de la información recolectada por B&C. conociendo a fondo el sector inmobiliario de Cali y encontrando variables relacionadas entre sí
2. OBJETIVO
2.1 OBJETIVO GENERAL
Realizar análisis descriptivo de la información recolectada por la empresa B&C.
2.2. OBJETIVOS ESPECIFICOS
2.2.1. Encontrar tipologías de viviendas más ofertadas
2.2.2. Realizar un análisis por zonas de la ciudad
2.2.3. Realizar un análisis del mercado por estrato social
#install.packages("devtools") # solo una vez
devtools::install_github("dgonxalex80/paqueteMETODOS")
## Skipping install of 'paqueteMETODOS' from a github remote, the SHA1 (341036c5) has not changed since last install.
## Use `force = TRUE` to force installation
library(paqueteMETODOS)
## Loading required package: cubature
## Loading required package: dplyr
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Loading required package: flextable
## Loading required package: ggplot2
## Loading required package: lmtest
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: MASS
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
## Loading required package: psych
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
## Loading required package: summarytools
## Loading required package: randtests
## Loading required package: rapportools
##
## Attaching package: 'rapportools'
## The following objects are masked from 'package:summarytools':
##
## label, label<-
## The following object is masked from 'package:dplyr':
##
## n
## The following objects are masked from 'package:stats':
##
## IQR, median, sd, var
## The following objects are masked from 'package:base':
##
## max, mean, min, range, sum
data(vivienda_faltantes)
3. METODOLOGÍA
El desarrollo de este proyecto se realizó siguiendo la siguiente metodología.
3.1. Análisis de datos.
3.2. Limpieza de datos.
3.3. Cálculo de medidas de tendencia central.
3.4. Creación de graficas descriptivas
3.1. ANALISIS
Para la limpieza de datos lo primero que se hizo fue identificar que tipos de variables tenía la base de datos, se logró identificar que existían 13 variables de las cuales 3 eran de tipo carácter y 10 de tipo numéricas.
summary(vivienda_faltantes)
## id zona piso estrato
## Min. : 1 Length:8330 Min. : 1.000 Min. :3.000
## 1st Qu.:2082 Class :character 1st Qu.: 2.000 1st Qu.:4.000
## Median :4164 Mode :character Median : 3.000 Median :5.000
## Mean :4164 Mean : 3.772 Mean :4.634
## 3rd Qu.:6246 3rd Qu.: 5.000 3rd Qu.:5.000
## Max. :8319 Max. :12.000 Max. :6.000
## NA's :3 NA's :2641 NA's :3
## preciom areaconst parquea banios
## Min. : 58.0 Min. : 30 Min. : 1.000 Min. : 0.000
## 1st Qu.: 220.0 1st Qu.: 80 1st Qu.: 1.000 1st Qu.: 2.000
## Median : 330.0 Median : 123 Median : 2.000 Median : 3.000
## Mean : 434.2 Mean : 175 Mean : 1.836 Mean : 3.112
## 3rd Qu.: 540.0 3rd Qu.: 229 3rd Qu.: 2.000 3rd Qu.: 4.000
## Max. :1999.0 Max. :1745 Max. :10.000 Max. :10.000
## NA's :2 NA's :3 NA's :1606 NA's :3
## habitac tipo barrio longitud
## Min. : 0.000 Length:8330 Length:8330 Min. :-76576.00
## 1st Qu.: 3.000 Class :character Class :character 1st Qu.:-76506.00
## Median : 3.000 Mode :character Mode :character Median : -76.54
## Mean : 3.605 Mean :-21845.13
## 3rd Qu.: 4.000 3rd Qu.: -76.52
## Max. :10.000 Max. : -76.46
## NA's :3 NA's :3
## latitud
## Min. : 3.333
## 1st Qu.: 3.390
## Median : 3.450
## Mean : 970.370
## 3rd Qu.:3367.000
## Max. :3497.000
## NA's :3
hist(vivienda_faltantes$preciom,main = "Distribución datos precio")
hist(vivienda_faltantes$areaconst, main = "Distribución datos area")
3.2. LIMPIEZA DE DATOS
Posteriormente se identificaron los datos faltantes en la base de datos. Se encontró que había 2 líneas completamente vacías y 1 línea que solo contaba con 1 dato en el precio. Debido a que eran datos que no servían para nada se procedió a eliminar las 3 líneas anteriormente mencionadas. Posteriormente se encontró que hacían falta 2641 datos para la variable tipo y 1606 datos para la variable parqueadero. Para corregir esa inconstancia, en la variable piso se procedió a remplazar los datos faltantes por la moda de esta variable y la variable parqueadero se procedió a remplazar los datos faltantes por el valor entero de la media de parqueaderos.
Moda de piso = 2
Media parqueadero = 2
Se continuó con un análisis sistemático de las variables de tipo carácter, allí se encontró que en la variable tipo y la variable barrio había varios datos que querían expresar lo mismo pero escrito de forma diferente, por ejemplo, en la variable tipo había datos para apartamento escritos de 3 maneras diferentes, APARTAMENTO, apartamento y apto. Para corregir la inconsistencia se modificaron los datos para dejar 1 solo valor para apartamento y 1 solo valor para casa, en el caso de la variable barrio también se modificaron los diferentes casos en los que se encontraron nombres que querían decir lo mismo, pero escritos de forma diferente.
library(paqueteMETODOS)
faltantes <- colSums(is.na(vivienda_faltantes)) %>%
as.data.frame()
#Ordenar y Limpiar Datos
vivienda_sinna <- subset(vivienda_faltantes, !is.na(vivienda_faltantes$barrio))
#install.packages("DescTools") # solo una vez
library(DescTools)
##
## Attaching package: 'DescTools'
## The following objects are masked from 'package:psych':
##
## AUC, ICC, SD
moda_vivienda_sinna <- Mode(vivienda_sinna$piso, na.rm = TRUE)
vivienda_sinna$piso[is.na(vivienda_sinna$piso)] <- moda_vivienda_sinna
library(DescTools)
moda_vivienda_sinna_parqueadero <- Mode(vivienda_sinna$parquea, na.rm = TRUE)
media_vivienda_sinna_parqueadero <- mean(vivienda_sinna$parquea, na.rm = TRUE) %>%
round( ,0)
vivienda_sinna$parquea[is.na(vivienda_sinna$parquea)] <- media_vivienda_sinna_parqueadero
faltantes_sinna <- colSums(is.na(vivienda_sinna)) %>% as.data.frame()
library(dplyr)
vec_recode <- c("APARTAMENTO" = "Apartamento", "apto" = "Apartamento", "casa" = "Casa", "CASA" = "Casa")
# Recodificar la columna 'tipo'
vivienda_sinna <- vivienda_sinna %>%
mutate(tipo = recode(tipo, !!! vec_recode))
vec_recode1 <- c("aguablanca"="agua blanca","alameda del río"="alameda del rio","alf√©rez real"="alferez real","alfonso lópez"="alfonso lopez","base a√©rea"="base aerea","Belalcazar"="belalcazar","Brisas De Los"="brisas de los","cali bella"="calibella","cali canto"="calicanto","Camino Real"="camino real","Centenario"="centenario","Chiminangos"="chiminangos","Ciudad 2000"=" ciudad 2000","ciudad córdoba"="ciudad cordoba","ciudad jardín"="ciudad jardin","Ciudad Jardín"="ciudad jardin","Ciudad Pacifica"="ciudad pacifica","ciudadela paso ancho"="ciudadela pasoancho","Colseguros Andes"="colseguros andes","cristobal colón"="cristóbal colón","El Bosque"="el bosque","El Caney"="el caney","El Ingenio"="el ingenio","el ingenio 3"="el ingenio iii","el tr√©bol"="el trebol"," juanamb√∫"="juanambu","junin"="junín","La Flora"="la flora","la hacienda"="La Hacienda","las am√©ricas"="las americas","los alcazares"="los alcázares","los cámbulos"="los cambulos","Los Guaduales"="los guaduales","mel√©ndez"="melendez","Miraflores"="miraflores","nápoles"="napoles","normandía"="normandia","pacará"="pacara","pampa linda "="pampalinda","Pance"="pance","Prados Del Limonar"="prados del limonar","Prados Del Norte"="prados del norte","Quintas De Don"="quintas de don","rep√∫blica de israel "="repeblica de israel ","San Fernando"="san fernando","san joaquín"="san joaquin ","san luís "="san luis","san nicolás"="san nicolas","Santa Anita"="santa anita","Santa Isabel"="santa isabel ","Santa Monica"="santa monica","santa mónica"="santa monica","santa mónica popular"="santa monica popular","santa mónica residencial"="santa monica residencial","Santa Teresita"="santa teresita","Santo Domingo"="santo domingo","tequendema"="tequendama","valle de lili"="valle del lili","Valle Del Lili"="valle del lili","Villa Del Prado"="villa del prado","Villas De Veracruz"="villas de veracruz")
# Recodificar la columna 'barrio'
vivienda_sinna <- vivienda_sinna %>%
mutate(barrio = recode(barrio, !!! vec_recode1))
3.3. CÁLCULO DE MEDIDAS DE TENDENCIA CENTRAL.
Se realizo el cálculo de medidas de tendencia central y de dispersión con el fin de dar mayor explicación a algunas variables.
library(DescTools)
library(dplyr)
moda_vivienda_sinna_estrato <- Mode(vivienda_sinna$estrato, na.rm = TRUE)
moda_vivienda_sinna_habitac <- Mode(vivienda_sinna$habitac, na.rm = TRUE)
moda_vivienda_sinna_banios <- Mode(vivienda_sinna$banios, na.rm = TRUE)
media_vivienda_sinna_areaconst <- mean(vivienda_sinna$areaconst, na.rm = TRUE) %>%
round( ,0)
media_vivienda_sinna_precio <- mean(vivienda_sinna$preciom, na.rm = TRUE) %>%
round( ,0)
minimo_precio = min(vivienda_sinna$preciom)
maximo_precio = max(vivienda_sinna$preciom)
desviacion_precio = sd(vivienda_sinna$preciom)
desviacion_area = sd(vivienda_sinna$areaconst)
3.4. CREACIÓN DE GRAFICAS DESCRIPTIVAS
Para las gráficas se tomó la decisión de mostrar las siguientes:
Precio promedio de vivienda según la zona en la que está ubicada.
Precio promedio de la vivienda según el estrato.
Cantidad de viviendas por tipo.
4. RESULTADOS
4.1 MEDIDAS DE TENDENCIA CENTRAL
Una vez realizado el cálculo de las medidas de tendencia central se encontró lo siguiente:
El precio medio de venta de una vivienda en Cali es de 434 con una desviación estándar de 329.03 lo que indica una variación significativa en los precios
El precio mínimo de venta de una vivienda es de 58 el cual corresponde a un apartamento ubicado en la zona oriente de la ciudad.
El precio máximo de venta de una vivienda es de 1999 el cual corresponde a una casa ubicada en la zona oeste de la ciudad.
El área construida media de 175 con una desviación estándar de 142.94 lo que indica una variación considerable en los tamaños de las viviendas.
La mayor cantidad de viviendas corresponden al estrato 5 y a viviendas con 3 habitaciones.
4.2 PRECIO PROMEDIO DE VIVIENDA SEGÚN LA ZONA EN LA QUE ESTA UBICADA
Se realizó una gráfica de barras dobles, con la cual se pudiera comparar el precio de las viviendas según la zona y el tipo de vivienda.
library(DescTools)
library(dplyr)
vivienda_sinna_promedio <- vivienda_sinna %>%
group_by(zona,tipo) %>%
summarise(preciom = mean(preciom, na.rm = TRUE))
## `summarise()` has grouped output by 'zona'. You can override using the
## `.groups` argument.
ggplot(vivienda_sinna_promedio, aes(x = zona, y = preciom, fill = tipo)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Precio Promedio Según la Zona",
x = "Zona",
y = "Precio promedio",
fill = "tipo") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 0, hjust = 1))
Se evidencia que hay una relación directamente proporcional con el
precio y el tipo de vivienda, al igual que el precio y la zona en la que
está ubicada la vivienda.
Los apartamentos son más económicos que las casas si están ubicados en la misma zona, la zona donde las viviendas son más económicas es en la zona oriente y las zonas más costosas son la zona oeste y la zona sur, la zona norte cuenta con los precios más cerca al precio medio de toda la ciudad.
4.3. PRECIO PROMEDIO DE LA VIVIENDA SEGÚN EL ESTRATO
Se realizó una gráfica de barras dobles, con la cual se pudiera comparar el precio de las viviendas según el estrato y el tipo de vivienda.
library(DescTools)
library(dplyr)
vivienda_sinna_promedio_estrato <- vivienda_sinna %>%
group_by(estrato,tipo) %>%
summarise(preciom = mean(preciom, na.rm = TRUE))
## `summarise()` has grouped output by 'estrato'. You can override using the
## `.groups` argument.
ggplot(vivienda_sinna_promedio_estrato, aes(x = estrato, y = preciom, fill = tipo)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Precio Promedio Según el Estrato",
x = "Estrato",
y = "Precio promedio",
fill = "tipo") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 0, hjust = 1))
Se evidencia que hay una relación directamente proporcional con el
precio y el estrato de la vivienda.
Los apartamentos son más económicos que las casas si se encuentran en el mismo, el estrato donde las viviendas son más económica es el estrato 1 y donde son más costosas es el estrato 6, el estrato 4 cuenta con los precios más cerca al precio medio de toda la ciudad.
4.4. CANTIDAD DE VIVIENDAS POR TIPO
Se realizó una gráfica de torta, con la cual se pudiera evidenciar la proporción de ventas por el tipo de vivienda.
t1=table(vivienda_sinna$tipo)
pie(t1, main = "Proporción de Viviendas Ofertadas por Tipo")
Se evidencia que los apartamentos tienen aproximadamente 25% más ventas
que las casas
4.5. CANDIDAD DE VIVIENDAS SEGÚN LA ZONA Y EL ESTRATO
Se realiza una tabla en la cual se pueda evidenciar el total de viviendas vendidas por zona de ubicación y estrato.
library(DescTools)
library(dplyr)
matriz <- table(vivienda_sinna$zona, vivienda_sinna$estrato)
matriz_con_totales <- addmargins(matriz)
print(matriz_con_totales)
##
## 3 4 5 6 Sum
## Zona Centro 105 14 4 1 124
## Zona Norte 572 408 770 172 1922
## Zona Oeste 54 85 290 775 1204
## Zona Oriente 340 8 2 1 351
## Zona Sur 382 1616 1685 1043 4726
## Sum 1453 2131 2751 1992 8327
Se encontraron los siguientes resultados
El 56.7% de las viviendas vendidas corresponde a la zona sur, de la cual el estrato 3 es el menos vendido, solo un 0.8%.
Las zonas en donde menos viviendas se vendieron son la zona centro con 0.015% de ventas y la zona oriente con 0.042% de las ventas.
La zona centro y la zona sur son las zonas con menos viviendas de estrato 4, 5 y 6
5. CONCLUCIONES
Los apartamentos son el tipo de vivienda más ofertado en Cali, especialmente en estratos 3, 4 y 5.
La zona sur concentra la mayor cantidad de viviendas, con predominio del estrato 3 y menor oferta en estratos altos.
Las zonas norte y oeste son las más costosas, con mayor presencia de estratos 5 y 6.
6. RECOMENDACIONES
Segmentar el mercado por zona, tipo de vivienda y estrato social.
Desarrollar estrategias de marketing personalizadas para cada segmento.
Ofrecer una variedad de opciones que se ajusten a las necesidades y presupuestos de los diferentes segmentos.
Monitorear el mercado de forma constante para identificar nuevas tendencias y oportunidades.
Ampliar la base de datos, el estudio se realizó con la base de datos de la empresa B&C y no toma en cuenta otros factores que pueden influir en el mercado inmobiliario.