Introducción

** Elaborado por: Angélica Forero**

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.

Retos:

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.

1. Cargar datos

Cargar Librerías

En primer lugar, se cargan las librerías que utilizaremos durante toda la actividad. Adicionalmente establecemos desde el principio la configuración de las opciones de formato número. En este caso que evite la notación científica y que muestre números en notación decimal estándar.

library(paqueteMODELOS)
library(tidyverse)
library(dplyr)
library(psych)
library(mice)
library(factoextra)
library(plotly)
library(ggplot2)
library(FactoMineR)

options(scipen = 100, digits = 2)

Creación de funciones

Se crean funciones que nos ayudarán a limpiar la información.La primera función tiene como finalidad dejar los campos tipos caracter en mayúscula y eliminar los espacios.

LimpiarNombres <- function(s){
  x<-trimws(str_to_upper(gsub("([\\s])\\1+","\\1",s, perl=T)))
  return(x)
}

Cargar conjunto de datos

data(vivienda)

2. Exploración de datos

2.1. Tamaño y tipo de datos

Se utiliza la función ‘glimpse’ que nos proporcioará una vista general de los datos. El número de registros, el número de campos y la clase a la que pertenecen esos campos.

glimpse(vivienda)
## Rows: 8,322
## Columns: 13
## $ id           <dbl> 1147, 1169, 1350, 5992, 1212, 1724, 2326, 4386, 1209, 159…
## $ zona         <chr> "Zona Oriente", "Zona Oriente", "Zona Oriente", "Zona Sur…
## $ piso         <chr> NA, NA, NA, "02", "01", "01", "01", "01", "02", "02", "02…
## $ estrato      <dbl> 3, 3, 3, 4, 5, 5, 4, 5, 5, 5, 6, 4, 5, 6, 4, 5, 5, 4, 5, …
## $ preciom      <dbl> 250, 320, 350, 400, 260, 240, 220, 310, 320, 780, 750, 62…
## $ areaconst    <dbl> 70, 120, 220, 280, 90, 87, 52, 137, 150, 380, 445, 355, 2…
## $ parqueaderos <dbl> 1, 1, 2, 3, 1, 1, 2, 2, 2, 2, NA, 3, 2, 2, 1, 4, 2, 2, 2,…
## $ banios       <dbl> 3, 2, 2, 5, 2, 3, 2, 3, 4, 3, 7, 5, 6, 2, 4, 4, 4, 3, 2, …
## $ habitaciones <dbl> 6, 3, 4, 3, 3, 3, 3, 4, 6, 3, 6, 5, 6, 2, 5, 5, 4, 3, 3, …
## $ tipo         <chr> "Casa", "Casa", "Casa", "Casa", "Apartamento", "Apartamen…
## $ barrio       <chr> "20 de julio", "20 de julio", "20 de julio", "3 de julio"…
## $ longitud     <dbl> -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -7…
## $ latitud      <dbl> 3.4, 3.4, 3.4, 3.4, 3.5, 3.4, 3.4, 3.4, 3.5, 3.5, 3.4, 3.…
  • El conjunto de datos cuenta con 13 atributos y 8322 registros.

  • Id: este dato es la identificación del registro por lo que tendremos en cuenta para saber si hay datos duplicados.

Variables categóricas

  • zona: Variable categórica nominal.
  • estrato: Variable categórica ordinal.
  • tipo (Tipo de vivienda): Variable categórica nominal.
  • barrio: Variable categórica nominal.

Variables cuantitativas

  • piso: Variable cuantitativa discreta.
  • preciom (Precio): Variable cuantitativa continua.
  • areaconst (Área construida): Variable cuantitativa continua.
  • parquea (Número de parqueaderos): Variable cuantitativa discreta.
  • banios (Número de Baños): Variable cuantitativa discreta.
  • habitac (Número de Habitaciones): Variable cuantitativa discreta.
  • longitud: Variable cuantitativa continua.
  • latitud: Variable cuantitativa continua.

2.2. Identificar datos duplicados, vacíos y únicos.

Vacíos

colSums(is.na(vivienda))
##           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

Duplicados

Con base en el id se identifican los duplicados

vivienda %>%
  group_by(id) %>% 
  summarise(contar=n()) %>% 
  filter(contar>1)
## # A tibble: 1 × 2
##      id contar
##   <dbl>  <int>
## 1    NA      3

Únicos

Algunos atributos categóricos y cuantitativos deberían tener muy pocas clases.Por lo tanto, seleccionamos los datos e identificamos los valores únicos que tienen.

var <- c("zona","piso", "estrato","parqueaderos","banios","habitaciones","tipo")
 for(variable in var){
  
unicos<- vivienda %>% 
  group_by(!!sym(variable)) %>% 
    summarise(registros = n())
   
 print(unicos)
 }
## # A tibble: 6 × 2
##   zona         registros
##   <chr>            <int>
## 1 Zona Centro        124
## 2 Zona Norte        1920
## 3 Zona Oeste        1198
## 4 Zona Oriente       351
## 5 Zona Sur          4726
## 6 <NA>                 3
## # A tibble: 13 × 2
##    piso  registros
##    <chr>     <int>
##  1 01          860
##  2 02         1450
##  3 03         1097
##  4 04          607
##  5 05          567
##  6 06          245
##  7 07          204
##  8 08          211
##  9 09          146
## 10 10          130
## 11 11           84
## 12 12           83
## 13 <NA>       2638
## # A tibble: 5 × 2
##   estrato registros
##     <dbl>     <int>
## 1       3      1453
## 2       4      2129
## 3       5      2750
## 4       6      1987
## 5      NA         3
## # A tibble: 11 × 2
##    parqueaderos registros
##           <dbl>     <int>
##  1            1      3155
##  2            2      2475
##  3            3       520
##  4            4       384
##  5            5        68
##  6            6        68
##  7            7        18
##  8            8        17
##  9            9         4
## 10           10         8
## 11           NA      1605
## # A tibble: 12 × 2
##    banios registros
##     <dbl>     <int>
##  1      0        45
##  2      1       496
##  3      2      2946
##  4      3      1993
##  5      4      1456
##  6      5       890
##  7      6       314
##  8      7       107
##  9      8        48
## 10      9        15
## 11     10         9
## 12     NA         3
## # A tibble: 12 × 2
##    habitaciones registros
##           <dbl>     <int>
##  1            0        66
##  2            1        59
##  3            2       926
##  4            3      4097
##  5            4      1729
##  6            5       679
##  7            6       318
##  8            7       173
##  9            8       138
## 10            9        83
## 11           10        51
## 12           NA         3
## # A tibble: 3 × 2
##   tipo        registros
##   <chr>           <int>
## 1 Apartamento      5100
## 2 Casa             3219
## 3 <NA>                3

