** 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.
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.
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)
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.
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
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
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.
Eliminamos los datos NA
vivienda <-vivienda[!is.na(vivienda$id),]
vivienda <- vivienda %>%
mutate_if(is.character, LimpiarNombres)
Se cambia el tipo de atributo del piso puesto que está como caracter
vivienda$piso <-as.numeric(vivienda$piso)
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)
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
##
# 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")
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.
# 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))
# 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
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:
-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.
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.
vivienda_pca = vivienda %>%
select(-c(id,zona,tipo, barrio, latitud, longitud))
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
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
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
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.
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))
viviendaZ_con <- vivienda_con %>%
scale()
Para ello se utilizarán diferentes técnicas.
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)
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.
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.
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.
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')
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')
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')
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')
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')
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')
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')
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
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')
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')
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.
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)
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
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()
)
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í.