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.
## Warning in data(vivenda): data set 'vivenda' not found
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 8322 obs. of 13 variables:
## $ id : num 1147 1169 1350 5992 1212 ...
## $ zona : chr "Zona Oriente" "Zona Oriente" "Zona Oriente" "Zona Sur" ...
## $ piso : chr NA NA NA "02" ...
## $ estrato : num 3 3 3 4 5 5 4 5 5 5 ...
## $ preciom : num 250 320 350 400 260 240 220 310 320 780 ...
## $ areaconst : num 70 120 220 280 90 87 52 137 150 380 ...
## $ parqueaderos: num 1 1 2 3 1 1 2 2 2 2 ...
## $ banios : num 3 2 2 5 2 3 2 3 4 3 ...
## $ habitaciones: num 6 3 4 3 3 3 3 4 6 3 ...
## $ tipo : chr "Casa" "Casa" "Casa" "Casa" ...
## $ barrio : chr "20 de julio" "20 de julio" "20 de julio" "3 de julio" ...
## $ longitud : num -76.5 -76.5 -76.5 -76.5 -76.5 ...
## $ latitud : num 3.43 3.43 3.44 3.44 3.46 ...
## - attr(*, "spec")=List of 3
## ..$ cols :List of 13
## .. ..$ id : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ zona : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ piso : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ estrato : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ preciom : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ areaconst : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ parqueaderos: list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ banios : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ habitaciones: list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ tipo : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ barrio : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ longitud : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ latitud : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## ..$ default: list()
## .. ..- attr(*, "class")= chr [1:2] "collector_guess" "collector"
## ..$ delim : chr ";"
## ..- attr(*, "class")= chr "col_spec"
## - attr(*, "problems")=<externalptr>
A través de Histogramas vamos a realizar reconocimiento de las variables para entender de qué se componen a nivel general
boxplot(x = vivienda$areaconst,
main = "Histograma de área construída",
col = "yellow") # Area Construidaboxplot(x = vivienda$habitaciones,
main = "Histograma de Número de Habitaciones",
col = "green") # habitacionesLa tabla cuenta con información de 8,322 viviendas medidas en 12 variables: zona, piso, estrato, preciom, areaconst, parqueaderos, baños, habitaciones, tipo, barrio, longitud y latitud.
Realizamos una revisión de el contenido de estas variables
## id zona piso estrato
## Min. : 1 Length:8322 Length:8322 Min. :3.000
## 1st Qu.:2080 Class :character Class :character 1st Qu.:4.000
## Median :4160 Mode :character Mode :character Median :5.000
## Mean :4160 Mean :4.634
## 3rd Qu.:6240 3rd Qu.:5.000
## Max. :8319 Max. :6.000
## NA's :3 NA's :3
## preciom areaconst parqueaderos banios
## Min. : 58.0 Min. : 30.0 Min. : 1.000 Min. : 0.000
## 1st Qu.: 220.0 1st Qu.: 80.0 1st Qu.: 1.000 1st Qu.: 2.000
## Median : 330.0 Median : 123.0 Median : 2.000 Median : 3.000
## Mean : 433.9 Mean : 174.9 Mean : 1.835 Mean : 3.111
## 3rd Qu.: 540.0 3rd Qu.: 229.0 3rd Qu.: 2.000 3rd Qu.: 4.000
## Max. :1999.0 Max. :1745.0 Max. :10.000 Max. :10.000
## NA's :2 NA's :3 NA's :1605 NA's :3
## habitaciones tipo barrio longitud
## Min. : 0.000 Length:8322 Length:8322 Min. :-76.59
## 1st Qu.: 3.000 Class :character Class :character 1st Qu.:-76.54
## Median : 3.000 Mode :character Mode :character Median :-76.53
## Mean : 3.605 Mean :-76.53
## 3rd Qu.: 4.000 3rd Qu.:-76.52
## Max. :10.000 Max. :-76.46
## NA's :3 NA's :3
## latitud
## Min. :3.333
## 1st Qu.:3.381
## Median :3.416
## Mean :3.418
## 3rd Qu.:3.452
## Max. :3.498
## NA's :3
## [1] "character"
## [1] "character"
## [1] "numeric"
## [1] "numeric"
## [1] "numeric"
## [1] "numeric"
## [1] "numeric"
## [1] "numeric"
## [1] "character"
## [1] "character"
## [1] "numeric"
## [1] "numeric"
## [1] 3
## [1] 2638
## [1] 3
## [1] 2
## [1] 3
## [1] 1605
## [1] 3
## [1] 3
## [1] 3
## [1] 3
## [1] 3
## [1] 3
Se decide no imputar la moda o media en los valores NA ya que puede cambiar la variabilidad de la muestra lo que puede afectar los resultados del PCA.
Se inicia un tratamiento de la base de datos para realizar el modelamiento de los datos. Estos ajustes se detallan a continuación:
Se eliminan las variables que más NA presentan que son parqueaderos y piso y adicional 3 variables que inicialmente no se espera que aporten al análisis final.
borrar <- c("piso","parqueaderos","barrio", "longitud", "latitud")
vivienda1 <- vivienda1[ ,!(names(vivienda1) %in% borrar)]
head(vivienda1,10)Se eliminan las filas que tienen datos faltantes
vivienda1 <- vivienda1[complete.cases(vivienda1),]
sum(is.na(vivienda1)) # Conteo de valores faltantes## [1] 0
Se cambia el nombre de las filas por el ID de los casos y se quita la variable ID de el data frame
Se transforman las variables categóricas en numéricas patra incluirlas en el modelo
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
vivienda1 <- vivienda1 %>% mutate(zona = replace(zona,
zona == "Zona Centro", 1))
vivienda1 <- vivienda1 %>% mutate(zona = replace(zona,
zona == "Zona Norte", 2))
vivienda1 <- vivienda1 %>% mutate(zona = replace(zona,
zona == "Zona Oeste", 3))
vivienda1 <- vivienda1 %>% mutate(zona = replace(zona,
zona == "Zona Oriente",
4))
vivienda1 <- vivienda1 %>% mutate(zona = replace(zona,
zona == "Zona Sur", 5))
vivienda1$zona <- as.numeric(vivienda1$zona)
vivienda1 <- vivienda1 %>% mutate(tipo = replace(tipo,
tipo == "Casa", 1))
vivienda1 <- vivienda1 %>% mutate(tipo = replace(tipo,
tipo == "Apartamento", 2))
vivienda1$tipo <- as.numeric(vivienda1$tipo)
head(vivienda1,10)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 preferencias del mercado.
Inicialmente se revisa la varianza de las variables
## zona estrato preciom areaconst banios habitaciones
## 1.762895e+00 1.059298e+00 1.080207e+05 2.043874e+04 2.039784e+00 2.130248e+00
## tipo
## 2.372472e-01
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.
## Warning: package 'ggplot2' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.4
## ✔ ggplot2 3.4.2 ✔ stringr 1.5.0
## ✔ lubridate 1.9.2 ✔ tibble 3.2.0
## ✔ purrr 1.0.1 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
## zona estrato preciom areaconst banios habitaciones
## [1,] 0.06192582 -1.5872276 -0.5595498 -0.7339949 -0.07793773 1.6406840
## [2,] 0.06192582 -1.5872276 -0.3465670 -0.3842568 -0.77811479 -0.4147626
## [3,] 0.06192582 -1.5872276 -0.2552886 0.3152194 -0.77811479 0.2703863
## [4,] 0.81508501 -0.6156201 -0.1031580 0.7349051 1.32241640 -0.4147626
## [5,] -1.44439256 0.3559875 -0.5291236 -0.5940997 -0.77811479 -0.4147626
## [6,] -1.44439256 0.3559875 -0.5899759 -0.6150839 -0.07793773 -0.4147626
## tipo
## [1,] -1.2586312
## [2,] -1.2586312
## [3,] -1.2586312
## [4,] -1.2586312
## [5,] 0.7944184
## [6,] 0.7944184
Se realiza el análisis de componentes principales
## Standard deviations (1, .., p=7):
## [1] 1.7964600 1.2157043 1.0021146 0.7176276 0.5896915 0.4914690 0.4316173
##
## Rotation (n x k) = (7 x 7):
## PC1 PC2 PC3 PC4 PC5
## zona -0.04643706 0.10078567 -0.983129845 0.03472704 -0.13735908
## estrato -0.24775997 0.66654914 -0.001581231 -0.07808217 0.48672432
## preciom -0.44918450 0.35262674 0.126340874 0.19071335 -0.27110569
## areaconst -0.48400565 -0.05398507 0.085962667 0.34611788 -0.54237179
## banios -0.49088084 0.05158751 -0.011572716 -0.38151942 0.17839055
## habitaciones -0.37321799 -0.43705988 -0.039958799 -0.63133426 -0.05404702
## tipo 0.34666229 0.47393237 0.091493044 -0.54072915 -0.58465562
## PC6 PC7
## zona 0.01400561 0.02952821
## estrato -0.48364093 -0.13198035
## preciom 0.21908528 0.70714738
## areaconst -0.29000474 -0.50731358
## banios 0.66473052 -0.37012684
## habitaciones -0.43806861 0.27328036
## tipo 0.00483955 -0.11228873
Hasta este punto el primer componente no explica de manera contundente la variabilidad de los datos. Así mismo hay dos variables que se explican menos en el primer componente así que decido eliminar del modelo la variable tipo de inmueble y dejar solo el estrato para ver si se explican mejor los componentes
borrar <- c("zona")
vivienda1 <- vivienda1[ ,!(names(vivienda1) %in% borrar)]
borrar <- c("tipo")
vivienda1 <- vivienda1[ ,!(names(vivienda1) %in% borrar)]
head(vivienda1,10)Se revisa la varianza de las variables de nuevo
## estrato preciom areaconst banios habitaciones
## 1.059298e+00 1.080207e+05 2.043874e+04 2.039784e+00 2.130248e+00
Se realiza la estandarización de las variables antes de proceder a realizar el proceso de estimación de los componentes principales.
## estrato preciom areaconst banios habitaciones
## [1,] -1.5872276 -0.5595498 -0.7339949 -0.07793773 1.6406840
## [2,] -1.5872276 -0.3465670 -0.3842568 -0.77811479 -0.4147626
## [3,] -1.5872276 -0.2552886 0.3152194 -0.77811479 0.2703863
## [4,] -0.6156201 -0.1031580 0.7349051 1.32241640 -0.4147626
## [5,] 0.3559875 -0.5291236 -0.5940997 -0.77811479 -0.4147626
## [6,] 0.3559875 -0.5899759 -0.6150839 -0.07793773 -0.4147626
Se realiza el análisis de componentes principales de nuevo
## Standard deviations (1, .., p=5):
## [1] 1.7126464 1.0901014 0.6673458 0.4916079 0.4375986
##
## Rotation (n x k) = (5 x 5):
## PC1 PC2 PC3 PC4 PC5
## estrato 0.3300032 -0.6744363 0.4208934 -0.4795545 0.1706159
## preciom 0.5068715 -0.2807656 -0.3015468 0.2213868 -0.7240921
## areaconst 0.4940473 0.1638135 -0.6525373 -0.2984641 0.4628138
## banios 0.5189619 0.1092831 0.3767649 0.6647648 0.3672488
## habitaciones 0.3475270 0.6538568 0.4051685 -0.4359154 -0.3122700
Nuevamente se realiza la elección del número de componentes principales
## Warning: package 'factoextra' was built under R version 4.2.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
## Warning in data("vivienda1"): data set 'vivienda1' not found
En este caso el primer componente principal explica el 58.7% de la variabilidad contenida en la base de datos y entre los dos primeros casi el 83% de los datos, lo cual indicaría que con solo una variable (CP1) que se obtiene mediante una combinación lineal de las variables y se puede resumir gran parte de la variabilidad que contiene la base de datos.
Se realiza la graficación de los componentes en las dimensiones que lo explican
fviz_pca_var(res.pca,
col.var = "contrib", # Color by contributions to the PC
gradient.cols = c("#FF7F00", "#034D94"),
repel = TRUE # Avoid text overlapping
)Se observa que las variables de area construida, baños y precio están más asociadas al componente 1 mientras que para el componente 2 se explica mejor las variables habitaciones y estrato
Revisamos 4 casos para entender mejor el sentido de ejes
datos<- rbind(vivienda1[5720,], # ok
vivienda1[3388,],
vivienda1[724,],
vivienda1[8073,])
datos <- as.data.frame(datos)
rownames(datos) = c("5720","3388","724","8073")
datoscasos1 <- rbind(res.pca$x[5720,1:2],res.pca$x[3388,1:2]) # CP1
rownames(casos1) = c("5720","3388")
casos1 <- as.data.frame(casos1)
casos2 <- rbind(res.pca$x[724,1:2], res.pca$x[8073,1:2]) # CP2
rownames(casos2) = c("724","8073")
casos2 <- as.data.frame(casos2)
fviz_pca_ind(res.pca, col.ind = "#DEDEDE", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")) +
geom_point(data = casos1, aes(x = PC1, y = PC2), color = "red", size = 3) +
geom_point(data = casos2, aes(x = PC1, y = PC2), color = "blue", size = 3)Se puede observar que mientras la vivienda 8073 presenta un área construida de 1440 y precio de 370 la vivienda 3388 tiene un área construida de 235 y precio de 1800 Esto establece que los puntos ubicados en la parte inferior del gráfico son viviendas más costosas en relación area construida y precio mientras en la parte superior se ubican las más favorables en la misma relación. Esto quiere decir que son viviendas que tienen más metros cuadrados por menos precio.
También podemos ver que las viviendas ubicadas a la derecha de la gráfica tienen más área construida que las que están a la izquierda
Del Análisis de Componentes Principales (ACP) se concluye lo siguiente:
Desde los primeros análisis no es posible determinar componentes principales al evaluar todas las variables posibles en el modelo pero a medida de que se depuran estas variables es más fácil obtener resultados
El primer componente explica el 58.7 % de la varianza observada de los datos y el segundo componente el 23.8% de la varianza observada, por tanto, en conjunto ambos componentes logran explicar el 82.43%
El modelo de ACP puede determinar de una manera gráfica visual y sencilla las viviendas que se encuentran con mejor precio y mejor equipadas con baños y habitaciones lo que facilita una decisión de compra
En el cuadrante superior derecho vamos a encontrar las viviendas más económicas y con más metros cuadrados construidos, mientras que, ql revisar el cuadrante inferior derecho, seguimos encontrando viviendas con bastantes metros cuadrados pero un poco más costosas.
El cuadrante inferior izquierdo tiene viviendas más costosas y pequeñas.
Agrupar las propiedades residenciales en segmentos homogéneos con características similares para entender las dinámicas y demandas específicas en diferentes partes de la ciudad y en diferentes estratos socioeconómicos.
Inicialmente se preparan las librerías que se necesitan para correr el modelo
## Warning: package 'dendextend' was built under R version 4.2.3
##
## ---------------------
## Welcome to dendextend version 1.17.1
## Type citation('dendextend') for how to cite the package.
##
## Type browseVignettes(package = 'dendextend') for the package vignette.
## The github page is: https://github.com/talgalili/dendextend/
##
## Suggestions and bug-reports can be submitted at: https://github.com/talgalili/dendextend/issues
## You may ask questions at stackoverflow, use the r and dendextend tags:
## https://stackoverflow.com/questions/tagged/dendextend
##
## To suppress this message use: suppressPackageStartupMessages(library(dendextend))
## ---------------------
##
## Attaching package: 'dendextend'
## The following object is masked from 'package:stats':
##
## cutree
## Warning: package 'pvclust' was built under R version 4.2.3
## Registered S3 method overwritten by 'pvclust':
## method from
## text.pvclust dendextend
## Warning: package 'flexclust' was built under R version 4.2.3
## Loading required package: grid
## Loading required package: lattice
## Loading required package: modeltools
## Loading required package: stats4
Dado que los rangos de las variables son diferente y con fin de que estas diferencias en las dimensiones de las variables no afecte los cálculos de las distancias se aconseja estandarizar las variables (restar la media y dividir el resultado por la desviación estándar) antes de generar las cálculos de las distancias
Por medio de este gráfico y valores podemos observar aquellos elementos que se encuentran más distantes que los demás y nos va a servir como base para los pasos siguientes
m.distancia <- get_dist(vivienda2, method = "euclidean") #el método aceptado también puede ser: "maximum", "manhattan", "canberra", "binary", "minkowski", "pearson", "spearman" o "kendall"
fviz_dist(m.distancia, gradient = list(low = "green4", mid = "yellow", high = "red"))Podemos observar aquellos elementos con valores similares de color verde mientrras que los más distantes se pueden ver de color rojo. El color amarillo es un intermedio entre estas dos distancias
Ahora podemos realizar la estimación de clúster a usar de Una forma sencilla, el número K óptimo de clusters cuando no se dispone de información adicional en la que basarse, es aplicar el algoritmo de K-means para un rango de valores de K e identificar aquel valor a partir del cual la reducción en la suma total de varianza intra-cluster deja de ser sustancial. A esta estrategia se la conoce como método del codo o elbow method
La función fviz_nbclust() automatiza este proceso y genera una representación de los resultados.
Utilizaremos el método wss
Por medio de este gráfico podemo sobtener
El codo de la distribución no es completamente evidente pero se puede asumir que se encuentra en el cluster 4 que es donde más se puede observar el codo que estamos buscando
## K-means clustering with 4 clusters of sizes 3389, 1173, 998, 2759
##
## Cluster means:
## estrato preciom areaconst banios habitaciones
## 1 0.6031181 -0.09666251 -0.2753263 -0.09198672 -0.3080176
## 2 1.1238308 1.94536774 1.4659867 1.30391215 0.3667627
## 3 -0.6438532 0.04808538 0.8468814 0.95478836 1.9077411
## 4 -0.9857395 -0.72573987 -0.5914133 -0.78674329 -0.4676573
##
## Clustering vector:
## [1] 3 4 4 1 1 1 4 1 3 2 2 3 3 1 3 1 1 4 1 4 4 2 1 4 1 1 4 4 1 4 4 3 4 1 2 1 4
## [38] 1 4 4 4 4 3 4 4 4 4 4 1 1 1 4 1 4 1 4 4 1 1 3 3 4 1 4 4 4 4 1 1 4 4 1 3 4
## [75] 1 1 1 1 1 1 4 3 1 1 4 3 2 4 1 3 4 4 1 4 4 1 4 4 2 1 2 3 1 2 1 2 1 1 2 1 3
## [112] 4 2 3 1 1 2 2 1 4 2 1 2 1 1 1 1 4 1 2 3 2 1 3 4 1 3 1 1 1 1 2 2 1 1 3 4 2
## [149] 4 2 2 1 2 1 1 4 1 4 4 1 1 1 3 4 3 2 4 4 4 1 4 4 2 4 4 4 4 4 2 4 2 1 2 2 4
## [186] 4 4 2 4 4 2 2 2 4 4 4 4 4 1 2 4 4 2 4 2 4 4 4 2 1 1 4 2 4 1 2 2 4 4 2 2 2
## [223] 2 1 4 2 2 2 2 2 2 2 1 2 2 4 2 4 2 2 1 1 1 2 1 2 1 2 2 2 2 4 1 1 2 4 4 4 2
## [260] 4 2 4 2 2 2 4 2 2 2 2 2 4 4 4 3 3 3 4 4 3 4 3 4 4 1 4 4 3 4 4 4 4 4 4 4 4
## [297] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 4 3 4 4 4 4 3 4 4 4 3 4 3 4 3 4 4
## [334] 4 4 3 4 4 4 3 4 1 1 1 1 1 4 1 1 3 3 4 4 3 3 3 3 3 4 3 4 4 4 3 4 4 1 2 2 2
## [371] 2 4 1 2 2 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 2 1 2 1 2 1 1 1 2 1
## [408] 2 2 1 3 4 3 3 3 3 3 3 3 3 1 4 4 4 4 4 4 4 4 1 4 4 3 3 4 4 4 4 4 4 4 4 2 1
## [445] 1 1 1 1 1 3 1 4 1 4 3 2 3 1 3 1 2 1 1 2 1 2 4 1 1 2 1 1 1 1 1 1 1 1 1 2 1
## [482] 1 1 1 1 1 1 1 2 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 4 3 4 4 3 3 3 3 4 4 4 4 4
## [519] 4 4 4 4 4 4 1 4 4 4 4 4 4 1 4 1 4 4 1 4 4 4 4 4 4 4 4 4 4 4 4 2 3 1 4 4 3
## [556] 4 3 4 4 4 4 4 4 4 4 1 1 4 4 3 3 3 3 4 4 4 3 3 4 4 3 4 4 4 3 4 4 3 2 4 4 4
## [593] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
## [630] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4
## [667] 3 4 4 4 4 4 1 4 4 3 4 4 4 4 4 1 2 2 1 1 1 1 4 4 3 4 1 4 4 1 1 3 1 4 4 4 4
## [704] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 4 4 4 1 4 1 1 4 4 4 4 4 4 4 4 1 1 2 2
## [741] 1 2 1 1 1 1 1 1 1 2 2 3 1 1 4 2 2 4 1 1 4 4 4 1 4 4 4 4 4 4 3 3 4 3 3 4 3
## [778] 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 1 4 3 4 1 1 4 1 4 1 1 3 1 4 1 4 1 4 1 4
## [815] 1 3 1 1 4 1 4 4 1 4 1 1 3 1 1 1 3 4 4 1 4 4 4 4 4 4 1 4 4 4 4 4 1 4 1 4 1
## [852] 4 4 3 4 1 4 3 4 4 4 1 1 3 3 4 3 1 3 4 1 1 4 4 4 4 4 4 1 4 1 4 4 4 4 4 3 4
## [889] 3 4 4 4 1 4 4 3 3 3 4 4 4 1 4 4 3 4 4 1 4 1 4 1 1 1 4 4 4 4 4 1 1 4 4 1 1
## [926] 1 1 1 1 1 1 3 1 1 4 3 3 1 3 4 3 3 1 1 1 1 1 1 4 1 1 1 1 1 1 3 1 4 1 1 4 1
## [963] 1 1 4 1 1 1 4 1 1 1 1 1 3 1 1 3 1 1 4 1 1 2 1 3 1 1 1 4 1 1 4 1 1 1 4 1 1
## [1000] 4 3 3 1 3 3 4 3 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 3 1 1 4 3 4 4 3 3
## [1037] 3 3 1 1 1 4 3 3 4 3 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1
## [1074] 1 1 1 1 3 1 1 1 4 4 1 1 1 1 3 1 1 1 4 1 1 2 1 1 1 4 1 1 1 4 4 4 4 1 4 1 3
## [1111] 4 4 4 4 4 4 4 3 4 4 1 4 4 4 3 4 4 4 3 3 3 3 3 3 1 1 4 1 1 4 1 3 1 1 4 4 4
## [1148] 1 4 1 1 3 3 3 3 3 3 3 4 4 4 1 4 4 4 4 4 4 1 4 3 3 4 3 1 1 4 3 1 3 4 1 4 4
## [1185] 4 4 4 3 3 4 4 1 4 3 4 3 4 4 1 4 4 4 4 4 1 4 4 4 1 4 4 4 1 4 4 4 4 4 4 1 1
## [1222] 4 4 4 1 1 1 4 1 1 1 4 1 4 4 4 4 1 4 4 4 1 4 4 1 4 4 4 4 4 3 4 3 4 3 3 4 3
## [1259] 4 3 4 3 4 1 1 1 4 1 1 3 1 1 1 1 3 1 4 4 4 4 4 4 4 4 4 4 4 3 4 4 3 4 4 4 3
## [1296] 3 1 4 2 1 4 2 1 2 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 2 1 1 1 2 2 2 2 1 1 1 2 1
## [1333] 2 1 2 2 1 2 1 2 2 2 2 1 2 2 1 1 1 2 2 1 2 2 2 2 2 1 1 2 2 1 2 2 2 2 2 2 1
## [1370] 2 2 2 2 2 1 2 2 2 1 2 1 1 1 2 1 2 2 2 2 2 1 1 2 2 2 2 1 2 2 2 1 2 2 2 2 2
## [1407] 2 1 2 1 2 1 2 1 1 2 2 3 1 1 1 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 2 2
## [1444] 2 1 1 1 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 1 2 2 2 2 2
## [1481] 2 2 1 2 1 1 1 2 2 2 1 2 2 1 2 3 2 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 2 4 1
## [1518] 1 2 2 2 1 1 1 1 1 2 1 1 1 1 3 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2
## [1555] 2 2 1 1 1 1 2 1 2 2 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1
## [1592] 1 2 1 2 1 1 2 1 1 1 4 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1629] 1 1 1 2 1 2 1 1 1 1 1 2 1 1 1 2 1 1 1 2 2 2 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1
## [1666] 2 1 1 1 1 1 1 1 1 4 4 1 1 1 1 1 1 1 1 2 2 2 1 2 1 2 2 2 2 1 1 1 2 1 1 1 1
## [1703] 2 1 4 1 1 1 1 1 1 1 2 1 1 1 2 2 2 1 1 2 1 1 2 1 2 2 1 2 2 2 1 2 2 2 2 2 2
## [1740] 2 4 2 2 1 1 2 2 1 2 2 2 2 2 2 2 2 1 1 1 2 2 2 2 1 1 1 1 1 1 2 2 2 2 2 1 2
## [1777] 1 1 2 2 1 1 1 2 1 2 2 2 1 2 2 1 2 2 1 2 2 2 1 2 2 1 1 2 2 1 1 2 2 2 1 2 1
## [1814] 2 2 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 2 2 2 1 1 1 1 2 1 4 4 4 4 4 4 4 4 4 4 4
## [1851] 4 4 4 4 1 4 4 4 4 4 4 4 4 4 4 4 1 4 4 3 4 3 4 4 4 4 4 1 4 3 4 4 4 4 4 4 1
## [1888] 4 4 1 4 4 4 3 3 4 4 3 4 4 4 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 1 3 1 2 3 2 2 4
## [1925] 4 4 1 4 4 3 4 4 4 3 4 4 4 4 4 3 3 1 3 4 3 3 3 3 4 4 3 3 3 3 4 4 4 4 4 4 4
## [1962] 4 4 4 4 4 3 4 4 4 3 3 3 3 4 3 4 4 4 4 4 3 3 4 3 4 4 4 4 3 1 1 1 1 2 2 1 1
## [1999] 1 1 1 2 1 1 2 1 1 1 1 1 1 1 2 2 1 1 4 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 2
## [2036] 1 2 1 1 4 2 1 1 1 1 1 1 2 2 2 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1
## [2073] 1 4 4 3 3 3 4 3 3 3 3 4 4 4 3 3 1 3 1 3 1 1 1 1 3 4 1 3 1 1 1 1 1 1 4 1 4
## [2110] 4 1 1 4 1 1 1 1 1 3 1 1 1 1 1 1 1 2 1 1 2 1 3 4 4 4 3 4 4 4 3 4 4 3 4 3 4
## [2147] 3 4 3 4 4 4 3 4 4 3 4 3 3 3 4 3 1 1 1 1 1 1 1 1 3 4 1 4 1 3 1 2 4 4 3 1 3
## [2184] 3 3 1 3 1 1 3 1 1 4 2 2 1 1 1 1 3 1 3 3 1 1 3 2 2 1 1 3 4 4 4 4 4 4 4 4 4
## [2221] 4 4 4 4 1 3 1 4 4 4 1 3 4 4 4 1 3 4 4 4 4 4 4 1 4 3 4 4 3 4 4 1 4 4 4 3 1
## [2258] 1 1 4 4 4 1 4 4 4 4 1 3 3 3 4 3 1 4 3 4 1 1 3 4 4 4 4 4 4 4 4 4 4 4 4 4 3
## [2295] 3 3 4 4 3 3 3 4 4 3 1 4 3 3 4 3 4 1 4 4 1 1 1 1 4 4 4 4 4 1 3 4 4 4 3 4 4
## [2332] 4 1 4 4 3 1 4 4 4 4 4 4 4 4 4 4 4 1 4 4 4 1 1 4 4 4 1 1 4 4 4 4 1 4 4 4 4
## [2369] 4 4 1 1 4 4 4 4 4 4 4 4 4 3 4 4 4 1 4 3 4 4 4 4 4 3 4 1 2 3 4 4 4 4 4 3 1
## [2406] 4 4 3 1 4 4 1 1 4 1 1 4 4 4 4 4 1 1 1 1 4 1 3 3 3 3 3 3 3 4 3 4 4 4 4 4 4
## [2443] 3 4 4 1 1 3 1 3 3 4 4 4 4 3 4 3 3 4 4 4 3 3 4 3 4 4 3 4 1 1 1 1 1 1 1 1 1
## [2480] 1 1 3 1 1 1 1 1 1 1 3 1 1 3 2 1 3 1 1 1 3 3 1 2 1 1 1 1 1 2 1 1 2 1 2 2 1
## [2517] 1 3 2 3 2 1 1 3 1 1 2 1 1 1 2 1 1 1 3 1 1 1 2 3 2 1 2 1 1 2 1 1 1 4 1 2 3
## [2554] 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1
## [2591] 1 1 1 3 1 1 1 1 2 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3
## [2628] 1 1 2 1 1 3 2 1 1 1 1 1 1 1 1 1 1 3 1 1 3 1 1 2 4 2 1 1 2 1 2 1 1 2 1 2 2
## [2665] 1 1 1 3 1 1 1 1 1 1 1 2 1 2 1 4 1 1 1 1 1 1 1 1 2 2 1 1 1 1 3 2 2 1 1 1 2
## [2702] 2 2 3 2 1 1 1 1 1 1 3 2 1 1 3 2 3 1 3 4 1 2 1 1 1 1 2 3 1 3 3 4 1 4 3 4 3
## [2739] 3 4 3 4 3 3 4 3 4 3 3 4 4 2 3 4 4 4 3 3 3 1 1 3 3 1 3 3 4 4 2 3 4 4 4 1 4
## [2776] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 1 1 4 3 4 3 1 1 3 1 3 4 3 3 4 4 1 4 4
## [2813] 4 1 4 1 3 3 1 3 1 4 3 1 1 1 3 3 1 3 1 1 1 1 1 4 3 3 3 3 3 1 2 1 3 1 1 1 3
## [2850] 3 3 3 3 2 3 4 1 3 1 3 1 3 1 1 3 1 3 1 4 4 1 4 1 2 2 1 4 1 3 1 1 1 1 1 4 4
## [2887] 1 4 1 4 4 4 4 1 4 4 1 1 1 4 1 4 1 1 1 4 1 4 3 4 4 1 1 1 3 4 1 1 1 1 1 4 2
## [2924] 1 1 1 4 3 2 3 3 1 3 3 3 3 3 1 1 1 3 3 3 1 3 3 3 3 1 1 1 3 2 2 1 1 1 1 1 1
## [2961] 1 1 1 1 1 1 1 1 2 1 1 2 1 1 2 2 1 2 1 2 4 2 1 1 1 1 2 1 1 2 2 1 1 1 2 4 1
## [2998] 1 1 1 1 1 1 1 1 2 1 1 4 3 4 4 4 1 1 3 4 4 1 1 1 4 4 1 1 4 3 1 3 3 3 1 1 1
## [3035] 4 4 1 3 1 4 4 3 3 1 3 1 1 1 4 4 4 4 4 1 4 1 4 4 4 4 4 3 1 4 1 4 4 3 4 4 4
## [3072] 4 4 4 1 1 1 4 4 4 4 4 4 1 1 4 4 4 4 4 4 4 4 4 4 1 4 1 1 1 4 4 4 4 4 4 1 4
## [3109] 4 1 4 4 1 4 4 4 1 1 1 1 4 4 1 4 3 4 4 4 3 1 3 3 3 3 3 3 4 4 4 4 4 3 3 3 4
## [3146] 3 4 4 3 4 4 3 3 3 2 4 4 1 1 4 4 1 3 4 4 4 4 4 3 1 4 1 1 1 1 4 4 1 1 1 1 3
## [3183] 4 1 4 4 4 4 3 4 4 3 1 1 2 1 3 2 4 3 3 1 3 3 1 1 3 1 4 1 1 3 1 1 1 1 1 3 4
## [3220] 3 2 1 2 1 4 1 1 4 2 2 4 1 3 1 3 4 1 3 3 4 1 3 2 1 4 1 4 4 3 4 2 1 4 4 3 4
## [3257] 4 3 4 3 3 4 4 3 4 4 4 3 4 4 1 3 2 1 4 4 4 4 3 3 3 4 1 1 1 1 1 1 2 2 1 1 2
## [3294] 2 2 2 2 2 1 1 1 1 1 1 2 2 1 2 2 1 2 2 2 1 1 2 2 2 2 1 1 1 1 1 3 1 2 1 2 2
## [3331] 1 1 1 1 1 1 1 4 4 4 3 3 4 4 4 3 4 4 3 4 4 4 3 3 3 4 4 4 4 3 3 4 4 4 4 4 4
## [3368] 4 4 4 4 1 2 2 1 1 1 1 1 2 2 1 1 1 1 1 2 2 2 4 4 3 3 4 4 3 4 4 3 3 3 3 3 3
## [3405] 4 3 2 4 4 4 1 4 4 3 1 1 3 4 4 3 3 3 1 1 3 3 1 3 4 1 3 1 1 1 1 1 1 3 1 1 1
## [3442] 1 1 3 1 1 3 1 1 1 1 4 1 1 1 1 1 4 1 1 1 2 2 3 1 3 1 1 1 1 1 2 4 1 1 1 1 1
## [3479] 1 2 1 3 3 1 1 3 3 3 2 4 1 1 1 1 1 2 1 1 1 1 3 2 1 1 3 2 1 1 1 1 3 1 1 2 1
## [3516] 1 3 3 1 1 1 3 1 4 3 3 2 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1
## [3553] 1 1 1 1 1 1 1 1 1 4 4 1 1 1 1 1 1 1 1 4 1 4 4 1 4 1 1 1 1 1 1 1 1 1 1 1 1
## [3590] 1 1 1 1 1 1 1 1 1 1 4 1 4 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1
## [3627] 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3664] 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3701] 1 1 1 1 1 1 1 1 1 1 1 1 4 3 1 3 4 1 1 1 3 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1
## [3738] 1 1 1 1 1 1 1 1 1 3 1 1 1 1 4 1 1 1 1 3 1 1 1 1 2 1 1 1 1 3 3 2 1 2 4 1 1
## [3775] 1 1 1 1 3 3 3 1 1 1 3 3 1 1 1 1 4 1 2 1 1 3 2 3 4 3 4 3 3 4 3 4 4 4 4 4 4
## [3812] 4 4 4 3 4 3 3 3 4 1 1 1 4 1 1 1 1 1 1 1 1 3 1 2 1 1 1 4 3 1 1 1 4 1 1 1 1
## [3849] 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 3 4 1 1 1 1 1 1 1 3 1 3 1 1 1 4 4 1 4 4 1 1
## [3886] 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 4 1 1 4 1 2 1 1 1 1 1 4 1 1 1 1
## [3923] 4 1 4 4 4 1 1 4 4 1 1 1 1 4 4 4 1 1 4 4 1 4 1 1 1 1 1 1 1 1 4 1 1 4 1 1 1
## [3960] 4 1 4 1 1 1 3 1 4 1 1 1 4 2 1 1 1 1 1 1 1 1 1 1 1 1 1 4 3 3 3 4 3 4 4 3 3
## [3997] 3 3 4 3 4 1 4 1 3 3 1 3 4 3 4 4 4 3 3 3 3 4 4 1 1 3 3 1 4 4 3 4 4 4 4 3 3
## [4034] 4 3 3 3 2 3 2 4 3 4 4 4 3 4 4 4 3 4 4 4 4 4 2 4 4 4 4 4 4 4 3 4 4 4 4 4 1
## [4071] 4 4 4 4 4 4 3 3 4 3 3 3 4 4 3 1 4 4 4 4 3 3 3 4 3 3 4 4 4 4 4 4 3 4 4 3 4
## [4108] 4 3 3 4 4 4 4 4 4 4 3 3 4 4 4 4 4 3 1 1 1 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4
## [4145] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 3 4 3 4 4 4 4 3 3 4 4 3 4 1 4 1 1 4 3
## [4182] 3 4 4 4 4 1 4 4 3 3 1 3 4 4 4 4 4 4 1 1 4 1 1 3 3 2 1 2 1 1 1 1 1 1 1 1 1
## [4219] 1 1 2 1 4 1 1 4 1 1 1 2 2 1 1 1 2 1 1 1 1 1 2 1 1 2 2 4 2 2 1 3 1 1 1 1 1
## [4256] 4 2 1 4 1 1 1 4 1 1 1 1 1 1 1 2 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1
## [4293] 1 1 2 2 2 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 2 2 1 1 2 2 1 2 1 1 1 2
## [4330] 2 1 1 2 2 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4
## [4367] 4 4 4 4 4 4 4 4 4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 2 1 3 4 3 4 4 4 4
## [4404] 4 4 4 4 3 1 4 4 4 4 4 3 3 1 1 1 1 1 3 1 1 1 1 1 3 1 1 1 1 1 1 1 4 1 1 1 1
## [4441] 1 4 1 1 1 1 1 1 1 1 4 4 3 3 1 1 1 3 3 1 3 4 4 4 4 4 4 3 4 4 4 4 4 4 4 3 4
## [4478] 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 4 4 4 4 4 4 4
## [4515] 4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 2 1 4 4 4 4 4 4 4 4 2 1 1
## [4552] 1 1 1 2 4 4 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 3 3 3
## [4589] 4 4 3 1 4 3 3 4 3 3 3 1 1 1 2 3 3 2 3 2 4 4 4 1 1 1 1 1 1 4 1 1 1 1 1 1 1
## [4626] 1 1 1 1 1 1 1 1 2 1 1 1 1 4 4 4 4 4 4 4 1 3 4 4 4 4 3 3 4 3 4 4 3 4 4 4 3
## [4663] 4 4 3 3 4 4 4 4 3 4 1 1 1 2 1 1 1 2 2 2 1 2 2 2 1 1 2 1 1 2 1 2 1 1 2 1 1
## [4700] 1 1 2 2 1 2 1 1 4 1 2 2 1 1 2 1 2 2 1 2 4 2 2 2 1 1 1 1 2 1 1 1 1 2 1 1 1
## [4737] 1 1 1 1 2 2 1 1 1 2 1 1 1 1 1 2 1 1 2 1 2 2 1 1 2 2 2 1 2 2 2 2 2 2 2 2 1
## [4774] 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 2 1 1 1 1 2 1 1 1 1 1 1
## [4811] 2 1 2 1 2 1 1 2 2 1 2 2 1 2 1 2 1 1 2 1 2 2 1 4 4 1 4 1 1 1 1 1 3 4 4 3 3
## [4848] 3 3 4 3 3 3 4 3 4 4 3 1 3 4 2 4 3 1 1 3 1 4 1 1 1 4 3 4 1 1 1 3 1 4 4 1 1
## [4885] 1 4 4 1 3 1 4 2 4 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 3 1 1
## [4922] 1 3 3 1 1 3 3 3 3 1 3 4 4 1 4 4 4 1 1 2 1 1 2 2 2 1 1 1 4 4 4 4 1 4 4 4 4
## [4959] 4 4 4 4 4 4 4 4 1 4 1 4 4 4 1 1 4 3 3 1 3 1 3 1 1 4 4 4 4 1 1 4 2 4 4 4 3
## [4996] 3 1 3 1 1 1 3 1 1 2 1 1 1 4 4 1 3 4 4 3 4 4 3 4 3 2 2 2 2 2 2 1 2 1 2 1 2
## [5033] 1 2 1 1 1 1 1 2 1 2 1 2 2 1 1 1 2 2 1 1 2 2 2 2 2 1 2 2 1 2 1 2 2 2 2 2 1
## [5070] 1 1 2 2 1 2 2 1 1 2 2 2 2 2 2 2 2 2 1 2 2 1 2 1 2 2 1 1 1 1 2 2 1 2 1 1 2
## [5107] 2 2 2 1 2 1 2 2 2 2 2 1 2 2 2 1 1 1 2 2 2 2 2 2 1 2 2 2 1 2 2 2 1 2 1 2 1
## [5144] 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 2 1 2 1 2 2 2 2 3 2 2 2 2 1
## [5181] 1 2 1 2 1 1 1 1 1 4 1 1 1 1 1 2 2 2 1 2 2 1 2 2 2 1 2 1 2 2 1 1 1 2 2 2 1
## [5218] 2 1 2 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 2 2
## [5255] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 1 1 2
## [5292] 2 1 1 1 2 1 1 1 1 1 1 1 2 2 1 2 2 1 2 2 2 2 2 2 2 2 1 2 1 2 1 1 1 1 1 2 2
## [5329] 1 1 1 1 2 2 2 1 1 1 2 1 2 1 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1
## [5366] 1 1 1 2 1 2 1 1 1 2 2 2 2 1 2 2 2 1 2 2 2 2 2 2 1 2 1 1 2 2 2 1 2 2 2 3 1
## [5403] 2 1 1 2 2 1 2 2 2 1 2 2 1 1 2 1 1 2 2 2 2 1 2 1 2 2 2 1 1 2 1 2 2 2 2 2 2
## [5440] 2 1 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 2 2 1 1 1 2 1 1
## [5477] 2 2 2 2 2 2 2 2 2 1 2 2 1 2 2 1 2 3 4 4 4 3 4 4 3 4 4 4 1 4 4 4 3 4 1 4 3
## [5514] 4 3 4 3 3 4 4 4 3 3 4 3 4 4 4 3 4 1 4 3 3 1 4 1 1 3 1 3 3 3 1 3 1 1 1 3 2
## [5551] 4 4 1 3 3 1 1 3 3 1 4 4 4 4 3 1 3 3 4 3 4 1 1 1 4 4 4 1 4 1 4 1 3 1 3 4 4
## [5588] 4 4 4 4 4 4 4 4 4 4 4 4 1 4 4 4 4 4 4 4 1 1 4 4 4 4 4 1 4 4 4 1 4 4 1 4 4
## [5625] 4 4 4 4 4 1 1 1 4 4 4 1 1 4 1 3 3 1 4 1 4 1 1 4 1 4 4 1 1 4 3 1 3 4 3 3 4
## [5662] 4 4 4 4 1 1 1 1 1 1 4 2 3 4 1 4 3 3 4 3 1 3 4 4 3 4 3 3 3 1 3 4 3 4 4 4 4
## [5699] 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 3 1 1 1 4 1 1 1
## [5736] 1 1 1 1 1 3 1 1 1 1 1 1 1 2 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1
## [5773] 1 4 1 4 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 3 1 4 1 1 1 1 1 1 1 4 4 3 4 3 1 4 3
## [5810] 4 1 1 4 4 4 4 4 4 3 4 4 4 3 4 4 4 3 4 4 4 3 4 4 3 4 4 4 4 4 4 4 4 4 4 4 3
## [5847] 4 4 4 4 4 4 3 4 4 4 2 4 4 4 4 4 3 4 1 2 3 2 4 3 3 1 3 3 3 3 4 3 4 3 3 4 3
## [5884] 4 3 4 4 4 3 4 4 4 4 4 4 3 4 3 3 3 3 3 4 4 4 1 4 4 1 1 3 4 3 3 3 3 4 1 3 3
## [5921] 3 4 2 3 1 3 1 3 4 1 1 1 3 4 1 1 1 4 1 1 1 4 4 1 3 1 4 4 4 3 1 1 3 4 2 3 1
## [5958] 3 4 3 4 1 1 3 1 1 4 3 3 1 3 2 3 2 1 3 4 1 1 2 3 3 3 1 1 1 2 1 1 2 3 1 1 3
## [5995] 1 1 1 2 3 3 1 2 1 3 1 1 1 3 4 4 4 4 4 4 4 4 4 2 3 4 3 3 1 4 4 4 2 3 3 3 4
## [6032] 1 3 3 3 3 3 1 1 3 1 3 1 4 1 3 3 3 2 1 4 1 4 4 4 1 1 1 1 2 2 3 3 1 3 1 3 3
## [6069] 3 1 2 1 2 3 2 1 1 1 1 1 1 1 4 1 4 4 1 4 4 4 1 4 1 4 4 4 1 1 4 1 4 4 4 4 1
## [6106] 4 1 1 1 1 1 1 1 4 1 4 4 4 4 1 4 1 1 1 3 1 3 4 4 4 4 3 3 3 3 4 3 3 4 4 4 4
## [6143] 3 3 3 3 3 3 1 4 4 4 3 1 1 4 1 1 4 1 3 3 1 3 4 3 1 1 1 3 1 1 1 3 1 1 1 1 1
## [6180] 1 1 1 1 3 3 1 1 4 1 1 1 1 1 4 1 2 3 4 3 3 1 3 1 1 1 1 1 1 1 1 3 2 2 1 1 1
## [6217] 4 3 4 3 4 4 3 1 1 3 1 2 2 1 1 2 3 2 2 2 1 3 2 1 2 2 2 1 1 2 2 1 1 1 1 1 2
## [6254] 2 1 1 2 1 2 1 2 1 1 2 1 2 1 1 2 2 2 1 1 1 1 1 4 1 2 3 2 1 2 2 1 2 1 1 1 1
## [6291] 1 1 1 1 2 1 1 4 2 1 1 1 2 2 2 4 2 3 2 4 1 1 2 1 1 1 4 4 1 2 2 2 3 2 2 3 1
## [6328] 1 1 1 3 2 1 2 3 1 1 1 2 1 1 1 2 2 2 2 2 2 1 2 1 2 1 2 2 2 2 1 2 1 2 1 2 2
## [6365] 1 1 1 2 4 1 1 2 1 1 1 2 2 2 1 2 2 2 2 2 2 2 2 1 2 2 1 1 2 1 1 1 2 2 1 1 1
## [6402] 1 2 2 1 1 1 3 2 2 1 2 1 1 2 2 1 2 2 2 1 1 1 4 2 1 1 2 1 1 1 1 1 1 1 1 1 1
## [6439] 1 1 2 1 1 1 2 1 2 1 1 1 1 1 1 2 1 1 1 2 1 1 2 1 1 1 1 1 1 1 2 2 1 2 2 1 2
## [6476] 1 2 2 1 2 1 2 1 1 2 2 2 2 2 2 2 2 4 2 2 2 2 2 2 1 2 2 2 2 2 1 2 1 2 2 1 2
## [6513] 2 2 1 2 1 2 1 2 2 2 1 2 2 1 2 1 2 1 1 2 2 2 2 2 2 2 1 2 2 1 1 1 2 2 2 2 1
## [6550] 1 2 2 1 1 1 1 1 1 2 1 2 1 2 2 2 1 1 2 2 1 1 1 1 2 2 1 2 2 1 2 2 1 1 1 1 2
## [6587] 1 1 4 1 1 1 2 2 2 2 1 2 2 1 4 2 1 2 2 2 2 1 1 2 1 2 2 1 1 2 1 1 1 1 1 2 1
## [6624] 2 1 2 2 1 2 1 1 2 3 4 3 3 4 3 3 3 4 1 1 3 2 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1
## [6661] 4 4 1 1 1 1 1 1 3 3 1 4 1 1 1 1 4 4 4 4 3 3 3 4 4 2 1 2 2 2 2 1 2 2 3 2 2
## [6698] 2 3 3 2 2 2 3 1 4 3 1 4 3 3 1 3 3 1 1 3 3 3 1 3 3 1 1 3 1 3 3 3 3 3 1 4 1
## [6735] 4 4 4 1 1 1 1 2 3 2 1 2 3 4 1 1 4 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
## [6772] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
## [6809] 4 4 4 4 4 2 4 4 4 3 3 4 3 4 2 1 1 1 1 3 1 1 1 3 1 3 3 1 3 3 4 1 3 1 1 1 1
## [6846] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1
## [6883] 1 1 2 4 1 1 1 1 1 1 1 3 1 1 1 4 1 1 1 1 1 1 1 3 1 1 4 4 4 3 3 1 1 3 4 4 2
## [6920] 2 1 1 4 1 1 1 2 3 1 4 2 4 2 3 3 4 3 3 4 4 4 4 1 4 4 4 4 4 4 1 4 4 1 1 1 1
## [6957] 4 4 1 4 1 1 4 4 4 1 1 1 2 1 4 1 4 4 4 4 4 4 4 1 1 4 1 4 1 4 4 4 4 4 1 1 4
## [6994] 1 4 4 1 1 1 4 1 4 1 1 4 1 4 1 4 1 4 4 1 4 4 4 1 4 4 4 1 1 4 4 1 1 4 4 4 4
## [7031] 4 1 4 1 4 4 4 1 4 4 1 1 1 4 4 1 4 1 1 1 4 4 4 4 1 1 3 4 1 4 4 1 1 4 4 1 4
## [7068] 1 4 4 4 1 1 1 4 4 4 4 4 4 4 4 1 4 4 4 3 4 1 4 4 1 4 4 1 4 3 1 4 1 4 1 4 4
## [7105] 4 4 4 4 1 1 1 1 1 1 4 1 1 1 4 1 4 1 1 3 4 1 4 1 1 1 4 1 4 1 4 1 4 4 1 1 4
## [7142] 1 4 1 1 4 1 4 4 1 1 4 4 4 4 4 3 2 1 4 4 4 4 4 4 4 4 1 4 1 1 1 1 1 1 1 4 4
## [7179] 4 1 1 1 4 4 4 2 4 4 1 4 1 1 1 1 1 1 4 4 4 4 3 4 1 4 4 3 3 4 1 1 1 4 1 4 4
## [7216] 1 3 1 1 1 1 4 1 1 1 4 1 1 1 4 4 3 1 1 4 4 4 4 1 1 4 1 4 4 1 1 1 4 4 4 4 4
## [7253] 4 1 4 1 2 2 3 4 1 2 4 1 1 4 4 4 4 4 4 4 1 4 4 3 4 4 1 3 4 4 1 4 4 1 4 4 4
## [7290] 4 1 1 4 4 4 4 4 4 4 1 4 1 1 4 4 4 4 4 1 4 1 1 1 1 4 1 1 4 4 4 4 4 4 4 1 4
## [7327] 1 1 1 4 4 1 1 1 4 1 4 4 4 1 1 1 4 1 1 1 4 1 4 1 4 4 1 4 1 1 1 4 4 1 4 1 4
## [7364] 4 4 4 4 4 4 1 4 4 4 4 4 4 4 1 4 4 4 4 1 4 4 4 4 4 4 4 4 4 4 1 1 4 4 1 4 1
## [7401] 1 4 4 4 1 4 1 4 1 4 1 4 1 1 1 4 1 1 4 1 4 4 4 1 4 1 1 4 1 4 4 1 4 1 1 4 4
## [7438] 1 1 4 4 1 4 4 4 4 1 4 4 4 4 4 4 4 1 1 4 4 1 1 1 1 1 4 4 1 4 1 4 4 4 4 1 4
## [7475] 4 1 4 1 4 4 4 4 4 4 4 1 4 1 4 4 1 4 4 4 4 4 1 4 4 4 4 1 4 4 1 1 4 1 4 1 1
## [7512] 4 4 1 1 4 4 1 4 4 1 2 4 1 1 1 1 4 4 1 4 4 1 1 4 4 4 1 4 4 4 1 1 4 1 4 4 4
## [7549] 1 1 4 4 4 4 1 1 1 4 1 1 1 4 4 4 4 4 4 4 4 1 1 1 4 1 4 1 4 4 1 4 1 1 1 1 4
## [7586] 4 4 1 4 1 1 4 1 1 4 4 4 4 4 1 4 4 4 1 1 4 4 4 1 4 4 1 4 4 1 1 4 4 4 4 1 4
## [7623] 1 4 1 1 1 1 4 4 4 4 4 1 4 4 1 4 4 4 1 1 4 4 4 1 1 1 1 4 4 1 4 4 4 1 4 4 1
## [7660] 1 1 4 1 1 1 1 1 4 4 4 4 1 4 4 1 1 1 4 1 4 4 1 1 1 1 1 4 1 4 4 4 4 1 1 4 1
## [7697] 4 1 1 4 4 1 1 1 1 4 4 4 4 4 4 4 4 1 4 4 4 1 4 1 4 4 4 4 4 1 1 1 1 4 4 4 4
## [7734] 1 4 1 4 4 4 1 4 4 1 1 1 1 1 4 4 1 4 4 4 3 4 4 1 4 1 1 1 1 4 1 1 4 4 4 1 1
## [7771] 4 4 1 4 3 4 1 4 1 1 4 1 1 4 4 4 4 4 1 1 1 1 1 1 4 4 4 1 1 1 4 1 4 4 1 1 4
## [7808] 4 4 4 4 1 4 4 3 4 4 4 4 1 4 4 4 1 4 1 1 1 4 4 4 4 1 4 4 1 4 1 1 1 4 4 1 4
## [7845] 4 4 1 1 4 1 1 1 1 4 1 1 1 1 3 1 1 1 1 1 1 4 4 1 4 4 1 1 4 4 1 4 1 4 1 4 4
## [7882] 1 1 4 4 1 1 4 1 4 4 4 4 1 4 1 4 1 1 4 4 1 4 1 1 4 4 4 1 1 4 1 4 4 4 1 1 1
## [7919] 1 1 4 1 4 1 1 4 4 4 1 1 4 1 4 1 1 4 4 4 1 1 4 4 4 4 4 4 1 1 4 3 2 1 1 3 4
## [7956] 3 1 3 2 4 1 1 1 1 1 1 1 1 1 1 4 4 1 1 1 1 1 1 1 3 1 1 4 4 1 1 1 1 4 1 1 1
## [7993] 1 1 1 1 2 1 4 2 1 3 1 1 1 1 1 1 2 1 3 3 1 4 2 3 4 4 4 3 3 3 3 3 3 3 4 1 4
## [8030] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
## [8067] 4 3 4 4 4 4 3 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
## [8104] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 1 1 3 3 1 3
## [8141] 4 3 3 3 4 1 1 3 3 3 3 3 3 3 4 4 1 3 1 4 3 3 1 3 3 3 4 4 4 3 4 4 4 4 4 4 4
## [8178] 1 4 3 4 4 4 1 3 4 4 4 4 1 4 4 4 3 4 4 4 1 3 4 1 4 1 4 4 1 4 4 1 1 1 1 1 3
## [8215] 2 4 1 1 4 4 2 1 2 2 1 2 3 3 4 4 4 3 4 4 3 3 3 4 3 3 4 4 4 4 4 3 2 3 3 1 4
## [8252] 1 4 1 1 2 2 4 1 4 1 2 3 1 2 1 3 2 3 3 1 1 1 1 4 3 3 4 4 1 1 1 1 2 3 1 1 3
## [8289] 3 4 4 4 4 4 4 1 1 4 4 1 1 4 4 1 1 1 4 1 4 3 4 3 3 2 2 3 2 2 1
##
## Within cluster sum of squares by cluster:
## [1] 4483.627 5171.239 3777.833 2608.126
## (between_SS / total_SS = 61.4 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
## List of 9
## $ cluster : int [1:8319] 3 4 4 1 1 1 4 1 3 2 ...
## $ centers : num [1:4, 1:5] 0.6031 1.1238 -0.6439 -0.9857 -0.0967 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:4] "1" "2" "3" "4"
## .. ..$ : chr [1:5] "estrato" "preciom" "areaconst" "banios" ...
## $ totss : num 41590
## $ withinss : num [1:4] 4484 5171 3778 2608
## $ tot.withinss: num 16041
## $ betweenss : num 25549
## $ size : int [1:4] 3389 1173 998 2759
## $ iter : int 4
## $ ifault : int 0
## - attr(*, "class")= chr "kmeans"
En el cuadro anterior podemos observar la ubicación de cada una de las viviendas de acuerdo al clúster definido por el modelo.
Se generan 4 cluster con características diferentes con una varianza explicada del 61,4%
Podemos observar en la gráfica muy bien las 4 agrupaciones
Ahora realizamos el gráfico de dendogramas para observar de una manera diferente las acomodaciones que realizó el modelo
res4 <- hcut(vivienda2, k = 4, stand = TRUE)
fviz_dend(res4, rect = TRUE, cex = 0.5,
k_colors = c("red","#2E9FDF","green","black"))## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
## Please report the issue at <]8;;https://github.com/kassambara/factoextra/issueshttps://github.com/kassambara/factoextra/issues]8;;>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
También podemos observar la forma en que los 4 clúster están distribuidos en cada agrupación y las viiendas correspondientes.
Podemos observar la media de cada uno de los cluster en las variables seleccionadas y es posible identificar características de cada uno de estos conglomerados
Cluster 1: Viviendas de estrato alto con promedio de 3 baños, 3 habitaciones, pequeñas y de precios bajos Cluster 2: Viviendas de estrato alto con promedio de 5 baños, 4 habitaciones, grandes y de precios altos Cluster 3: Viviendas de estrato bajo con promedio de 4 baños, 6 habitaciones, grandes y de precios intermedios Cluster 4: Viviendas de estrato bajo con promedio de 2 baños, 3 habitaciones, pequeñas y de precios bajos
Con esta información es fácil determinar información asociada a las viviendas y al estrato socieconómico en el que se ubican y de esta manera facilitar la toma de decisiones por parte de la constructora.
Examinar la relación entre las variables categóricas (tipo de vivienda, zona y barrio) y las variables numéricas (precio, área construida, número de parqueaderos, baños, habitaciones) para identificar patrones de comportamiento del mercado inmobiliario.
Se construye entonces una tabla cruzada con las variables involucradas en el análisis
## Warning: package 'FactoMineR' was built under R version 4.2.3
##
## 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
En esta tabla se puede observar la cantidad de viviendas que se encuentran por cada cruce de la relación entre zona y estrato.
Se ejecuta la prueba Chi-Cuadrado para validar el supuesto de independencia entre los datos
##
## Pearson's Chi-squared test
##
## data: tabla
## X-squared = 3830.4, df = 12, p-value < 2.2e-16
El resultado indica que se rechaza la hipótesis de independencia de las variables (p-value: 0.0000), indicando grado tipo de relación entre ellas.
Finalmente se procede a realizar el análisis de correspondencia que consistes en estimar las coordenadas para cada uno de los niveles de ambas variables y representarlas en un plano cartesiano
## Warning: package 'gridExtra' was built under R version 4.2.3
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
Se establecen las siguientes relaciones:
El estrato 6 se ubica en la Zona Oeste Los estratos 4 y 5 se ubican principalmente en la Zona Sur y Norte El estrato 3 está presente en las Zonas Oriente y Centro
## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.32215213 69.965515 69.96551
## dim 2 0.12745096 27.680002 97.64552
## dim 3 0.01084108 2.354483 100.00000
fviz_screeplot(resultados_ac, addlabels = TRUE, ylim = c(0, 80.0))+ggtitle("")+
ylab("Porcentaje de varianza explicado") + xlab("Ejes")Los resultados indican que la primera componente resumen el 70% y los dos primeros componentes prepresentados en el plano factorial, mientras que los dos primeros ejes resumen un 97.7% de los datos.
No tiene sentido realizar la prueba con los barrios ya que es definitivo que cada barrio pertenece únicamente a una zona de la ciudad.
Con esta información es fácil determinar geográficamente la ubicación de las viviendas y por medio de la información de los ejes encontramos esa cercanía de correspondencia para cada dimensión.
Por lo tanto, sí existe una relación entre las variables categorías zona y estrato.
De acuerdo al estrato en el cual desee vivir el cliente, es posible recomendar de forma acertada zonas relacionadas a su búsqueda
COn esta información, es posible relacionar las variables categóricas incluidas para generar información valiosa para la inmobiliaria y mejores oportunidades para sus clientes.