# Cargar librerías necesarias
library(paqueteMODELOS)
## Loading required package: boot
## Loading required package: broom
## Loading required package: GGally
## Loading required package: ggplot2
## Loading required package: gridExtra
## Loading required package: knitr
## Loading required package: summarytools
## Warning in fun(libname, pkgname): couldn't connect to display ":0"
## system might not have X11 capabilities; in case of errors when using dfSummary(), set st_options(use.x11 = FALSE)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
## 
##     combine
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(FactoMineR) # Para calcular el ACP
library(factoextra) # Para visualizar el ACP
## Welcome to factoextra!
## Want to learn more? See two factoextra-related books at https://www.datanovia.com/library/principal-component-methods
# Cargar la base de datos
data("vivienda")

# Limpieza inicial para el ACP
# El ACP requiere estrictamente variables numéricas y no admite valores nulos (NA)
vivienda_num <- vivienda %>%
  select(preciom, areaconst, parqueaderos, banios, habitaciones) %>%
  na.omit() 

head(vivienda_num)
# 1. Ejecutar el Análisis de Componentes Principales
res_pca <- PCA(vivienda_num, scale.unit = TRUE, graph = FALSE)

# 2. Visualizar la varianza explicada por cada dimensión
fviz_eig(res_pca, addlabels = TRUE, ylim = c(0, 100), 
         title = "Porcentaje de Varianza Explicada por Dimensiones")

# 3. Visualizar el círculo de correlación de las variables
fviz_pca_var(res_pca, col.var = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel = TRUE, 
             title = "Relación de variables con los Componentes Principales")

Reto 1. Interpretación del Análisis de Componentes Principales (ACP)

En respuesta al primer objetivo del estudio, el cual busca reducir la dimensionalidad del conjunto de datos e identificar las características clave que influyen en la variación de precios[cite: 1], se ejecutó un Análisis de Componentes Principales (ACP) sobre las variables cuantitativas de la oferta inmobiliaria.

1. Varianza Explicada y Reducción de Dimensionalidad

Al observar el gráfico del porcentaje de varianza explicada (Scree plot), se evidencia que la Dimensión 1 captura el 65.1% de la varianza total de los datos, mientras que la Dimensión 2 captura un 17.2%. De manera acumulada, la retención de información en las dos primeras dimensiones asciende al 82.3%. Este es un resultado estadísticamente robusto que justifica metodológicamente la reducción de las cinco variables originales a un plano bidimensional, garantizando que el análisis posterior (conglomerados) mantenga la mayor parte de la estructura y variabilidad de la información original sin pérdida significativa de datos.

2. Análisis de Correlación de Variables (Círculo de Correlaciones)

La representación de las variables en el círculo de correlaciones permite interpretar la naturaleza de las nuevas dimensiones creadas:

  • Dimensión 1 (Eje X) - “Magnitud y Valor Inmobiliario”: Todas las variables presentan vectores que apuntan hacia el cuadrante positivo de esta dimensión. Destaca la fuerte correlación entre el área construida (areaconst), la cantidad de baños (banios), el número de parqueaderos y, en consecuencia, el precio (preciom). Esta dimensión resume el tamaño general y el nivel de comodidades de la propiedad. Un desplazamiento hacia la derecha en este eje representa viviendas más grandes, mejor equipadas y de mayor valor en el mercado.
  • Dimensión 2 (Eje Y) - “Configuración Estructural (Densidad vs. Amenidades)”: Esta dimensión revela un contraste arquitectónico y de mercado interesante. El vector de la variable habitaciones se proyecta fuertemente hacia la parte superior (positiva) del eje, mientras que los vectores de parqueaderos y preciom se inclinan hacia el lado negativo. Esto sugiere una segmentación entre propiedades que priorizan una alta subdivisión interna (mayor número de habitaciones, posiblemente orientadas a familias numerosas) en contraposición a propiedades que sacrifican habitaciones en favor de espacios complementarios como parqueaderos, lo cual está asociado a un mayor precio de mercado.

En conclusión, el mercado inmobiliario evaluado está fuertemente determinado por el tamaño general de la propiedad, pero presenta dinámicas diferenciadas dependiendo de si la construcción prioriza la cantidad de dormitorios o las amenidades como el estacionamiento.

# 1. Extraemos las coordenadas de los inmuebles
datos_pca <- res_pca$ind$coord[, 1:2]

# 2. Tomamos una muestra de 2000 registros para no saturar la RAM de Posit Cloud
set.seed(123)
datos_muestra <- datos_pca[sample(nrow(datos_pca), 2000), ]

# 3. Calculamos el método del codo sobre la muestra
fviz_nbclust(datos_muestra, kmeans, method = "wss", linecolor = "#2C3E50") +
  labs(title = "Método del Codo para determinar K óptimo",
       x = "Número de clústers k",
       y = "Suma de cuadrados")

# 1. Ejecutar el modelo K-means con 3 grupos (clústers)
set.seed(123) # Para reproducibilidad
modelo_kmeans <- kmeans(datos_pca, centers = 3, nstart = 25)

