Con el fin de poner en práctica los conocimientos adquiridos en la unidad 1 de la materia Metodos y simulación estadística, este trabajo contiene el análisis estádistico del mercado inmobiliario en Cali, gracias a la información suministrada por La empresa B&C (Bines y Casas), que es una agencia de bienes raíces que opera en la ciudad de Cali, Colombia. Se muestra el código y los resultados con el fin de que se pueda apreciar el desarrollo del ejercicio.
Este análisis proporciona información sobre los siguientes temas:
Precio de las viviendas en diferentes zonas de Cali. Tipo de viviendas más ofertadas en Cali. Algunas características más relevantes de la oferta de vivienda en Cali.
Lo anterior podrá permitir a quien lea el informe, identificar tendencias y patrones con el fin de resolver preguntas como: cúal es el nicho de mercado y así desarrollar estrategias de marketing, establecer precios de venta entre otros.
Se utiliza el análisis estadístico exploratorio de datos.
Se importan y se explora los datos facilitados por la agencia inmobiliaria B&C a través de la UPJ.
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)
Se empiza a explorar los datos faltantes:
total_valores_faltantes <- sum(colSums(is.na(vivienda_faltantes)))
print(paste("Total registros faltantes en la BD:", total_valores_faltantes))
## [1] "Total registros faltantes en la BD: 4279"
datos_faltantes <- colSums(is.na(vivienda_faltantes))
print(datos_faltantes)
## id zona piso estrato preciom areaconst parquea banios
## 3 3 2641 3 2 3 1606 3
## habitac tipo barrio longitud latitud
## 3 3 3 3 3
Con esta exploración podemos revisar cuales son las variables que tienen mayor número de datos ausentes.
A coninuación una visualización de los datos faltantes vs los presentes:
VIM::aggr(vivienda_faltantes, cex.axis = 0.5, cex.lab= 0.8)
Con el entendimiento y asumiendo que no se diligenció el campo parqueadero porque no se contaba con este se procede a reemplazar los datos con cero (0).
V_F<-vivienda_faltantes #se crea otra base de datos con las nuevas modificaciones
V_F$parquea[is.na(V_F$parquea)] <- 0 #se asigna cero a las variables ausentes de parequeadero
datos_faltantes <- colSums(is.na(V_F))
print(datos_faltantes) #se imprime para verificar que ya no hay datos faltantes en parqueadero
## id zona piso estrato preciom areaconst parquea banios
## 3 3 2641 3 2 3 0 3
## habitac tipo barrio longitud latitud
## 3 3 3 3 3
Se revisan los registros de las variables cualitativas “tipo” y “zona” siendo las mas relevantes de este estudio, pues no se considera entrar a tanto detalle por la variable “barrio”, que es otra de las variables cualitativas.
table(vivienda_faltantes$tipo)
##
## Apartamento APARTAMENTO apto casa Casa CASA
## 5032 61 13 14 3195 12
table(vivienda_faltantes$zona)
##
## Zona Centro Zona Norte Zona Oeste Zona Oriente Zona Sur
## 124 1922 1204 351 4726
Como resultado de la anterior exploración, se observa que tanto la palabra casa como apartamento estan escritas de múltiples formas, lo cual se procede a imputar para normalizar esta variable. Como primer pasan todas a mayúscula y luego se trabaja con los registros de la variable “tipo”.
V_F$tipo <- toupper(V_F$tipo)
V_F$zona <- toupper(V_F$zona)
table(V_F$tipo)
##
## APARTAMENTO APTO CASA
## 5093 13 3221
Con lo anterior se obsera en la variable “tipo” de reducen los errores o registro diferente, ahora queda unificar APARTAMENTO - APTO
V_F <- V_F %>%
mutate(tipo = ifelse(tipo == "APTO", "APARTAMENTO", tipo))
table(V_F$tipo)
##
## APARTAMENTO CASA
## 5106 3221
A continuación se exploraran los datos con tablas cruzadas para revisar lo registrado versus la realidad:
table(V_F$tipo,V_F$piso)
##
## 1 2 3 4 5 6 7 8 9 10 11 12
## APARTAMENTO 431 512 573 545 564 243 203 211 146 128 84 83
## CASA 430 938 524 62 4 2 4 0 0 2 0 0
Al explorar la variable piso, surgen las siguientes incógnitas:
¿En el registro APARTAMENTO se refiere al número de piso?, siendo así que pasa con los edificios con mayor número de pisos. Esta información puede ser interesante para aquel nicho de mercado que le gustan los pisos más altos de la ciudad.
En el registro CASA, se podrían decir que el dato a partir del piso 5 o 6 podría ser cero (0)
A continuación se exploraran las variables cualitativas:
tabla_frecuencia_zona <- table(V_F$zona)
barplot(tabla_frecuencia_zona, main = "Frecuencia por Zona", xlab = "Zona", ylab = "Frecuencia")
text(x = barplot(tabla_frecuencia_zona), y = tabla_frecuencia_zona, labels = tabla_frecuencia_zona, pos = 3, col = "blue")
tabla_frecuencia_estrato <- table(V_F$estrato)
barplot(tabla_frecuencia_estrato, main = "Frecuencia por estrato", xlab = "Estrato", ylab = "Frecuencia")
text(x = barplot(tabla_frecuencia_estrato), y = tabla_frecuencia_estrato, labels = tabla_frecuencia_estrato, pos = 3, col = "blue")
subconjuntos <- split(V_F$preciom, V_F$tipo)
par(mfrow = c(2, 2)) # Configura una matriz de gráficos de 2x2
lapply(names(subconjuntos), function(tipo) {
hist(subconjuntos[[tipo]], main = paste("Histograma de Precio para", tipo), xlab = "Precio", ylab = "Frecuencia")
})
## [[1]]
## $breaks
## [1] 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400
## [16] 1500 1600 1700 1800 1900 2000
##
## $counts
## [1] 156 1397 1346 785 391 288 225 104 99 81 38 52 42 48 12
## [16] 14 5 11 11 1
##
## $density
## [1] 3.055229e-04 2.735997e-03 2.636114e-03 1.537407e-03 7.657658e-04
## [6] 5.640423e-04 4.406580e-04 2.036819e-04 1.938895e-04 1.586369e-04
## [11] 7.442225e-05 1.018410e-04 8.225617e-05 9.400705e-05 2.350176e-05
## [16] 2.741872e-05 9.792401e-06 2.154328e-05 2.154328e-05 1.958480e-06
##
## $mids
## [1] 50 150 250 350 450 550 650 750 850 950 1050 1150 1250 1350 1450
## [16] 1550 1650 1750 1850 1950
##
## $xname
## [1] "subconjuntos[[tipo]]"
##
## $equidist
## [1] TRUE
##
## attr(,"class")
## [1] "histogram"
##
## [[2]]
## $breaks
## [1] 0 200 400 600 800 1000 1200 1400 1600 1800 2000
##
## $counts
## [1] 310 1203 773 376 237 105 94 61 45 17
##
## $density
## [1] 4.812170e-04 1.867432e-03 1.199938e-03 5.836697e-04 3.678982e-04
## [6] 1.629929e-04 1.459174e-04 9.469109e-05 6.985408e-05 2.638932e-05
##
## $mids
## [1] 100 300 500 700 900 1100 1300 1500 1700 1900
##
## $xname
## [1] "subconjuntos[[tipo]]"
##
## $equidist
## [1] TRUE
##
## attr(,"class")
## [1] "histogram"
tabla_frecuencia_cruzada <- table(V_F$tipo, V_F$zona)
barplot(tabla_frecuencia_cruzada,
main = "Frecuencia de Tipo vs Zona",
xlab = "Tipo",
ylab = "Frecuencia",
legend.text = TRUE,
col = rainbow(nrow(tabla_frecuencia_cruzada)))
Del ejercico anterior, se puede deducir que para analizar las bases de datos es necesario tener contacto con quien las suminsitra o las crea para aclarar el objetivo o criterio con los que se piden ciertas variables y así tener un entendimiento claro disminuyendo el grado de dificultad en la interpretación y análisis.
En cuanto a los datos analizados,se observa que el nicho de mercado puede centrarse en la zona sur en la venta de apartamentos.