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.

Analisis de componentes principales (PCA):

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

Observamos los valores nulos de cada tabla para validar que podemos hacer con ellos.

na_zona = sum(is.na(vivienda$zona))
na_piso = sum(is.na(vivienda$piso))
na_estrato = sum(is.na(vivienda$estrato))
na_preciom = sum(is.na(vivienda$preciom))
na_areaconst = sum(is.na(vivienda$areaconst))
na_parqueaderos = sum(is.na(vivienda$parqueaderos))
na_banios = sum(is.na(vivienda$banios))
na_habitaciones = sum(is.na(vivienda$habitaciones))
na_tipo = sum(is.na(vivienda$tipo))
na_barrio = sum(is.na(vivienda$barrio))

print(paste("Nulos en Zona: ",na_zona))
## [1] "Nulos en Zona:  3"
print(paste("Nulos en Piso: ",na_piso))
## [1] "Nulos en Piso:  2638"
print(paste("Nulos en Estrato: ",na_estrato))
## [1] "Nulos en Estrato:  3"
print(paste("Nulos en precio: ",na_preciom))
## [1] "Nulos en precio:  2"
print(paste("Nulos en area construida: ",na_areaconst))
## [1] "Nulos en area construida:  3"
print(paste("Nulos en parqueaderos: ",na_parqueaderos))
## [1] "Nulos en parqueaderos:  1605"
print(paste("Nulos en banios: ",na_banios))
## [1] "Nulos en banios:  3"
print(paste("Nulos en habitaciones: ",na_habitaciones))
## [1] "Nulos en habitaciones:  3"
print(paste("Nulos en tipo: ",na_tipo))
## [1] "Nulos en tipo:  3"
print(paste("Nulos en barrio: ",na_barrio))
## [1] "Nulos en barrio:  3"

Posterior a esto se procede a reemplazar los valores nulos de cada columna por su respectiva media, las columnas “Piso” y “Parqueadero” se eliminaran debido a que tienen demasiados nalores nulos. Adicionalmente, las variables categoricas se transforman en numericas dado que para hacer el analisis PCA se uitlizan de esta forma.

vivienda$barrio = toupper(vivienda$barrio)
vivienda$tipo = toupper(vivienda$tipo)
vivienda$zona = toupper(vivienda$zona)


vivienda$estrato[is.na(vivienda$estrato)] = mean(vivienda$estrato)
vivienda$preciom[is.na(vivienda$preciom)] = mean(vivienda$preciom)
vivienda$banios[is.na(vivienda$banios)] = mean(vivienda$banios)
vivienda$habitaciones[is.na(vivienda$habitaciones)] = mean(vivienda$habitaciones)
vivienda$areaconst[is.na(vivienda$areaconst)] = mean(vivienda$areaconst)

Vivienda_trasnformada = dummy_cols(vivienda, select_columns = c("zona", "estrato", "tipo"))


columnasEliminar = c("piso","parqueaderos")
vivienda = vivienda[ ,!(names(vivienda) %in% columnasEliminar)]

head(vivienda)
## # A tibble: 6 × 11
##      id zona         estrato preciom areaconst banios habitaciones tipo   barrio
##   <dbl> <chr>          <dbl>   <dbl>     <dbl>  <dbl>        <dbl> <chr>  <chr> 
## 1  1147 ZONA ORIENTE       3     250        70      3            6 CASA   20 DE…
## 2  1169 ZONA ORIENTE       3     320       120      2            3 CASA   20 DE…
## 3  1350 ZONA ORIENTE       3     350       220      2            4 CASA   20 DE…
## 4  5992 ZONA SUR           4     400       280      5            3 CASA   3 DE …
## 5  1212 ZONA NORTE         5     260        90      2            3 APART… ACOPI 
## 6  1724 ZONA NORTE         5     240        87      3            3 APART… ACOPI 
## # ℹ 2 more variables: longitud <dbl>, latitud <dbl>

Tomamos las columnas mas relevantes para realizar el diagrama de cajas y posteriormente sacar los datos del nalisis de componentes principales

columnas = Vivienda_trasnformada[, c("areaconst", "habitaciones", "estrato","longitud","latitud")]


# -------DISTRIBUCION DE PRECIO POR ZONA
boxplot(vivienda$preciom ~ vivienda$zona, data = vivienda, col = c("yellow", "gray", "green","red","orange" ), ylab = "Precio", xlab = "Zona")

chart.Correlation(columnas, histogram = TRUE, method = "pearson")
## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

## Warning in par(usr): argument 1 does not name a graphical parameter

De acuerdo con los anteriores graficos podemos observar las relaciones que existen entre las columnas seleccionadas utilizando especificamente el metodo Pearson, cabe aclarar que este solo funciona con variables numericas y ayuda a identificar relaciones y patrones importantes en los datos, evidenciando que por existe por lo menos una relacion fuerte entre el area construida y el estrato del barrio donde esta se encuentra.Igualmente, entre mas habitaciones tenga es su precio tiende a ser mas costoso.

vivienda_escalado = scale(columnas)
head(vivienda_escalado)
##       areaconst habitaciones    estrato   longitud    latitud
## [1,] -0.7339949    1.6406840 -1.5872276  0.9728466  0.3793708
## [2,] -0.3842568   -0.4147626 -1.5872276  0.9331875  0.3763219
## [3,]  0.3152194    0.2703863 -1.5872276  0.7607566  0.4225243
## [4,]  0.7349051   -0.4147626 -0.6156201 -0.6549016  0.4070454
## [5,] -0.5940997   -0.4147626  0.3559875  0.8682385  0.9678065
## [6,] -0.6150839   -0.4147626  0.3559875  0.6670691 -1.1242009
pca = PCA(vivienda_escalado, scale.unit = TRUE)
## Warning in PCA(vivienda_escalado, scale.unit = TRUE): Missing values are
## imputed by the mean of the variable: you should use the imputePCA function of
## the missMDA package