# 2. Unir el clúster asignado a nuestra base de datos limpia original
vivienda_num$cluster <- as.factor(modelo_kmeans$cluster)

# 3. Visualizar los segmentos creados
fviz_cluster(modelo_kmeans, data = datos_pca,
             geom = "point", # Usamos solo puntos para no saturar el gráfico
             ellipse.type = "convex", 
             palette = "jco",
             ggtheme = theme_minimal(),
             title = "Agrupamiento de Propiedades Inmobiliarias (K=3)")
## Warning: argument title is deprecated; please use main instead.

Reto 2. Análisis de Conglomerados (Segmentación del Mercado)

Para dar respuesta al segundo objetivo del estudio, enfocado en entender las dinámicas de ofertas específicas, se procedió a segmentar el mercado inmobiliario agrupando las propiedades en conglomerados homogéneos. Utilizando el método del codo sobre las coordenadas de los componentes principales, se determinó que el número óptimo de segmentos es tres (K=3).

Al aplicar el algoritmo K-means y visualizar los resultados en el plano factorial, se identifican tres dinámicas de oferta claramente diferenciadas:

  • Clúster 1 (Zona Azul - Propiedades Premium): Se ubican en el extremo derecho de la Dimensión 1, lo que indica que son los inmuebles de mayor tamaño, con más baños y los precios más elevados. Su tendencia hacia la parte inferior de la Dimensión 2 sugiere que priorizan amenidades como los parqueaderos por encima de una alta cantidad de habitaciones. Representan el mercado de lujo o apartamentos de altas especificaciones.
  • Clúster 2 (Zona Amarilla - Viviendas Familiares de Alta Densidad): Se posicionan en el centro del eje de tamaño (Dimensión 1) pero dominan la parte superior de la Dimensión 2. Esto caracteriza a inmuebles que, sin ser necesariamente los más costosos, están altamente subdivididos (gran cantidad de habitaciones). Este segmento agrupa casas tradicionales, inmuebles para familias numerosas o propiedades adaptadas para renta de habitaciones.
  • Clúster 3 (Zona Gris - Oferta Compacta o de Entrada): Se concentran en el sector negativo de la Dimensión 1 y parte inferior de la Dimensión 2. Corresponden a los inmuebles con menor área construida, menos baños, escasos parqueaderos y precios más accesibles. Este segmento representa la vivienda urbana estándar orientada a personas solteras o parejas, como apartamentos pequeños y apartaestudios.

Esta segmentación multidimensional le permite a la empresa inmobiliaria abandonar las generalizaciones y focalizar sus estrategias comerciales en tres nichos estructurados: mercado de alto valor, mercado familiar tradicional y mercado de vivienda compacta.

# 1. Filtramos las variables categóricas
vivienda_cat <- vivienda %>%
  select(zona, tipo) %>%
  na.omit()

# 2. Ejecutamos el Análisis de Correspondencias Múltiples (MCA)
# El MCA maneja perfectamente variables con pocas categorías
res_mca <- MCA(vivienda_cat, graph = FALSE)

# 3. Visualizamos el resultado (Biplot Múltiple)
fviz_mca_var(res_mca, repel = TRUE,
             col.var = "#2C3E50", # Color de los puntos
             shape.var = 19,      # Forma de los puntos
             ggtheme = theme_minimal(),
             title = "Análisis de Correspondencias: Zona vs. Tipo de Vivienda")

Reto 3. Análisis de Correspondencias (Dinámica Espacial de la Oferta)

En cumplimiento del tercer objetivo, el cual busca examinar la relación entre las variables categóricas para identificar patrones de comportamiento, se ejecutó un Análisis de Correspondencias Múltiples (MCA) cruzando la zona de la ciudad con el tipo de inmueble.

Al proyectar las categorías en el plano factorial, se revelan asociaciones espaciales muy marcadas en el mercado inmobiliario:

  • Dominancia Vertical en el Noroccidente: Existe una fuerte asociación entre la categoría Apartamento y las zonas Oeste y Norte (agrupadas en el cuadrante izquierdo). Esto indica que el desarrollo urbanístico en estos sectores está fuertemente orientado a la construcción en altura y proyectos de alta densidad.
  • Tradición Horizontal en el Centro y Oriente: En el extremo opuesto (cuadrante derecho), la categoría Casa muestra una relación directa con la Zona Centro y la Zona Oriente. Esto sugiere que en estas áreas prevalece la arquitectura tradicional, lotes individuales y una consolidación urbanística más antigua que no ha migrado masivamente hacia los edificios.
  • Transición en el Sur: La Zona Sur se ubica cerca del eje central (cero) en la primera dimensión, lo que sugiere que es un sector de transición con un mercado inmobiliario más mixto, donde la oferta entre casas y apartamentos está más equilibrada que en los extremos de la ciudad.

Esta visualización confirma que la estrategia comercial de la inmobiliaria no puede ser uniforme; las campañas de captación o venta de apartamentos tendrán mayor efectividad en el Norte y el Oeste, mientras que la comercialización de casas debe focalizarse en el Centro y el Oriente.

# 1. Filtramos los datos para evitar NAs en las variables a graficar
vivienda_graf <- vivienda %>%
  select(zona, tipo, preciom) %>%
  na.omit()