De esta primera parte podemos evidenciar que hay 1 valor que se repite 3 veces y es el id NA. El atributo piso está en tipo caracter y tiene 2638 registros NA. El atributo parqueadero tiene 1605 registros NA. Los demás atributos tienen 3 valores NA que corresponden a los valores que se están repitiendo.

2.3. Transformación de datos

Eliminación de datos

Eliminamos los datos NA

vivienda <-vivienda[!is.na(vivienda$id),]

Estandarización de los datos tipo caracter

vivienda <- vivienda %>%
  mutate_if(is.character, LimpiarNombres)

Cambiar el tipo de atributo piso

Se cambia el tipo de atributo del piso puesto que está como caracter

vivienda$piso <-as.numeric(vivienda$piso)

Corregir datos de Barrio

Los caracteres “É” y “Ú” los está tomando con los caracteres “√©” y “√∫”, respectivamente. Por lo tanto, hacemos los cambios. También algunos están tomando las tílde entonces dejamos todos los datos sin tíldes.

vivienda$barrio <- gsub("é", "E", vivienda$barrio)
vivienda$barrio <- gsub("√∫", "U", vivienda$barrio)
vivienda$barrio <- gsub("Á", "A", vivienda$barrio)
vivienda$barrio <- gsub("É", "E", vivienda$barrio)
vivienda$barrio <- gsub("Í", "I", vivienda$barrio)
vivienda$barrio <- gsub("Ó", "O", vivienda$barrio)
vivienda$barrio <- gsub("Ú", "U", vivienda$barrio)

2.4. Medidas de Tendencia Central

summary(vivienda)
##        id           zona                piso         estrato       preciom    
##  Min.   :   1   Length:8319        Min.   : 1     Min.   :3.0   Min.   :  58  
##  1st Qu.:2080   Class :character   1st Qu.: 2     1st Qu.:4.0   1st Qu.: 220  
##  Median :4160   Mode  :character   Median : 3     Median :5.0   Median : 330  
##  Mean   :4160                      Mean   : 4     Mean   :4.6   Mean   : 434  
##  3rd Qu.:6240                      3rd Qu.: 5     3rd Qu.:5.0   3rd Qu.: 540  
##  Max.   :8319                      Max.   :12     Max.   :6.0   Max.   :1999  
##                                    NA's   :2635                               
##    areaconst     parqueaderos      banios      habitaciones      tipo          
##  Min.   :  30   Min.   : 1     Min.   : 0.0   Min.   : 0.0   Length:8319       
##  1st Qu.:  80   1st Qu.: 1     1st Qu.: 2.0   1st Qu.: 3.0   Class :character  
##  Median : 123   Median : 2     Median : 3.0   Median : 3.0   Mode  :character  
##  Mean   : 175   Mean   : 2     Mean   : 3.1   Mean   : 3.6                     
##  3rd Qu.: 229   3rd Qu.: 2     3rd Qu.: 4.0   3rd Qu.: 4.0                     
##  Max.   :1745   Max.   :10     Max.   :10.0   Max.   :10.0                     
##                 NA's   :1602                                                   
##     barrio             longitud      latitud   
##  Length:8319        Min.   :-77   Min.   :3.3  
##  Class :character   1st Qu.:-77   1st Qu.:3.4  
##  Mode  :character   Median :-77   Median :3.4  
##                     Mean   :-77   Mean   :3.4  
##                     3rd Qu.:-77   3rd Qu.:3.5  
##                     Max.   :-76   Max.   :3.5  
## 

Diagrama de Cajas Variables Numéricas

# Teniendo en cuenta mínimos y máximos graficamos por grupos

boxplot(vivienda$piso, vivienda$estrato, vivienda$parqueaderos,
        vivienda$banios, vivienda$habitaciones,
        names = c("Piso", "Estrato", "Parqueaderos", "Baños", "Habitaciones"),
        main = "Diagrama de Caja",
        ylab = "Valores")

boxplot(vivienda$preciom, vivienda$areaconst,
        names = c("Precio", "Area"),
        main = "Diagrama de Caja",
        ylab = "Valores")

boxplot(vivienda$latitud,
        names = c("Latitud"),
        main = "Diagrama de Caja",
        ylab = "Valores")

boxplot(vivienda$longitud,
        names = c("Longitud"),
        main = "Diagrama de Caja",
        ylab = "Valores")

Datos Categóricos

barplot(prop.table(table(vivienda$zona)),
        ylab = "Proportion",
        xlab = "Zona")

barplot(prop.table(table(vivienda$estrato)),
        ylab = "Proportion",
        xlab = "Estrato")

barplot(prop.table(table(vivienda$tipo)),
        ylab = "Proportion",
        xlab = "Tipo")

# Como el atributo Barrio tiene muchos valores, se realizará una tabla y se organizará de mayor a menor
Barrio <- data.frame(freq(vivienda$barrio))

Barrio<- rownames_to_column(Barrio,"Barrio") %>%
  select(Barrio, Freq, X..Valid) %>%
  drop_na() %>% 
  arrange(desc(Freq))

colnames(Barrio) = c("Barrio", "Freq", "Freq. Relativa %")

