EVALUACIÓN DE LA OFERTA INMOBILIARIA URBANA

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.

1. ANÁLISIS EXPLORATORIO DE DATOS

## # A tibble: 6 × 13
##      id zona    piso  estrato preciom areaconst parqueaderos banios habitaciones
##   <dbl> <chr>   <chr>   <dbl>   <dbl>     <dbl>        <dbl>  <dbl>        <dbl>
## 1  1147 Zona O… <NA>        3     250        70            1      3            6
## 2  1169 Zona O… <NA>        3     320       120            1      2            3
## 3  1350 Zona O… <NA>        3     350       220            2      2            4
## 4  5992 Zona S… 02          4     400       280            3      5            3
## 5  1212 Zona N… 01          5     260        90            1      2            3
## 6  1724 Zona N… 01          5     240        87            1      3            3
## # ℹ 4 more variables: tipo <chr>, barrio <chr>, longitud <dbl>, latitud <dbl>

Observamos la dimensión de los datos

## [1] 8322   13

El conjunto de datos con el que se está trabajando está compuesto por 8322 filas y 13 columnas, lo que se traduce en 8322 observaciones (viviendas) con 13 variables para cada una de ellas.

Es importante revisar la distribución de los las observaciones para evidenciar si existen datos no simétricos y datos atípicos. Adicionalmente para conocer la oferta que se tiene en la data.

## 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>
##        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

Verificamos los tipos de variable

##           id         zona         piso      estrato      preciom    areaconst 
##    "numeric"  "character"  "character"    "numeric"    "numeric"    "numeric" 
## parqueaderos       banios habitaciones         tipo       barrio     longitud 
##    "numeric"    "numeric"    "numeric"  "character"  "character"    "numeric" 
##      latitud 
##    "numeric"

Se observa que el atributo Piso está como texto, lo mejor seria convertir a numérico para facilitar el tratamiento de la Data.

1.1 DATOS FALTANTES POR CATEGORIA

##                  variable faltantes
## id                     id         3
## zona                 zona         3
## piso                 piso      2638
## estrato           estrato         3
## preciom           preciom         2
## areaconst       areaconst         3
## parqueaderos parqueaderos      1605
## banios             banios         3
## habitaciones habitaciones         3
## tipo                 tipo         3
## barrio             barrio         3
## longitud         longitud         3
## latitud           latitud         3

Podemos identificar la presencia de registros con datos faltantes o NA,las columnas con mayor presencia son Piso con 2638 registros y parqueaderos con 1605 registros.

1.2 TRATAMIENTO A DATOS FALTANTES

En el contexto del análisis realizado, opté por utilizar el modelo kNN (k-Nearest Neighbors) para la imputación de datos debido a la complejidad de los datos y la interrelación de múltiples variables. Dado que el conjunto de datos incluye diversas características de las viviendas, como el precio, la ubicación, el número de habitaciones y baños, entre otros, el modelo kNN permite imputar los valores faltantes basándose en la similitud de los registros cercanos, capturando de manera efectiva las relaciones entre estas variables. Además, este enfoque es útil cuando existen valores faltantes en varias variables, ayudando a evitar sesgos en el análisis.

Se procede a elimimar las filas que cumplan la condición de id=NA

## Se han eliminado 3 filas del dataset.

Se verifica que ya no queden datos faltantes.

##                  variable faltantes
## id                     id         0
## zona                 zona         0
## piso                 piso         0
## estrato           estrato         0
## preciom           preciom         0
## areaconst       areaconst         0
## parqueaderos parqueaderos         0
## banios             banios         0
## habitaciones habitaciones         0
## tipo                 tipo         0
## barrio             barrio         0
## longitud         longitud         0
## latitud           latitud         0

Una vez terminamos con el análisis exploratorio de los datos y limpieza procedemos con el objetivo de la presente actividad.

2. Análisis de Componentes Principales:

El propósito de este análisis es reducir la dimensionalidad del conjunto de datos para simplificar su estructura y facilitar la identificación de las características clave que influyen en la variación de precios y la oferta en el mercado inmobiliario. A través de técnicas de análisis de componentes principales (PCA, por sus siglas en inglés), se busca transformar las variables originales en un conjunto reducido de componentes que capturen la mayor parte de la variabilidad presente en los datos. Esto permitirá visualizar de manera más clara las relaciones entre las variables y comprender cuáles son las características más relevantes que afectan los precios y la oferta en el mercado.

2.1 Seleccion y normalización de variables

El Análisis de Componentes Principales (PCA) se aplica exclusivamente a variables numéricas continuas, ya que se basa en la varianza y la covarianza entre ellas. Este método es especialmente útil cuando se trabaja con un gran número de variables, permitiendo reducir la dimensionalidad sin perder demasiada información.

Sin embargo, en la presente base de datos, solo dos atributos (preciom y areaconst) cumplen con las condiciones para aplicar PCA. Dado que reducir la dimensionalidad con solo dos variables no aporta un valor significativo, el uso de PCA en este caso no sería la mejor opción.