summary(pca)
## 
## Call:
## PCA(X = vivienda_escalado, scale.unit = TRUE) 
## 
## 
## Eigenvalues
##                        Dim.1   Dim.2   Dim.3   Dim.4   Dim.5
## Variance               1.789   1.407   0.835   0.595   0.374
## % of var.             35.786  28.132  16.696  11.907   7.478
## Cumulative % of var.  35.786  63.919  80.615  92.522 100.000
## 
## Individuals (the 10 first)
##                  Dist    Dim.1    ctr   cos2    Dim.2    ctr   cos2    Dim.3
## 1            |  2.616 | -1.397  0.013  0.285 |  1.681  0.024  0.413 | -0.848
## 2            |  1.963 | -1.771  0.021  0.814 |  0.433  0.002  0.049 | -0.397
## 3            |  1.858 | -1.154  0.009  0.386 |  1.203  0.012  0.419 | -0.403
## 4            |  1.299 |  0.127  0.000  0.009 |  0.196  0.000  0.023 |  0.437
## 5            |  1.531 | -0.997  0.007  0.424 | -0.100  0.000  0.004 |  0.807
## 6            |  1.545 | -0.202  0.000  0.017 | -0.854  0.006  0.306 | -0.984
## 7            |  1.262 | -1.211  0.010  0.922 | -0.287  0.001  0.052 | -0.141
## 8            |  0.976 |  0.478  0.002  0.240 | -0.363  0.001  0.139 | -0.630
## 9            |  2.394 | -0.379  0.001  0.025 |  1.669  0.024  0.486 |  0.847
## 10           |  2.342 | -0.099  0.000  0.002 |  1.045  0.009  0.199 |  1.584
##                 ctr   cos2  
## 1             0.010  0.105 |
## 2             0.002  0.041 |
## 3             0.002  0.047 |
## 4             0.003  0.113 |
## 5             0.009  0.278 |
## 6             0.014  0.406 |
## 7             0.000  0.012 |
## 8             0.006  0.417 |
## 9             0.010  0.125 |
## 10            0.036  0.458 |
## 
## Variables
##                 Dim.1    ctr   cos2    Dim.2    ctr   cos2    Dim.3    ctr
## areaconst    |  0.675 25.467  0.456 |  0.576 23.598  0.332 |  0.067  0.543
## habitaciones |  0.372  7.734  0.138 |  0.810 46.659  0.656 | -0.186  4.128
## estrato      |  0.719 28.888  0.517 | -0.368  9.648  0.136 |  0.322 12.398
## longitud     | -0.691 26.682  0.477 |  0.365  9.462  0.133 | -0.220  5.795
## latitud      | -0.448 11.228  0.201 |  0.387 10.633  0.150 |  0.802 77.135
##                cos2  
## areaconst     0.005 |
## habitaciones  0.034 |
## estrato       0.104 |
## longitud      0.048 |
## latitud       0.644 |
zona = as.data.frame(pca$ind$coord[, 1:2])
zona$zona = vivienda$zona

De lo anterior podemos deducir lo siguiente: el eigenvalue de Dim.1 es 1.788, lo que significa que esta dimensión explica 1.788 unidades de varianza en los datos originales. Dim.1 explica 1.788 unidades de varianza, Dim.2 explica 1.406 unidades de varianza, y así sucesivamente.

Dim.1 explica el 35.786% de la varianza totales de los datos, con Dim.2 el 63.919%, con Dim.3 el 80.615%, con Dim.4 el 92.522% y con el Dim.5 se exlicarian el total de la varianza.

Tambien podemos observar los siguientes resultados: para areaconst y estrato, sus contribuciones son altas en Dim.1, lo que sugiere que estas variables tienen un fuerte efecto en este componente. Para habitaciones y latitud, sus valores de cos2 son altos en Dim.2 y Dim.3, respectivamente, lo que sugiere que estas variables están bien representadas en estos componentes.

ggplot(zona, aes(x = Dim.1, y = Dim.2, color = zona)) +
  geom_point() +
  scale_color_manual(values = c("ZONA NORTE" = "red", "ZONA SUR" = "white", "ZONA ORIENTE" = "brown", "ZONA OESTE" = "gray", "ZONA CENTRO" = "orange"))

En el anterior grafico se pueden observar los datos distribuidos en funcion de la variable Zona. Igualmente, teniendo en cuenta los resultados del PCA, se concluye que tanto la Dimensión 1 como la Dimensión 2 están fuertemente relacionadas con la Zona Sur y la Zona Norte de la ciudad, sin perder de vista la Zona Oriente que no tiene una alta volumetria, pero si tiene una influencia importante en la Dimensión 2.

Analisis de Conglomerados:

Para realizar el analisis de conglomerados incialmente se toman las variables preciom, areaconst y estrato, se les eliminan los valores nulos y se insertan en un dataframe. Posterior a eso se utiliza una funcion para calcular la distancia euclidiana entre los puntos, esto es útil para realizar análisis de agrupamiento (clustering), dimensionamiento multidimensional (multidimensional scaling) u otras técnicas de análisis de datos.

df2 =  vivienda %>% select(preciom, areaconst,estrato)
df2Unido = scale(df2)
df2Unido = na.omit(df2Unido)
df2Unido = as.data.frame(df2Unido)

Posteriormente se toma el numero de conglomerados deseados y se utiliza la funcion K-Means para el analisis de clustering

