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.
Se espera que este análisis de datos proporcione ventajas competitivas en el mercado, optimizando la inversión y maximizando los beneficios en un entorno altamente competitivo y en constante cambio.
library(paqueteMODELOS)
data("vivienda")
Se configuran los datos tipo texto en minuscula, y los numericos a enteros segun el tipo de variable.
str(vivienda)
library(tidyverse)
vivienda$piso=as.integer(vivienda$piso) # convertir en entero la variable piso
vivienda$estrato=as.integer(vivienda$estrato) # convertir en entero la variable estrato
vivienda$parqueaderos=as.integer(vivienda$parqueaderos) #convertir en entero la variable parqueadero
vivienda$banios=as.integer(vivienda$banios) #convertir en entero la variable banios
vivienda$habitaciones=as.integer(vivienda$habitaciones) #convertir en entero la variable habitaciones
vivienda$zona=str_to_lower(vivienda$zona) # pasar a minúsculas todos valores de la variable zona
vivienda$tipo=str_to_lower(vivienda$tipo) # pasar a minúsculas todos valores de la variable tipo
vivienda$barrio=str_to_lower(vivienda$barrio) # pasar a minúsculas todos valores de la variable barrio
library(mice)
md.pattern(vivienda, plot = TRUE, rotate.names = TRUE)
library(naniar)
naniar::gg_miss_upset(vivienda)
Se observa la mayoría de datos faltantes en la variable piso con 1909
datos faltantes seguido de esto esta la variable parqueadero con 876
datos faltantes.
726 registros tienen datos faltantes en 2 variables.
3 registros tienen mas de 10 variables faltantes.
Los indices con mas de 3 variables faltantes se eliminan, los pisos con datos faltantes se remplazan con 1 y los parqueaderos con datos faltantes se remplazan por 0.
library(dplyr)
vivienda <- vivienda %>%
filter(rowSums(is.na(.)) <= 3)
vivienda <- vivienda %>%
mutate(piso = ifelse(is.na(piso), 1, piso))
vivienda <- vivienda %>%
mutate(parqueaderos = ifelse(is.na(parqueaderos), 0, parqueaderos))
md.pattern(vivienda, plot = TRUE, rotate.names = TRUE)
# Análisis de componentes principales
# Trasformar variables para analizar
vivienda$piso=as.numeric(vivienda$piso)
vivienda$id=as.character(vivienda$id)
str(vivienda)
vivienda_numeric <- vivienda[sapply(vivienda, is.numeric)]
viviendaZ= scale(vivienda_numeric)
prcomp(viviendaZ)
install.packages("factoextra")
library(factoextra)
res.pca <- prcomp(viviendaZ)
fviz_eig(res.pca, addlabels = TRUE)
fviz_contrib(res.pca, choice = "var", axes=1)
fviz_contrib(res.pca, choice = "var", axes=2)
fviz_contrib(res.pca, choice = "var", axes=3)
fviz_contrib(res.pca, choice = "var", axes=4)
fviz_pca_var(res.pca,
col.var = "contrib", # Color by contributions to the PC
gradient.cols = c("#FF7F00", "#034D94"),
axes =c(1,2),
repel = TRUE # Avoid text overlapping
)
casos1 <- rbind(res.pca$x[1762,1:2],res.pca$x[3282,1:2]) # CP1
rownames(casos1) = c("1762","3282")
casos1 <- as.data.frame(casos1)
casos2 <- rbind(res.pca$x[1683,1:2], res.pca$x[8073,1:2]) # CP2
rownames(casos2) = c("1683","3402")
casos2 <- as.data.frame(casos2)
fviz_pca_ind(res.pca, col.ind = "#DEDEDE", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")) +
geom_point(data = casos1, aes(x = PC1, y = PC2), color = "red", size = 3) +
geom_point(data = casos2, aes(x = PC1, y = PC2), color = "blue", size = 3)
library(corrplot)
library(corrplot)
viviendaZ <- as.data.frame(viviendaZ)
# Calcular la matriz de correlación de Spearman
cor_matrix <- cor(viviendaZ, method = "spearman")
# Visualizar con corrplot
corrplot(cor_matrix, method = "color", type = "upper", tl.cex = 0.8, addCoef.col = "black")
cor.test(viviendaZ$preciom, viviendaZ$areaconst, method = "spearman")
Las variables que mas influencia tienen en la primera componente, que explica el 40.2 de la variabilidad de los datos, son en orden de importancia el precio, numero de baños, área construida, numero de parqueaderos, y estrato, para las demás componentes, (2,3 y 4), las principales variables de influencia es el piso, longitud y latitud.
En el gráfico Individual - PCA
La casa con mayor precio se encuentran en el lado izquierdo de la gráfica (vivienda 1762), mientras la de menor valor se encuentra al lado derecho (vivienda 3282), la vivienda con mayor numero de habitaciones y 2do mayor área construida se encuentra en el lado inferior de la gráfica (vivienda 8073), y en el extremo superior central se encuentran una vivienda con el 2do precio mas elevado y 2do mayor numero de baños (vivienda 1683), comparado con la vivienda 1762 con la cual comparte barrio y estrato.
NOTA: Este análisis se hace únicamente comparando los puntos extremos de la gráfica.
Agrupar las propiedades residenciales en segmentos homogéneos con características similares para entender las dinámicas de las ofertas específicas en diferentes partes de la ciudad y en diferentes estratos socio económicos.
library(FactoMineR)
install.packages("fpc")
library(fpc)
viviendaZC = vivienda[, c(3,5,6)]
# PCA
res.pca <- PCA(viviendaZC, graph = FALSE, scale.unit = TRUE )
# Distancia euclidiana
distancia <- dist(res.pca$ind$coord, method = "euclidean")
# Cluster
res.HCPC <- HCPC(res.pca, nb.clust=4)
#Determinar numero corecto de conjuntos
wss <- sapply(1:10, function(k){kmeans(res.pca$ind$coord, k)$tot.withinss})
plot(1:10, wss, type="b", pch = 19, frame = FALSE,
xlab="Número de clusters K", ylab="Total within-clusters sum of squares")
# Clustering jerárquico
res.hclust <- hclust(distancia, method = "ward.D2")
res.HCPC$desc.var
##
## Link between the cluster variable and the quantitative variables
## ================================================================
## Eta2 P-value
## piso 0.6760334 0
## preciom 0.6959207 0
## areaconst 0.6472968 0
##
## Description of each cluster by quantitative variables
## =====================================================
## $`1`
## v.test Mean in category Overall mean sd in category Overall sd
## piso 74.84762 7.18682 2.893256 2.190167 2.516425
## preciom -11.46432 348.01663 433.904436 230.153302 328.645270
## areaconst -21.51111 104.83467 174.934938 53.156775 142.955533
## p.value
## piso 0.000000e+00
## preciom 1.993236e-30
## areaconst 1.225354e-102
##
## $`2`
## v.test Mean in category Overall mean sd in category Overall sd
## piso -35.70946 1.892822 2.893256 1.082977 2.516425
## areaconst -44.82358 103.595679 174.934938 42.941085 142.955533
## preciom -47.50483 260.089844 433.904436 110.004786 328.645270
## p.value
## piso 2.818969e-279
## areaconst 0.000000e+00
## preciom 0.000000e+00
##
## $`3`
## v.test Mean in category Overall mean sd in category Overall sd
## areaconst 37.86247 278.315587 174.934938 90.97990 142.955533
## preciom 25.95936 596.853055 433.904436 197.88434 328.645270
## piso -22.94396 1.790495 2.893256 1.00857 2.516425
## p.value
## areaconst 0.000000e+00
## preciom 1.425553e-148
## piso 1.693070e-116
##
## $`4`
## v.test Mean in category Overall mean sd in category Overall sd
## preciom 65.890715 1287.060201 433.904436 317.064962 328.645270
## areaconst 55.997172 490.321940 174.934938 227.410005 142.955533
## piso -5.720738 2.326087 2.893256 2.112003 2.516425
## p.value
## preciom 0.000000e+00
## areaconst 0.000000e+00
## piso 1.060626e-08
Se han identificado cuatro segmentos de viviendas diferenciadas por estrato, precio y área construida:
Grupo 1: Propiedades de medio-alto (3.58), menor área (121 m²) y precio reducido ($229M COP). Mejores para mercados de interés social y compradores con presupuesto ajustado.
Grupo 2: Propiedades de estrato alto (5.25), área reducida (119 m²) y precio moderado ($362M COP). Se pueden posicionar como opciones accesibles en zonas atractivas.
Grupo 3: Viviendas de estrato alto (5.51), mayor área (292 m²) y precio elevado ($769M COP), dirigidas a clientes que buscan amplitud y exclusividad.
Grupo 4: Segmento de lujo, con estrato más alto (5.65), grandes dimensiones (552 m²) y precios superiores ($1.34B COP). Se recomienda estrategia enfocada en exclusividad y alto valor.
library(factoextra)
correspondencia <- vivienda[, c(2,10,11)]
tabla_cor <- table(correspondencia$zona, correspondencia$tipo)
colnames(tabla_cor) <- c("APARTAMENTO", "CASA")
tabla_cor
##
## APARTAMENTO CASA
## zona centro 24 100
## zona norte 1198 722
## zona oeste 1029 169
## zona oriente 62 289
## zona sur 2787 1939
chisq.test(tabla_cor)
##
## Pearson's Chi-squared test
##
## data: tabla_cor
## X-squared = 690.93, df = 4, p-value < 2.2e-16
resultados <- CA(tabla_cor)
print(resultados)
## **Results of the Correspondence Analysis (CA)**
## The row variable has 5 categories; the column variable has 2 categories
## The chi square of independence between the two variables is equal to 690.9297 (p-value = 3.207561e-148 ).
## *The results are available in the following objects:
##
## name description
## 1 "$eig" "eigenvalues"
## 2 "$col" "results for the columns"
## 3 "$col$coord" "coord. for the columns"
## 4 "$col$cos2" "cos2 for the columns"
## 5 "$col$contrib" "contributions of the columns"
## 6 "$row" "results for the rows"
## 7 "$row$coord" "coord. for the rows"
## 8 "$row$cos2" "cos2 for the rows"
## 9 "$row$contrib" "contributions of the rows"
## 10 "$call" "summary called parameters"
## 11 "$call$marge.col" "weights of the columns"
## 12 "$call$marge.row" "weights of the rows"
El análisis de correspondencias realizado entre las variables zona y tipo de vivienda (se excluye los barrios debido al exceso de clases) ha permitido identificar asociaciones significativas entre estas categorías. La prueba de chi-cuadrado arrojó un valor de X-squared = 690.93 con un p-valor < 2.2e-16, indicando una dependencia estadísticamente significativa entre las zonas de la ciudad y el tipo de vivienda predominante en cada una.
El mapa de correspondencias muestra las siguientes asociaciones destacadas:
Zona Sur: Predominan los apartamentos, sugiriendo una mayor densidad de este tipo de vivienda en esta área.
Zona Norte: Existe una distribución más equilibrada entre casas y apartamentos, indicando una oferta inmobiliaria diversificada.
Zona Oriente: Se observa una mayor presencia de casas, lo que podría reflejar una preferencia o disponibilidad de este tipo de vivienda en la zona.
Zona Centro y Zona Oeste: Aunque también presentan asociaciones, estas son menos pronunciadas en comparación con las zonas mencionadas anteriormente.
Se logra analizar las relaciones mas importantes entre las variables a lo largo de este documento están los soporte y gráficas correspondiente con recomendaciones practicas.
Desarrollo de Proyectos Inmobiliarios:
Zona Sur: Considerar el desarrollo de proyectos de apartamentos, dado su predominio y la posible demanda en esta área. Zona Oriente: Enfocarse en la construcción de casas, alineándose con la tendencia observada.
Estrategias de Comercialización:
Zona Norte: Implementar estrategias de marketing que destaquen la diversidad de opciones habitacionales, atrayendo a un público amplio. Zonas Centro y Oeste: Realizar estudios de mercado más detallados para identificar oportunidades específicas y ajustar las ofertas inmobiliarias en consecuencia.
El análisis evidencia una relación significativa entre la ubicación geográfica (zona) y el tipo de vivienda disponible en la ciudad. Estas asociaciones sugieren patrones de desarrollo urbano y preferencias residenciales que varían según la zona. Comprender estas dinámicas es esencial para las estrategias de desarrollo y comercialización inmobiliaria.
Profundizar en estudios que analicen otros factores, como el perfil socio económico de los residentes y las tendencias demográficas, para obtener una visión más completa del mercado inmobiliario urbano. Estas recomendaciones buscan optimizar la oferta inmobiliaria, alineándola con las características y demandas específicas de cada zona urbana, y así maximizar la satisfacción de los clientes y la rentabilidad de los proyectos.