No obstante, con el objetivo de cumplir con la actividad, se aplicará PCA a variables numéricas continuas, discretas y categóricas ordinales, con el propósito de reducir la dimensionalidad y extraer patrones relevantes.

Para garantizar que el PCA proporcione resultados significativos, es fundamental normalizar las variables antes del análisis. Dado que el PCA se basa en la varianza y covarianza de los datos—medidas sensibles a las diferencias en magnitud—es necesario escalar las variables para evitar que aquellas con valores más grandes dominen la contribución a los componentes principales.

2.2 Cálculo de la contribución

##                   Dim.1      Dim.2       Dim.3      Dim.4       Dim.5
## piso         -0.1648925  0.6784041  0.70029221  0.1453981 -0.01828896
## estrato       0.5714343  0.6437753 -0.19729629 -0.4125021 -0.01648071
## preciom       0.8808178  0.2605842 -0.08041210  0.0885072 -0.14531818
## areaconst     0.8375903 -0.2150020  0.02018597  0.2490267 -0.38237670
## parqueaderos  0.8044745  0.1747302 -0.16047216  0.3551611  0.40330781
## banios        0.8612771 -0.1127032  0.20536131 -0.2562469  0.06676711
## habitaciones  0.5487416 -0.6359139  0.42708333 -0.1674133  0.13252128
##                    Dim.6       Dim.7
## piso          0.01574446  0.02112402
## estrato       0.21081554  0.07223206
## preciom      -0.08898033 -0.33603774
## areaconst     0.10113795  0.18263079
## parqueaderos  0.05278809  0.07039590
## banios       -0.34317228  0.12425343
## habitaciones  0.23488639 -0.10646684

2.3 Scree Plot

El primer componente principal (PC1) explica el 50.3% de la varianza total en los datos, lo cual es significativo. El segundo componente principal (PC2) explica un 20.5% adicional de la varianza. Los primeros dos componentes juntos explican alrededor del 70.8% de la varianza total, lo cual indica que gran parte de la información de los datos originales puede ser capturada por solo dos componentes. Los componentes principales posteriores (del tercero en adelante) explican cada vez menos varianza, siendo estos valores 11.2%, 6,9%,5%, 3,4%, 2,6% respectivamente. Esto sugiere que la mayoría de la información relevante está contenida en los primeros dos componentes.

2.4 Variables y sus Contribuciones en los Componentes Principales

#### Componentes principales:

El primer componente (Dim1) está fuertemente asociado con las variables precio, estrato, parqueaderos, baños, areaconst, y habitaciones sugiriendo que este componente está asociado con características estructurales y económicas de las viviendas. Estas variables tienen vectores largos en la dirección de Dim1, lo que indica que tienen una alta contribución en la varianza explicada por este componente.

El segundo componente (Dim2) está fuertemente influenciado por la variable piso, que se encuentra en una dirección casi perpendicular a las otras variables, lo que indica que está débilmente correlacionada con las variables de Dim1.

Correlaciones:

Las variables que están agrupadas y apuntan en la misma dirección (precio, estrato, parqueaderos, baños, areaconst, habitaciones) están altamente correlacionadas entre sí. Esto sugiere que cuando una de estas variables aumenta, las otras también tienden a aumentar.

La variable piso, al estar casi perpendicular a las demás, tiene poca o ninguna correlación con estas, lo que sugiere que el número de pisos tiene un comportamiento diferente respecto a las demás variables.

Contribuciones:

La escala de colores indica la contribución de cada variable a los componentes principales. Las variables con colores más cálidos (precio y estrato) tienen una mayor contribución, especialmente al primer componente.

2.5 contribución de las variables al primer componente principal (Dim-1)

Las variables preciom (probablemente el precio), baños, areaconst (área construida), y parqueaderos son las que más contribuyen al primer componente principal (Dim-1), con una contribución superior al 15%. Esto sugiere que estas variables son las más importantes para explicar la varianza en la dirección del primer componente.

preciom tiene la mayor contribución, con más del 20%, seguida de cerca por baños y areaconst.

Las variables estrato, habitaciones, y piso tienen una contribución mucho menor al primer componente. Especialmente piso, cuya contribución es casi nula. Esto confirma que piso no está bien representado en Dim-1 y podría estar más relacionado con otros componentes (como Dim-2, según el gráfico anterior).

2.5 contribución de las variables al segundo componente principal (Dim-2)

Las variables “piso”, “estrato”, y “habitaciones” son las que más contribuyen a la Dim-2, con contribuciones superiores al 20%. Esto sugiere que estas variables tienen una gran influencia en la formación de esta dimensión.

Variables de Menor Contribución: Las variables “preciom”, “areaconst”, “parqueaderos”, y “baños” tienen una contribución significativamente menor a Dim-2, todas por debajo del 10%. Esto indica que su influencia en esta dimensión es limitada.

2. Análisis de Conglomerados

Para agrupar las propiedades residenciales en segmentos homogéneos con características similares y comprender las dinámicas de las ofertas en distintas partes de la ciudad y estratos socioeconómicos, se emplea el análisis de conglomerados. Este método ayuda a descubrir estructuras subyacentes en los datos al agrupar objetos de manera lógica y útil, considerando la similitud y distancia entre los individuos de los grupos.