set.seed(123)
k = 4  # Número de conglomerados deseado
kmeans_model <- kmeans(df2Unido, centers = k)
print(kmeans_model)
## K-means clustering with 4 clusters of sizes 974, 1005, 3299, 3041
## 
## Cluster means:
##       preciom  areaconst    estrato
## 1  0.23383530  1.2193340 -0.3123668
## 2  2.16743029  1.5258555  1.1816122
## 3 -0.09233985 -0.3288199  0.6811329
## 4 -0.69091672 -0.5380925 -1.0293760
## 
## Clustering vector:
##    [1] 4 4 4 1 3 3 4 3 3 1 2 1 1 3 4 3 3 4 3 4 4 2 3 4 3 3 3 4 3 1 4 4 4 3 1 3 4
##   [38] 3 4 4 4 4 1 4 4 4 4 4 3 3 3 4 4 4 3 4 4 3 3 1 1 4 3 1 1 4 4 3 3 4 4 3 1 4
##   [75] 3 3 3 3 3 3 4 1 1 3 4 1 1 4 3 1 4 1 3 4 4 3 4 4 2 3 2 1 3 3 3 2 3 2 1 1 1
##  [112] 4 1 1 3 3 1 2 3 4 1 1 2 1 3 1 4 4 3 1 1 1 3 1 4 3 1 1 1 4 4 2 1 3 3 1 4 2
##  [149] 1 2 2 3 2 3 1 4 3 4 4 3 3 1 4 4 4 2 4 4 4 3 4 4 2 4 4 4 4 4 2 4 2 3 2 2 4
##  [186] 4 4 2 4 4 2 2 2 4 4 4 4 4 3 2 4 4 2 4 3 4 4 4 3 3 3 4 3 4 3 3 2 4 4 2 2 3
##  [223] 3 3 4 2 2 2 2 2 2 2 3 2 2 4 2 4 2 2 3 3 3 2 3 2 3 2 2 2 2 4 3 3 2 4 3 4 2
##  [260] 4 2 4 2 2 2 4 2 2 2 2 2 4 4 4 1 1 1 1 4 1 4 4 4 4 1 4 4 1 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 3 4 1 4 1 4 4 1 4 4 4 4 4 4 4 1 4 4
##  [334] 4 4 4 4 4 4 1 4 3 3 3 1 3 4 3 3 1 4 4 4 4 4 4 1 1 4 4 4 1 4 4 4 4 3 2 2 2
##  [371] 2 4 3 2 1 3 3 1 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 3 3 2 2 3 3 3 2 3 3 3 2 3
##  [408] 2 2 3 4 4 4 4 4 4 4 4 1 1 3 4 4 4 4 4 4 4 4 1 4 4 1 4 4 4 4 4 4 4 4 4 2 3
##  [445] 3 3 3 3 3 1 3 4 3 4 1 2 1 3 1 3 2 1 3 2 3 2 4 3 3 2 1 3 3 3 3 3 3 3 3 2 1
##  [482] 3 3 3 3 3 3 3 3 3 2 2 2 2 3 1 3 3 3 3 3 3 3 3 3 4 1 4 4 4 4 4 4 4 4 4 4 4
##  [519] 4 4 4 4 4 4 3 4 4 4 4 4 4 3 4 3 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 2 1 3 4 4 1
##  [556] 4 1 4 4 4 4 4 4 4 4 3 3 4 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 4 4 1 1 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 4 4
##  [667] 4 4 4 4 4 4 3 4 4 1 4 4 4 4 4 2 2 2 3 3 3 3 4 4 1 4 3 4 4 3 3 4 1 4 4 4 4
##  [704] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 3 3 4 3 1 4 4 4 4 4 4 4 4 3 3 2 2
##  [741] 3 2 3 2 1 3 3 2 3 2 2 1 1 4 4 2 2 4 3 3 4 4 4 3 4 4 4 4 4 4 1 4 4 4 4 4 1
##  [778] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 3 1 3 3 1 3 4 3 3 1 3 4 3 4 3 4 3 4
##  [815] 3 1 3 3 4 3 4 4 3 1 3 3 1 3 3 4 4 4 4 3 4 4 4 4 4 4 3 4 4 4 4 4 1 4 3 4 3
##  [852] 4 4 4 4 4 4 1 4 4 4 3 4 1 1 4 1 3 1 4 3 3 4 4 4 4 4 4 3 4 3 4 4 4 4 4 1 4
##  [889] 1 3 4 4 3 4 4 4 3 1 4 4 4 1 4 4 4 4 4 3 4 3 4 3 3 3 4 4 4 4 4 4 3 4 4 1 3
##  [926] 4 3 3 3 3 3 1 3 3 4 3 3 4 1 4 3 1 3 3 3 3 3 3 4 3 3 3 3 3 3 1 3 4 3 3 4 3
##  [963] 1 3 4 3 3 3 4 3 3 3 3 3 1 3 3 1 3 3 4 3 3 2 3 4 3 2 3 4 3 3 4 3 3 3 4 3 2
## [1000] 4 1 1 3 4 2 4 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 1 1
## [1037] 1 1 1 4 4 1 4 4 4 4 4 4 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3
## [1074] 3 3 3 3 3 3 3 1 4 4 3 3 3 3 1 3 3 3 3 3 3 3 3 3 3 4 3 3 3 4 4 4 4 4 4 1 1
## [1111] 4 4 4 4 4 4 1 4 4 4 4 4 4 4 4 1 4 4 4 1 1 4 1 1 4 1 4 1 4 4 1 1 1 1 4 4 4
## [1148] 1 4 3 4 4 4 1 1 4 4 1 4 4 4 1 4 4 4 4 4 4 1 4 4 4 1 4 4 1 4 4 3 1 4 4 4 4
## [1185] 4 4 4 1 4 4 4 1 4 4 4 1 4 4 1 4 4 4 4 4 3 4 4 4 3 4 4 4 3 4 4 4 4 4 4 3 3
## [1222] 4 4 4 3 3 3 4 3 3 3 4 3 4 4 4 4 3 4 4 4 3 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4
## [1259] 4 4 4 4 4 3 3 1 4 3 1 1 3 3 3 3 1 3 4 4 4 4 4 4 4 4 4 4 1 4 4 4 1 4 4 4 4
## [1296] 4 3 4 2 3 4 2 3 2 3 3 3 3 3 2 3 3 3 3 3 3 2 3 3 2 3 3 3 1 2 2 2 3 3 3 2 3
## [1333] 2 3 2 3 3 2 3 2 2 2 2 3 2 2 3 3 3 2 2 3 2 2 1 2 2 1 1 2 3 3 2 2 2 2 2 2 3
## [1370] 2 3 3 2 2 3 2 2 2 3 2 3 3 3 2 3 3 2 2 2 2 2 3 2 2 2 2 3 2 2 2 3 2 2 2 2 2
## [1407] 2 3 2 3 2 3 2 3 3 2 2 3 3 3 3 2 2 2 2 3 2 2 2 3 2 2 2 3 3 2 2 2 3 3 3 2 2
## [1444] 3 3 3 3 2 2 3 3 2 2 3 2 2 2 3 2 2 2 2 2 2 2 3 2 2 2 3 2 2 2 2 3 2 2 2 2 2
## [1481] 2 2 3 2 3 3 3 2 2 2 3 2 2 3 2 1 2 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 2 2 4 3
## [1518] 3 2 2 2 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 2
## [1555] 2 2 3 3 3 3 2 3 2 2 3 3 3 2 3 2 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3
## [1592] 3 2 3 3 3 3 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [1629] 3 3 3 2 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 2 2 3 3 2 3 3 3 3 3 3 3 3 3 3 2 3
## [1666] 2 3 3 3 3 3 3 3 3 4 4 3 3 3 3 3 3 3 3 2 3 2 3 2 3 2 3 1 3 3 3 3 2 3 3 3 3
## [1703] 2 3 3 3 3 3 3 3 3 3 2 3 3 3 2 2 2 3 3 3 3 3 2 3 2 3 3 2 2 2 3 2 2 2 2 2 2
## [1740] 2 4 2 2 3 3 2 2 3 2 2 2 2 2 2 2 2 3 1 3 2 2 2 3 3 3 3 3 3 3 2 2 2 2 2 3 2
## [1777] 3 3 2 2 3 3 3 3 3 2 3 2 2 2 2 3 2 2 3 3 2 2 3 2 2 3 3 2 2 2 3 3 2 2 3 1 3
## [1814] 2 2 3 2 2 2 2 2 2 2 2 2 2 3 3 3 3 2 2 2 3 3 3 3 2 3 4 4 4 4 4 4 4 4 4 4 4
## [1851] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 1 4 1 4 4 4 4 4 4 4 1 4 4 4 4 4 4 1
## [1888] 4 4 4 4 4 4 4 4 4 1 4 4 4 4 3 2 2 2 3 2 1 3 2 1 2 2 2 2 2 3 1 1 2 3 2 2 4
## [1925] 4 4 3 4 4 1 4 4 4 4 4 4 4 4 4 4 1 3 1 4 4 1 1 1 4 4 1 1 1 1 4 4 4 4 4 4 4
## [1962] 4 4 4 4 4 4 4 4 4 4 1 1 1 1 4 1 1 4 4 4 1 1 4 1 4 4 4 1 4 3 3 3 3 2 2 2 3
## [1999] 3 3 3 2 3 3 2 3 3 3 3 3 3 3 2 2 3 3 4 3 3 3 3 3 3 3 3 3 2 3 3 3 3 2 3 3 2
## [2036] 3 2 3 3 3 2 3 3 3 3 3 3 2 2 2 3 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3
## [2073] 2 4 4 4 4 1 4 1 4 4 1 4 4 4 4 1 3 3 1 1 3 3 3 1 1 4 3 3 1 3 3 3 3 3 4 3 3
## [2110] 3 3 1 4 3 1 3 3 3 3 3 3 3 3 3 1 3 1 3 3 2 3 1 4 4 4 1 4 4 4 1 4 4 1 4 1 4
## [2147] 1 4 1 4 4 4 1 4 4 1 4 1 1 1 4 1 3 3 3 1 3 1 3 1 1 4 3 4 4 1 1 1 4 4 3 3 1
## [2184] 3 1 4 3 3 3 1 1 3 4 1 2 3 3 3 3 3 3 3 3 3 4 1 1 2 3 3 1 4 4 4 4 4 4 4 4 4
## [2221] 4 4 4 4 3 4 3 4 4 4 1 3 4 4 4 3 3 4 4 4 4 4 4 4 4 1 4 4 4 4 4 4 4 4 4 4 3
## [2258] 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 1 1 4 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1
## [2295] 3 1 4 4 1 1 3 4 4 4 3 4 4 1 1 3 4 3 4 4 4 3 3 4 4 4 4 4 4 4 1 4 4 4 1 4 4
## [2332] 4 3 4 4 1 3 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 3 4 4 4 4 3 4 4 4 4
## [2369] 4 4 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 1 4 3 4 4 4 4 4 3 4 3 1 1 4 4 4 4 4 4 3
## [2406] 4 4 4 3 4 4 3 3 4 3 3 4 4 4 4 4 3 3 3 3 4 1 3 2 1 1 1 4 1 4 1 4 4 4 4 4 4
## [2443] 1 4 4 1 1 1 3 1 4 4 4 4 4 1 4 1 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 1
## [2480] 1 3 3 3 3 1 3 3 3 3 1 3 3 1 1 3 1 3 3 3 2 1 3 1 3 3 3 3 3 2 3 3 1 3 2 1 3
## [2517] 3 2 1 1 2 3 3 2 3 3 3 3 3 3 2 3 3 3 3 3 3 3 2 1 2 3 1 3 3 2 3 3 3 4 3 1 1
## [2554] 3 3 2 3 3 3 4 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 4 3 3 3 3 3
## [2591] 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 3 3 3 2 3
## [2628] 3 3 1 3 3 1 1 3 3 3 3 3 3 3 3 3 3 1 3 3 4 3 3 2 3 2 3 3 1 3 2 1 3 1 3 1 1
## [2665] 3 3 3 1 3 3 3 3 3 3 3 2 3 2 3 3 3 3 3 3 3 3 3 3 2 2 3 3 3 3 1 1 2 3 3 3 1
## [2702] 2 2 1 2 3 3 3 3 3 3 1 2 4 1 1 1 1 3 3 4 3 1 3 3 3 3 2 1 3 1 2 4 4 1 4 4 1
## [2739] 1 4 1 4 4 1 4 1 4 1 4 4 4 2 1 4 4 4 1 1 1 3 3 1 1 1 1 4 4 4 2 1 4 4 4 4 4
## [2776] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 3 3 4 2 4 1 1 3 1 1 1 4 4 4 4 4 3 4 1
## [2813] 4 3 4 3 1 1 3 3 1 4 1 3 1 3 1 1 1 1 1 3 3 1 1 4 1 3 1 1 1 3 1 3 1 1 1 3 1
## [2850] 1 1 1 1 1 2 4 3 1 3 1 3 1 3 3 1 3 1 3 4 1 3 4 1 1 1 3 4 1 1 3 3 3 3 3 4 4
## [2887] 3 4 3 4 4 4 4 3 4 4 3 3 3 4 3 4 3 3 3 4 4 4 1 4 4 3 3 1 1 4 3 3 3 3 3 4 1
## [2924] 3 3 2 4 1 1 1 3 1 1 1 1 1 1 3 3 3 1 1 1 3 4 4 1 4 3 3 3 3 2 2 3 3 3 3 3 3
## [2961] 3 3 3 3 3 3 3 3 2 3 3 2 3 3 2 2 3 3 3 3 4 2 3 3 3 3 2 3 3 2 3 3 3 3 2 4 3
## [2998] 3 3 3 3 3 3 3 3 3 3 3 4 1 4 4 4 3 3 1 4 4 4 3 3 4 4 4 4 4 1 3 1 1 1 1 4 1
## [3035] 4 4 4 1 3 4 4 1 1 3 1 3 3 1 4 4 4 4 4 3 4 3 4 4 4 4 4 4 3 4 4 4 4 1 4 4 4
## [3072] 4 4 4 3 3 3 4 4 4 4 4 4 3 3 4 4 4 4 4 4 4 4 4 4 3 4 3 3 1 4 4 4 4 4 4 1 4
## [3109] 4 3 4 4 3 4 4 4 4 3 4 4 4 4 3 4 4 4 4 4 1 3 4 4 4 1 4 4 1 4 4 4 4 1 4 1 4
## [3146] 4 4 4 4 4 4 4 1 4 1 4 4 3 2 4 4 3 4 4 4 4 4 4 1 3 4 3 3 3 3 4 4 1 3 3 3 4
## [3183] 4 3 4 4 4 4 4 4 4 1 1 3 2 3 1 1 4 1 1 3 1 1 3 3 1 3 4 3 3 1 3 3 1 1 3 1 1
## [3220] 4 2 1 2 3 4 3 3 1 2 2 4 3 1 3 1 4 3 1 1 4 1 1 1 3 4 3 4 4 4 4 1 3 4 4 4 4
## [3257] 4 1 4 4 4 4 4 4 4 4 1 1 4 4 3 1 2 3 4 4 4 4 1 1 1 4 3 3 3 3 3 3 1 2 3 3 2
## [3294] 2 3 2 2 2 3 3 3 3 3 3 2 2 3 2 2 3 2 2 2 3 3 2 3 2 2 1 3 3 3 3 2 3 1 3 2 2
## [3331] 3 3 3 3 3 3 3 4 4 4 1 1 4 4 4 4 4 4 4 4 4 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4
## [3368] 4 4 4 4 3 2 2 3 3 3 2 3 2 2 3 1 3 3 3 2 2 2 4 4 4 1 4 4 4 4 4 1 1 1 1 1 1
## [3405] 4 1 2 4 4 4 1 4 4 1 4 1 3 4 4 1 1 1 3 3 3 1 3 4 4 3 1 3 3 3 3 3 3 1 3 3 3
## [3442] 3 3 1 3 1 1 3 3 3 3 3 3 3 3 3 3 4 3 3 3 2 1 1 3 1 3 3 3 3 3 2 4 1 1 1 1 3
## [3479] 1 1 3 1 1 3 3 1 1 1 1 4 3 3 3 3 3 1 3 3 3 3 1 1 3 1 1 3 3 3 3 1 1 3 3 1 3
## [3516] 3 1 1 3 3 1 1 3 4 1 1 1 3 1 3 3 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3
## [3553] 3 3 3 1 3 3 3 3 3 4 4 3 3 3 3 3 3 3 3 4 3 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [3590] 3 3 3 3 3 3 3 3 3 3 4 3 4 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3
## [3627] 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [3664] 3 3 3 3 3 3 3 3 3 4 3 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [3701] 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 1 4 3 3 3 3 3 3 1 3 1 3 3 3 3 3 3 3 3 3 3 1
## [3738] 3 3 3 3 3 3 3 3 3 1 3 3 3 3 4 3 3 3 3 1 1 3 1 3 1 1 3 3 3 1 1 3 3 1 4 3 3
## [3775] 3 3 3 1 1 1 1 3 3 3 4 1 1 3 3 3 4 3 1 3 3 1 2 4 4 4 4 1 4 4 1 4 4 4 4 4 1
## [3812] 4 4 4 1 4 1 4 4 4 3 3 3 4 3 3 3 3 3 3 3 3 1 3 2 3 3 3 4 1 3 3 3 4 3 3 3 3
## [3849] 3 3 3 3 3 3 3 3 3 3 3 3 1 4 1 3 4 3 3 3 3 3 3 3 3 3 1 3 3 3 4 4 3 4 4 3 3
## [3886] 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 4 3 3 4 3 2 3 3 3 3 3 4 3 3 3 3
## [3923] 4 3 4 4 4 3 3 4 4 3 3 3 3 4 4 4 3 3 4 4 3 4 3 3 3 3 3 3 3 3 4 3 3 4 3 3 3
## [3960] 4 3 4 3 3 3 1 3 4 3 3 3 4 2 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4
## [3997] 4 4 4 4 4 1 1 1 1 1 1 1 1 4 4 4 4 4 1 3 4 4 4 4 3 1 4 1 4 4 4 4 4 4 4 4 4
## [4034] 4 4 4 1 2 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 2 4 4 4 4 4 4 4 4 4 4 4 4 4 3
## [4071] 4 4 4 4 4 4 1 4 4 1 1 1 4 4 4 3 4 4 4 4 1 4 4 4 1 1 4 4 4 3 4 4 4 4 4 4 4
## [4108] 4 4 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 1 3 3 3 4 4 1 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 1 4 1 4 4 4 4 4 4 4 4 4 4 1 4 1 4 3 3 4 1
## [4182] 1 4 4 4 4 3 4 4 1 1 3 1 4 4 4 4 4 1 3 3 4 3 3 1 1 2 3 2 3 3 3 3 3 3 3 3 3
## [4219] 3 3 2 3 3 3 3 3 3 3 3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 2 2 4 2 2 3 3 3 3 3 3 3
## [4256] 4 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 3
## [4293] 3 3 3 2 2 3 3 3 3 3 3 3 3 3 3 3 2 2 3 3 3 3 3 3 3 3 2 3 3 2 3 3 2 3 3 3 2
## [4330] 2 3 3 2 2 2 3 3 3 2 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4
## [4367] 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 2 1 4 4 1 4 4 4 4
## [4404] 4 4 4 4 4 3 1 4 4 4 4 4 4 3 3 3 3 3 1 3 3 3 3 3 1 3 3 3 3 3 3 3 4 3 3 3 3
## [4441] 3 4 3 3 3 3 3 3 3 3 4 4 1 1 1 3 1 1 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3
## [4478] 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 1 4 4 1 4 4 4 4 4 4 4
## [4515] 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 4 4 4 4 4 4 2 1 4 4 4 4 4 4 4 4 2 3 3
## [4552] 3 3 3 2 4 4 3 3 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 2 4 1 1
## [4589] 4 4 3 3 4 1 1 4 1 1 4 1 3 1 2 1 1 2 4 2 4 4 4 3 3 3 3 3 3 4 3 3 3 3 3 3 3
## [4626] 3 3 3 3 3 3 3 3 2 3 3 3 3 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1
## [4663] 4 4 1 4 4 4 4 4 4 4 3 3 3 2 3 3 3 2 2 2 3 2 2 2 3 3 2 3 3 2 3 2 3 3 2 3 3
## [4700] 3 3 2 2 3 2 3 3 3 3 2 2 3 3 2 3 2 2 3 2 4 2 2 2 3 3 3 3 2 3 3 3 3 2 3 3 3
## [4737] 3 3 3 3 2 2 3 3 3 2 3 3 3 3 3 2 3 3 2 3 2 2 3 3 2 2 2 3 2 2 2 2 2 2 2 2 3
## [4774] 3 3 3 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 3 3 2 3 3 3 3 2 3 3 3 3 3 3
## [4811] 2 3 2 3 2 3 3 2 2 3 2 2 3 2 3 2 3 3 2 3 2 2 3 4 4 1 4 3 3 3 3 3 4 4 4 1 4
## [4848] 4 4 4 4 4 4 4 1 4 4 4 1 1 4 1 4 4 1 3 3 4 4 3 3 3 4 1 4 3 3 3 3 3 4 4 1 3
## [4885] 3 4 4 3 1 3 4 1 4 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 4 3 3 3 4 3 3 3 3 1 4 3
## [4922] 3 1 1 3 3 1 1 1 1 3 4 4 4 3 4 4 4 3 3 2 3 3 2 2 2 3 3 3 4 4 4 4 4 4 4 4 4
## [4959] 4 4 4 4 4 4 4 4 3 4 4 4 4 4 3 1 4 1 1 3 1 1 1 1 3 4 4 4 4 3 3 4 1 4 4 4 1
## [4996] 1 1 1 3 3 1 1 1 1 1 3 3 1 4 3 3 4 4 4 3 4 4 1 4 1 2 2 2 2 3 2 3 2 3 2 3 2
## [5033] 3 2 3 3 3 3 3 2 3 2 3 2 2 3 3 3 2 2 3 3 2 2 2 2 2 3 2 2 3 2 3 2 2 2 3 2 3
## [5070] 3 3 2 2 3 2 2 3 3 2 2 2 2 2 3 2 2 2 3 2 2 3 2 3 3 3 3 3 3 3 3 3 3 2 3 3 2
## [5107] 2 2 2 3 2 3 3 2 2 2 2 3 2 2 2 3 3 3 2 2 2 2 2 2 3 2 2 2 3 2 2 2 3 2 3 2 3
## [5144] 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 2 3 2 3 2 2 2 2 3 2 2 2 2 3
## [5181] 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 2 2 2 3 2 2 3 2 2 2 3 2 3 2 3 3 3 3 2 2 3 3
## [5218] 2 3 2 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [5255] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2
## [5292] 3 3 3 3 2 3 3 3 3 3 3 3 2 2 3 2 2 3 2 2 2 2 2 2 2 2 3 2 3 2 3 3 3 3 3 2 2
## [5329] 3 3 3 3 2 2 2 3 3 3 2 3 2 2 2 3 3 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3
## [5366] 3 3 3 2 3 2 3 3 3 2 2 2 2 3 2 2 2 3 2 2 2 2 2 2 3 2 3 3 2 2 3 3 2 2 2 1 3
## [5403] 2 3 1 3 3 3 2 3 2 3 3 2 3 3 2 3 3 2 2 2 3 3 2 3 2 2 2 3 3 2 3 2 2 2 2 2 2
## [5440] 2 3 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3
## [5477] 2 2 2 2 2 2 2 2 2 3 2 2 3 2 2 3 2 4 4 4 4 4 4 4 4 4 4 4 3 4 1 4 1 4 3 4 4
## [5514] 4 4 1 4 4 4 4 4 1 3 4 4 4 4 4 4 4 3 4 1 1 3 4 3 3 1 3 1 1 3 3 1 1 3 3 1 2
## [5551] 4 4 3 1 3 1 3 1 1 3 4 4 4 4 1 3 3 3 4 1 4 3 3 3 4 4 4 3 4 3 4 3 1 3 1 4 4
## [5588] 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 3 3 4 4 4 4 4 3 4 4 4 3 4 4 3 4 4
## [5625] 4 4 4 4 4 3 3 3 4 4 4 3 3 4 3 1 3 3 4 3 4 3 3 4 3 4 4 3 3 4 1 3 1 4 1 1 4
## [5662] 4 4 4 4 3 3 1 3 1 1 4 1 1 4 3 4 4 4 4 4 4 1 4 4 4 1 1 1 1 3 1 4 4 4 4 4 4
## [5699] 4 4 1 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 3 3 3 3 4 3 3 3
## [5736] 3 3 3 3 3 3 3 3 3 3 3 1 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 3
## [5773] 3 4 3 4 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 1 3 4 3 3 3 3 3 3 3 4 4 4 4 1 4 4 1
## [5810] 4 3 3 4 3 4 4 1 4 4 4 4 4 1 4 4 4 1 4 4 4 1 4 4 1 4 4 4 4 4 4 4 4 4 4 4 4
## [5847] 4 4 4 4 4 4 1 4 4 4 1 4 4 4 1 4 2 1 1 2 1 2 4 1 1 3 1 4 4 1 4 1 4 1 4 4 4
## [5884] 1 4 4 4 4 1 4 4 4 4 4 4 4 4 1 1 4 1 4 4 4 4 3 4 4 3 3 1 4 1 1 4 1 4 3 1 1
## [5921] 1 4 1 4 3 3 3 1 4 1 3 3 3 4 3 3 3 4 3 4 3 1 4 3 1 3 4 4 4 1 1 3 1 4 2 3 1
## [5958] 4 3 3 3 3 1 1 3 3 4 1 4 1 1 1 1 2 3 4 4 1 3 3 1 1 1 3 1 1 2 3 1 1 1 1 3 1
## [5995] 3 3 3 1 3 3 3 1 3 3 3 3 3 1 1 4 1 4 4 4 4 4 4 2 1 4 4 1 3 4 4 4 1 1 1 1 4
## [6032] 1 1 1 1 1 1 1 1 1 3 1 3 4 3 1 1 1 2 3 4 3 4 4 4 3 3 3 3 1 2 1 1 1 1 3 1 1
## [6069] 1 1 2 3 2 1 2 3 3 3 3 3 3 3 4 3 4 4 3 4 4 4 3 3 3 4 4 4 3 3 4 3 4 4 4 4 3
## [6106] 4 3 3 3 3 3 3 3 4 3 4 4 4 4 3 4 3 1 1 1 3 4 4 4 4 4 1 1 4 1 4 1 1 1 4 4 4
## [6143] 4 4 1 1 1 1 1 4 4 4 1 3 3 4 3 3 4 1 1 1 1 1 4 1 3 3 3 1 3 3 3 1 3 3 3 3 3
## [6180] 1 3 3 3 1 1 3 3 4 3 3 3 3 3 4 3 3 1 4 1 4 3 1 3 3 3 3 3 3 3 3 1 1 2 3 3 2
## [6217] 4 4 4 1 4 4 4 1 3 1 1 2 1 3 3 2 1 2 2 2 3 1 2 2 3 2 2 3 3 2 3 3 3 3 3 3 2
## [6254] 2 3 3 2 3 2 3 2 3 3 2 3 2 3 3 2 1 2 3 1 1 3 3 3 3 2 1 2 3 1 1 3 2 3 3 3 3
## [6291] 3 3 3 3 2 3 3 4 2 3 3 3 2 2 2 4 1 2 1 4 3 3 2 3 1 3 4 4 1 2 2 2 1 2 2 2 3
## [6328] 1 3 3 1 2 3 2 1 3 3 3 2 3 3 3 2 2 2 2 2 2 3 3 3 2 2 2 2 2 2 3 2 3 2 3 2 2
## [6365] 3 3 3 2 4 3 3 2 3 3 3 2 2 2 3 3 2 2 2 2 1 2 2 3 2 3 1 3 2 3 3 3 2 2 3 3 3
## [6402] 3 2 2 3 3 3 1 2 2 3 2 3 3 2 2 3 2 1 2 3 3 3 4 2 3 3 2 3 3 3 2 3 3 3 3 3 3
## [6439] 3 3 2 3 3 3 2 3 2 3 3 3 3 3 3 2 3 3 3 2 3 3 2 3 3 3 3 3 3 3 2 2 3 2 2 3 2
## [6476] 3 3 3 3 2 3 3 3 3 2 2 2 3 2 2 2 2 4 2 2 2 2 2 2 3 2 2 2 2 2 3 2 3 2 2 3 2
## [6513] 2 2 3 2 3 3 3 2 2 2 3 2 2 3 2 3 2 3 3 2 2 2 2 2 2 2 3 2 2 3 3 3 2 2 2 2 2
## [6550] 3 2 2 3 3 3 3 3 3 2 3 2 3 2 3 2 3 3 2 2 3 3 3 3 2 2 3 2 2 3 2 2 3 3 3 3 2
## [6587] 3 3 4 3 3 3 2 2 2 3 3 2 2 3 4 2 3 2 2 2 2 3 3 2 3 2 2 3 3 2 3 3 3 3 3 2 3
## [6624] 2 3 2 2 3 2 3 3 2 1 4 1 4 4 1 1 4 4 3 3 1 2 3 3 3 1 3 3 3 3 3 3 3 3 3 3 3
## [6661] 4 4 3 3 3 3 3 3 1 1 3 4 3 3 3 3 4 4 4 4 4 4 4 4 4 1 3 1 2 2 2 3 1 1 1 1 1
## [6698] 2 1 1 1 1 2 1 3 4 1 1 4 1 1 3 1 1 3 3 1 1 3 3 1 1 3 1 2 3 2 1 3 2 1 4 4 3
## [6735] 4 4 4 3 4 3 3 2 3 1 1 2 1 4 3 3 4 2 4 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 1 1 4 1 4 2 3 3 3 3 1 3 3 3 1 1 1 1 3 1 1 4 3 3 3 3 3 3
## [6846] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 2 3 3 1 1 3 1 3 1 3
## [6883] 3 3 1 3 3 3 3 3 3 3 3 1 3 3 3 3 1 3 3 3 3 3 3 1 3 1 4 4 4 4 4 1 1 1 4 4 3
## [6920] 3 3 3 4 1 3 3 1 3 1 4 1 4 2 1 4 4 1 3 4 4 4 4 3 4 4 4 4 4 4 3 4 4 3 3 3 3
## [6957] 4 4 3 4 3 3 4 4 4 3 3 3 1 1 4 3 4 4 4 4 4 4 4 3 3 4 3 4 3 4 4 4 4 4 3 3 4
## [6994] 3 4 4 3 3 3 4 3 4 3 3 4 3 4 3 4 3 4 4 3 4 4 4 3 4 4 4 3 3 4 4 3 3 4 4 4 4
## [7031] 4 3 4 4 4 4 4 4 4 4 3 3 3 4 4 3 4 4 3 3 4 4 4 4 3 3 1 4 3 4 4 3 3 4 4 3 4
## [7068] 3 4 4 4 3 3 3 4 4 4 4 4 4 4 4 3 4 4 4 1 4 1 4 4 3 4 4 1 4 3 3 4 3 4 3 4 4
## [7105] 4 4 4 4 4 3 3 4 4 3 4 3 3 3 4 3 4 3 3 3 4 3 4 3 1 3 4 3 4 3 4 3 4 4 3 3 4
## [7142] 3 4 3 3 4 3 4 4 3 3 4 4 4 4 4 1 1 1 4 4 4 4 4 4 4 4 3 4 3 3 3 3 3 3 3 4 4
## [7179] 4 3 1 3 4 4 1 1 4 4 3 4 4 3 3 3 3 3 4 4 4 4 1 4 3 4 4 1 3 4 3 3 3 4 3 4 4
## [7216] 3 1 3 3 3 3 4 3 3 3 4 3 3 3 4 4 1 3 3 4 4 4 4 3 3 4 3 1 4 3 3 3 4 4 4 4 4
## [7253] 4 3 4 3 1 1 1 4 3 1 4 3 3 4 4 4 4 4 4 4 3 4 4 1 4 4 3 1 4 4 3 4 4 3 4 4 4
## [7290] 4 3 3 4 4 4 4 4 4 4 3 4 3 3 4 4 4 4 4 3 4 3 3 3 3 4 3 3 4 4 4 4 4 4 4 3 4
## [7327] 3 3 3 4 4 3 3 3 4 3 4 4 4 3 3 3 4 3 3 3 4 3 4 3 4 4 3 4 3 3 3 4 4 3 4 3 4
## [7364] 4 4 4 4 4 4 3 4 4 4 4 4 4 4 3 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 3 3 4 4 3 4 3
## [7401] 3 4 4 4 3 4 3 4 3 4 3 4 3 3 3 4 3 3 4 3 4 4 4 3 4 3 3 4 3 4 4 3 4 3 3 3 4
## [7438] 3 3 4 4 3 4 4 4 4 3 4 4 4 4 4 4 4 3 3 4 4 3 3 3 3 3 4 4 3 4 3 4 4 4 4 3 4
## [7475] 4 3 4 3 4 4 4 4 4 4 4 3 4 3 4 4 3 4 4 4 4 4 3 4 4 4 4 3 4 4 3 3 4 3 4 3 3
## [7512] 4 4 3 3 4 4 3 4 4 3 1 4 3 3 3 3 4 4 3 4 4 3 3 4 4 4 3 4 3 4 3 3 4 3 4 4 4
## [7549] 3 3 4 4 4 4 3 3 3 4 3 3 3 4 4 4 4 4 4 4 4 3 3 3 4 3 4 3 4 4 3 4 3 3 3 3 4
## [7586] 4 4 3 4 3 3 4 3 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 3 4 4 3 3 4 4 4 4 3 4
## [7623] 3 4 3 3 3 3 4 4 4 4 4 3 4 4 3 4 4 4 3 3 4 4 4 3 3 3 3 4 4 3 4 4 4 3 4 4 3
## [7660] 3 3 4 3 3 3 3 3 4 4 4 4 3 4 4 3 3 3 4 3 4 4 3 3 3 3 3 4 3 4 4 4 4 3 3 4 3
## [7697] 4 3 3 4 4 3 3 3 3 4 4 4 4 4 3 4 4 3 4 4 4 3 4 3 4 4 4 4 4 3 3 3 3 4 4 4 4
## [7734] 3 4 3 4 4 4 3 4 4 3 3 3 3 3 4 4 3 4 4 4 1 4 4 3 4 3 3 3 3 4 3 3 4 4 4 3 3
## [7771] 4 4 3 4 1 3 3 4 3 3 4 4 3 4 4 4 4 4 3 3 3 3 3 4 4 4 4 3 3 3 4 3 4 4 3 3 4
## [7808] 4 4 4 4 3 4 4 4 4 4 4 4 3 4 4 4 3 4 3 3 3 4 4 4 4 3 4 4 3 4 3 3 3 4 4 3 4
## [7845] 4 4 3 3 4 3 3 3 3 4 1 3 3 3 1 3 3 1 3 3 3 4 4 3 4 4 3 3 4 4 3 4 3 4 3 4 4
## [7882] 3 3 4 4 1 3 4 3 4 4 4 4 3 4 3 4 3 3 4 4 3 4 3 3 4 4 4 3 3 4 3 4 4 4 3 3 3
## [7919] 3 3 4 3 4 3 3 4 4 4 4 3 4 3 3 4 3 4 4 4 3 3 4 4 4 4 4 4 3 3 4 1 2 1 1 1 4
## [7956] 3 1 1 2 4 3 3 3 3 3 3 3 3 3 3 4 4 3 3 3 3 3 3 3 1 3 3 4 4 3 3 3 3 4 3 3 4
## [7993] 3 3 3 3 1 3 4 1 3 1 3 3 3 3 3 3 2 1 1 1 3 4 2 1 4 4 4 3 4 4 4 1 1 4 4 3 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 4 4 4 4 4 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 4 4 4 4 4 4
## [8104] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 1 4 1 1 3 4
## [8141] 1 1 1 1 4 1 3 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 4 4 1 4 4 4 4 4 4 4
## [8178] 3 4 3 4 4 4 3 4 4 4 4 4 3 4 4 4 4 4 4 4 3 2 4 3 4 3 4 4 3 3 4 3 3 3 3 3 3
## [8215] 2 4 3 3 4 4 1 3 2 2 3 3 4 4 4 4 4 4 4 4 1 4 4 4 1 4 4 4 4 4 4 4 2 1 1 3 4
## [8252] 3 4 3 3 2 2 4 4 4 3 2 3 4 2 3 1 1 1 1 1 4 4 3 4 4 4 4 4 3 3 3 3 2 4 3 3 4
## [8289] 1 4 4 4 4 4 4 3 3 3 4 3 3 4 4 3 3 3 4 3 4 1 4 3 1 2 2 4 2 2 3
## 
## Within cluster sum of squares by cluster:
## [1] 1362.180 2887.271 1855.206 1319.692
##  (between_SS / total_SS =  70.2 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

