El reto principal consisten en realizar un análisis integral y multidimensional de la base de datos para obtener una comprensión del mercado inmobiliario urbano. Se requiere aplicar diversas técnicas de análisis de datos, incluyendo:
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.
Carga inicial y exploracion de los datos a utilizar.
## 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")=<pointer: (nil)>
Como se puede apreciar en la ejecucion anterior se cuenta con un total de 13 variables con 8322 registros, todos correspondientes a datos de vivienda.
Se continua con el sumario o resumen del data set a trabajar
## id zona piso estrato
## Min. : 1 Length :8322 Length :8322 Min. :3.000
## 1st Qu.:2080 N.unique : 5 N.unique : 12 1st Qu.:4.000
## Median :4160 N.blank : 0 N.blank : 0 Median :5.000
## Mean :4160 Min.nchar: 8 Min.nchar: 2 Mean :4.634
## 3rd Qu.:6240 Max.nchar: 12 Max.nchar: 2 3rd Qu.:5.000
## Max. :8319 NAs : 3 NAs :2638 Max. :6.000
## NAs :3 NAs :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
## NAs :2 NAs :3 NAs :1605 NAs :3
## habitaciones tipo barrio longitud
## Min. : 0.000 Length :8322 Length :8322 Min. :-76.59
## 1st Qu.: 3.000 N.unique : 2 N.unique : 436 1st Qu.:-76.54
## Median : 3.000 N.blank : 0 N.blank : 0 Median :-76.53
## Mean : 3.605 Min.nchar: 4 Min.nchar: 4 Mean :-76.53
## 3rd Qu.: 4.000 Max.nchar: 11 Max.nchar: 29 3rd Qu.:-76.52
## Max. :10.000 NAs : 3 NAs : 3 Max. :-76.46
## NAs :3 NAs :3
## latitud
## Min. :3.333
## 1st Qu.:3.381
## Median :3.416
## Mean :3.418
## 3rd Qu.:3.452
## Max. :3.498
## NAs :3
El análisis de componentes principales (ACP) busca describir la variación de un conjunto de variables aleatorias mediante nuevas variables llamadas componentes, obtenidas como combinaciones lineales de las originales. Este método complementa los análisis descriptivos y modelos predictivos al reducir la dimensionalidad. Los componentes se ordenan según la proporción de variabilidad que explican: el primero concentra la mayor parte de la variación, el segundo explica la parte restante bajo independencia del primero, y así sucesivamente.
| preciom | id | zona | estrato | areaconst | banios | habitaciones | tipo | barrio | longitud | latitud | parqueaderos | piso | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4808 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 1909 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
| 876 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
| 726 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 2 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 12 |
| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 13 |
| 2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 1605 | 2638 | 4275 |
como se puede apreciar en la anterior tabla 1.1 se cuenta con preciom → 2 faltantes. id, zona, estrato, etc. → 3 faltantes cada uno. parqueaderos → 1605 faltantes. piso → 2638 faltantes, latitud → 3 faltantes.
Lo que se concluye luego de este analisis es que no se cosidera que todas las variables son relevantes para el analisis, por ejemplo la variable id, no contiene informacion que se contidere determinante al momento de seleccionar entre una compra, venta y/o valoracion de propiedades.
## Registros analizados en PCA: 6717
se continua ahora con la estandarizacion de las variables filtradas antes de proceder a realizar la estimacion de los componentes
## 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
Segun la informacion de la tabla anterior se puede concluir lo siguiente: Los dos primeros componentes (PC1 y PC2) explican casi el 80% de la variabilidad total. Esto significa que puedes reducir el dataset a 2 dimensiones y aún conservar la mayor parte de la información.Usar 3 componentes da casi el 87% de la variabilidad.Los componentes posteriores aportan muy poca información adicional.
## Registered S3 method overwritten by 'car':
## method from
## na.action.merMod lme4
Síntesis e Interpretación del PCA: La gráfica muestra que el primer componente principal concentra la mayor parte de la información del conjunto de datos (58%), mientras que el segundo añade un 20%, de modo que entre ambos explican cerca del 80% de la variabilidad total; esto permite concluir que el análisis puede simplificarse a dos dimensiones sin perder demasiada información, ya que los componentes restantes aportan porcentajes muy bajos y representan variabilidad marginal.
La Dimensión 1 (PC1) concentra las variables ligadas a la escala física y al nivel socioeconómico de las viviendas —precio, área construida, número de parqueaderos y estrato—, de modo que un puntaje alto en este eje caracteriza propiedades amplias y de gama alta. Por su parte, la Dimensión 2 (PC2) refleja principalmente la distribución interna, diferenciando entre viviendas tradicionales con mayor número de habitaciones frente a ofertas modernas con una relación distinta entre habitaciones y baños. En conjunto, estas dos dimensiones permiten explicar cerca del 80% de la variabilidad del mercado inmobiliario, simplificando el análisis sin perder información relevante.
El objetivo del agrupamiento es identificar segmentos homogéneos de la oferta inmobiliaria a partir de sus atributos físicos y económicos, permitiendo diferenciar conjuntos de propiedades con características similares y comprender las dinámicas específicas de la oferta en distintas zonas de la ciudad y estratos socioeconómicos.
como primer paso se realiza la preparacion y escalado de los datos, se parte del dataset filtrado con solo las variables numericas.
Luego se determina el numero optimo de grupos para esto se utiliza el metodo del codo y el metodo de la silueta.
la imagen anterior muestra cómo varía la calidad del agrupamiento al probar diferentes números de clusters. La altura de la curva refleja el ancho promedio de la silueta, que mide qué tan bien se ajustan los datos a su grupo frente a los demás. En este caso, el valor máximo se alcanza en k = 2, lo que indica que dividir las observaciones en dos conglomerados es la opción más adecuada: produce grupos bien definidos y con mayor cohesión interna.
ahora se continua con el metodo de clustering con el metodo K-means.
Con base en la imagen anterior se concluye queel método K-Means con tres clusters permite identificar patrones claros de segmentación en el mercado inmobiliario, diferenciando viviendas de gama alta, opciones intermedias y alternativas más tradicionales o compactas, lo que facilita el análisis estratégico de la oferta.
| cluster | Cantidad | Precio_Promedio | Area_Promedio | Habitaciones_Prom | Baños_Prom | Parqueaderos_Prom | Estrato_Prom |
|---|---|---|---|---|---|---|---|
| 1 | 887 | 1117.04 | 419.65 | 4.59 | 5.23 | 3.82 | 5.68 |
| 2 | 2332 | 533.78 | 215.57 | 4.24 | 3.98 | 1.98 | 5.15 |
| 3 | 3498 | 261.26 | 97.70 | 2.94 | 2.27 | 1.23 | 4.40 |
Con base en la tabla 1.2 la segmentación revela tres perfiles claros: viviendas de gama alta con amplias comodidades, un segmento intermedio con características equilibradas, y un grupo mayoritario de viviendas más económicas y compactas, lo que facilita entender la diversidad de la oferta inmobiliaria en función de precio, tamaño y nivel socioeconómico.
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.
Como primer paso se analiza la relacion entre la zona geografica y el estrato social de la oferta.
| Estrato 3 | Estrato 4 | Estrato 5 | Estrato 6 | |
|---|---|---|---|---|
| Zona Centro | 105 | 14 | 4 | 1 |
| Zona Norte | 572 | 407 | 769 | 172 |
| Zona Oeste | 54 | 84 | 290 | 770 |
| Zona Oriente | 340 | 8 | 2 | 1 |
| Zona Sur | 382 | 1616 | 1685 | 1043 |
la tabla 1.3 evidencia una clara segmentación socioeconómica por zonas: el Centro y Oriente se asocian a estratos bajos, el Oeste concentra la oferta de mayor nivel, el Norte presenta un perfil mixto y el Sur emerge como el sector más heterogéneo y dinámico, con fuerte presencia en estratos medios y altos. Esto refleja cómo la ubicación geográfica condiciona el tipo de oferta inmobiliaria y las dinámicas de mercado en la ciudad estudiada.
##
## Call:
## CA(X = tablarela, graph = FALSE)
##
## The chi square of independence between the two variables is equal to 3830.435 (p-value = 0 ).
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3
## Variance 0.322 0.127 0.011
## % of var. 69.966 27.680 2.354
## Cumulative % of var. 69.966 97.646 100.000
##
## Rows
## Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
## Zona Centro | 47.079 | 1.725 13.761 0.942 | 0.364 1.547 0.042 |
## Zona Norte | 46.762 | 0.390 10.887 0.750 | -0.147 3.920 0.107 |
## Zona Oeste | 135.034 | -0.569 14.476 0.345 | 0.783 69.204 0.653 |
## Zona Oriente | 184.564 | 2.015 53.171 0.928 | 0.537 9.563 0.066 |
## Zona Sur | 47.004 | -0.209 7.704 0.528 | -0.188 15.767 0.428 |
## Dim.3 ctr cos2
## Zona Centro 0.228 7.148 0.016 |
## Zona Norte -0.170 61.735 0.143 |
## Zona Oeste -0.037 1.820 0.001 |
## Zona Oriente 0.160 10.006 0.006 |
## Zona Sur 0.061 19.291 0.044 |
##
## Columns
## Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
## Estrato 3 | 253.402 | 1.187 76.333 0.970 | 0.207 5.851 0.029 |
## Estrato 4 | 47.744 | -0.154 1.895 0.128 | -0.380 28.966 0.773 |
## Estrato 5 | 25.471 | -0.132 1.796 0.227 | -0.204 10.824 0.542 |
## Estrato 6 | 133.827 | -0.519 19.976 0.481 | 0.539 54.359 0.518 |
## Dim.3 ctr cos2
## Estrato 3 0.015 0.350 0.000 |
## Estrato 4 0.136 43.547 0.099 |
## Estrato 5 -0.133 54.323 0.231 |
## Estrato 6 0.028 1.780 0.001 |
Con base en el resultado anterior se concluye lo siguiente:
El chi-cuadrado (3830.435, p < 0.001) indica que existe una asociación estadísticamente significativa entre las variables zona y estrato. Es decir, la distribución de estratos no es independiente de la zona geográfica.
Los autovalores muestran que la Dimensión 1 (69.97%) y la Dimensión 2 (27.68%) explican conjuntamente el 97.6% de la variabilidad, lo que significa que el análisis puede representarse de manera confiable en dos dimensiones.
El análisis confirma una segmentación espacial del mercado inmobiliario según estrato socioeconómico: las zonas Centro y Oriente se asocian principalmente con estratos bajos, la zona Oeste con estratos altos, mientras que Norte y Sur presentan una composición más heterogénea. En conjunto, las dos primeras dimensiones explican casi toda la variabilidad, lo que permite visualizar claramente cómo la ubicación geográfica condiciona el perfil socioeconómico de la oferta de vivienda.
con base en la figura anterior el mapa confirma que la distribución de estratos en la ciudad está fuertemente condicionada por la ubicación geográfica: Oriente y Centro concentran los estratos bajos, Oeste se asocia a los estratos altos, y Norte y Sur presentan perfiles más mixtos, con predominio de estratos medios. Esto evidencia una segmentación socioeconómica territorial clara en el mercado inmobiliario.
Esta sección se integró dentro del análisis de los tres pasos anteriores, con el propósito de ofrecer una representación gráfica que facilite la comprensión del lector. De esta manera, se evita presentar información parcial y se garantiza el respaldo con evidencias.
Segmento de gama alta (Cluster 1, Zona Oeste): priorizar inversiones en propiedades amplias, con mayor número de parqueaderos y baños, ubicadas en estratos altos. Estas viviendas representan un nicho exclusivo y pueden ser atractivas para compradores de alto poder adquisitivo o proyectos de lujo.
Segmento intermedio (Cluster 2, Zonas Norte y Sur): focalizar adquisiciones en viviendas con características equilibradas (áreas medianas, estratos medios-altos, comodidades moderadas). Este grupo es estratégico para atender la demanda de familias que buscan calidad a un precio razonable, con potencial de valorización en zonas heterogéneas como el Sur.
Segmento económico y compacto (Cluster 3, Zonas Centro y Oriente): considerar adquisiciones en viviendas más pequeñas y accesibles, asociadas a estratos bajos. Son ideales para programas de vivienda social, proyectos de alquiler o estrategias de volumen, dado que concentran la mayor cantidad de unidades.
Diversificación geográfica: aprovechar la heterogeneidad de la Zona Sur y la mezcla de estratos en la Zona Norte para construir portafolios balanceados que combinen propiedades de distintos segmentos, reduciendo riesgos y ampliando el alcance de mercado.