Barrio
##                            Barrio Freq Freq. Relativa %
## 1                           Total 8319          100.000
## 2                  VALLE DEL LILI 1009           12.129
## 3                   CIUDAD JARDIN  540            6.491
## 4                           PANCE  412            4.953
## 5                        LA FLORA  368            4.424
## 6                  SANTA TERESITA  263            3.161
## 7                        EL CANEY  209            2.512
## 8                      EL INGENIO  203            2.440
## 9                     LA HACIENDA  166            1.995
## 10                      NORMANDIA  159            1.911
## 11                          ACOPI  158            1.899
## 12                  LOS CRISTALES  154            1.851
## 13                     EL LIMONAR  135            1.623
## 14               PRADOS DEL NORTE  127            1.527
## 15                     EL REFUGIO  120            1.442
## 16                      AGUACATAL  109            1.310
## 17                    CIUDAD 2000   96            1.154
## 18                          CANEY   88            1.058
## 19                      CRISTALES   83            0.998
## 20          URBANIZACION LA FLORA   83            0.998
## 21                  BRISAS DE LOS   82            0.986
## 22                       MELENDEZ   75            0.902
## 23                       ZONA SUR   74            0.890
## 24               NUEVA TEQUENDAMA   73            0.878
## 25                 QUINTAS DE DON   73            0.878
## 26                      VERSALLES   71            0.853
## 27                   SANTA ISABEL   64            0.769
## 28            PARCELACIONES PANCE   61            0.733
## 29                       EL PEÑON   60            0.721
## 30                        EL LIDO   59            0.709
## 31             TORRES DE COMFANDI   57            0.685
## 32                          CAPRI   56            0.673
## 33                       JUANAMBU   55            0.661
## 34                   SAN FERNANDO   55            0.661
## 35                   SANTA MONICA   55            0.661
## 36                VILLA DEL PRADO   52            0.625
## 37                      EL BOSQUE   50            0.601
## 38                    SANTA ANITA   50            0.601
## 39               CIUDAD BOCHALEMA   48            0.577
## 40                    SAN VICENTE   48            0.577
## 41              MAYAPAN LAS VEGAS   46            0.553
## 42                     SANTA RITA   45            0.541
## 43                     COLSEGUROS   44            0.529
## 44                CUARTO DE LEGUA   44            0.529
## 45       SANTA MONICA RESIDENCIAL   44            0.529
## 46                     TEQUENDAMA   44            0.529
## 47                     BELLAVISTA   43            0.517
## 48                        SALOMIA   40            0.481
## 49                      ARBOLEDAS   38            0.457
## 50                           CALI   37            0.445
## 51                PRIMERO DE MAYO   37            0.445
## 52                    CAMINO REAL   36            0.433
## 53                 CIUDAD CORDOBA   35            0.421
## 54                      BOCHALEMA   33            0.397
## 55                      SEMINARIO   32            0.385
## 56                         VIPASA   32            0.385
## 57                     ZONA NORTE   32            0.385
## 58                   LOS CAMBULOS   31            0.373
## 59                        NAPOLES   31            0.373
## 60                     CHIPICHAPE   30            0.361
## 61                  DEPARTAMENTAL   29            0.349
## 62                    MULTICENTRO   27            0.325
## 63              CIUDAD LOS ALAMOS   26            0.313
## 64                      LA MERCED   26            0.313
## 65                  LOS GUADUALES   26            0.313
## 66                     MIRAFLORES   26            0.313
## 67                    PAMPA LINDA   26            0.313
## 68                     ZONA OESTE   26            0.313
## 69                  VILLA DEL SOL   25            0.301
## 70                   GRAN LIMONAR   24            0.288
## 71                          JUNIN   24            0.288
## 72                    SAN ANTONIO   24            0.288
## 73                     LAS CEIBAS   23            0.276
## 74                          MENGA   23            0.276
## 75                         PACARA   23            0.276
## 76                  ALFONSO LOPEZ   22            0.264
## 77                CERRO CRISTALES   22            0.264
## 78                  LOS ALCAZARES   22            0.264
## 79            BOSQUES DEL LIMONAR   21            0.252
## 80                    CAÑAVERALES   21            0.252
## 81            CIUDADELA PASOANCHO   21            0.252
## 82                  EL INGENIO II   21            0.252
## 83                      GUADALUPE   21            0.252
## 84                      LOS ANDES   21            0.252
## 85        METROPOLITANO DEL NORTE   21            0.252
## 86             PRADOS DEL LIMONAR   21            0.252
## 87                 EL INGENIO III   20            0.240
## 88                    SAN JOAQUIN   20            0.240
## 89                      EL GUABAL   19            0.228
## 90                   EL INGENIO I   19            0.228
## 91                     EL TRONCAL   19            0.228
## 92                    BELLA SUIZA   18            0.216
## 93                    CHIMINANGOS   18            0.216
## 94                    LA ARBOLEDA   18            0.216
## 95                    LA FLORESTA   18            0.216
## 96             SAN FERNANDO VIEJO   18            0.216
## 97                   ZONA ORIENTE   18            0.216
## 98             CIUDADELA COMFANDI   17            0.204
## 99                        ALAMEDA   16            0.192
## 100                       BRETAÑA   16            0.192
## 101                    CENTENARIO   16            0.192
## 102               CRISTOBAL COLON   16            0.192
## 103              FLORA INDUSTRIAL   16            0.192
## 104                     GUAYAQUIL   16            0.192
## 105                      ARANJUEZ   15            0.180
## 106                     EL JARDIN   15            0.180
## 107                       GRANADA   15            0.180
## 108                       LA BASE   15            0.180
## 109                NUEVA FLORESTA   15            0.180
## 110                        ALAMOS   14            0.168
## 111                    CHAMPAGNAT   14            0.168
## 112                TEJARES DE SAN   14            0.168
## 113                  CIUDAD CAPRI   13            0.156
## 114                    LA CAMPIÑA   13            0.156
## 115                  CAÑAVERALEJO   12            0.144
## 116              LA INDEPENDENCIA   12            0.144
## 117                   LAS ACACIAS   12            0.144
## 118                    PAMPALINDA   12            0.144
## 119                       CALIPSO   11            0.132
## 120                     LA RIVERA   11            0.132
## 121                      LA SELVA   11            0.132
## 122                     OCCIDENTE   11            0.132
## 123                   LAS GRANJAS   10            0.120
## 124            SAN FERNANDO NUEVO   10            0.120
## 125                   SANTA ELENA   10            0.120
## 126                VILLA DEL LAGO   10            0.120
## 127             ATANASIO GIRARDOT    9            0.108
## 128                         NORTE    9            0.108
## 129                  PANAMERICANO    9            0.108
## 130                  SAN CAYETANO    9            0.108
## 131          SANTA MONICA POPULAR    9            0.108
## 132            VILLAS DE VERACRUZ    9            0.108
## 133              BENJAMIN HERRERA    8            0.096
## 134                     CALICANTO    8            0.096
## 135               COLINAS DEL SUR    8            0.096
## 136                      EL CEDRO    8            0.096
## 137               EL GRAN LIMONAR    8            0.096
## 138                 LA NUEVA BASE    8            0.096
## 139                     SAN BOSCO    8            0.096
## 140                      SANTA FE    8            0.096
## 141               SIETE DE AGOSTO    8            0.096
## 142                  ALFEREZ REAL    7            0.084
## 143                  BUENOS AIRES    7            0.084
## 144                   CAÑASGORDAS    7            0.084
## 145                     CHAPINERO    7            0.084
## 146                 CIUDAD MODELO    7            0.084
## 147                    LA CASCADA    7            0.084
## 148                SAN JUAN BOSCO    7            0.084
## 149       URBANIZACION TEQUENDAMA    7            0.084
## 150                  BARRANQUILLA    6            0.072
## 151                        CALIMA    6            0.072
## 152                   EL CASTILLO    6            0.072
## 153                     EL DORADO    6            0.072
## 154                      FLORALIA    6            0.072
## 155      LOS PARQUES BARRANQUILLA    6            0.072
## 156             OASIS DE COMFANDI    6            0.072
## 157             PASO DEL COMERCIO    6            0.072
## 158                     PASOANCHO    6            0.072
## 159                       POPULAR    6            0.072
## 160             PRADOS DE ORIENTE    6            0.072
## 161           PUENTE DEL COMERCIO    6            0.072
## 162                 SANTO DOMINGO    6            0.072
## 163                VILLA COLOMBIA    6            0.072
## 164             VILLA DE VERACRUZ    6            0.072
## 165                      ARBOLEDA    5            0.060
## 166                 CALIMIO NORTE    5            0.060
## 167                CANEY ESPECIAL    5            0.060
## 168              COLSEGUROS ANDES    5            0.060
## 169                     EL TREBOL    5            0.060
## 170                   LA ALBORADA    5            0.060
## 171                    LA ALIANZA    5            0.060
## 172                  LAS DELICIAS    5            0.060
## 173                    MANZANARES    5            0.060
## 174         URBANIZACION RIO LILI    5            0.060
## 175                 VILLA DEL SUR    5            0.060
## 176            ALTOS DE GUADALUPE    4            0.048
## 177                    BELALCAZAR    4            0.048
## 178              BELLA SUIZA ALTA    4            0.048
## 179                        CENTRO    4            0.048
## 180                       JAMUNDI    4            0.048
## 181                  LA FORTALEZA    4            0.048
## 182                LOS FARALLONES    4            0.048
## 183              LOS LIBERTADORES    4            0.048
## 184            QUINTAS DE SALOMIA    4            0.048
## 185              SAAVEDRA GALINDO    4            0.048
## 186                    SAN CARLOS    4            0.048
## 187             TEJARES CRISTALES    4            0.048
## 188                      TEMPLETE    4            0.048
## 189     URBANIZACION BARRANQUILLA    4            0.048
## 190        URBANIZACION LA MERCED    4            0.048
## 191         URBANIZACION LA NUEVA    4            0.048
## 192      URBANIZACION SAN JOAQUIN    4            0.048
## 193                   20 DE JULIO    3            0.036
## 194               ALAMEDA DEL RIO    3            0.036
## 195                ALTOS DE MENGA    3            0.036
## 196                      CAMBULOS    3            0.036
## 197               CIUDAD PACIFICA    3            0.036
## 198                   CIUDAD REAL    3            0.036
## 199              COLINAS DE MENGA    3            0.036
## 200                    EL PARAISO    3            0.036
## 201                   LA BUITRERA    3            0.036
## 202                  LAS AMERICAS    3            0.036
## 203                  LIBERTADORES    3            0.036
## 204                LOS GUAYACANES    3            0.036
## 205          MORICHAL DE COMFANDI    3            0.036
## 206                     MUNICIPAL    3            0.036
## 207                      PORVENIR    3            0.036
## 208              PRIMITIVO CRESPO    3            0.036
## 209                      SAN LUIS    3            0.036
## 210                     SAN PEDRO    3            0.036
## 211                 SANTA BARBARA    3            0.036
## 212             UNION DE VIVIENDA    3            0.036
## 213       URBANIZACION COLSEGUROS    3            0.036
## 214    URBANIZACION NUEVA GRANADA    3            0.036
## 215                    AGUABLANCA    2            0.024
## 216                     ALCAZARES    2            0.024
## 217                ANTONIO NARIÑO    2            0.024
## 218                    BASE AEREA    2            0.024
## 219             BELISARIO CAICEDO    2            0.024
## 220           CHIMINANGOS 2 ETAPA    2            0.024
## 221               CIUDAD MELENDEZ    2            0.024
## 222                   EL DIAMANTE    2            0.024
## 223                      EL PRADO    2            0.024
## 224                   EUCARISTICO    2            0.024
## 225               EVARISTO GARCIA    2            0.024
## 226                     GUADUALES    2            0.024
## 227                   LA LIBERTAD    2            0.024
## 228                   LA RIVERA I    2            0.024
## 229                  LA RIVERA II    2            0.024
## 230                       LOURDES    2            0.024
## 231                  PASEO DE LOS    2            0.024
## 232             POBLADO CAMPESTRE    2            0.024
## 233           PORTADA DE COMFANDI    2            0.024
## 234                PRADOS DEL SUR    2            0.024
## 235                     PRIMAVERA    2            0.024
## 236                       REFUGIO    2            0.024
## 237               SAN JUDAS TADEO    2            0.024
## 238                   SAN NICOLAS    2            0.024
## 239            SANTA MONICA NORTE    2            0.024
## 240 SECTOR CAÑAVERALEJO GUADALUPE    2            0.024
## 241             URBANIZACION LILI    2            0.024
## 242                    3 DE JULIO    1            0.012
## 243                   AGUA BLANCA    1            0.012
## 244                      ALBORADA    1            0.012
## 245               ALFONSO LOPEZ I    1            0.012
## 246                   ALTO JORDAN    1            0.012
## 247                ALTOS DE SANTA    1            0.012
## 248 ARBOLEDA CAMPESTRE CANDELARIA    1            0.012
## 249                 AUTOPISTA SUR    1            0.012
## 250                BAJO AGUACATAL    1            0.012
## 251             BARRIO 7DE AGOSTO    1            0.012
## 252            BARRIO EL RECUERDO    1            0.012
## 253            BARRIO EUCARISTICO    1            0.012
## 254                 BARRIO OBRERO    1            0.012
## 255            BARRIO TRANQUILO Y    1            0.012
## 256                        BERLIN    1            0.012
## 257           BLOQUES DEL LIMONAR    1            0.012
## 258                   BOLIVARIANO    1            0.012
## 259           BOSQUES DE ALBOLEDA    1            0.012
## 260                        BOYACA    1            0.012
## 261           BRISAS DE GUADALUPE    1            0.012
## 262            BRISAS DEL GUABITO    1            0.012
## 263            BRISAS DEL LIMONAR    1            0.012
## 264                  BUENO MADRID    1            0.012
## 265                        CALDAS    1            0.012
## 266                    CALI BELLA    1            0.012
## 267                    CALI CANTO    1            0.012
## 268                     CALIBELLA    1            0.012
## 269                CALICANTO VIII    1            0.012
## 270                     CAMPESTRE    1            0.012
## 271       CAÑAVERALES LOS SAMANES    1            0.012
## 272                      CASCAJAL    1            0.012
## 273                   CATAYA REAL    1            0.012
## 274                        CEIBAS    1            0.012
## 275                      CENTELSA    1            0.012
## 276           CERROS DE GUADALUPE    1            0.012
## 277           CHIMINANGOS 1 ETAPA    1            0.012
## 278             CIUDAD ANTEJARDIN    1            0.012
## 279      CIUDAD CORDOBA RESERVADO    1            0.012
## 280                CIUDAD COUNTRY    1            0.012
## 281              CIUDAD DEL CAMPO    1            0.012
## 282           CIUDAD JARDIN PANCE    1            0.012
## 283                CIUDAD TALANGA    1            0.012
## 284          CIUDAD UNIVERSITARIA    1            0.012
## 285             CIUDADELA DEL RIO    1            0.012
## 286            CIUDADELA MELENDEZ    1            0.012
## 287          CIUDADELA PASO ANCHO    1            0.012
## 288            COLINAS DEL BOSQUE    1            0.012
## 289                         COLON    1            0.012
## 290                    COMFENALCO    1            0.012
## 291                     COMPARTIR    1            0.012
## 292            CONJUNTO GIBRALTAR    1            0.012
## 293           ED BENJAMIN HERRERA    1            0.012
## 294                    EL GUABITO    1            0.012
## 295                  EL INGENIO 3    1            0.012
## 296                     EL JORDAN    1            0.012
## 297                   EL NACIONAL    1            0.012
## 298                      EL RODEO    1            0.012
## 299                       EL SENA    1            0.012
## 300                    EL VALLADO    1            0.012
## 301          FARRALLONES DE PANCE    1            0.012
## 302               FENALCO KENNEDY    1            0.012
## 303                       FEPICOL    1            0.012
## 304                         FLORA    1            0.012
## 305                  FONAVIEMCALI    1            0.012
## 306      FRANCISCO ELADIO RAMIREZ    1            0.012
## 307                 FUENTES DE LA    1            0.012
## 308                        GAITAN    1            0.012
## 309                GUADALUPE ALTO    1            0.012
## 310         HACIENDA ALFEREZ REAL    1            0.012
## 311                       INGENIO    1            0.012
## 312                     INGENIO I    1            0.012
## 313                    INGENIO II    1            0.012
## 314             JAMUNDI ALFAGUARA    1            0.012
## 315          JORGE ELIECER GAITAN    1            0.012
## 316                  JORGE ISAACS    1            0.012
## 317         JOSE MANUEL MARROQUIN    1            0.012
## 318                     LA CEIBAS    1            0.012
## 319                  LA ESMERALDA    1            0.012
## 320              LA GRAN COLOMBIA    1            0.012
## 321                      LA LUISA    1            0.012
## 322                     LA MORADA    1            0.012
## 323                      LA PLAYA    1            0.012
## 324                 LA PORTADA AL    1            0.012
## 325                  LA PRIMAVERA    1            0.012
## 326                    LA REFORMA    1            0.012
## 327                   LA RIVERITA    1            0.012
## 328                    LA RIVIERA    1            0.012
## 329                  LA VILLA DEL    1            0.012
## 330                       LAFLORA    1            0.012
## 331           LARES DE COMFENALCO    1            0.012
## 332                  LAS CAMELIAS    1            0.012
## 333                LAS QUINTAS DE    1            0.012
## 334                     LAS VEGAS    1            0.012
## 335                  LAS VEGAS DE    1            0.012
## 336                    LOS ALAMOS    1            0.012
## 337            LOS CRISTALES CLUB    1            0.012
## 338                   LOS JOCKEYS    1            0.012
## 339                    LOS ROBLES    1            0.012
## 340                      MAMELLAN    1            0.012
## 341                 MARIANO RAMOS    1            0.012
## 342                 MARROQUIN III    1            0.012
## 343         MIRADOL DEL AGUACATAL    1            0.012
## 344          NORMANDIA WEST POINT    1            0.012
## 345                NORTE LA FLORA    1            0.012
## 346                    NUEVA BASE    1            0.012
## 347            OASIS DE PASOANCHO    1            0.012
## 348            PALMAS DEL INGENIO    1            0.012
## 349         PARQUE RESIDENCIAL EL    1            0.012
## 350                         PONCE    1            0.012
## 351          PORTALES DE COMFANDI    1            0.012
## 352                  PUENTE PALMA    1            0.012
## 353            RAFAEL URIBE URIBE    1            0.012
## 354           REPUBLICA DE ISRAEL    1            0.012
## 355                  RINCON DE LA    1            0.012
## 356             RINCON DE SALOMIA    1            0.012
## 357             RIVERAS DEL VALLE    1            0.012
## 358                 ROZO LA TORRE    1            0.012
## 359                       SAMANES    1            0.012
## 360          SAMANES DE GUADALUPE    1            0.012
## 361                        SAMECO    1            0.012
## 362                     SAN JUDAS    1            0.012
## 363                         SANTA    1            0.012
## 364               SANTA ANITA SUR    1            0.012
## 365               SANTA HELENA DE    1            0.012
## 366             SANTA MONICA ALTA    1            0.012
## 367                    SANTA ROSA    1            0.012
## 368                       SANTAFE    1            0.012
## 369                     SANTANDER    1            0.012
## 370              SECTOR AGUACATAL    1            0.012
## 371          SIERRAS DE NORMANDIA    1            0.012
## 372                 SIMON BOLIVAR    1            0.012
## 373                    TEQUENDEMA    1            0.012
## 374               TERRON COLORADO    1            0.012
## 375                UNICENTRO CALI    1            0.012
## 376           URBANIZACION BOYACA    1            0.012
## 377         URBANIZACION EL SAMAN    1            0.012
## 378        URBANIZACION GRATAMIRA    1            0.012
## 379     URBANIZACION LAS CASCADAS    1            0.012
## 380           URBANIZACION PACARA    1            0.012
## 381                 VALLE DE LILI    1            0.012
## 382                  VALLE GRANDE    1            0.012
## 383              VILLA DEL PARQUE    1            0.012
## 384                   ZONA CENTRO    1            0.012
## 385                ZONA NORTE LOS    1            0.012
## 386              ZONA RESIDENCIAL    1            0.012

