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.
## # 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>
En este paso validamos cuántos datos o registos tenemos y cuántos atributos: (8322, 13) donde el primero representa el número de registros o datos y el segundo el número de atributos o columnas del dataset.
En este paso validamos el tipo de dato de cada columna en el dataset
| x | |
|---|---|
| id | numeric |
| zona | character |
| piso | character |
| estrato | numeric |
| preciom | numeric |
| areaconst | numeric |
| parqueaderos | numeric |
| banios | numeric |
| habitaciones | numeric |
| tipo | character |
| barrio | character |
| longitud | numeric |
| latitud | numeric |
En este paso hacemos un resúmen estadistico de los atributos
## 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
En este paso construímos un diagrama de caja y bigotes para cada uno de los atributos de tipo cuantitativa continua
Ahora validamos cuales son las modas de cada uno de los atributos de tipo categóricos
## id zona piso estrato
## NA "Zona Sur" NA "5"
## preciom areaconst parqueaderos banios
## "350" "60" "1" "2"
## habitaciones tipo barrio longitud
## "3" "Apartamento" "valle del lili" "-76.529"
## latitud
## "3.452"
La siguiente tabla muestra la relación lineal que existe entre cada una de los atributos del dataset:
| id | estrato | preciom | areaconst | parqueaderos | banios | habitaciones | longitud | latitud | |
|---|---|---|---|---|---|---|---|---|---|
| id | 1.0000000 | 0.4090518 | 0.3394001 | 0.1694898 | 0.2424888 | 0.2492865 | 0.0236735 | -0.9598649 | -0.1339968 |
| estrato | 0.4090518 | 1.0000000 | 0.5876109 | 0.2591140 | 0.4226084 | 0.3950842 | -0.0804957 | -0.3935328 | -0.1684410 |
| preciom | 0.3394001 | 0.5876109 | 1.0000000 | 0.6839831 | 0.6886785 | 0.6719967 | 0.2670210 | -0.3040499 | -0.0854474 |
| areaconst | 0.1694898 | 0.2591140 | 0.6839831 | 1.0000000 | 0.5848290 | 0.6671746 | 0.5339207 | -0.1439194 | -0.0464478 |
| parqueaderos | 0.2424888 | 0.4226084 | 0.6886785 | 0.5848290 | 1.0000000 | 0.5705065 | 0.2844808 | -0.2150563 | -0.1130657 |
| banios | 0.2492865 | 0.3950842 | 0.6719967 | 0.6671746 | 0.5705065 | 1.0000000 | 0.5969167 | -0.2225138 | -0.1111514 |
| habitaciones | 0.0236735 | -0.0804957 | 0.2670210 | 0.5339207 | 0.2844808 | 0.5969167 | 1.0000000 | -0.0067843 | 0.0116419 |
| longitud | -0.9598649 | -0.3935328 | -0.3040499 | -0.1439194 | -0.2150563 | -0.2225138 | -0.0067843 | 1.0000000 | 0.1657724 |
| latitud | -0.1339968 | -0.1684410 | -0.0854474 | -0.0464478 | -0.1130657 | -0.1111514 | 0.0116419 | 0.1657724 | 1.0000000 |
La siguiente tabla muestra cúantos valores nulos hay en cada atributo del dataset:
| x | |
|---|---|
| id | 3 |
| zona | 3 |
| piso | 2638 |
| estrato | 3 |
| preciom | 2 |
| areaconst | 3 |
| parqueaderos | 1605 |
| banios | 3 |
| habitaciones | 3 |
| tipo | 3 |
| barrio | 3 |
| longitud | 3 |
| latitud | 3 |
En esta etapa nos centraremos en la preparación de los datos para posteriormente iniciar con la modelación de los datos.
La siguiente tabla muestra los atributos con valores nulos después de reemplazar los valores nulos de cada atributo categortico por su respectiva moda:
| Atributo | Conteo de Nulos | |
|---|---|---|
| id | id | 3 |
| piso | piso | 2638 |
| preciom | preciom | 2 |
| areaconst | areaconst | 3 |
| parqueaderos | parqueaderos | 1605 |
| longitud | longitud | 3 |
| latitud | latitud | 3 |
La siguiente tabla muestra los atributos con valores nulos después de reemplazar los valores nulos de los atributos preciom y areaconst por su respectiva moda:
| Atributo | Conteo de Nulos | |
|---|---|---|
| id | id | 3 |
| piso | piso | 2638 |
| parqueaderos | parqueaderos | 1605 |
| longitud | longitud | 3 |
| latitud | latitud | 3 |
De la anterior tabla se evidencia que existen valores nulos en los atributos longitud y latitud, por lo que se procederá eliminar estos registros que poseen valores nulos en ese atributo debido que estas propiedades corresponden a ubicaciones únicas por lo que no se puede hacer inferencias sobre estos y adicional estos no representan un gran impacto debido a que son solo 3 registros quienes tienen valores nulos en estas propiedades, por lo tanto, la siguiente tabla muestra los atributos que continúan con valores núlos en el dataset:
| Atributo | Conteo de Nulos | |
|---|---|---|
| piso | piso | 2635 |
| parqueaderos | parqueaderos | 1602 |
Y esta es la proporción de valores nulos en el atributo parqueaderos
según el tipo de vivienda:
De las anteriores gráficas se puede evidenciar que los valores nulos en las variables piso y parqueadero tienen casi una misma proporción respecto a al tipo de vivienda, siendo apartamento el tipo de vivienda con mayor número de valores nulos.
Se procedió a inputar la variable parqueadero para los valores nulos reemplazando estos por la moda de cada uno del tipo de vivienda (apartamento, casa), adicional debido a que los valores nulos de la variable piso representan alrededor del 30% se procede a eliminar esta columna debido a una imputación de valores para una proporción tan grande puede afectar considerablemente la calidad de los datos, y se eliminó también la variable Id, longitud y latitud, quedando el dataset final así.
## # A tibble: 6 × 9
## zona estrato preciom areaconst parqueaderos banios habitaciones tipo barrio
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 Zona … 3 250 70 1 3 6 Casa 20 de…
## 2 Zona … 3 320 120 1 2 3 Casa 20 de…
## 3 Zona … 3 350 220 2 2 4 Casa 20 de…
## 4 Zona … 4 400 280 3 5 3 Casa 3 de …
## 5 Zona … 5 260 90 1 2 3 Apar… acopi
## 6 Zona … 5 240 87 1 3 3 Apar… acopi
Despúes de hacer un análisis exploratorio de los datos y preparación de los datos se evidencia y se consluye que no hace sentido el hacer uso del análisis de componentes principales para el dataset de estudio, lo anterior lo fundamento en lo siguiente:
La siguiente gráfica muestra la distrubución por estratos de las diferentes zonas y la tabla de frecuencias entre los atributos zona y estrato
##
## 3 4 5 6
## Zona Centro 84.68 11.29 3.23 0.81
## Zona Norte 29.79 21.20 40.05 8.96
## Zona Oeste 4.51 7.01 24.21 64.27
## Zona Oriente 96.87 2.28 0.57 0.28
## Zona Sur 8.08 34.19 35.65 22.07
## 3 4 5 6
## 0.1746604 0.2559202 0.3305686 0.2388508
Del anterior gráfico se evidencia que:
Zona Centro:Predominio del Estrato 3: La mayor parte de la barra está ocupada por el estrato 3 (color azul), con pequeñas proporciones de los estratos 4 (rojo) y 5 (verde).
Zona Norte: Alta composición del estrato 5 (Verde)
zona oeste: Mayor presencia del estrato 6 (Morado)
Zona oriente: Predominio del estrato 3.
Zona sur: Parece muy equivalente entre el estrato 4 y estrato 5.
Marginal: La barra del margen representa la distribución general de los estratos en todas las zonas combinadas.
La siguiente tabla muestra la misma información pero en un diagrama
de barras o un perfil de barras
##
## 3 4 5 6
## Zona Centro 7.23 0.66 0.15 0.05
## Zona Norte 39.37 19.12 27.96 8.66
## Zona Oeste 3.72 3.95 10.55 38.75
## Zona Oriente 23.40 0.38 0.07 0.05
## Zona Sur 26.29 75.90 61.27 52.49
## Zona Centro Zona Norte Zona Oeste Zona Oriente Zona Sur
## 0.01490564 0.23079697 0.14400769 0.04219257 0.56809713
Los siguientes son los resultados del análisis de correspondencia
##
## Call:
## CA(X = tabla)
##
## 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
## 3 | 253.402 | 1.187 76.333 0.970 | 0.207 5.851 0.029 |
## 4 | 47.744 | -0.154 1.895 0.128 | -0.380 28.966 0.773 |
## 5 | 25.471 | -0.132 1.796 0.227 | -0.204 10.824 0.542 |
## 6 | 133.827 | -0.519 19.976 0.481 | 0.539 54.359 0.518 |
## Dim.3 ctr cos2
## 3 0.015 0.350 0.000 |
## 4 0.136 43.547 0.099 |
## 5 -0.133 54.323 0.231 |
## 6 0.028 1.780 0.001 |
Ejes y Varianza Explicada:
Relaciones y Agrupaciones:
Zona Oriente y Zona Centro están cercanas en el espacio de factores, indicando que tienen perfiles de categoría similares.
Zona Oeste está claramente asociada con la categoría 6
Zona Sur está cercana a las categorías 4 y 5, indicando una relación más fuerte con estas categorías.
Zona Norte está aislada de las otras zonas y de las categorías, sugiriendo un perfil único.
Ek siguiente análisis corresponde al análisis de componenetes principales
## 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
Dimensiones Principales:
Contribuciones:
La Zona Oriente tiene la mayor contribución a la Dim 1, lo que significa que esta zona es la más significativa en definir la variabilidad capturada por esta dimensión. La gran contribución sugiere que las diferencias en los perfiles de la Zona Oriente son cruciales para la estructura de los datos en la Dim 1.
La Zona Oeste tiene la mayor contribución a la Dim 2, significativamente
más alta que cualquier otra zona. Esto indica que esta zona es la más
influyente en definir la variabilidad capturada por la Dim 2. Las
diferencias en los perfiles de la Zona Oeste son cruciales para la
estructura de los datos en esta dimensión.
La siguiente tabla muestra los datos normalizados:
| estrato | preciom | areaconst | parqueaderos | banios | habitaciones |
|---|---|---|---|---|---|
| -1.5872276 | -0.5595498 | -0.7339949 | -0.6343338 | -0.0779377 | 1.6406840 |
| -1.5872276 | -0.3465670 | -0.3842568 | -0.6343338 | -0.7781148 | -0.4147626 |
| -1.5872276 | -0.2552886 | 0.3152194 | 0.3063120 | -0.7781148 | 0.2703863 |
| -0.6156201 | -0.1031580 | 0.7349051 | 1.2469577 | 1.3224164 | -0.4147626 |
| 0.3559875 | -0.5291236 | -0.5940997 | -0.6343338 | -0.7781148 | -0.4147626 |
| 0.3559875 | -0.5899759 | -0.6150839 | -0.6343338 | -0.0779377 | -0.4147626 |
La siguiente gráfica muestra la variabilidad interna vs el número de
conglomerados. Haciendo el análisis de codo se evidencia que número de
conglomerados óptimo es 5.
Luego usamos el algoritmo K-means para realizar el análisis de
conglomerados, sabiendo que previamente se selección el número de
comglomerados como 5, con este número de conglomerados construímos la
gráfica evidenciando los 5 cluster que se ven la siguiente figura:
La siguientes tabla muestra las caraterísticas (promedio) de cada conglomerado y su distribución
## cluster zona estrato preciom areaconst parqueaderos banios
## 1 1 4.250847 5.672881 1192.5542 480.56598 4.220339 5.433898
## 2 2 3.823040 3.824228 436.3575 297.83233 1.461995 4.456057
## 3 3 3.864955 3.594494 192.9356 90.45505 1.063988 1.999628
## 4 4 3.869976 5.615839 696.7275 230.68356 2.238180 4.165485
## 5 5 3.960112 5.112086 335.5233 114.68498 1.420423 2.593538
## habitaciones tipo barrio
## 1 4.750847 1.815254 234.1051
## 2 6.591449 1.980998 225.9869
## 3 2.946057 1.264137 246.5636
## 4 3.706856 1.455083 231.2264
## 5 2.971280 1.172318 250.0116
##
## 1 2 3 4 5
## 590 842 2688 1692 2507