Una empresa inmobiliaria líder en una gran ciudad está buscando comprender en profundidad el mercado de viviendas urbanas para tomar decisiones estratégicas más informadas. La empresa posee una base de datos extensa que contiene información detallada sobre diversas propiedades residenciales disponibles en el mercado. Se requiere realizar un análisis holístico de estos datos para identificar patrones, relaciones y segmentaciones relevantes que permitan mejorar la toma de decisiones en cuanto a la compra, venta y valoración de propiedades.
La empresa inmobiliaria Multivariados S.A actualmente cuenta 8322 inmuebles clasificados de la siguiente manera 6659 apartamentos y 1663 casas, donde se relaciona diferentes variables como lo son zona, piso, estrato, precio, areaconst, parqueaderos, banios, habitaciones, tipo, barrio, longitud y latitud de cada uno de los inmuebles.
## 'data.frame': 8322 obs. of 13 variables:
## $ id : int 8312 8311 8307 8296 8297 8298 8299 8300 8286 8287 ...
## $ zona : chr "Zona Oeste" "Zona Oeste" "Zona Oeste" "Zona Sur" ...
## $ piso : int 4 1 NA 2 NA NA 2 NA NA 2 ...
## $ estrato : int 6 6 5 3 5 5 6 5 5 5 ...
## $ preciom : int 1300 480 1200 220 330 1350 305 480 275 285 ...
## $ areaconst: num 318 300 800 150 112 390 125 280 74 120 ...
## $ parquea : int 2 1 4 1 2 8 2 4 1 2 ...
## $ banios : int 4 4 7 2 4 10 3 4 2 4 ...
## $ habitac : int 2 4 5 4 3 10 3 4 3 3 ...
## $ tipo : chr "Apartamento" "Casa" "Casa" "Casa" ...
## $ barrio : chr "arboleda" "normandía" "miraflores" "el guabal" ...
## $ longitud : num -76576 -76571 -76568 -76565 -76565 ...
## $ latitud : num 3454 3454 3455 3417 3408 ...
Para garantizar la integridad de los datos se revisa si existen datos faltantes, identificando que las columnas piso y parqueadero cumple con estas caracterisiticas y por lo cual, se excluyen de los datos para el desarrollo y se crea uno nuevo dataframe con las variables restantes.
##
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
##
## filter
## The following objects are masked from 'package:base':
##
## cbind, rbind
## preciom id zona estrato areaconst banios habitac tipo barrio longitud
## 4808 1 1 1 1 1 1 1 1 1 1
## 1909 1 1 1 1 1 1 1 1 1 1
## 876 1 1 1 1 1 1 1 1 1 1
## 726 1 1 1 1 1 1 1 1 1 1
## 1 1 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0
## 2 3 3 3 3 3 3 3 3 3
## latitud parquea piso
## 4808 1 1 1 0
## 1909 1 1 0 1
## 876 1 0 1 1
## 726 1 0 0 2
## 1 0 0 0 12
## 2 0 0 0 13
## 3 1605 2638 4275
## 'data.frame': 8322 obs. of 11 variables:
## $ id : int 8312 8311 8307 8296 8297 8298 8299 8300 8286 8287 ...
## $ zona : chr "Zona Oeste" "Zona Oeste" "Zona Oeste" "Zona Sur" ...
## $ estrato : int 6 6 5 3 5 5 6 5 5 5 ...
## $ preciom : int 1300 480 1200 220 330 1350 305 480 275 285 ...
## $ areaconst: num 318 300 800 150 112 390 125 280 74 120 ...
## $ banios : int 4 4 7 2 4 10 3 4 2 4 ...
## $ habitac : int 2 4 5 4 3 10 3 4 3 3 ...
## $ tipo : chr "Apartamento" "Casa" "Casa" "Casa" ...
## $ barrio : chr "arboleda" "normandía" "miraflores" "el guabal" ...
## $ longitud : num -76576 -76571 -76568 -76565 -76565 ...
## $ latitud : num 3454 3454 3455 3417 3408 ...
Posteriormente, para garantizar la integridad total de los datos haciendo uso de la función complete.cases se procede a remover los valores faltante en cada una de las variables que comforman el nuevo dataframe.
Una vez creado el nuevo dataframe, haciendo uso de la función unique se procede a realizar una revisión sobre los campos alfanumericos esto con el fin de si existe alguna diferencia al momento de diligenciar, esta pueda ser estandarizada dentro de la base de información.
## [1] "Apartamento" "Casa" "APARTAMENTO" "casa" "CASA"
## [6] "apto" NA
## [1] "Zona Oeste" "Zona Sur" "Zona Norte" "Zona Oriente" "Zona Centro"
## [6] NA
## [1] "Apartamento" "Casa" NA
Posterior a la revisión realizada en los datos iniciales, se garantiza que la cantidad de inmuebles registrados (8319) con la diferencia que no presetan datos faltantes y se trabaja sobre 11 variables.
## /\ /\
## { `---' }
## { O O }
## ==> V <== No need for mice. This data set is completely observed.
## \ \|/ /
## `-----'
## id zona estrato preciom areaconst banios habitac tipo barrio longitud
## 8319 1 1 1 1 1 1 1 1 1 1
## 0 0 0 0 0 0 0 0 0 0
## latitud
## 8319 1 0
## 0 0
Para iniciar con un análisis exploratorio de los datos, se presenta un el comportamiento de cada una de la variables.
## id zona estrato preciom
## Min. : 1 Length:8319 Min. :3.000 Min. : 58.0
## 1st Qu.:2080 Class :character 1st Qu.:4.000 1st Qu.: 220.0
## Median :4160 Mode :character Median :5.000 Median : 330.0
## Mean :4160 Mean :4.634 Mean : 433.9
## 3rd Qu.:6240 3rd Qu.:5.000 3rd Qu.: 540.0
## Max. :8319 Max. :6.000 Max. :1999.0
## areaconst banios habitac tipo
## Min. : 30.0 Min. : 0.000 Min. : 0.000 Length:8319
## 1st Qu.: 80.0 1st Qu.: 2.000 1st Qu.: 3.000 Class :character
## Median : 123.0 Median : 3.000 Median : 3.000 Mode :character
## Mean : 174.9 Mean : 3.111 Mean : 3.605
## 3rd Qu.: 229.0 3rd Qu.: 4.000 3rd Qu.: 4.000
## Max. :1745.0 Max. :10.000 Max. :10.000
## barrio longitud latitud
## Length:8319 Min. :-76576.00 Min. : 3.333
## Class :character 1st Qu.:-76507.00 1st Qu.: 3.390
## Mode :character Median : -76.54 Median : 3.449
## Mean :-21866.06 Mean : 971.300
## 3rd Qu.: -76.52 3rd Qu.:3367.000
## Max. : -76.46 Max. :3497.000
Validando el comportamiento de datos se observa que No son simétricos, ya que, la mayoría de valores se agrupan hacía la derecha y el valor de la medía y mediana es mayor a la moda.
Posteriormente, se identifica que existen datos registrados de manera erronea (datos atípicos), los cuales puede afectar al momento que se este realizando alguna representación gráfica o en la interpretación de resultados.
Dando continuidad al análisis de la variables, se procede a revisar la
matriz de correlación e identificar la relación que existe entre los
datos y el cual se presenta a continuación:
## corrplot 0.92 loaded
A continuación, se detallan las correlaciones de acuerdo con el resultado obtenido en la matriz anterior.
1. Preciom - areaconst: Presentan una correlación positiva (0.7) lo que quiere decir que a mayor área construida esto presenta un incremento en la vivienda. 2. Preciom - banios: Al igual que en caso anterior, se presenta una correlación positiva (0.7) indicando que las viviendas con mayor cantidad de baños, su precio es superior. 3. Preciom - estrato: Con una correlación menor que en los escenarios previos (0.6), lo que representa que a medida que el estrato es mayor el costo del inmueble aumenta. 4. Baños - areaconst: Presenta una correlación positiva del 0.6, haciendo referencia a que la cantidad de baños disponibles en la vivienda depende del área construida. 5. Baños - habitac: Tambien con una correlación positiva del 0.6, esto quiere decir que mientras la vivienda cuente con varias habitaciones la cantiad de baño tambien aumenta. 6. Habitac - areaconst: La correlación es positiva (0.5) lo que quiere decir que en la mayoría de los casos, la cantidad de habitaciones depende del área construida.
Para llevar a cabo el ACP se hace uso de las siguientes variables estrato, preciom, areaconst, banios y habitac. Con el fin, de evitar sesgo en la información a analizar se procede a estandarizar.
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.3 ✔ purrr 1.0.2
## ✔ tibble 3.2.1 ✔ dplyr 1.1.3
## ✔ tidyr 1.3.0 ✔ stringr 1.5.0
## ✔ readr 2.1.3 ✔ forcats 1.0.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ ggplot2::%+%() masks psych::%+%()
## ✖ ggplot2::alpha() masks psych::alpha()
## ✖ dplyr::filter() masks mice::filter(), stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## estrato preciom areaconst banios habitac
## 1 1.3275950 2.6351924 1.0007060 0.6222393 -1.0999114
## 2 1.3275950 0.1402509 0.8748003 0.6222393 0.2703863
## 3 0.3559875 2.3309312 4.3721812 2.7227705 0.9555352
## 4 -1.5872276 -0.6508281 -0.1744140 -0.7781148 0.2703863
## 5 0.3559875 -0.3161408 -0.4402149 0.6222393 -0.4147626
## 6 0.3559875 2.7873229 1.5043289 4.8233017 4.3812795
Una vez estandarizdos los datos, se procede a realizar la estimación de los Componentes Principales.
## Standard deviations (1, .., p=5):
## [1] 1.7126464 1.0901014 0.6673458 0.4916079 0.4375986
##
## Rotation (n x k) = (5 x 5):
## PC1 PC2 PC3 PC4 PC5
## estrato -0.3300032 0.6744363 0.4208934 0.4795545 -0.1706159
## preciom -0.5068715 0.2807656 -0.3015468 -0.2213868 0.7240921
## areaconst -0.4940473 -0.1638135 -0.6525373 0.2984641 -0.4628138
## banios -0.5189619 -0.1092831 0.3767649 -0.6647648 -0.3672488
## habitac -0.3475270 -0.6538568 0.4051685 0.4359154 0.3122700
Como se observa en el siguiente la primera componente explica el 58.7% de la variación que tienen los datos y junto a la segunda componente responden el 82.5%. Obteniendo como resultado que con una sola variable se logra identificar la variabilidad que contiene la información.
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
Posteriormente, se procede a observar la contribución que tiene cada una
de las variables originales en el análisis, donde se observa que en el
primer componente principal se relacionan las variables de estrato
precio, mientras que en el segundo se asocian las variables que hacen
referencia a la infraestructura del inmueble.
# Análisis de Conglomerados
Con el fin de agrupar las variables de acuerdo a sus propiedades y características similares, se realiza el análisis de conglomerados donde se hace uso de las variables implementadas en el punto anterior.
A continuación, se realiza una estimación del número de cluster esto con el fin de disminuir la variación en los cluster, evidenciando la disminución en la suma de cuadrados a medida que K aumenta, en este caso se hará uso solo de 2 Clusters.
Como paso a seguir y para comparar los resultados obtenidos en el caso anterior, se realiza el método Jerarquico donde se hará uso de las distancias euclidianas y se toma como modelo el método ward.
En la imagen anterior se presenta la cantidad de datos correspondientes
a cada uno de los clusters.
Se inicia construyendo una tabla cruzada con las vairiables de Estado y Zona
##
## 3 4 5 6
## Zona Centro 105 14 4 1
## Zona Norte 572 407 769 172
## Zona Oeste 54 84 290 770
## Zona Oriente 340 8 2 1
## Zona Sur 382 1616 1685 1043
A partir del resultado obtenido se puede decir que la hispotesis es nula y existen un grado de relación entre las variables.
##
## Pearson's Chi-squared test
##
## data: tablaVV
## X-squared = 3830.4, df = 12, p-value < 2.2e-16
Aplicando el análisis por correspondencia se puede concluir que:
1. Los inmuebles de estrato 4 y 5 se encuentran ubicados en la Zona Sur de la ciudad. 2. Las viviendas de estrato 6 se encuentran ubicadas en la zona Oeste 3. La mayoría de viviendas de Estrato 3 se encuentran ubicadas en la Zona Oriente y Centro.
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
A partir del modelo se determina que la primera compone detalla el 70%
de la varianza total de los datos y la segunda el 27.7% . De acuerdo con
eso, se puede decir que la primera componente es la que mayor
información maneja.
{r. echo=FALSE} fviz_screeplot(resultados_ac, addlabels = TRUE, ylim = c(0, 80))+ggtitle("")+ ylab("Porcentaje de varianza explicado") + xlab("Ejes")
Inicialmente se evidencia problemas con la información a usa, lo cual puede afectar el proceso al momento de realizar un análisis o presentar alguna alteración sobre los resutlados del modelo. Adicionalmente, se evidencio la existencia de valores atipicos los cuales se pueden presentar al momento de realizar el resgistro en la plataforma.
A partir del la matriz de correlacción, se identifica los factores que más afectan el costo de la vivienda depende de escenarios como la cantidad de habitaciones que tiene la vivienda, el número de baños, zona donde se encuentra ubicados y la relación directa con la zona.
Poder identinficar patrones permite clasificar de maner más eficiente los clientes objetivo, ya que, se pueden implementar estegias de mecardo a clentes objetivo especificos y así reducir tiempos de respuesta frente a la competencia