De acuerdo a la información anterior evidenciamos que los atributos piso y parqueaderos tienen valores NA, por lo tanto se reemplazarán con la mediana.

vivienda<-vivienda %>% 
  mutate(piso = if_else(is.na(piso), 3, piso),
         parqueaderos = if_else(is.na(parqueaderos), 2, parqueaderos))

Las variables zona, barrio, longitud y latitud están relacionadas con la georreferenciación. Los atributos de barrio y coordenadas cuentan con más de 300 datos únicos, lo que puede dificultar su análisis e interpretación. Por lo tanto, se optará por utilizar la variable zona.

2.5. Visualización de Asociaciones

Matriz de gráficos de dispersión

# Zona 
data_zona <- vivienda %>% 
  select(-c(id, estrato, tipo,barrio,longitud,latitud ))

ggpairs(data_zona, aes(colour = zona))

# Estrato
data_estrato <- vivienda %>% 
  select(-c(id, zona, tipo,barrio,longitud,latitud ))
data_estrato$estrato<- factor(data_estrato$estrato)

ggpairs(data_estrato, aes(colour = estrato))

#Tipo

data_tipo <- vivienda %>% 
  select(-c(id, zona, estrato,barrio,longitud,latitud ))


ggpairs(data_tipo, aes(colour = tipo))