2.1 Metodo wss

Punto de Inflexión (Codo): El gráfico muestra un claro punto de inflexión en k = 3. Esto significa que a partir de 3 clusters, la disminución en la suma de cuadrados dentro de los grupos se vuelve menos pronunciada. Este punto sugiere que 3 es el número óptimo de clusters, ya que es donde se logra un buen equilibrio entre minimizar la variabilidad dentro de los grupos y no sobrecargar el modelo con demasiados clusters.

2.2 Metodo silhouette

Pico en k=2 El gráfico muestra un pico máximo en el valor promedio cuando k=2, lo que sugiere que el número óptimo de clusters sería 2. Esto indica que los datos se agrupan mejor en dos clusters, con una buena separación entre ellos y cohesión interna.

2.3 cluster k=2

2.4 cluster k=3

3. Análisis de Correspondencia

Finalmente, se procede a realizar el análisis de correspondencia, que consiste en estimar las coordenadas para cada uno de los niveles de las variables categóricas y representarlas en un plano cartesiano. El objetivo principal del análisis de correspondencia es descubrir patrones y relaciones entre las categorías de las variables mediante una representación gráfica en un espacio de baja dimensión.

3.1 Relación zona y estrato

##               
##                   3    4    5    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
## 
##  Pearson's Chi-squared test
## 
## data:  tabla
## X-squared = 3830.4, df = 12, p-value < 2.2e-16

El valor p es extremadamente pequeño, menor que 0.00000000000000022. Un valor p tan bajo indica que hay evidencia muy fuerte para rechazar la hipótesis nula.

Se puede identificar de acuerd0 a cada :

El estrato 6 se ubica en la zona Oeste El estrato 4 y 5 En la zonal sur El estrato 3 se ubica en la zona centro y Oriente

##       eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.32215213              69.965515                          69.96551
## dim 2 0.12745096              27.680002                          97.64552
## dim 3 0.01084108               2.354483                         100.00000

El primer componente explica el 70% de la varianza total, mientras que el segundo componente aporta el 27.7%. Por lo tanto, juntos, los dos primeros componentes explican el 97.7% de la varianza total de los datos.

## $`Dim 1`
## $`Dim 1`$row
##                   coord
## Zona Oeste   -0.5690714
## Zona Sur     -0.2090141
## Zona Norte    0.3898305
## Zona Centro   1.7245923
## Zona Oriente  2.0148839
## 
## $`Dim 1`$col
##        coord
## 6 -0.5190649
## 4 -0.1544575
## 5 -0.1323066
## 3  1.1865554
## 
## 
## $`Dim 2`
## $`Dim 2`$row
##                   coord
## Zona Sur     -0.1880737
## Zona Norte   -0.1471227
## Zona Centro   0.3637090
## Zona Oriente  0.5374546
## Zona Oeste    0.7826088
## 
## $`Dim 2`$col
##        coord
## 4 -0.3798066
## 5 -0.2042818
## 3  0.2066347
## 6  0.5385722

4. CONCLUSIONES

El PCA es útil para reducir la dimensionalidad, pero en este caso, aplicar PCA solo a preciom y areaconst no aporta valor significativo. Para mejorar el análisis, se incluirán variables numéricas discretas y categóricas ordinales, asegurando su normalización

Los dos primeros componentes principales capturan una gran parte de la variabilidad en los datos (70.8% en total). Por lo tanto, podríamos utilizar estos dos componentes para reducir la dimensionalidad del conjunto de datos sin perder mucha información.

Las variables como precio, estrato, y parqueaderos están estrechamente relacionadas y podrían estar representando una dimensión similar en los datos.

La variable piso parece estar capturando una información diferente en comparación con las otras variables, lo que podría ser relevante para un análisis adicional o para interpretaciones específicas.

A medida que se incrementa el número de clusters de 1 a 3, la suma de cuadrados dentro de los grupos disminuye rápidamente, indicando que agregar más clusters en esta región mejora significativamente la calidad de la clasificación. Sin embargo, después de 3 clusters, las mejoras se vuelven marginales.

5. RECOMENDACIONES

Para mejorar su posicionamiento en el mercado y maximizar los beneficios, se recomienda a la empresa:

Implementar campañas de marketing segmentadas: Dirigir las campañas de mercadeo y publicidad según las preferencias de las viviendas (casas o apartamentos) y el estrato socioeconómico y ubicación. Esto permitirá clasificar a los potenciales clientes de acuerdo con su nivel de ingresos promedio.

Explorar oportunidades en zonas de bajo precio: Considerar inversiones a largo plazo en las Zonas Centro y Oriente, que tienen menos viviendas y precios de venta promedio más bajos. Evaluar la adquisición de viviendas económicas para su valorización o la compra de lotes para desarrollar nuevos proyectos, buscando aumentar la cantidad de viviendas disponibles y, por ende, maximizar los beneficios.