Se imprimen los valores que nos trajo la funcion de clustering y posterior a esto se grafican en el plano cartesiano los puntos, cada punto en el gráfico se coloreara segun el cluster al que pertenece, utilizando la información almacenada en kmeans_model$cluster.

plot(df2Unido[, c("preciom", "areaconst")], col = kmeans_model$cluster)
points(kmeans_model$centers[, c("preciom", "areaconst")], col = 1:k, pch = 8, cex = 2)

Luego de ver los resultados en la grafica procedemos a estansarizar los valores con la funcion scale(). Adicionalmente borramos los valores nulos que aunque ya se hizo anteriormente, lo volvemos a hacer para evitar errores en los calculos, estos valores los metemos finalmente en un dataset para poder procesarlos.

Se genera un gráfico para ayudar a determinar el numero optimo de clusters (k) para aplicar el algoritmo de K-means a los datos escalados en df3.

df3 = scale(df2, center = TRUE, scale = TRUE)
df3 = na.omit(df3)
df3 = as.data.frame(df3)

fviz_nbclust(df3, kmeans, method = "wss") +
  geom_vline(xintercept = 4, linetype = 2)

Graficamos un diagrama de cajas de los clusteresy sai tener una visualizacion mas clara que nos ayude a entender mejor su division.

df2Unido %>% 
  ggplot(aes(x = factor(kmeans_model$cluster), y = preciom, fill = factor(kmeans_model$cluster))) + geom_boxplot() + geom_point() + xlab("Cluster") + labs(fill="Cluster")