Tablas de contingencia y prueba chi-cuadrado

# Zona vs Estrato
tabla_contingencia1 <- table(vivienda$zona, vivienda$estrato)
tabla_contingencia1
##               
##                   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
chisq.test(tabla_contingencia1)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia1
## X-squared = 3830, df = 12, p-value <0.0000000000000002
# Zona vs Tipo

tabla_contingencia2 <- table(vivienda$zona, vivienda$tipo)
tabla_contingencia2
##               
##                APARTAMENTO CASA
##   ZONA CENTRO           24  100
##   ZONA NORTE          1198  722
##   ZONA OESTE          1029  169
##   ZONA ORIENTE          62  289
##   ZONA SUR            2787 1939
chisq.test(tabla_contingencia2)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia2
## X-squared = 691, df = 4, p-value <0.0000000000000002
# Tipo vs Estrato

tabla_contingencia3 <- table(vivienda$tipo, vivienda$estrato)
tabla_contingencia3
##              
##                  3    4    5    6
##   APARTAMENTO  639 1404 1766 1291
##   CASA         814  725  984  696
chisq.test(tabla_contingencia3)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia3
## X-squared = 224, df = 3, p-value <0.0000000000000002

2.6. Conclusiones

De esta primera etapa, se puede concluir que, según el conjunto de datos suministrados, las transformaciones realizadas no tuvieron un impacto significativo. Se identificó un registro triplicado que correspondía a un valor NA, por lo tanto, en este caso se eliminaron los tres registros, minimizando la pérdida de información. En cuanto a los demás atributos, se observó que los campos “piso” y “parqueaderos” presentaban valores NA en gran volumen. Para preservar la información, se optó por reemplazarlos por la mediana.

