Actividad 1: Evaluación de la oferta inmobiliaria urbana - Wilson Eduardo Briñez Bermudez
Introducción
El mercado inmobiliario urbano se caracteriza por una alta heterogeneidad en precios, tipologías de vivienda, niveles socioeconómicos y patrones de localización, lo que dificulta su análisis a partir de variables aisladas. En este contexto, contar con herramientas que permitan integrar y sintetizar grandes volúmenes de información resulta fundamental para apoyar la toma de decisiones estratégicas en procesos de compra, venta y valoración de inmuebles. A partir de una base de datos amplia y detallada de propiedades residenciales, este estudio aborda el análisis del mercado desde una perspectiva multivariada, combinando técnicas estadísticas que permiten identificar estructuras, relaciones y segmentaciones relevantes.
El trabajo se apoya en un enfoque analítico integral que incluye reducción de dimensionalidad, segmentación y análisis de relaciones entre categorías, complementado con visualizaciones claras y orientadas a la interpretación gerencial. Mediante el uso del Análisis de Componentes Principales, el Análisis de Conglomerados y el Análisis de Correspondencias, se busca caracterizar la oferta inmobiliaria, identificar perfiles homogéneos de vivienda y entender su distribución espacial y tipológica dentro de la ciudad. Este enfoque permite transformar la información disponible en conocimiento accionable, facilitando una comprensión más profunda del mercado y sirviendo como insumo para la definición de estrategias comerciales y de inversión.
Problema
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.
Base de datos y variables
|>
|> ── R CMD build ─────────────────────────────────────────────────────────────────
|> checking for file 'C:\Users\famil\AppData\Local\Temp\RtmpA39E6P\remotes1d307ad52d64\Centromagis-paqueteMODELOS-3b06257/DESCRIPTION' ... ✔ checking for file 'C:\Users\famil\AppData\Local\Temp\RtmpA39E6P\remotes1d307ad52d64\Centromagis-paqueteMODELOS-3b06257/DESCRIPTION'
|> ─ preparing 'paqueteMODELOS':
|> checking DESCRIPTION meta-information ... ✔ checking DESCRIPTION meta-information
|> ─ checking for LF line-endings in source and make files and shell scripts
|> ─ checking for empty or unneeded directories
|> ─ building 'paqueteMODELOS_0.1.0.tar.gz'
|>
|>
|> 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")=List of 3
|> ..$ cols :List of 13
|> .. ..$ id : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
|> .. ..$ zona : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
|> .. ..$ piso : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
|> .. ..$ estrato : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
|> .. ..$ preciom : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
|> .. ..$ areaconst : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
|> .. ..$ parqueaderos: list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
|> .. ..$ banios : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
|> .. ..$ habitaciones: list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
|> .. ..$ tipo : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
|> .. ..$ barrio : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
|> .. ..$ longitud : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
|> .. ..$ latitud : list()
|> .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
|> ..$ default: list()
|> .. ..- attr(*, "class")= chr [1:2] "collector_guess" "collector"
|> ..$ delim : chr ";"
|> ..- attr(*, "class")= chr "col_spec"
|> - attr(*, "problems")=<externalptr>
Análisis de Componentes Principales
En este punto se aplicará un Análisis de Componentes Principales (ACP) con la intención de simplificar la información contenida en la base de datos y entender mejor cómo se estructura el mercado de vivienda urbana. La base incluye varias variables numéricas que están claramente relacionadas entre sí, como el precio, el área construida, el número de habitaciones, baños y parqueaderos, además del estrato. En lugar de analizarlas por separado, el ACP permite combinarlas y resumirlas en unos pocos componentes que concentran la mayor parte de la variabilidad, trabajando sobre variables estandarizadas para evitar que las diferencias de escala afecten los resultados.
El enfoque consiste en identificar patrones generales que describan características clave de los inmuebles, por ejemplo, una dimensión asociada al tamaño y al valor de la vivienda o al nivel socioeconómico y la dotación. Para ello, se analizará cuánta información explica cada componente y cómo contribuyen las variables originales a su construcción, lo que permitirá interpretar los resultados de forma clara. Estos componentes servirán como una representación más simple del mercado y se utilizarán más adelante para profundizar en análisis de segmentación y apoyo a la toma de decisiones.
# Selección de variables numéricas relevantes
datos_pca <- vivienda[, c(
"preciom",
"areaconst",
"parqueaderos",
"banios",
"habitaciones",
"estrato"
)]
# Eliminación de observaciones con valores faltantes
datos_pca <- na.omit(datos_pca)
# Análisis de Componentes Principales (con estandarización)
pca_modelo <- prcomp(datos_pca, center = TRUE, scale. = TRUE)
# Resumen del ACP
summary(pca_modelo)|> Importance of components:
|> PC1 PC2 PC3 PC4 PC5 PC6
|> Standard deviation 1.8665 1.1059 0.70675 0.59961 0.49435 0.43560
|> Proportion of Variance 0.5806 0.2039 0.08325 0.05992 0.04073 0.03162
|> Cumulative Proportion 0.5806 0.7845 0.86772 0.92765 0.96838 1.00000
Los resultados del Análisis de Componentes Principales muestran que una parte muy importante de la información del mercado inmobiliario queda concentrada en los primeros componentes. El primer componente principal explica por sí solo cerca del 58 % de la variabilidad total de los datos, lo que indica que existe una dimensión dominante que resume buena parte de las diferencias entre los inmuebles. Al incorporar el segundo componente, la variabilidad explicada acumulada asciende aproximadamente al 78 %, lo que sugiere que con solo dos componentes ya se captura la estructura esencial del mercado.
A partir del tercer componente en adelante, el aporte adicional de información es mucho más reducido. El tercer componente incrementa la varianza explicada hasta cerca del 87 %, mientras que los componentes restantes aportan fracciones cada vez menores, inferiores al 6 % individualmente. Esto indica que, para efectos prácticos de análisis e interpretación, es razonable trabajar principalmente con los dos primeros componentes, ya que concentran la mayor parte de la información relevante sin introducir complejidad innecesaria.
|> PC1 PC2 PC3 PC4 PC5 PC6
|> preciom 0.4704788 0.2394751 0.1081038 -0.29100096 0.2659341 0.7444545
|> areaconst 0.4502724 -0.2044012 0.2594726 -0.65721148 -0.3038390 -0.4048503
|> parqueaderos 0.4278010 0.1513045 0.6161907 0.62045124 -0.1192404 -0.1233864
|> banios 0.4652553 -0.1598972 -0.3695544 0.14075513 0.6782753 -0.3762054
|> habitaciones 0.2986104 -0.6676068 -0.3313085 0.27132051 -0.4165440 0.3290044
|> estrato 0.2953982 0.6377404 -0.5431029 0.07074563 -0.4349440 -0.1299429
Las cargas factoriales permiten entender qué representa cada componente y cómo se combinan las variables originales. El primer componente principal presenta cargas positivas y relativamente altas en el precio, el área construida, el número de parqueaderos y los baños, lo que indica que esta dimensión resume principalmente el tamaño y valor general del inmueble. En este componente, los inmuebles con mayores puntajes tienden a ser más amplios, con mejor dotación y precios más altos, por lo que puede interpretarse como un eje de “escala y valorización” de la vivienda.
El segundo componente muestra un comportamiento distinto, con cargas positivas marcadas en el estrato y negativas en el número de habitaciones y, en menor medida, en el área construida. Esto sugiere una dimensión asociada al perfil socioeconómico y al tipo de distribución del inmueble, donde viviendas ubicadas en estratos más altos no necesariamente tienen más habitaciones, sino que privilegian otros atributos. Los componentes restantes capturan variaciones más específicas y menos dominantes, relacionadas con combinaciones particulares de parqueaderos, baños o precio, pero su aporte global es limitado, por lo que su interpretación resulta secundaria frente a los dos primeros componentes.
Al observar el biplot de los dos primeros componentes se confirma visualmente la estructura identificada en los resultados numéricos. La nube de puntos muestra una concentración importante de inmuebles alrededor del origen, lo que indica que gran parte de la oferta comparte características similares, mientras que las observaciones más alejadas representan viviendas con perfiles más diferenciados. El eje horizontal (PC1) domina claramente la dispersión, reforzando la idea de que esta dimensión resume el tamaño, la dotación y el nivel de precio de los inmuebles: a medida que se avanza hacia la derecha, aparecen viviendas más grandes, mejor equipadas y de mayor valor.
Las flechas de las variables ayudan a interpretar esta dinámica. Precio, área construida, baños y parqueaderos apuntan en una dirección similar sobre PC1, lo que evidencia su relación positiva y su contribución conjunta a esta dimensión principal. Por otro lado, el estrato se orienta principalmente hacia el eje vertical (PC2), diferenciando inmuebles por su perfil socioeconómico más que por su tamaño físico. Las habitaciones aparecen en una dirección opuesta al estrato sobre PC2, sugiriendo que un mayor número de habitaciones no necesariamente está asociado a estratos más altos. En conjunto, el gráfico permite entender de forma intuitiva cómo se organiza el mercado: un eje principal asociado al valor y la escala del inmueble y un segundo eje que separa perfiles socioeconómicos y tipologías de vivienda.
Análisis de Conglomerados
En este segundo punto se realizará un Análisis de Conglomerados con el objetivo de identificar grupos de propiedades que presenten características similares entre sí y que, al mismo tiempo, sean diferentes de otros grupos. La idea es pasar de analizar inmuebles de forma individual a entender el mercado como un conjunto de segmentos bien definidos, donde cada conglomerado represente un tipo de oferta residencial con rasgos comunes en términos de precio, tamaño, dotación y nivel socioeconómico. Este enfoque permite capturar la heterogeneidad del mercado urbano y facilita la lectura de patrones que no son evidentes cuando se observan las variables por separado.
# Obtener los scores de los dos primeros componentes
scores_pca <- pca_modelo$x[, 1:2]
# Análisis jerárquico para explorar la estructura
distancias <- dist(scores_pca, method = "euclidean")
hc <- hclust(distancias, method = "ward.D2")
# Dendrograma
plot(hc, labels = FALSE, main = "Dendrograma - Clustering jerárquico")# Definición del número de clusters 3 en este caso
clusters_hc <- cutree(hc, k = 3)
# Clustering particional (k-means) usando los mismos scores
set.seed(123)
kmeans_modelo <- kmeans(scores_pca, centers = 3, nstart = 25)
# Asignación final de clusters
datos_pca$cluster <- factor(kmeans_modelo$cluster)Análisis de Correspondencia
En este apartado se realizará un Análisis de Correspondencias (AC) con el objetivo de estudiar la relación existente entre las variables categóricas del conjunto de datos, específicamente el tipo de vivienda, la zona y el barrio. A diferencia de los análisis anteriores, aquí el interés no está en la magnitud de las variables, sino en los patrones de asociación entre categorías, lo que permite entender cómo se estructura la oferta inmobiliaria en términos espaciales y tipológicos dentro de la ciudad.
El enfoque consiste en construir tablas de contingencia que crucen estas variables categóricas y aplicar el Análisis de Correspondencias para representar dichas relaciones en un espacio de baja dimensión. Esta técnica permite visualizar qué tipos de vivienda están más asociados a determinadas zonas o barrios y detectar concentraciones o especializaciones de la oferta inmobiliaria.
# Cargar librerías necesarias
library(FactoMineR)
library(factoextra)
# Selección de variables categóricas
datos_ca <- vivienda[, c("tipo", "zona", "barrio")]
# Tabla de contingencia: tipo de vivienda vs zona
tabla_tipo_zona <- table(datos_ca$tipo, datos_ca$zona)
# Análisis de Correspondencias
ca_tipo_zona <- CA(tabla_tipo_zona, graph = FALSE)|> eigenvalue percentage of variance cumulative percentage of variance
|> dim 1 0.08305442 100 100
|> Apartamento Casa
|> -0.2289585 0.3627488
|> [,1]
|> Zona Centro 0.86131854
|> Zona Norte -0.02238755
|> Zona Oeste -0.50482822
|> Zona Oriente 0.89603812
|> Zona Sur 0.04791693
|> Apartamento Casa
|> 38.69455 61.30545
|> [,1]
|> Zona Centro 13.3142097
|> Zona Norte 0.1392774
|> Zona Oeste 44.1885952
|> Zona Oriente 40.7874179
|> Zona Sur 1.5704998
Con base en los resultados del Análisis de Correspondencias entre tipo de vivienda y zona, se observa en primer lugar una relación estadísticamente significativa entre ambas variables, tal como lo confirma el valor elevado del estadístico ji-cuadrado y un p-value prácticamente nulo. Esto indica que la distribución de los tipos de vivienda no es aleatoria entre las distintas zonas de la ciudad, sino que responde a patrones claros de localización de la oferta inmobiliaria. Dado que solo existe una dimensión interpretable en este cruce, dicha dimensión concentra el 100 % de la variabilidad asociada a la relación entre ambas variables.
Desde el punto de vista interpretativo, la dimensión principal separa claramente apartamentos y casas, siendo las casas las que dominan el eje y explican una mayor proporción de la inercia total. En términos espaciales, las zonas Centro y Oriente se asocian de manera más marcada con esta dimensión, mostrando una contribución importante a la estructura observada, mientras que la Zona Oeste aparece en el extremo opuesto, indicando un patrón diferenciado de oferta. Las zonas Norte y Sur presentan contribuciones mucho menores, lo que sugiere una oferta más balanceada o menos especializada en términos de tipo de vivienda. En conjunto, estos resultados evidencian una especialización territorial del mercado inmobiliario, donde ciertos tipos de vivienda tienden a concentrarse en zonas específicas de la ciudad.
Visualización de resultados
En este último apartado se realizará la visualización integrada de los resultados, con el objetivo de comunicar de manera clara y efectiva los hallazgos obtenidos a la dirección de la empresa. Dado que los análisis realizados —componentes principales, conglomerados y análisis de correspondencias— generan información compleja, la visualización se convierte en una herramienta clave para traducir los resultados técnicos en insumos comprensibles y accionables para la toma de decisiones estratégicas.
El enfoque consistirá en utilizar gráficos y mapas que permitan resaltar patrones, segmentaciones y relaciones relevantes del mercado inmobiliario. Se emplearán representaciones como planos factoriales del ACP y del Análisis de Correspondencias, gráficos de dispersión con identificación de conglomerados y mapas geográficos apoyados en las coordenadas de latitud y longitud para mostrar la distribución espacial de los segmentos identificados. Estas visualizaciones permitirán comparar zonas, tipos de vivienda y perfiles de inmuebles de forma intuitiva, facilitando una lectura global del mercado y apoyando decisiones relacionadas con valoración, focalización comercial y estrategias de expansión.
viz_df <- data.frame(
PC1 = scores_pca[, 1],
PC2 = scores_pca[, 2],
cluster = datos_pca$cluster,
preciom = datos_pca$preciom
)Para la visualización de resultados se construyó una base consistente a partir de las observaciones efectivamente utilizadas en el Análisis de Componentes Principales. Los conglomerados se asignaron únicamente a estas viviendas, garantizando coherencia entre el ACP, el análisis de conglomerados y las representaciones gráficas. Esta estrategia evita inconsistencias derivadas de valores faltantes y asegura que todas las visualizaciones reflejen fielmente los resultados del análisis multivariado.
Visualización del ACP con clusters
Plano factorial de los dos primeros componentes, coloreado por conglomerado.
library(ggplot2)
scores_df <- data.frame(
PC1 = scores_pca[, 1],
PC2 = scores_pca[, 2],
cluster = factor(datos_pca$cluster)
)
ggplot(scores_df, aes(x = PC1, y = PC2, color = cluster)) +
geom_point(alpha = 0.6) +
labs(
title = "ACP – Distribución de inmuebles por conglomerados",
x = "Componente Principal 1",
y = "Componente Principal 2"
) +
theme_minimal()
La visualización del plano factorial del Análisis de Componentes
Principales, coloreado por conglomerados, muestra una segmentación clara
del mercado inmobiliario a partir de las dos dimensiones principales. La
separación de los grupos se da principalmente a lo largo del primer
componente, lo que refuerza su papel como eje dominante en la
diferenciación de los inmuebles. Este componente, asociado al tamaño, la
dotación y el nivel de precio, organiza la oferta en un gradiente que va
desde viviendas de menor escala y valor hasta inmuebles de mayor tamaño
y precio.
En este contexto, el conglomerado ubicado a la izquierda del gráfico agrupa viviendas con valores más bajos del primer componente, mientras que el conglomerado situado hacia la derecha reúne inmuebles con puntajes elevados, reflejando propiedades más grandes y de mayor valor. El grupo intermedio actúa como un segmento de transición, concentrando una parte importante de la oferta con características medias. La forma y distribución de los conglomerados evidencian que el mercado no es homogéneo, sino que se estructura en segmentos bien definidos, lo que valida el uso del análisis de conglomerados como herramienta para identificar perfiles claros de vivienda dentro del mercado urbano.
ggplot(viz_df, aes(cluster, preciom, fill = cluster)) +
geom_boxplot(alpha = 0.7) +
labs(
title = "Distribución del precio por conglomerado",
x = "Conglomerado",
y = "Precio"
) +
theme_minimal() +
theme(legend.position = "none")El diagrama de cajas del precio por conglomerado refuerza y complementa lo observado en el plano factorial del ACP. Se evidencia una diferenciación clara entre los tres segmentos, con niveles de precio bien definidos y poco solapamiento entre ellos. El primer conglomerado concentra las viviendas con precios más bajos, mostrando además una dispersión relativamente reducida, lo que sugiere una oferta más homogénea en este segmento del mercado.
El segundo conglomerado presenta precios intermedios y una mayor variabilidad, lo que indica la coexistencia de distintos perfiles de vivienda dentro de un mismo rango de mercado. Por su parte, el tercer conglomerado agrupa los inmuebles de mayor precio, con una dispersión amplia y la presencia de valores extremos elevados, reflejando un segmento más heterogéneo y asociado a viviendas de mayor tamaño y nivel de dotación. En conjunto, esta visualización confirma que los conglomerados identificados no solo son distintos desde el punto de vista estadístico, sino que también representan segmentos económicos claramente diferenciados dentro del mercado inmobiliario urbano.
Visualización del Análisis de Correspondencias
ggplot(vivienda |> na.omit(), aes(x = longitud, y = latitud, color = tipo)) +
geom_point(alpha = 0.6, size = 1.2) +
labs(
title = "Distribución espacial por tipo de vivienda",
x = "Longitud",
y = "Latitud",
color = "Tipo"
) +
theme_minimal()
Se observa que los apartamentos presentan una mayor concentración en
determinadas áreas, formando núcleos más densos, lo que sugiere una
oferta asociada a zonas con mayor consolidación urbana y mayor densidad
constructiva. Este patrón es consistente con dinámicas de
verticalización y aprovechamiento intensivo del suelo en sectores
específicos.
Por su parte, las casas muestran una distribución más dispersa en el espacio, ocupando áreas más amplias y menos concentradas. Esto indica una oferta que tiende a localizarse en zonas con menor densidad o con una estructura urbana distinta, donde predomina la vivienda unifamiliar. En conjunto, el gráfico evidencia una diferenciación espacial en la tipología de la vivienda, reforzando los resultados obtenidos en el Análisis de Correspondencias y mostrando cómo la estructura del mercado inmobiliario no solo se define por características económicas, sino también por patrones territoriales bien marcados.