Posterior a esto realizamos un dendograma donde podemos observar una representación gráfica de las agrupaciones jerárquicas de los datos.Para esto se utilizan las columnas “preciom” y “areaconst” esto genera un agrupamiento aglomerativo utilizando el método de Ward sobre las distancias calculadas en el paso anterior. Esto genera un objeto de agrupamiento que representa la jerarquía de agrupaciones entre las observaciones, todo esto teniendo en cuenta las distancias euclidianas entre todas las observaciones en el dataframe

precio_estrato = vivienda[, c("preciom", "areaconst")]

precio_estrato = na.omit(precio_estrato)

distancias = dist(precio_estrato)

agrupamiento = hclust(distancias)

plot(agrupamiento, main = "Dendrograma de precios y estrato",
     xlab = "Observaciones", ylab = "Distancia")

en el cluster 1 con una fuerte relación entre estas dos variables, asi mismo en el cluster 2 se mantiene la relacion aunque presenta una distribución más homogenea. Por otra parte, el cluster 3 y 4 presentan una baja conglomeración

Analisis de Correspondencia

Iniciamos tomando una semilla de 1234 y 4000 muestras aleatoreas, mostrando los valores faltantes en el dataframe para saber como reemplazarlos o en este caso eliminarlos para mas facilidad del ejercicio. Posterior a eliminar los valores faltantes se grafica de nuevo el dataframe observando que no quedan valores faltantes.