En cuanto a las variables numéricas, se destacan los siguientes hallazgos:

  • Se identificaron datos atípicos en los atributos “piso”, “parqueaderos”, “baños”, “habitaciones”, “precio” y “área”. Es relevante señalar que, según los diagramas de cajas, la mediana de los atributos “estrato” y “parqueaderos” se encuentra dentro del tercer cuartil (3Q), mientras que la de “habitaciones” se encuentra dentro del primer cuartil (1Q).

-La mayoría de los datos de la zona corresponden a la Zona Sur, y la mayoría de las propiedades son de tipo apartamento. Los barrios más frecuentes son Valle del Lili, Ciudad Jardín y Pance, que representan el 23% de los datos.

  • Mediante la matriz de gráficos de dispersión, se identificaron algunas relaciones, como la correlación entre el precio y el área, que mostró una correlación superior a 0.5 en todas las zonas, así como entre el estrato y el tipo de vivienda.

Respecto a las variables categóricas, los análisis de la prueba chi-cuadrado revelaron lo siguiente:

  • Existe una asociación significativa entre las variables zona y estrato.

  • Se observa una asociación significativa entre las variables zona y tipo.

  • También se identifica una asociación entre las variables tipo y estrato.

Finalmente, se procederá a realizar un análisis multivariado, considerando diversas técnicas.

3. ANÁLISIS DE COMPONENTES PRINCIPALES

Definición de datos a utilizar

vivienda_pca = vivienda %>% 
  select(-c(id,zona,tipo, barrio, latitud, longitud))

Normalización del conjunto de datos

Con el fin de evitar que las variables que tiene una escala con valores más grandes afecten las estimaciones realizadas (sesgos), se realiza la estandarización de las variables antes de proceder a realizar el proceso de estimación de los componentes principales.

viviendaZ = vivienda_pca %>% 
  scale()

head(viviendaZ)
##       piso estrato preciom areaconst parqueaderos banios habitaciones
## [1,] -0.24   -1.59   -0.56     -0.73        -0.86 -0.078         1.64
## [2,] -0.24   -1.59   -0.35     -0.38        -0.86 -0.778        -0.41
## [3,] -0.24   -1.59   -0.26      0.32         0.13 -0.778         0.27
## [4,] -0.70   -0.62   -0.10      0.73         1.12  1.322        -0.41
## [5,] -1.15    0.36   -0.53     -0.59        -0.86 -0.778        -0.41
## [6,] -1.15    0.36   -0.59     -0.62        -0.86 -0.078        -0.41

Cálculo de componentes principales

res.pca<- prcomp(viviendaZ)
summary(res.pca)
## Importance of components:
##                          PC1   PC2   PC3    PC4    PC5    PC6    PC7
## Standard deviation     1.839 1.160 0.928 0.7780 0.6213 0.4863 0.4298
## Proportion of Variance 0.483 0.192 0.123 0.0865 0.0551 0.0338 0.0264
## Cumulative Proportion  0.483 0.675 0.798 0.8847 0.9398 0.9736 1.0000

Elección número de componentes principales

Inicialmente, se analizará la variabilidad contenida en cada componente utilizando el gráfico proporcionado por la función fviz_eig

fviz_eig(res.pca, addlabels = TRUE)

Como se puede evidenciar, la 1° componente explica el 48.3% de la variabilidad contenida en el conjunto de datos. Las 3 primeras componentes explican el 80% de la variabilidad del conjunto de datos.

Ahora se procederá a utilizar la función fviz_pca_var para visualizar la contribución de cada uno de los atributos del conjunto de datos en las componentes principales. Así mismo se utilizará la función get_pca_var para resumir esa contribución.

fviz_pca_var(res.pca, col.var = "contrib", gradient.cols =c("#FF7F00", "#034D94"),
             rapel =TRUE)

var <- get_pca_var(res.pca)
var$contrib
##              Dim.1 Dim.2 Dim.3  Dim.4 Dim.5  Dim.6 Dim.7
## piso          0.61 28.98 64.49  5.325   0.4  0.085  0.11
## estrato       8.91 32.12  4.57 25.344   4.8 19.900  4.40
## preciom      22.73  5.73  0.97  0.003   7.1  2.804 60.62
## areaconst    20.99  2.67  0.19  1.002  52.8  3.433 18.94
## parqueaderos 15.44  0.79  4.66 58.017  18.2  1.226  1.70
## banios       22.02  0.61  4.56  7.719   8.0 48.854  8.28
## habitaciones  9.31 29.10 20.55  2.589   8.8 23.698  5.96

COnclusiones

Según el análisis de componentes principales, podemos observar que las tres primeras componentes explican el 80% de la variabilidad en el conjunto de datos. Además, se nota que los atributos precio, área y baños tienen una influencia significativa en la primera componente, mientras que el atributo estrato destaca en la segunda componente.

4. ANÁLISIS DE CONGLOMERADOS

Definición de datos a utilizar

Se solicita que este análisis aborde de las dinámicas de las ofertas en distintas partes de la ciudad y en diversos estratos socioeconómicos. Se transforman las zonas (dato categórico) a dato numérico.

vivienda_con <- vivienda %>% 
  mutate(zona = case_when(zona == "ZONA ORIENTE" ~1,
                          zona == "ZONA SUR" ~2,
                          zona == "ZONA NORTE" ~3,
                          zona == "ZONA OESTE" ~4,
                          T~5)) %>% 
  select(-c(id,tipo, barrio, latitud, longitud))

Normalizar la data

viviendaZ_con <- vivienda_con %>%
  scale()

Calcular el número de clusters

Para ello se utilizarán diferentes técnicas.

Distancia euclidiana

Se calculará primero la distancia euclidiana y, en función de los resultados, se generará un dendrograma. Este es un diagrama de árbol que muestra los grupos formados al agrupar observaciones en cada paso y sus niveles de similitud.

