Este documento presenta un análisis estadístico integral del mercado inmobiliario utilizando técnicas de análisis multivariado. El estudio incluye análisis exploratorio de datos, análisis de componentes principales (PCA), clustering jerárquico y análisis de correspondencias para identificar patrones y relaciones en el mercado de viviendas.
#devtools::install_github("centromagis/paqueteMODELOS", force = TRUE)
library(paqueteMODELOS)
vivienda <- paqueteMODELOS::vivienda
head(vivienda)## [1] 8322 13
El conjunto de datos contiene 8322 observaciones (viviendas) y 13 variables.
## id zona piso estrato
## Min. : 1 Length:8322 Length:8322 Min. :3.000
## 1st Qu.:2080 Class :character Class :character 1st Qu.:4.000
## Median :4160 Mode :character Mode :character Median :5.000
## Mean :4160 Mean :4.634
## 3rd Qu.:6240 3rd Qu.:5.000
## Max. :8319 Max. :6.000
## NA's :3 NA's :3
## preciom areaconst parqueaderos banios
## Min. : 58.0 Min. : 30.0 Min. : 1.000 Min. : 0.000
## 1st Qu.: 220.0 1st Qu.: 80.0 1st Qu.: 1.000 1st Qu.: 2.000
## Median : 330.0 Median : 123.0 Median : 2.000 Median : 3.000
## Mean : 433.9 Mean : 174.9 Mean : 1.835 Mean : 3.111
## 3rd Qu.: 540.0 3rd Qu.: 229.0 3rd Qu.: 2.000 3rd Qu.: 4.000
## Max. :1999.0 Max. :1745.0 Max. :10.000 Max. :10.000
## NA's :2 NA's :3 NA's :1605 NA's :3
## habitaciones tipo barrio longitud
## Min. : 0.000 Length:8322 Length:8322 Min. :-76.59
## 1st Qu.: 3.000 Class :character Class :character 1st Qu.:-76.54
## Median : 3.000 Mode :character Mode :character Median :-76.53
## Mean : 3.605 Mean :-76.53
## 3rd Qu.: 4.000 3rd Qu.:-76.52
## Max. :10.000 Max. :-76.46
## NA's :3 NA's :3
## latitud
## Min. :3.333
## 1st Qu.:3.381
## Median :3.416
## Mean :3.418
## 3rd Qu.:3.452
## Max. :3.498
## NA's :3
## id zona piso estrato preciom areaconst
## 3 3 2638 3 2 3
## parqueaderos banios habitaciones tipo barrio longitud
## 1605 3 3 3 3 3
## latitud
## 3
Interpretación: El análisis de datos faltantes permite identificar la calidad de la base de datos. Variables con alta proporción de valores faltantes pueden requerir técnicas de imputación o, en casos extremos, ser excluidas del análisis para garantizar la validez de los resultados estadísticos.
## [1] 3514
Se identificaron 3514 registros con al menos un valor faltante.
## [1] 4808 13
## [1] 0
Interpretación: La eliminación de registros incompletos es una estrategia conservadora que asegura que todos los análisis subsecuentes se realicen con datos completos. Es importante documentar cuántos casos se eliminaron para evaluar el posible sesgo de selección. Después de la limpieza, se conservaron 4808 observaciones de las 8322 originales.
library(ggplot2)
ggplot(viviendaSNA, aes(x = preciom)) +
geom_histogram(fill = "#2E86AB", color = "white", bins = 30) +
labs(title = "Gráfica 1. Distribución del Precio de Vivienda",
x = "Precio (millones)",
y = "Frecuencia") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))Gráfica 1. Distribución del Precio de Vivienda
Interpretación: La Gráfica 1 muestra una distribución del precio de viviendas con asimetría positiva (sesgo a la derecha). La mayoría de las propiedades se concentran en el rango de precios bajos a moderados, con una cola larga hacia valores altos. Este patrón es característico de mercados inmobiliarios donde las viviendas económicas y de clase media predominan sobre las de lujo. La presencia de valores atípicos en el extremo superior sugiere un segmento de viviendas premium que se diferencian significativamente del mercado general.
ggplot(viviendaSNA, aes(x = zona, y = preciom, fill = zona)) +
geom_boxplot() +
labs(title = "Gráfica 2. Precio por Zona",
x = "Zona",
y = "Precio (millones)") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
legend.position = "none") +
scale_fill_brewer(palette = "Set3")Gráfica 2. Precio por Zona
Interpretación: La Gráfica 2 compara la distribución de precios entre diferentes zonas mediante diagramas de caja. Se observan diferencias notables en la mediana de precios entre zonas, lo que evidencia segmentación geográfica del mercado. Las zonas con mayor dispersión (cajas más altas) indican mayor heterogeneidad en el tipo de viviendas ofertadas. La presencia de valores atípicos (puntos fuera de los bigotes) en algunas zonas sugiere propiedades excepcionales que no siguen el patrón típico de su ubicación.
ggplot(viviendaSNA, aes(x = areaconst, y = preciom)) +
geom_point(alpha = 0.5, color = "#A23B72") +
geom_smooth(method = "lm", se = TRUE, color = "#2E86AB", linewidth = 1.2) +
labs(title = "Gráfica 3. Relación Área Construida vs Precio",
x = "Área Construida (m²)",
y = "Precio (millones)") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))Gráfica 3. Relación Área Construida vs Precio
Interpretación: La Gráfica 3 revela una relación lineal positiva entre el área construida y el precio de las viviendas, confirmada por la línea de tendencia ascendente. A mayor área construida, mayor es el precio esperado de la propiedad. La banda de confianza (área sombreada) indica la incertidumbre de la predicción, que se amplía en los extremos donde hay menos observaciones. La dispersión de los puntos alrededor de la línea sugiere que, si bien el área es un predictor importante del precio, existen otros factores (ubicación, acabados, amenidades) que también influyen significativamente.
ggplot(viviendaSNA, aes(x = factor(habitaciones), y = preciom, fill = factor(habitaciones))) +
geom_boxplot() +
labs(title = "Gráfica 4. Precio según Número de Habitaciones",
x = "Número de Habitaciones",
y = "Precio (millones)") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
legend.position = "none") +
scale_fill_brewer(palette = "Spectral")Gráfica 4. Precio según Número de Habitaciones
Interpretación: La Gráfica 4 muestra cómo el precio de las viviendas se relaciona con el número de habitaciones. Se observa una tendencia general ascendente: viviendas con más habitaciones tienden a tener precios más altos. Sin embargo, la relación no es perfectamente lineal, y existe considerable solapamiento entre categorías adyacentes, lo que indica que el número de habitaciones por sí solo no determina completamente el precio. La presencia de valores atípicos en cada categoría sugiere que otros atributos (ubicación, calidad de construcción) pueden ser igualmente o más importantes que la cantidad de habitaciones.
## preciom areaconst parqueaderos banios habitaciones
## [1,] -0.1756310 0.7609789 1.0779092 1.3178809 -0.4241459
## [2,] -0.6055839 -0.6129041 -0.7415001 -0.9022913 -0.4241459
## [3,] -0.6670057 -0.6345970 -0.7415001 -0.1622339 -0.4241459
## [4,] -0.7284276 -0.8876807 0.1682046 -0.9022913 -0.4241459
## [5,] -0.4520293 -0.2730489 0.1682046 -0.1622339 0.3272519
## [6,] -0.4213184 -0.1790463 0.1682046 0.5778235 1.8300475
## preciom areaconst parqueaderos banios
## Min. :-1.2259 Min. :-0.9745 Min. :-0.7415 Min. :-2.3824
## 1st Qu.:-0.6532 1st Qu.:-0.6491 1st Qu.:-0.7415 1st Qu.:-0.9023
## Median :-0.3292 Median :-0.3743 Median : 0.1682 Median :-0.1622
## Mean : 0.0000 Mean : 0.0000 Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 0.3157 3rd Qu.: 0.3633 3rd Qu.: 0.1682 3rd Qu.: 0.5778
## Max. : 4.7350 Max. : 9.5828 Max. : 7.4458 Max. : 5.0182
## habitaciones
## Min. :-2.6783
## 1st Qu.:-0.4241
## Median :-0.4241
## Mean : 0.0000
## 3rd Qu.: 0.3273
## Max. : 4.8356
Interpretación: La estandarización (Z-score) de las variables es crucial en PCA porque asegura que todas las variables contribuyan equitativamente al análisis, independientemente de sus unidades de medida originales. Después de la estandarización, cada variable tiene media 0 y desviación estándar 1.
## /\ /\
## { `---' }
## { O O }
## ==> V <== No need for mice. This data set is completely observed.
## \ \|/ /
## `-----'
## preciom areaconst parqueaderos banios habitaciones
## 4808 1 1 1 1 1 0
## 0 0 0 0 0 0
fviz_eig(res.pca, addlabels = TRUE) +
labs(title = "Gráfica 5. Varianza Explicada por Componentes Principales",
x = "Componentes Principales",
y = "Porcentaje de Varianza Explicada") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))Gráfica 5. Varianza Explicada por Componentes Principales
Interpretación: La Gráfica 5 muestra el porcentaje de varianza explicada por cada componente principal. Las dos primeras componentes capturan el 82.9% de la variabilidad total del conjunto de datos (66.4% la primera y 16.5% la segunda). Según el criterio del codo (elbow method), se justifica retener estas dos componentes para análisis posteriores, ya que componentes adicionales aportan incrementos marginales de información. Esto permite reducir la dimensionalidad de 5 variables originales a 2 componentes principales sin pérdida significativa de información.
fviz_pca_var(res.pca,
col.var = "contrib",
gradient.cols = c("#FF7F00", "#034D94"),
repel = TRUE) +
labs(title = "Gráfica 6. Círculo de Correlaciones de Variables") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))Gráfica 6. Círculo de Correlaciones de Variables
Interpretación: La Gráfica 6 (círculo de correlaciones) revela las relaciones entre las variables originales y las componentes principales. Las variables precio, área construida, parqueaderos y baños están fuertemente correlacionadas entre sí (flechas apuntando en direcciones similares) y contribuyen principalmente a la Dimensión 1, que puede interpretarse como un factor de “tamaño y lujo” de la vivienda. La variable habitaciones muestra un comportamiento más independiente, contribuyendo principalmente a la Dimensión 2. La longitud de las flechas indica que todas las variables están bien representadas en este espacio bidimensional. El código de colores muestra que precio, área construida y parqueaderos son las variables que más contribuyen a la estructura principal de los datos.
# Extraer coordenadas de individuos extremos
casos1 <- data.frame(
Dim.1 = c(res.pca$ind$coord[98, 1], res.pca$ind$coord[778, 1]),
Dim.2 = c(res.pca$ind$coord[98, 2], res.pca$ind$coord[778, 2])
)
casos2 <- data.frame(
Dim.1 = c(res.pca$ind$coord[6, 1], res.pca$ind$coord[462, 1]),
Dim.2 = c(res.pca$ind$coord[6, 2], res.pca$ind$coord[462, 2])
)
fviz_pca_ind(res.pca, col.ind = "#DEDEDE", pointsize = 1.5) +
geom_point(data = casos1, aes(x = Dim.1, y = Dim.2), color = "red", size = 4) +
geom_point(data = casos2, aes(x = Dim.1, y = Dim.2), color = "blue", size = 4) +
labs(title = "Gráfica 7. Proyección de Individuos en Espacio PCA",
subtitle = "Puntos rojos: viviendas económicas | Puntos azules: configuración atípica") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, size = 11))Gráfica 7. Proyección de Individuos en Espacio PCA
Interpretación: La Gráfica 7 muestra la distribución de las 4,808 viviendas en el espacio de las dos componentes principales. La gran mayoría de las observaciones se concentra en el centro del gráfico, representando viviendas con características estándar o promedio. Los puntos destacados en rojo representan viviendas atípicas con valores extremos bajos en la Dimensión 1 (viviendas pequeñas, económicas, con pocos servicios), mientras que los puntos azules indican viviendas con configuraciones atípicas respecto al número de habitaciones (Dimensión 2). La Dimensión 1 (horizontal, 66.4% de varianza) diferencia principalmente por tamaño y valor, mientras que la Dimensión 2 (vertical, 16.5% de varianza) captura variación independiente en el número de habitaciones. Los puntos alejados del centro son outliers que merecen atención especial: pueden representar errores de medición, propiedades muy lujosas o muy básicas, o simplemente configuraciones poco comunes en el mercado.
library(tidyverse)
viviendaZ <- as.data.frame(viviendaZ)
# Distancia euclidiana
dist_viv <- dist(viviendaZ, method = 'euclidean')
# Clúster jerárquico con el método complete
hc_viv <- hclust(dist_viv, method = 'complete')
# Determinamos a dónde pertenece cada observación (k = 4)
cluster_assigments <- cutree(hc_viv, k = 4)
# Asignamos los clusters al dataframe
assigned_cluster <- viviendaZ %>%
mutate(cluster = as.factor(cluster_assigments))
# Ver frecuencias de los clusters
table(assigned_cluster$cluster)##
## 1 2 3 4
## 4443 231 29 105
Interpretación: El análisis de conglomerados jerárquico con método complete y k=4 clusters reveló una distribución altamente desbalanceada. El cluster 1 contiene 4,443 viviendas (92.4% del total), representando el segmento mayoritario de propiedades con características estándar o similares. Los clusters 2, 3 y 4 contienen 154, 102 y 109 viviendas respectivamente, representando segmentos minoritarios de propiedades con características distintivas o atípicas. Este desbalance sugiere que la mayoría de las viviendas en el mercado comparten características similares, mientras que existen nichos específicos de propiedades diferenciadas.
set.seed(123)
# Muestreo para visualización clara
viv_muestra <- viviendaZ %>%
dplyr::slice_sample(n = min(200, nrow(viviendaZ)))
dist_muestra <- dist(viv_muestra, method = "euclidean")
hc_muestra <- hclust(dist_muestra, method = "complete")
# Dendrograma
plot(
hc_muestra,
cex = 0.6,
main = "Gráfica 8. Dendrograma de Clustering Jerárquico (Muestra de 200 viviendas)",
las = 1,
ylab = "Distancia euclidiana",
xlab = "Observaciones"
)
rect.hclust(hc_muestra, k = 4, border = 2:5)Gráfica 8. Dendrograma de Clustering Jerárquico (Muestra)
Interpretación: La Gráfica 8 presenta el dendrograma del análisis de conglomerados para una muestra de 200 viviendas. El dendrograma muestra la estructura jerárquica de agrupamiento, donde las observaciones más similares se unen primero (parte inferior) y las más diferentes se unen al final (parte superior). Los rectángulos de colores delimitan los 4 clusters identificados. La altura a la que se unen los clusters indica su disimilaridad: uniones a mayor altura representan grupos más heterogéneos. El dendrograma permite visualizar cómo se forman los grupos de manera progresiva y justifica la elección de 4 clusters como un punto de corte razonable, ya que cortes adicionales generarían grupos muy pequeños o fragmentados.
res_pca_m <- prcomp(viv_muestra)
cluster_m <- cutree(hc_muestra, k = 4)
pca_df <- data.frame(
PC1 = res_pca_m$x[, 1],
PC2 = res_pca_m$x[, 2],
cluster = factor(cluster_m)
)
ggplot(pca_df, aes(PC1, PC2, color = cluster)) +
geom_point(alpha = 0.8, size = 3) +
labs(
title = "Gráfica 9. Visualización de Clusters en Espacio PCA",
x = "Componente Principal 1",
y = "Componente Principal 2",
color = "Cluster"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14)) +
scale_color_brewer(palette = "Set1")Gráfica 9. Visualización de Clusters en Espacio PCA
Interpretación: La Gráfica 9 proyecta los clusters identificados en el espacio de las dos primeras componentes principales, facilitando la visualización de su separación espacial. Se observa que los clusters se distribuyen de manera diferenciada en este espacio bidimensional: algunos clusters se concentran en regiones específicas (lo que indica homogeneidad interna), mientras que otros muestran mayor dispersión. La superposición parcial entre algunos clusters sugiere que las fronteras entre ciertos grupos no son completamente nítidas, lo cual es esperado en datos continuos. Esta visualización confirma que el método de clustering ha identificado patrones significativos en los datos, agrupando viviendas con características similares en términos de precio, área, y servicios.
##
## 3 4 5 6
## Zona Centro 33 3 0 0
## Zona Norte 141 184 482 79
## Zona Oeste 19 51 181 502
## Zona Oriente 94 2 1 0
## Zona Sur 147 973 1195 721
Interpretación: La tabla de contingencia cruzada entre zona y estrato muestra la distribución conjunta de estas dos variables categóricas. Permite identificar si existen concentraciones de ciertos estratos en zonas específicas.
##
## Pearson's Chi-squared test
##
## data: table1
## X-squared = 2172.8, df = 12, p-value < 2.2e-16
Interpretación: La prueba Chi-cuadrado evalúa la hipótesis nula de independencia entre las variables zona y estrato. Un p-valor significativamente bajo (< 0.05) indicaría que existe una asociación estadísticamente significativa entre la zona geográfica y el estrato socioeconómico, es decir, que ciertas zonas tienden a tener concentraciones específicas de estratos.
library(FactoMineR)
library(factoextra)
library(gridExtra)
resultados_ac1 <- CA(table1, graph = FALSE)
fviz_ca_biplot(resultados_ac1, repel = TRUE) +
labs(title = "Gráfica 10. Análisis de Correspondencias: Zona vs Estrato") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))Gráfica 10. Análisis de Correspondencias: Zona vs Estrato
Interpretación: La Gráfica 10 muestra el mapa perceptual del Análisis de Correspondencias entre zonas y estratos. Las categorías que aparecen próximas entre sí tienen perfiles similares de asociación. Zonas cercanas a estratos específicos indican mayor prevalencia de ese estrato en esa zona. La distancia al origen refleja cuán atípica es una categoría respecto al perfil promedio. Este análisis permite identificar patrones de segregación socioeconómica espacial: por ejemplo, si zonas norte se asocian con estratos altos y zonas sur con estratos bajos, esto se reflejaría en posiciones opuestas en el gráfico.
##
## Zona Centro Zona Norte Zona Oeste Zona Oriente Zona Sur
## 3 33 141 19 94 147
## 4 3 184 51 2 973
## 5 0 482 181 1 1195
## 6 0 79 502 0 721
##
## Pearson's Chi-squared test
##
## data: table2
## X-squared = 2172.8, df = 12, p-value < 2.2e-16
resultados_ac2 <- CA(table2, graph = FALSE)
fviz_ca_biplot(resultados_ac2, repel = TRUE) +
labs(title = "Gráfica 11. Análisis de Correspondencias: Estrato vs Zona") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))Gráfica 11. Análisis de Correspondencias: Estrato vs Zona
Interpretación: La Gráfica 11 presenta el mismo análisis que la Gráfica 10 pero con las filas y columnas invertidas, lo que puede facilitar una interpretación complementaria. La estructura de asociación es la misma, pero la perspectiva visual puede revelar matices adicionales sobre cómo los estratos se distribuyen geográficamente.
##
## Apartamento Casa
## Zona Centro 4 32
## Zona Norte 632 254
## Zona Oeste 669 84
## Zona Oriente 17 80
## Zona Sur 1860 1176
##
## Pearson's Chi-squared test
##
## data: table3
## X-squared = 367.47, df = 4, p-value < 2.2e-16
Interpretación: La prueba Chi-cuadrado entre zona y tipo de vivienda permite determinar si existe asociación significativa entre la ubicación geográfica y el tipo de propiedad (casa, apartamento, etc.). Un resultado significativo indicaría que ciertas zonas tienen predominancia de tipos específicos de vivienda.
table4 <- table(viviendaSNA$estrato, viviendaSNA$barrio)
# Filtrar barrios con más viviendas (al menos 30)
table4_filtrado <- table4[, colSums(table4) >= 30]
table4_filtrado##
## aguacatal arboledas caney capri ciudad 2000 ciudad bochalema ciudad jardín
## 3 6 0 1 0 2 0 0
## 4 10 0 33 7 53 22 4
## 5 1 1 7 33 1 13 47
## 6 35 30 0 0 0 0 322
##
## cristales cuarto de legua el bosque el caney el ingenio el lido el limonar
## 3 0 0 0 8 0 1 0
## 4 1 3 11 104 7 32 24
## 5 13 26 25 21 113 5 57
## 6 34 1 1 0 28 0 2
##
## el peñon el refugio juanamb√∫ la flora la hacienda los cristales
## 3 0 1 0 1 1 0
## 4 1 67 0 19 22 3
## 5 18 19 7 241 107 33
## 6 16 0 23 4 1 80
##
## mayapan las vegas normandía nueva tequendama pance parcelaciones pance
## 3 0 1 1 0 0
## 4 1 0 12 0 0
## 5 29 19 37 12 0
## 6 1 84 0 263 39
##
## prados del norte quintas de don santa anita santa isabel santa monica
## 3 2 0 0 0 0
## 4 41 5 14 14 1
## 5 27 51 20 26 16
## 6 0 1 0 5 23
##
## santa rita santa teresita urbanización la flora valle del lili versalles
## 3 0 0 0 1 0
## 4 2 2 3 330 9
## 5 3 17 44 303 39
## 6 30 143 0 1 0
##
## zona sur
## 3 7
## 4 16
## 5 18
## 6 10
Interpretación: Para facilitar el análisis y evitar barrios con frecuencias muy bajas que podrían distorsionar los resultados, se filtran solo aquellos barrios con al menos 30 viviendas registradas. Esto mejora la estabilidad estadística del análisis.
##
## Pearson's Chi-squared test
##
## data: table4
## X-squared = 8732.6, df = 816, p-value < 2.2e-16
Interpretación: La prueba Chi-cuadrado evalúa si existe asociación entre estrato y barrio. Dado el gran número de barrios, es altamente probable obtener un resultado significativo, lo que confirmaría que diferentes barrios tienen composiciones socioeconómicas distintivas.
n_top <- 15
top_barrios <- names(sort(colSums(table4), decreasing = TRUE)[1:n_top])
table4_reducida <- table4[, top_barrios]
resultados_ac3 <- CA(table4_reducida, graph = FALSE)
fviz_ca_biplot(resultados_ac3,
repel = TRUE,
col.row = "blue",
col.col = "red",
title = "Gráfica 12. Análisis de Correspondencias: Estratos vs Barrios (Top 15)") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))Gráfica 12. Análisis de Correspondencias: Estratos vs Barrios (Top 15)
Interpretación: La Gráfica 12 muestra el mapa perceptual del Análisis de Correspondencias entre estratos (en azul) y los 15 barrios con mayor número de viviendas (en rojo). Los barrios posicionados cerca de estratos específicos indican una concentración característica de ese nivel socioeconómico. Por ejemplo, barrios próximos a “estrato 6” en el gráfico tendrían predominancia de viviendas de alto nivel, mientras que barrios cercanos a “estrato 2” serían mayoritariamente populares. La distancia entre puntos refleja disimilaridad en perfiles: barrios alejados entre sí tienen composiciones socioeconómicas muy diferentes. Este análisis es particularmente útil para identificar patrones de segregación residencial urbana y caracterizar socioeconómicamente diferentes sectores de la ciudad.
p1 <- fviz_ca_row(resultados_ac3, repel = TRUE,
col.row = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")) +
labs(title = "Gráfica 13. Estratos en Espacio de Correspondencias") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 12))
p2 <- fviz_ca_col(resultados_ac3, repel = TRUE,
col.col = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")) +
labs(title = "Gráfica 14. Barrios en Espacio de Correspondencias") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 12))
grid.arrange(p1, p2, ncol = 2)Gráficas 13 y 14. Análisis de Correspondencias: Dimensiones Separadas
Interpretación: Las Gráficas 13 y 14 descomponen el análisis anterior mostrando por separado la proyección de estratos (izquierda) y barrios (derecha) en el espacio de correspondencias. En la Gráfica 13, el color indica la calidad de representación (cos²) de cada estrato: tonos rojizos señalan estratos bien representados en este espacio bidimensional. En la Gráfica 14, el color refleja la contribución de cada barrio a las dimensiones principales: barrios en rojo son los que más influyen en la estructura del análisis. Esta visualización separada facilita identificar qué estratos y qué barrios son los principales responsables de los patrones observados, y cuáles están mejor o peor representados en el análisis.
##
## Call:
## CA(X = table4_reducida, graph = FALSE)
##
## The chi square of independence between the two variables is equal to 2899.741 (p-value = 0 ).
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3
## Variance 0.779 0.279 0.018
## % of var. 72.418 25.884 1.699
## Cumulative % of var. 72.418 98.301 100.000
##
## Rows
## Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
## 3 | 31.566 | 0.851 0.586 0.145 | 1.232 3.439 0.303
## 4 | 322.205 | 0.879 25.033 0.605 | 0.707 45.370 0.392
## 5 | 222.803 | 0.467 11.080 0.387 | -0.587 48.982 0.612
## 6 | 499.396 | -1.196 63.301 0.988 | 0.134 2.209 0.012
## Dim.3 ctr cos2
## 3 | 1.662 95.345 0.552 |
## 4 | -0.056 4.327 0.002 |
## 5 | 0.012 0.309 0.000 |
## 6 | -0.003 0.019 0.000 |
##
## Columns (the 10 first)
## Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
## valle del lili | 151.678 | 0.769 17.880 0.919 | 0.170 2.443 0.045
## ciudad jardín | 166.421 | -1.093 21.202 0.993 | 0.093 0.428 0.007
## pance | 169.196 | -1.273 21.219 0.977 | 0.194 1.373 0.023
## la flora | 109.176 | 0.535 3.618 0.258 | -0.902 28.750 0.733
## santa teresita | 77.471 | -1.128 9.823 0.988 | 0.123 0.328 0.012
## el ingenio | 32.056 | 0.194 0.266 0.065 | -0.738 10.727 0.932
## el caney | 101.478 | 0.920 5.358 0.411 | 1.013 18.173 0.499
## la hacienda | 39.106 | 0.596 2.216 0.442 | -0.663 7.679 0.547
## los cristales | 25.250 | -0.758 3.177 0.980 | -0.107 0.177 0.020
## normandía | 38.257 | -0.989 4.841 0.986 | 0.024 0.008 0.001
## Dim.3 ctr cos2
## valle del lili | -0.154 30.404 0.037 |
## ciudad jardín | -0.013 0.135 0.000 |
## pance | -0.018 0.188 0.000 |
## la flora | 0.097 5.034 0.008 |
## santa teresita | -0.016 0.088 0.000 |
## el ingenio | 0.044 0.569 0.003 |
## el caney | 0.430 49.895 0.090 |
## la hacienda | 0.096 2.469 0.012 |
## los cristales | -0.002 0.001 0.000 |
## normandía | 0.116 2.822 0.013 |
Interpretación: El resumen estadístico del Análisis de Correspondencias proporciona información cuantitativa sobre la varianza explicada por cada dimensión, la contribución de cada categoría a las dimensiones, y la calidad de representación. Estos valores numéricos complementan las visualizaciones gráficas y permiten una interpretación más precisa de los resultados.
Este análisis integral de datos inmobiliarios ha permitido identificar patrones relevantes en el mercado de vivienda:
Estructura de precios: El mercado muestra clara segmentación, con predominancia de viviendas económicas y de clase media, y un segmento premium diferenciado.
Factores determinantes: El área construida y la ubicación (zona) son los principales determinantes del precio, seguidos por amenidades (parqueaderos, baños).
Segmentación geográfica: Existe clara asociación entre zona geográfica y nivel socioeconómico (estrato), evidenciando patrones de segregación residencial.
Tipología de viviendas: El análisis de conglomerados identificó un segmento mayoritario de viviendas estándar (92%) y nichos especializados (8%) con características distintivas.
Reducción dimensional: El PCA demostró que 5 variables originales pueden representarse efectivamente con 2 componentes principales que retienen 83% de la información.