set.seed(1234)
vivienda = sample_n(vivienda, 4000)

md.pattern(vivienda, rotate.names = TRUE)

##      preciom id zona estrato areaconst banios habitaciones tipo barrio longitud
## 3999       1  1    1       1         1      1            1    1      1        1
## 1          1  0    0       0         0      0            0    0      0        0
##            0  1    1       1         1      1            1    1      1        1
##      latitud   
## 3999       1  0
## 1          0 10
##            1 10
vivienda = na.omit(vivienda)
graficoFaltantes = md.pattern(vivienda, rotate.names = TRUE)
##  /\     /\
## {  `---'  }
## {  O   O  }
## ==>  V <==  No need for mice. This data set is completely observed.
##  \  \|/  /
##   `-----'

Posterior a esto se transforman las variables categoricas en variables numericas para mejor manejo al momento de realizar los analisis.

Vivienda_trasnformada = dummy_cols(vivienda, select_columns = c("zona", "estrato", "tipo"))

Creamos una tabla de frecuencia cruzada entre las variables categoricas “zona” y “estrato” del dataframe vivienda. Cada celda de la tabla contiene el número de observaciones que tienen una combinación específica de valores de “zona” y “estrato”.

tablaDataCorrespondecia = table(vivienda$zona, vivienda$estrato)
colnames(tablaDataCorrespondecia) = c("Estrato3", "Estrato4", "Estrato5", "Estrato6" )
tablaDataCorrespondecia
##               
##                Estrato3 Estrato4 Estrato5 Estrato6
##   ZONA CENTRO        50        8        3        0
##   ZONA NORTE        265      168      393       82
##   ZONA OESTE         24       38      147      377
##   ZONA ORIENTE      170        0        1        0
##   ZONA SUR          180      776      809      508
chisq.test(tablaDataCorrespondecia)
## 
##  Pearson's Chi-squared test
## 
## data:  tablaDataCorrespondecia
## X-squared = 1933.4, df = 12, p-value < 2.2e-16
resultados = CA(tablaDataCorrespondecia)