d <- dist(viviendaZ_con, method = "euclidean")

res.hc <- hclust(d, method = "average" )

str(res.hc)
## List of 7
##  $ merge      : int [1:8318, 1:2] -17 -45 -64 -183 -192 -252 -256 -283 -293 -339 ...
##  $ height     : num [1:8318] 0 0 0 0 0 0 0 0 0 0 ...
##  $ order      : int [1:8319] 1762 419 3155 1291 6236 8073 2926 4415 6933 153 ...
##  $ labels     : NULL
##  $ method     : chr "average"
##  $ call       : language hclust(d = d, method = "average")
##  $ dist.method: chr "euclidean"
##  - attr(*, "class")= chr "hclust"
plot(res.hc, cex = 0.6, hang = -1)

Silhouette

fviz_nbclust(viviendaZ_con, kmeans, method = "silhouette") +
  labs(subtitle = "Silhouette method")

De acuerdo al gráfico se sugiere que el número de clusters óptimo es de 2.

K-means

wcss <- vector()
for (i in 1:20) {
  wcss[i]<-sum(kmeans(viviendaZ_con, i)$withinss)
  
}


ggplot() + geom_point(aes(x = 1:20, y = wcss), color = 'blue') + 
  geom_line(aes(x = 1:20, y = wcss), color = 'blue') + 
  ggtitle("Método del Codo") + 
  xlab('Cantidad de Centroides k') + 
  ylab('WCSS')

Con este método evidenciamos que el número de clusters óptimo poodría ser de 4.

Evaluación de clusters

De acuerdo a la información anterior y teniendo en cuenta que se quiere analizar las zonas de la ciudad y estratos socioeconómicos. Se avaluarán diferentes números de clusters con diferentes atributos.

Zona y Estrato

2 clusters

set.seed(1234)
kmeans <- kmeans(vivienda_con, 2, iter.max = 1000, nstart = 10)
vivienda_con$cluster <- kmeans$cluster


ggplot() + geom_point(aes(x = zona, y = estrato, color = cluster), data = vivienda_con, size = 2) +
  scale_colour_gradientn(colours=rainbow(4)) +
  geom_point(aes(x = kmeans$centers[, 1], y = kmeans$centers[, 2]), color = 'black', size = 3) + 
  ggtitle('Clusters de Datos con k = 2 / K-Medios') + 
  xlab('X') + ylab('Y')

3 clusters

set.seed(1234)
kmeans <- kmeans(vivienda_con, 3, iter.max = 1000, nstart = 10)
vivienda_con$cluster <- kmeans$cluster


ggplot() + geom_point(aes(x = zona, y = estrato, color = cluster), data = vivienda_con, size = 2) +
  scale_colour_gradientn(colours=rainbow(4)) +
  geom_point(aes(x = kmeans$centers[, 1], y = kmeans$centers[, 2]), color = 'black', size = 3) + 
  ggtitle('Clusters de Datos con k = 3 / K-Medios') + 
  xlab('X') + ylab('Y')

Zona y Precio

2 clusters

set.seed(1234)
kmeans <- kmeans(vivienda_con, 2, iter.max = 1000, nstart = 10)
vivienda_con$cluster <- kmeans$cluster


ggplot() + geom_point(aes(x = zona, y =  preciom, color = cluster), data = vivienda_con, size = 2) +
  scale_colour_gradientn(colours=rainbow(4)) +
  geom_point(aes(x = kmeans$centers[, 1], y = kmeans$centers[, 2]), color = 'black', size = 3) + 
  ggtitle('Clusters de Datos con k = 2 / K-Medios') + 
  xlab('X') + ylab('Y')

3 clusters

set.seed(1234)
kmeans <- kmeans(vivienda_con, 3, iter.max = 1000, nstart = 10)
vivienda_con$cluster <- kmeans$cluster


ggplot() + geom_point(aes(x = zona, y =  preciom, color = cluster), data = vivienda_con, size = 2) +
  scale_colour_gradientn(colours=rainbow(4)) +
  geom_point(aes(x = kmeans$centers[, 1], y = kmeans$centers[, 2]), color = 'black', size = 3) + 
  ggtitle('Clusters de Datos con k = 3 / K-Medios') + 
  xlab('X') + ylab('Y')

Zona y Área

2 clusters

set.seed(1234)
kmeans <- kmeans(vivienda_con, 2, iter.max = 1000, nstart = 10)
vivienda_con$cluster <- kmeans$cluster


ggplot() + geom_point(aes(x = zona, y = areaconst, color = cluster), data = vivienda_con, size = 2) +
  scale_colour_gradientn(colours=rainbow(4)) +
  geom_point(aes(x = kmeans$centers[, 1], y = kmeans$centers[, 2]), color = 'black', size = 3) + 
  ggtitle('Clusters de Datos con k = 2 / K-Medios') + 
  xlab('X') + ylab('Y')

3 clusters

set.seed(1234)
kmeans <- kmeans(vivienda_con, 3, iter.max = 1000, nstart = 10)
vivienda_con$cluster <- kmeans$cluster


ggplot() + geom_point(aes(x = zona, y = areaconst, color = cluster), data = vivienda_con, size = 2) +
  scale_colour_gradientn(colours=rainbow(4)) +
  geom_point(aes(x = kmeans$centers[, 1], y = kmeans$centers[, 2]), color = 'black', size = 3) + 
  ggtitle('Clusters de Datos con k = 3 / K-Medios') + 
  xlab('X') + ylab('Y')

Estrato y Precio

2 clusters

set.seed(1234)
kmeans <- kmeans(vivienda_con, 2, iter.max = 1000, nstart = 10)
vivienda_con$cluster <- kmeans$cluster


ggplot() + geom_point(aes(x = estrato, y = preciom, color = cluster), data = vivienda_con, size = 2) +
  scale_colour_gradientn(colours=rainbow(4)) +
  geom_point(aes(x = kmeans$centers[, 1], y = kmeans$centers[, 2]), color = 'black', size = 3) + 
  ggtitle('Clusters de Datos con k = 2 / K-Medios') + 
  xlab('X') + ylab('Y')

3 clusters

set.seed(1234)
kmeans <- kmeans(vivienda_con, 3, iter.max = 1000, nstart = 10)
vivienda_con$cluster <- kmeans$cluster


ggplot() + geom_point(aes(x = estrato, y = preciom, color = cluster), data = vivienda_con, size = 2) +
  scale_colour_gradientn(colours=rainbow(4)) +
  geom_point(aes(x = kmeans$centers[, 1], y = kmeans$centers[, 2]), color = 'black', size = 3) + 
  ggtitle('Clusters de Datos con k = 3 / K-Medios') + 
  xlab('X') + ylab('Y')

### Estrato y Área

2 clusters

set.seed(1234)
kmeans <- kmeans(vivienda_con, 2, iter.max = 1000, nstart = 10)
vivienda_con$cluster <- kmeans$cluster