# 2. Creamos el gráfico de cajas (Boxplot)
ggplot(vivienda_graf, aes(x = zona, y = preciom, fill = tipo)) +
  geom_boxplot(outlier.alpha = 0.3, outlier.color = "gray") + # Atenuamos los valores atípicos
  scale_fill_manual(values = c("#2C3E50", "#E7B800")) +       # Colores corporativos
  theme_minimal() +
  labs(title = "Distribución del Precio Inmobiliario por Zona y Tipo",
       subtitle = "Perspectiva estratégica para la valoración de propiedades",
       x = "Zona de la Ciudad",
       y = "Precio (Millones)",
       fill = "Tipo de Inmueble") +
  theme(legend.position = "bottom",
        plot.title = element_text(face = "bold"))

# --- GRÁFICO 1: Relación Área vs Precio por Estrato ---
# Preparamos los datos, convirtiendo el estrato a factor (categoría)
vivienda_disp <- vivienda %>%
  select(areaconst, preciom, estrato) %>%
  na.omit() %>%
  mutate(estrato = as.factor(estrato))

graf_1 <- ggplot(vivienda_disp, aes(x = areaconst, y = preciom, color = estrato)) +
  geom_point(alpha = 0.5) + # Puntos semitransparentes para ver la densidad
  geom_smooth(method = "lm", se = FALSE, color = "black", linetype = "dashed") +
  theme_minimal() +
  labs(title = "Relación entre Área Construida y Precio",
       subtitle = "Impacto del estrato socioeconómico en la valorización",
       x = "Área Construida (m²)",
       y = "Precio (Millones)",
       color = "Estrato")

# --- GRÁFICO 2: Composición del Inventario ---
vivienda_bar <- vivienda %>%
  select(zona, estrato) %>%
  na.omit() %>%
  mutate(estrato = as.factor(estrato))

graf_2 <- ggplot(vivienda_bar, aes(x = zona, fill = estrato)) +
  geom_bar(position = "dodge", color = "white") + # Barras separadas por estrato
  scale_fill_brewer(palette = "YlGnBu") +         # Paleta de colores gerencial
  theme_minimal() +
  labs(title = "Composición de la Oferta Inmobiliaria",
       subtitle = "Volumen de inventario disponible por Zona y Estrato",
       x = "Zona de la Ciudad",
       y = "Cantidad de Propiedades",
       fill = "Estrato")

# Imprimimos los gráficos
graf_1
## `geom_smooth()` using formula = 'y ~ x'

graf_2

Reto 4. Análisis Estratégico de Resultados Visuales

La integración de la visualización de datos permite traducir los modelos estadísticos en directrices comerciales claras para la dirección de la empresa inmobiliaria:

1. Distribución y Techos de Precio por Zona Al evaluar el comportamiento de los precios frente a la ubicación y el tipo de inmueble, se identifican contrastes significativos en el mercado:

  • Exclusividad del Oeste: La Zona Oeste presenta las medianas de precio más altas y la mayor dispersión (cajas más amplias), tanto para casas como para apartamentos. Esto la consolida como el sector premium de la ciudad, con un alto potencial para transacciones de gran volumen financiero.
  • Brecha Tipológica en Norte y Sur: En las zonas Norte y Sur, las casas alcanzan valoraciones drásticamente superiores a los apartamentos, presentando una gran cantidad de valores atípicos (puntos por encima de los bigotes) que superan los 1.500 millones.
  • Mercado Accesible: Las zonas Centro y Oriente exhiben precios bajos y muy poca variabilidad, lo que indica un mercado altamente estandarizado y de bajo costo.

2. Valorización del Metro Cuadrado (Área vs. Precio) El gráfico de dispersión confirma la relación directamente proporcional entre el área construida y el precio, pero revela que el estrato socioeconómico es el verdadero multiplicador del valor:

  • Pendiente de Rentabilidad: Los inmuebles de estrato 6 (puntos morados) muestran una pendiente de valorización muy agresiva; un incremento marginal en el área dispara el precio rápidamente.
  • Estancamiento en Estratos Bajos: Por el contrario, los inmuebles de estrato 3 (puntos rojos) mantienen precios bajos independientemente de su tamaño, evidenciando que en estos sectores el mercado no recompensa el área adicional con un mayor precio.

3. Composición y Concentración del Inventario El análisis del volumen de propiedades disponibles expone la distribución real de la oferta:

  • El Sur como Motor de Volumen: La Zona Sur concentra, por un margen muy amplio, la mayor cantidad de inventario de la ciudad, dominado por los estratos 4, 5 y 6. Esta zona es el núcleo transaccional de la empresa.
  • Especialización del Oeste: Aunque la Zona Oeste tiene el valor comercial más alto, su volumen de oferta es comparativamente bajo y casi exclusivamente enfocado en el estrato 6. Es un mercado de nicho.
  • Zonas de Baja Captación: El Centro y el Oriente presentan volúmenes de oferta mínimos, alineados predominantemente al estrato 3, lo que sugiere una baja penetración comercial de la inmobiliaria en estos sectores.