En este caso de estudio, se realizó un análisis del mercado inmobiliario urbano utilizando técnicas estadísticas multivariadas. El objetivo fue identificar patrones, relaciones y segmentaciones en los datos que pudieran guiar decisiones estratégicas en la compra, venta y valoración de propiedades. Se utilizaron métodos como el Análisis de Componentes Principales (ACP), el Análisis de Conglomerados y el Análisis de Correspondencia para reducir la dimensionalidad, agrupar propiedades y explorar posibles patrones útiles en los datos.
En esta sección se configuró el entorno necesario para llevar a cabo el análisis de los datos. Se incluyó la carga de las librerías necesarias, la importación de los datos, así como la inspeccción y limpieza inicial de los mismos.Proiimero se cargaron las librerías requeridas.
Se usaron las instucciones de la guía para descargar el dataset usando los siguientes comandos:
# devtools::install_github("centromagis/paqueteMODELOS", force = TRUE)
library(paqueteMODELOS)
data("vivienda")
str(vivienda)
## spc_tbl_ [8,322 × 13] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ id : num [1:8322] 1147 1169 1350 5992 1212 ...
## $ zona : chr [1:8322] "Zona Oriente" "Zona Oriente" "Zona Oriente" "Zona Sur" ...
## $ piso : chr [1:8322] NA NA NA "02" ...
## $ estrato : num [1:8322] 3 3 3 4 5 5 4 5 5 5 ...
## $ preciom : num [1:8322] 250 320 350 400 260 240 220 310 320 780 ...
## $ areaconst : num [1:8322] 70 120 220 280 90 87 52 137 150 380 ...
## $ parqueaderos: num [1:8322] 1 1 2 3 1 1 2 2 2 2 ...
## $ banios : num [1:8322] 3 2 2 5 2 3 2 3 4 3 ...
## $ habitaciones: num [1:8322] 6 3 4 3 3 3 3 4 6 3 ...
## $ tipo : chr [1:8322] "Casa" "Casa" "Casa" "Casa" ...
## $ barrio : chr [1:8322] "20 de julio" "20 de julio" "20 de julio" "3 de julio" ...
## $ longitud : num [1:8322] -76.5 -76.5 -76.5 -76.5 -76.5 ...
## $ latitud : num [1:8322] 3.43 3.43 3.44 3.44 3.46 ...
## - attr(*, "spec")=
## .. cols(
## .. id = col_double(),
## .. zona = col_character(),
## .. piso = col_character(),
## .. estrato = col_double(),
## .. preciom = col_double(),
## .. areaconst = col_double(),
## .. parqueaderos = col_double(),
## .. banios = col_double(),
## .. habitaciones = col_double(),
## .. tipo = col_character(),
## .. barrio = col_character(),
## .. longitud = col_double(),
## .. latitud = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
Se pueden obvservar columnas de tipo double y también categóricas, como tipo, barrio, zona y piso.
Realiza un análisis descriptivo para comprender la distribución de las variables clave.
Resumen estadístico de variables numéricas
| preciom | areaconst | parqueaderos | banios | habitaciones | |
|---|---|---|---|---|---|
| Min. : 58.0 | Min. : 30.0 | Min. : 1.000 | Min. : 0.000 | Min. : 0.000 | |
| 1st Qu.: 220.0 | 1st Qu.: 80.0 | 1st Qu.: 1.000 | 1st Qu.: 2.000 | 1st Qu.: 3.000 | |
| Median : 330.0 | Median : 123.0 | Median : 2.000 | Median : 3.000 | Median : 3.000 | |
| Mean : 433.9 | Mean : 174.9 | Mean : 1.835 | Mean : 3.111 | Mean : 3.605 | |
| 3rd Qu.: 540.0 | 3rd Qu.: 229.0 | 3rd Qu.: 2.000 | 3rd Qu.: 4.000 | 3rd Qu.: 4.000 | |
| Max. :1999.0 | Max. :1745.0 | Max. :10.000 | Max. :10.000 | Max. :10.000 | |
| NA’s :2 | NA’s :3 | NA’s :1605 | NA’s :3 | NA’s :3 |
En los gráficos presentados, se observa una significativa variabilidad en los precios por metro cuadrado según la zona y el tipo de propiedad. La Zona Norte y la Zona Oriente muestran una mayor dispersión en los precios, con algunos valores atípicos que alcanzan los 2000 por metro cuadrado, lo que indica la presencia de propiedades de alta gama en estas áreas. Por otro lado, las propiedades tipo Casa tienden a tener un precio por metro cuadrado más elevado en comparación con los Apartamentos, reflejando la mayor valoración del espacio y las características asociadas con las casas en el mercado. Estos hallazgos destacan la importancia de considerar la ubicación y el tipo de propiedad al evaluar el valor de mercado de los inmuebles.
Identifica los valores faltantes, además de estandarixar las variables categóricas.
# Lista los valores faltantes por columna para determinar cuáles se pueden eliminar
valores_faltantes <- colSums(is.na(datos))
kable(valores_faltantes, caption = "Cantidad de Valores Faltantes por Columna")
| x | |
|---|---|
| id | 3 |
| zona | 3 |
| piso | 2638 |
| estrato | 3 |
| preciom | 2 |
| areaconst | 3 |
| parqueaderos | 1605 |
| banios | 3 |
| habitaciones | 3 |
| tipo | 3 |
| barrio | 3 |
| longitud | 3 |
| latitud | 3 |
como se puede observar, tanto parqueaderos como piso tienen gran cantidad de valores faltantes, ya que son variables que si pueden influir en el precio, se decidió no eliminar esas columnas, sino eliminar todos los registros con datros faltantes, debido a que a pesar de eliminar casi la mitad de registros del datsast, los que quedan son registros de calidad que conservan todas las columnas.
# Elimina todas las filas con valores faltantes
datos <- na.omit(datos)
# Transforma las variables categóricas a factores
datos <- datos %>%
mutate(
zona = as.factor(zona),
tipo = as.factor(tipo),
barrio = as.factor(barrio),
piso = as.factor(piso)
)
Se realizó un análisis integral y multidimensional de la base de datos para obtener una comprensión del mercado inmobiliario urbano. Se aplicaron las siguientes técnicas de análisis de datos:
Análisis de Componentes Principales: Reducir la dimensionalidad del conjunto de datos y visualizar la estructura de las variables en componentes principales para identificar características clave que influyen en la variación de precios y oferta del mercado.
Análisis de Conglomerados: 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 socioeconómicos.
Análisis de Correspondencia: Examinar la relación entre las variables categóricas (tipo de vivienda, zona y barrio), para identificar patrones de comportamiento de la oferta en mercado inmobiliario.
Visualización de resultados: Presentar gráficos, mapas y otros recursos visuales para comunicar los hallazgos de manera clara y efectiva a la dirección de la empresa.
En esta sección se abordaron los cuatro retos principales del análisis, utilizando diferentes técnicas estadísticas para resolver cada uno de ellos.
# selecciona las variables numéricas antes del ACP. OJO: No estandariza porque se requiere comparar los valores reales.
datos_seleccionados <- select(datos, preciom, areaconst, parqueaderos, banios, habitaciones)
# Se ejecutó el ACP y se analizaron los resultados obtenidos.
acp <- PCA(datos_seleccionados, graph = FALSE)
Se generaron gráficos para visualizar la importancia de los componentes y la proyección de las observaciones en los componentes principales.
El Scree Plot visualiza la importancia de cada componente principa.
# .
g3 <- fviz_eig(acp)
print(g3)
El Scree Plot muestra que el primer componente principal captura la mayor parte de la varianza (aproximadamente 66.4%), seguido por un segundo componente que explica un 16.5% adicional. A partir del tercer componente, la varianza explicada disminuye drásticamente, lo que sugiere que los componentes adicionales contribuyen marginalmente a la variabilidad total. Este patrón indica que los primeros dos componentes principales son los más relevantes y que utilizar componentes adicionales podría no aportar mucha información adicional al análisis.
# Se grafica la proyección de las observaciones en los componentes principales.
g4 <- fviz_pca_ind(acp,
geom.ind = "point",
col.ind = datos$zona, # Color por zona
addEllipses = TRUE,
ellipse.level = 0.95,
palette = "jco") +
labs(title = "Proyección de las Observaciones en los Componentes Principales")
print(g4)
El gráfico proyecta las observaciones del dataset en los dos primeros componentes principales, con Dim1 explicando el 66.4% y Dim2 el 16.5% de la variabilidad. Los puntos están coloreados según las zonas geográficas de las viviendas. Aunque hay cierta superposición entre las zonas, destacan las diferencias en la dispersión de las observaciones: por ejemplo, la Zona Norte y la Zona Oriente tienden a estar más concentradas en el centro del gráfico, mientras que la Zona Sur se extiende más hacia los bordes. Esto sugiere que las propiedades en la Zona Sur podrían tener características más variadas o extremas en comparación con las otras zonas, capturadas por estos componentes principales.
# Se grafica la contribución de las variables a los componentes principales.
g5 <- fviz_pca_var(acp, col.var = "contrib") +
scale_color_gradient2(low = "blue", mid = "yellow", high = "red", midpoint = 0.5) +
labs(title = "Variables y sus Contribuciones en los Componentes Principales")
print(g5)
El gráfico muestra cómo las variables originales del dataset contribuyen a los dos primeros componentes principales (Dim1 y Dim2). Las variables habitaciones, baños, areaconst, y parqueaderos tienen vectores largos, lo que indica una alta contribución al primer componente principal (Dim1), que explica el 66.4% de la variabilidad. Notablemente, habitaciones es la variable que más contribuye, seguida de cerca por areaconst y baños. Estas variables están altamente correlacionadas entre sí y con el primer componente, sugiriendo que son los principales factores que diferencian las viviendas en el dataset. Por otro lado, el segundo componente (Dim2), que explica un 16.5% adicional, no muestra una contribución tan marcada de las variables, lo que sugiere que las características más importantes del dataset están bien representadas en el primer componente.
En esta sección, se aplicó el análisis de conglomerados para agrupar las propiedades en segmentos homogéneos basados en sus características clave. El objetivo fue identificar patrones de similitud entre las propiedades y crear clusters que puedan ser utilizados para estrategias de segmentación de mercado.
Utiliza los datos ya seleccionados en la sección 3.1
datos_clustering <- datos_seleccionados
# Calcula la matriz de distancias
distancias <- dist(datos_clustering)
# Usa el método del codo para determinar el número óptimo de conglomerados
grafico_codo <- fviz_nbclust(datos_clustering, kmeans, method = "wss") +
labs(title = "Método del Codo para Determinar el Número Óptimo de Conglomerados")
print(grafico_codo)
El gráfico del método del codo sugiere que tres conmglomerados (k = 3) es el número óptimo para agrupar las propiedades del dataset, ya que en este punto se observa una clara inflexión en la curva. A partir de tres conglomerados, la reducción en la variabilidad interna de los grupos es menos significativa, lo que indica que agrupar las propiedades en más de tres grupos no aportaría significativamente a la diferenciación basada en características como área construida, número de baños, y habitaciones.
Se usa el índice silhouette para apoyar la determinación del número óptimo de conglomerados
grafico_silhouette <- fviz_nbclust(datos_clustering, kmeans, method = "silhouette") +
labs(title = "Índice Silhouette para Determinar el Número Óptimo de Conglomerados")
print(grafico_silhouette)
El grsfico del índice Silhouette muestra que el valor máximo del ancho promedio de Silhouette se alcanza cuando se agrupan las propiedades en dos conglomerados (k = 2). Este resultado sugiere que con dos grupos se logra la mejor separación entre conglomerados, maximizando la cohesión interna y la separación externa en el dataset. Sin embargo, dado que el valor del índice también es relativamente alto para k = 3, este podría ser considerado como una alternativa si se busc segmentación más detallada del mercado inmobiliario en función de características como el área construida y el número de habitaciones.
Se calculan los clusteres y las características promedio para cada cluster.
# Aplica el algoritmo de K-means con el número óptimo de clusters (usa set.seed para reproducibilidad)
set.seed(123)
kmeans_resultados <- kmeans(datos_clustering, centers = 3, nstart = 25)
# Agrega la clasificación de los clusters a los datos originales
datos_clustering_con_clusters <- as.data.frame(datos_clustering)
datos_clustering_con_clusters$cluster <- as.factor(kmeans_resultados$cluster)
# Calcula el resumen de las características de cada cluster
resumen_clusters <- datos_clustering_con_clusters %>%
group_by(cluster) %>%
summarise(
n = n(),
promedio_precio = mean(preciom, na.rm = TRUE),
promedio_area = mean(areaconst, na.rm = TRUE),
promedio_habitaciones = mean(habitaciones, na.rm = TRUE),
promedio_banios = mean(banios, na.rm = TRUE),
promedio_parqueaderos = mean(parqueaderos, na.rm = TRUE)
)
# Muestra el resumen de características por cluster
kable(resumen_clusters, caption = "Características Promedio de Cada Cluster")
| cluster | n | promedio_precio | promedio_area | promedio_habitaciones | promedio_banios | promedio_parqueaderos |
|---|---|---|---|---|---|---|
| 1 | 370 | 1335.9324 | 427.0321 | 4.278378 | 5.189189 | 3.762162 |
| 2 | 1220 | 656.4041 | 260.9652 | 4.186885 | 4.277049 | 2.409016 |
| 3 | 3218 | 280.6259 | 113.0739 | 3.246426 | 2.591672 | 1.366066 |
# Visualiza los conglomerados resultantes del algoritmo K-means
grafico_conglomerados <- fviz_cluster(kmeans_resultados, data = datos_clustering, geom = "point", ellipse.type = "norm") +
labs(title = "Visualización de Conglomerados de Propiedades")
print(grafico_conglomerados)
El gráfico muestra la distribución de las propiedades en tres
conglomerados utilizando los dos primeros componentes principales (Dim1
y Dim2), que explican el 66.4% y 16.5% de la variabilidad,
respectivamente. Los conglomerados 1, 2 y 3 están representados por los
colores rojo, verde y azul, respectivamente. Se observa que el
conglomerado 1 está más disperso a lo largo del eje de Dim1, lo que
sugiere una mayor variabilidad en las características de las propiedades
en este grupo. En contraste, los conglomerados 2 y 3 están más
concentrados, especialmente el conglomerado 3, lo que indica que las
propiedades dentro de estos grupos son más homogéneas en cuanto a las
características analizadas, como el área construida y el número de
habitaciones. Esta diferenciación puede considerarse una segmentación
del mercado inmobiliario en función de estas características clave.
En esta sección, se empleó el análisis de correspondencia para explorar las relaciones entre las variables categóricas del dataset, como la zona y el tipo de propiedad. Este método permitió identificar asociaciones significativas entre estas categorías, revelando cómo ciertos tipos de propiedades están más estrechamente vinculados a zonas específicas de la ciudad. Los resultados proporcionan una visión clara de las preferencias y tendencias del mercado inmobiliario, lo que es crucial para la formulación de estrategias comerciales basadas en la ubicación y el tipo de inmueble.
datos_clustering_con_clusters <- as.data.frame(datos_clustering)
datos_clustering_con_clusters$zona <- datos$zona
datos_clustering_con_clusters$cluster <- as.factor(kmeans_resultados$cluster)
# Construye una tabla de contingencia con las variables categóricas relevantes
tabla_contingencia <- table(datos_clustering_con_clusters$zona, datos_clustering_con_clusters$cluster)
# Muestra la tabla de contingencia en un formato mejorado
kable(tabla_contingencia, caption = "Tabla de Contingencia entre Zona y Cluster", format = "html") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), full_width = F, position = "center") %>%
column_spec(1, bold = TRUE, color = "white", background = "dodgerblue") %>%
column_spec(2:ncol(tabla_contingencia), background = "lightgray")
| 1 | 2 | 3 | |
|---|---|---|---|
| Zona Centro | 0 | 2 | 34 |
| Zona Norte | 19 | 195 | 672 |
| Zona Oeste | 147 | 311 | 295 |
| Zona Oriente | 0 | 9 | 88 |
| Zona Sur | 204 | 703 | 2129 |
La tabla de contingencia muestra que la Zona Sur domina en los Clusters 2 y 3, especialmente en el Cluster 3 con 1790 propiedades, indicando que esta zona concentra una gran parte de las propiedades con características que la diferencian del resto. En contraste, la Zona Norte tiene una distribución más balanceada, con una mayor concentración en el Cluster 3, pero también una presencia significativa en el Cluster 2. La Zona Centro es la menos representada, con pocas propiedades dispersas entre los Clusters 2 y 3, lo que sugiere que esta zona no comparte muchas características comunes con las propiedades de las demás zonas.
Aplica el análisis de correspondencia simple sobre la tabla de contingencia.
analisis_correspondencia <- CA(tabla_contingencia, graph = FALSE)
# Genera un mapa perceptual que muestra la relación entre las zonas y los clusters
grafico_correspondencia <- fviz_ca_biplot(analisis_correspondencia, repel = TRUE) +
labs(title = "Mapa Perceptual de Correspondencias entre Zonas y Clusters")
print(grafico_correspondencia)
El mapa perceptual muestra una fuerte asociación entre la Zona Oeste y el Cluster 1, indicando que las propiedades en esta zona comparten características distintivas. Por otro lado, la Zona Sur se encuentra más cerca del Cluster 2, lo que sugiere una cierta diferenciación respecto a las otras zonas. Zona Norte y Cluster 3 también están relacionadas, aunque de forma menos pronunciada. Zona Oriente y Zona Centro se encuentran más alejadas de los clusters, lo que sugiere que tienen propiedades con características menos comunes o distintivas dentro de los clusters analizados.
Se analizaron las correspondencias más significativas para proporcionar información sobre la distribución de zonas en los clusters
## [1] "No se encontraron correspondencias significativas en la Dimensión 1 con el nivel de significancia especificado."
## [1] "No se encontraron correspondencias significativas en la Dimensión 2 con el nivel de significancia especificado."
En esta sección, se presentan los análisis detallados de los resultados obtenidos mediante las técnicas de Análisis de Componentes Principales, Análisis de Conglomerados y Análisis de Correspondencia. Además, se ofrecen conclusiones clave y recomendaciones estratégicas para la empresa inmobiliaria, con el objetivo de optimizar la inversión y maximizar los beneficios en un mercado altamente competitivo.
A continuación, se detallan los principales hallazgos obtenidos de los análisis realizados en las secciones anteriores, destacando las características clave de las propiedades y su segmentación en el mercado.
ste gráfico muestra que las variables relacionadas con el tamaño de la
propiedad (habitaciones, baños, área construida) tienen la mayor
influencia en los componentes principales, lo que sugiere que estas son
las características clave que diferencian las propiedades en el
mercado.
La visualización de los conglomerados revela que los clusters están
claramente definidos, lo que indica que las propiedades en cada grupo
comparten características similares. Esto es particularmente útil para
segmentar el mercado y dirigir estrategias específicas a cada segmento.
En al siguiente tabla se muestran las características promedio de los
elementos de cada cluster encontrado.
| cluster | n | promedio_precio | promedio_area | promedio_habitaciones | promedio_banios | promedio_parqueaderos |
|---|---|---|---|---|---|---|
| 1 | 370 | 1335.9324 | 427.0321 | 4.278378 | 5.189189 | 3.762162 |
| 2 | 1220 | 656.4041 | 260.9652 | 4.186885 | 4.277049 | 2.409016 |
| 3 | 3218 | 280.6259 | 113.0739 | 3.246426 | 2.591672 | 1.366066 |
Mapa Perceptual de Correspondencias:
El gráfico muestra una fuerte asociación entre ciertas zonas y clusters,
particularmente la Zona Oeste con el Cluster 1, sugiriendo una
diferenciación geográfica en las características de las propiedades.
Mostrar el gráfico generado:
Se presentan las conclusiones más relevantes basadas en el análisis de los datos:
Diferenciación de Propiedades: El Análisis de Componentes Principales reveló que las características más influyentes en la diferenciación de las propiedades son el número de habitaciones, baños, y el área construida. Esto sugiere que estos son los factores más importantes para considerar en la valoración y segmentación de propiedades en el mercado.
Segmentación del Mercado: El Análisis de Conglomerados identificó tres clusters claramente definidos, cada uno representando un segmento distinto del mercado inmobiliario. Estas agrupaciones pueden ser aprovechadas para desarrollar estrategias específicas para cada segmento, optimizando la inversión y la estrategia de ventas.
Asociación Geográfica: El Análisis de Correspondencia mostró una fuerte asociación entre ciertos clusters y zonas geográficas, particularmente entre el Cluster 1 y la Zona Oeste. Esto indica que las características de las propiedades en la Zona Oeste son significativamente diferentes a las de otras zonas, lo que puede ser útil para la focalización de campañas de marketing.
Con base en los resultados obtenidos, se proponen las siguientes recomendaciones para la empresa inmobiliaria:
Enfoque en Características Clave: Se recomienda enfocar las estrategias de marketing y venta en las características clave identificadas (habitaciones, baños, área construida), ya que son los principales diferenciadores de propiedades en el mercado.
Desarrollo de Estrategias Segmentadas: Utilizando los clusters identificados, se deben desarrollar estrategias de marketing y venta adaptadas a cada segmento. Por ejemplo, propiedades en el Cluster 1, principalmente en la Zona Oeste, podrían ser promovidas como propiedades de alto valor con características distintivas, mientras que las propiedades en el Cluster 2 podrían ser posicionadas como opciones más asequibles con características atractivas.
Optimización de la Inversión: La empresa debería considerar la asociación geográfica de los clusters al planificar nuevas inversiones o adquisiciones de propiedades. Por ejemplo, concentrar inversiones en zonas que pertenecen al Cluster 1 podría maximizar los beneficios, dado que estas zonas parecen tener propiedades con características que se destacan en el mercado.
Monitoreo Continuo del Mercado: Se recomienda un monitoreo continuo de las características clave del mercado inmobiliario y la actualización periódica del análisis para adaptar las estrategias de acuerdo a los cambios en las tendencias del mercado.
A lo largo de este caso de estudio, se aprendió a aplicar técnicas avanzadas de análisis multivariado para explorar y segmentar un mercado inmobiliario urbano. La combinación de métodos como el Análisis de Componentes Principales, Análisis de Conglomerados y Análisis de Correspondencia permitió identificar patrones clave y oportunidades estratégicas. Este tipo de análisis no solo es aplicable en la valoración y comercialización de propiedades, sino que también es relevante en muchos otros campos de la ciencia de datos, donde la identificación de grupos y la comprensión de la relación entre variables son esenciales para la toma de decisiones informadas y optimizadas. El autor se siente muy contento con este aprendizaje, ya que estos conocimientos son herramientas poderosas para enfrentar problemas complejos en la vida real y en la industria de data science.