Al realizar la prueba de Chi-cuadrado podemos evidenciar que el valor p es extremadamente pequeño (p < 2.2e-16), lo que sugiere una fuerte evidencia en contra de la hipótesis nula. Esto significa que las variables “zona” y “estrato” están asociadas de manera significativa.

Las viviendas que estan en la zona Oeste son estrato 6. Las viviendas que están ubicadas en las zonas Norte y Sur son principalmente de estratos 4 y 5. Las viviendas que están ubicadas en las zonas Oriente y Centro son en su mayoría de estrato 3.

valores_prop <-resultados$eig ; valores_prop
##       eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.33730884              69.767822                          69.76782
## dim 2 0.12866848              26.613355                          96.38118
## dim 3 0.01749605               3.618823                         100.00000
fviz_screeplot(resultados, addlabels = TRUE, ylim = c(0, 80))+ggtitle("")+
  ylab("Porcentaje de varianza explicado") + xlab("Ejes")

Obetenemos el grado de correspondencia acumulada y podemos ver que en la Dim.1 esta el mayor grado de informacion acumulada con 0.33, seguido de Dim.2 con 0.12 y por ultimo Dim.3 con 0.01. Muy similar fue el resultado de la varianza acumulada, ya que el Dim.1 tuvo el mayor porcentaje con 69.76, seguido del Dim.2 con 26.61 y por ultimo el Dim.3 con 3.61. el 69.77% de la varianza total está explicada por la primera dimension, el 26.61% adicional está explicada por la segunda dimensión, y el 3.62% restante está explicada por la tercera dimension. El porcentaje acumulado de varianza nos ayuda a determinar cuántas dimensiones son necesarias para explicar la mayor parte de la variabilidad en los datos.