ggplot() + geom_point(aes(x = estrato, y = areaconst, color = cluster), data = vivienda_con, size = 2) +
  scale_colour_gradientn(colours=rainbow(4)) +
  geom_point(aes(x = kmeans$centers[, 1], y = kmeans$centers[, 2]), color = 'black', size = 3) + 
  ggtitle('Clusters de Datos con k = 2 / K-Medios') + 
  xlab('X') + ylab('Y')

3 clusters

set.seed(1234)
kmeans <- kmeans(vivienda_con, 3, iter.max = 1000, nstart = 10)
vivienda_con$cluster <- kmeans$cluster


ggplot() + geom_point(aes(x = estrato, y = areaconst, color = cluster), data = vivienda_con, size = 2) +
  scale_colour_gradientn(colours=rainbow(4)) +
  geom_point(aes(x = kmeans$centers[, 1], y = kmeans$centers[, 2]), color = 'black', size = 3) + 
  ggtitle('Clusters de Datos con k = 3 / K-Medios') + 
  xlab('X') + ylab('Y')

Conclusiones

Las diversas técnicas para calcular los clusters óptimos sugieren que el número puede variar entre 2 y 4. Al evaluar clusters entre 2 y 3, se encontró lo siguiente:

Para la combinación de zona y estrato, se observó que dividir el conjunto de datos en 2 o 3 clusters puede ser efectivo. Con 2 clusters, el primer grupo se distribuye en las 5 zonas, especialmente en estratos 3 a 5, mientras que el segundo se concentra principalmente en las zonas sur, norte y oeste, principalmente en estrato 6. Con 3 clusters, el primer grupo se distribuye nuevamente en todas las zonas, especialmente en las zonas oriente, sur y norte, entre los estratos 3 y 4. El segundo cluster es más pequeño y comprende especialmente las zonas sur y oeste en estrato 6, mientras que el tercer cluster contiene principalmente las zonas sur, norte y oeste, especialmente en estratos 5 y 6.

En cuanto a la combinación de zona y precio, con 2 clusters se observa que el cluster 1 está distribuido en todas las zonas con precios por debajo de 700, mientras que el cluster 2 abarca todas las zonas pero con precios en su mayoría superiores a 700. Con 3 clusters, el primer cluster se distribuye por todas las zonas con precios menores a 500, el segundo cluster principalmente en las zonas sur, norte y oeste con precios superiores a 850, y el tercer cluster principalmente en las zonas sur, norte y oeste con precios entre 200 y 1000.

No se observan grupos claros al analizar la zona y el precio, al igual que sucede con la combinación de estrato y área.

5. ANÁLISIS DE CORRESPONDENCIA

Definición de datos a utilizar

Se solicita que este análisis aborde La relación entre las variables categóricas (tipo de vivienda, zona y barrio) Debido a que el barrio comprende más de 300 datos únicos y está asociado a la zona, se tomará el atributo zona. Se transforman los atributos categóricos zona y tipo de vivienda para realizar el análisis.

vivienda_ac <- vivienda %>% 
  select("zona", "estrato", "tipo")%>% 
  mutate(zona = case_when(zona == "ZONA ORIENTE" ~1,
                          zona == "ZONA SUR" ~2,
                          zona == "ZONA NORTE" ~3,
                          zona == "ZONA OESTE" ~4,
                          T~5),
         tipo = case_when(tipo == "APARTAMENTO" ~1,
                          T~2))

Se dejan las variables como factores

vivienda_ac$zona <- factor(vivienda_ac$zona)
vivienda_ac$estrato <- factor(vivienda_ac$estrato)
vivienda_ac$tipo <- factor(vivienda_ac$tipo)

Análisis de correspondencia

Con las funciones de la librería FactoMiner, se realiza el análisis de correspondencia y se obtienen las componentes así como el % de variabilidad sonbre el conjunto de datos.

mca_vivienda <- MCA(vivienda_ac, graph = FALSE)
fviz_screeplot(mca_vivienda, addlabels = TRUE)

Se realiza un análisis sobre los atributos para analizar la contribución de cada uno sobre las componentes.

variables <- get_mca_var(mca_vivienda)
variables$contrib
##           Dim 1 Dim 2 Dim 3  Dim 4 Dim 5
## zona_1    23.78  6.27  1.93 21.508  0.96
## zona_2     1.52  9.46 13.19  0.535  2.70
## zona_3     2.76  1.07 38.47  0.435  4.15
## zona_4     9.73 32.85  0.30  0.099  0.19
## zona_5     6.50  1.05  1.79 76.416  0.78
## estrato_3 30.65  4.82  0.87  0.046  3.55
## estrato_4  0.60 15.03 11.08  0.314 30.61
## estrato_5  0.83  5.39 16.68  0.292 28.37
## estrato_6  8.18 23.71  4.65  0.016  1.15
## tipo_1     5.98  0.14  4.27  0.131 10.65
## tipo_2     9.47  0.22  6.77  0.208 16.88

Correlaciones entre variables y los factores creados

fviz_mca_var(mca_vivienda, # objeto lista de resultados mca
             choice = "mca.cor", # tipo de análisis solicitado: correlaciones
             repel = TRUE, # evitar la superposición de etiquetas
             ggtheme = theme_minimal()
)

Conclusiones

De acuerdo a los resultados de la función get_mca_var que permite visualizar las contribuciones sobre cada componente, se puede evidenciar que:

La Dimensión está principalmente influenciada por las variables “zona_1”, “zona_4” (oriente y oeste) y “estrato_3”. Las categorías en estas variables contribuyen significativamente a esta dimensión en comparación con las demás. Es importante destacar que “zona_1” y “zona_4” tienen las contribuciones más altas en esta dimensión, lo que indica que estas categorías tienen una fuerte asociación con la Dimensión 1 del AC.

Dimensión 2: En esta dimensión, las variables “zona_2”(sur) y “estrato_6” tienen las contribuciones más altas, lo que sugiere que estas categorías son las más relevantes para esta dimensión específica.

De acuerdo al gráfico de análisis de correspondencia encontramos que:

  • La Dimensión 2 (eje y) explica el 17% de la variabilidad en los datos.Cuanto más arriba se encuentra una variable en este eje, mayor es su contribución a la Dimensión 2 del ACM.

  • La Dimensión 1 (eje x) explica el 21.1% de la variabilidad en los datos. Cuanto más a la derecha se encuentra una variable en este eje, mayor es su contribución a la Dimensión 1 del ACM.

  • Atributo “tipo”: De acuerdo a la ubicación de este atributo, tiene una contribución significativa a la Dimensión 1 del ACM, pero una contribución mínima a la Dimensión 2.

  • Atributos “estrato” y “zona”: Estos atributos están prácticamente juntos en el gráfico, lo que significa que tienen contribuciones similares a ambas dimensiones del ACM y están positivamente correlacionados entre sí.