Evaluación de la oferta inmobiliaria urbana

A continuación vamos a cargar los datos de una empresa inmobiliaria que 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.

## Installing package into 'C:/Users/CARLOS AREVALO/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'devtools' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\CARLOS AREVALO\AppData\Local\Temp\Rtmp8kZRDW\downloaded_packages
## Installing package into 'C:/Users/CARLOS AREVALO/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'mice' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'mice'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\CARLOS
## AREVALO\AppData\Local\R\win-library\4.3\00LOCK\mice\libs\x64\mice.dll a
## C:\Users\CARLOS AREVALO\AppData\Local\R\win-library\4.3\mice\libs\x64\mice.dll:
## Permission denied
## Warning: restored 'mice'
## 
## The downloaded binary packages are in
##  C:\Users\CARLOS AREVALO\AppData\Local\Temp\Rtmp8kZRDW\downloaded_packages
## Skipping install of 'paqueteMETODOS' from a github remote, the SHA1 (341036c5) has not changed since last install.
##   Use `force = TRUE` to force installation
## Loading required package: cubature
## Loading required package: dplyr
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
## 
##     select
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
## Loading required package: flextable
## Warning: package 'flextable' was built under R version 4.3.2
## Loading required package: ggplot2
## Loading required package: lmtest
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Loading required package: psych
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
## Loading required package: summarytools
## Loading required package: randtests
## Loading required package: rapportools
## 
## Attaching package: 'rapportools'
## The following objects are masked from 'package:summarytools':
## 
##     label, label<-
## The following object is masked from 'package:dplyr':
## 
##     n
## The following objects are masked from 'package:stats':
## 
##     IQR, median, sd, var
## The following objects are masked from 'package:base':
## 
##     max, mean, min, range, sum

Con esta información obtenida pasaremos a hacer un análisis de PCA.

1.Exploracion Inicial de Variables.

En está sección buscaremos 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.

summary(vivienda)
##        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

De lo anterior observamos que tenemos varias columnas donde solo hay 3 NA’s, si se explora veremos que son filas donde la mayoría de la informacion es faltante, tambien observamos que para parqueaderos y para “piso” tenemos varios NA’s, por lo que vamos desestimar estas variables del análisis, ya que no me aporta ninguna información valiosa para los precios. Vemos que distintos valores tenemos zona, tipo y barrio, ya que en el anterior resumen no podemos observar mucho sobre estas variables categóricas.

Pero primero eliminamos los NA’s revisados y la columna parqueaderos

vivienda <- vivienda[complete.cases(vivienda[, c("areaconst", "preciom")]), ]
vivienda <- subset(vivienda, select = -c(id, piso,parqueaderos))
summary(vivienda)
##      zona              estrato         preciom         areaconst     
##  Length:8319        Min.   :3.000   Min.   :  58.0   Min.   :  30.0  
##  Class :character   1st Qu.:4.000   1st Qu.: 220.0   1st Qu.:  80.0  
##  Mode  :character   Median :5.000   Median : 330.0   Median : 123.0  
##                     Mean   :4.634   Mean   : 433.9   Mean   : 174.9  
##                     3rd Qu.:5.000   3rd Qu.: 540.0   3rd Qu.: 229.0  
##                     Max.   :6.000   Max.   :1999.0   Max.   :1745.0  
##      banios        habitaciones        tipo              barrio         
##  Min.   : 0.000   Min.   : 0.000   Length:8319        Length:8319       
##  1st Qu.: 2.000   1st Qu.: 3.000   Class :character   Class :character  
##  Median : 3.000   Median : 3.000   Mode  :character   Mode  :character  
##  Mean   : 3.111   Mean   : 3.605                                        
##  3rd Qu.: 4.000   3rd Qu.: 4.000                                        
##  Max.   :10.000   Max.   :10.000                                        
##     longitud         latitud     
##  Min.   :-76.59   Min.   :3.333  
##  1st Qu.:-76.54   1st Qu.:3.381  
##  Median :-76.53   Median :3.416  
##  Mean   :-76.53   Mean   :3.418  
##  3rd Qu.:-76.52   3rd Qu.:3.452  
##  Max.   :-76.46   Max.   :3.498

Ahora si procedemos a graficar a revisar las variables categóricas restantes para saber que mas tipos de datos poseemos.

# Contar valores únicos en la columna "barrio"
num_barrios <- length(unique(vivienda$barrio))
print(paste("Número de barrios únicos:", num_barrios))
## [1] "Número de barrios únicos: 436"
print("Tipos:")
## [1] "Tipos:"
print(unique(vivienda$tipo))
## [1] "Casa"        "Apartamento"
print("Zona:")
## [1] "Zona:"
print(unique(vivienda$zona))
## [1] "Zona Oriente" "Zona Sur"     "Zona Norte"   "Zona Oeste"   "Zona Centro"

Tenemos 436 barrios, y 8.319 variables, lo cual es un buen candidato para un análisis de correspondencia más adelante.

1.Análisis de Componentes Principales:

El primer a realizar es estandarizar o normalizar las variables antes de aplicar PCA, para asegurar que cada variable contribuya de manera equitativa a la varianza total y evitas que una variable con una escala más grande tenga un impacto desproporcionado en los resultados del análisis. Los métodos comunes de escalado incluyen la estandarización (restar la media y dividir por la desviación estándar) o la normalización (escalar los valores al rango [0, 1]). Ademas de esto solo se utilizara variables numéricas, ya que solo así funcionara el análisis de componentes principales, para esto transformaremos en numéricas las variables categóricas de Tipo, la variable barrio la dejaremos por fuera, igual que el de Zona, ya que con la longitud y latitud tenemos la posición de los inmuebles, y son variables numéricas, así que podemos hacer el análisis de componentes principales directamente con ellos.

vivienda4_pca <- subset(vivienda, select = -c(tipo,zona,barrio))

str(vivienda4_pca)
## spc_tbl_ [8,319 × 7] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ estrato     : num [1:8319] 3 3 3 4 5 5 4 5 5 5 ...
##  $ preciom     : num [1:8319] 250 320 350 400 260 240 220 310 320 780 ...
##  $ areaconst   : num [1:8319] 70 120 220 280 90 87 52 137 150 380 ...
##  $ banios      : num [1:8319] 3 2 2 5 2 3 2 3 4 3 ...
##  $ habitaciones: num [1:8319] 6 3 4 3 3 3 3 4 6 3 ...
##  $ longitud    : num [1:8319] -76.5 -76.5 -76.5 -76.5 -76.5 ...
##  $ latitud     : num [1:8319] 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>
vivienda4Z= scale(vivienda4_pca)      # datos estandarizados

Antes de aplicar PCA, es recomendable manejar los valores nulos en tus datos. Por lo que vamos a hacer un revision de nulos sobre estas variables.

library(mice)
## Warning: package 'mice' was built under R version 4.3.2
## 
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
## 
##     filter
## The following objects are masked from 'package:base':
## 
##     cbind, rbind
md.pattern(vivienda4Z)
##  /\     /\
## {  `---'  }
## {  O   O  }
## ==>  V <==  No need for mice. This data set is completely observed.
##  \  \|/  /
##   `-----'

##      estrato preciom areaconst banios habitaciones longitud latitud  
## 8319       1       1         1      1            1        1       1 0
##            0       0         0      0            0        0       0 0

La gráfica anterior nos indica que no se presentan datos faltantes, al no tener no hay necesidad de hacer un tratamiento sobre los nulos, ya sea rellenar vacíos o eliminar registros.

Tambien observamos que efectivamente tengamos los datos escalados en el dataset.

head(vivienda4Z)
##         estrato    preciom  areaconst      banios habitaciones   longitud
## [1,] -1.5872276 -0.5595498 -0.7339949 -0.07793773    1.6406840  0.9728466
## [2,] -1.5872276 -0.3465670 -0.3842568 -0.77811479   -0.4147626  0.9331875
## [3,] -1.5872276 -0.2552886  0.3152194 -0.77811479    0.2703863  0.7607566
## [4,] -0.6156201 -0.1031580  0.7349051  1.32241640   -0.4147626 -0.6549016
## [5,]  0.3559875 -0.5291236 -0.5940997 -0.77811479   -0.4147626  0.8682385
## [6,]  0.3559875 -0.5899759 -0.6150839 -0.07793773   -0.4147626  0.6670691
##         latitud
## [1,]  0.3793708
## [2,]  0.3763219
## [3,]  0.4225243
## [4,]  0.4070454
## [5,]  0.9678065
## [6,] -1.1242009

Ahora que vemos que todas nuestras variables están en una escala similar, y no tendremos sesgos por las magnitudes que manejan, procedemos a generar componentes principales

res.pca <- prcomp(vivienda4Z)
res.pca
## Standard deviations (1, .., p=7):
## [1] 1.7649945 1.2197986 0.9408170 0.8090903 0.6534211 0.4902176 0.4357175
## 
## Rotation (n x k) = (7 x 7):
##                     PC1         PC2         PC3         PC4         PC5
## estrato       0.3596495 -0.46160840  0.29253122 -0.24988384 -0.47695341
## preciom       0.4947460 -0.06764679  0.25051923 -0.25237458  0.22943062
## areaconst     0.4556538  0.26756925  0.02809938 -0.12641620  0.64147176
## banios        0.4903682  0.18623745 -0.06882523 -0.01680433 -0.39400870
## habitaciones  0.2974110  0.54943309 -0.32731570  0.32355603 -0.33736244
## longitud     -0.2672367  0.46217187 -0.01581921 -0.82481589 -0.17733905
## latitud      -0.1338978  0.40072976  0.85950759  0.26942892 -0.08880096
##                       PC6         PC7
## estrato       0.501853021  0.17381740
## preciom      -0.219896274 -0.72332891
## areaconst     0.292270190  0.45509101
## banios       -0.652112622  0.37328490
## habitaciones  0.431734658 -0.31247031
## longitud      0.052076162 -0.01578471
## latitud      -0.003114001  0.04739724

De lo anterior observamos como la variable “Longitud”y “Latitud” aportan de manera similar en las Componentes principales, dejando claro sui relacion asi mismo el estrato, se realciona bastante con ellas sobre la PC2, dejando clara la relación de la ubicación sobre el estrato, lo cual tambien nos permite prever que en el plano probablemente “longitud” y “latitud” me van a aportar más en un sentido que los demás componentes, y que los demás van a estar muy cerca uno del otro sobre el plano.

De esto se gráfica cuales serán nuestras componentes principales, esto de acuerdo al aporte de cada columna, en la siguiente gráfica veremos el aporte de cada Componente Principal.Para determinar que componente me aporta más, vamos a graficar que tanta varianza representa cada una de mis componentes principales.

library(factoextra)
## Warning: package 'factoextra' was built under R version 4.3.2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
fviz_eig(res.pca, addlabels = TRUE)

Con la anterior gráfica podemos observar que con las 5 primeras componentes principales PC1, PC2, PC3, PC4 y PC5 podemos explicar el 93.9% de los datos lo que sería suficiente para poder hacer un análisis eficiente sobre los datos y evitar. Así mismo que las variables de “preciom” y “banios” es la más que mas explican la varianza, así como la “Estrato”, “longitud” y “latitud” son las que mas me explican de la varianza de la Componen Pricipal 2 (PC2).

Con esta informacion vamos a graficar como se ven representadas el aporte de las distintas variables para cada uina de las componentes principales.

fviz_pca_var(res.pca,
col.var = "contrib", # Color by contributions to the PC
gradient.cols = c("#FF7F00",  "#034D94"),
repel = TRUE     # Avoid text overlapping
)

Al visualizar las variables en el plano de los componentes principales permite identificar el sentido y la caracterización de los componentes (característica capturada por los vectores propios). En la gráfica anterior se ve mas claramente cuales son las variables que mas contribuyen a la varianza, en lo que queda claro que la cantidad de baños (banios), es lo que mas aumenta la varianza en mis datos, y las variables que menos aportan son longitud y latitud, luego aportan de manera similar el resto de variables.

componentes_principales <- as.data.frame(res.pca$rotation)
componentes_principales
##                     PC1         PC2         PC3         PC4         PC5
## estrato       0.3596495 -0.46160840  0.29253122 -0.24988384 -0.47695341
## preciom       0.4947460 -0.06764679  0.25051923 -0.25237458  0.22943062
## areaconst     0.4556538  0.26756925  0.02809938 -0.12641620  0.64147176
## banios        0.4903682  0.18623745 -0.06882523 -0.01680433 -0.39400870
## habitaciones  0.2974110  0.54943309 -0.32731570  0.32355603 -0.33736244
## longitud     -0.2672367  0.46217187 -0.01581921 -0.82481589 -0.17733905
## latitud      -0.1338978  0.40072976  0.85950759  0.26942892 -0.08880096
##                       PC6         PC7
## estrato       0.501853021  0.17381740
## preciom      -0.219896274 -0.72332891
## areaconst     0.292270190  0.45509101
## banios       -0.652112622  0.37328490
## habitaciones  0.431734658 -0.31247031
## longitud      0.052076162 -0.01578471
## latitud      -0.003114001  0.04739724

2.Análisis de Conglomerados:

Debido a que los rangos de las variables son diferentes, con el fin de que estas diferencias en las dimensiones de las variables no afecte los cálculos de las distancias, vamos a utilizar la version del dataset con las variables estandarizadas (restar la media y dividir el resultado por la desviación estándar) antes de generar las cálculos de las distancias. Aunque también para graficar y ver los resultados en términos mas entendibles, se desarrolla la grafica sobre los datos sin escalar y compararemos

##      estrato    preciom  areaconst      banios habitaciones   longitud
## 1 -1.5872276 -0.5595498 -0.7339949 -0.07793773    1.6406840  0.9728466
## 2 -1.5872276 -0.3465670 -0.3842568 -0.77811479   -0.4147626  0.9331875
## 3 -1.5872276 -0.2552886  0.3152194 -0.77811479    0.2703863  0.7607566
## 4 -0.6156201 -0.1031580  0.7349051  1.32241640   -0.4147626 -0.6549016
## 5  0.3559875 -0.5291236 -0.5940997 -0.77811479   -0.4147626  0.8682385
## 6  0.3559875 -0.5899759 -0.6150839 -0.07793773   -0.4147626  0.6670691
##      latitud
## 1  0.3793708
## 2  0.3763219
## 3  0.4225243
## 4  0.4070454
## 5  0.9678065
## 6 -1.1242009

Regla del Codo

Para determinar el número óptimo de clusters en un conjunto de datos escalado, se puede utilizar el método del codo (Elbow Method). Se busca el punto donde la disminución en la suma de cuadrados dentro del clúster se disminuye, formando un “codo”.

## Warning: did not converge in 10 iterations

## Warning: did not converge in 10 iterations

De acuerdo a lo anterior vemos que después de 5 clusteres la ganancia no es mucho y el costo computacional es elevado, por lo que vamos dejarlo en ese numero la cantidad de grupos. Curiosamente la misma cantidad de Componentes principales obtenidas.

Para realizar los agrupamiento es necesario calcular la distancia euclidiana, o manhattan dependiendo cual se vaya a usar

Distancia Euclidiana:

Comenzamos por la euclidiana, vamos a graficar tanto con los datos escaladsos como no escalados. Primero escalados

##  [1] 2.210061 1.899535 3.485135 2.978068 3.220286 2.435012 2.927299 2.406560
##  [9] 4.117731 5.280191 3.227249 4.115579 4.696799 2.986353 3.500646 3.040564
## [17] 2.770498 3.427739 3.894519 2.416369

No escalados.

##  [1]  86.08136 180.29143 258.09688  22.67158  20.05004  35.14257  89.98335
##  [8] 106.32498 614.01385 625.02000 471.01592 527.16412 271.49586 361.39037
## [15] 214.02337 244.77133  79.71199 139.02518 151.52889  75.72979

Distancia Manhattan:

##  [1]  3.361053  3.679194  8.008123  5.562204  5.957348  4.584750  6.270867
##  [8]  4.590946  9.322611 12.022755  8.002267  9.915351  9.603744  6.669400
## [15]  7.947717  7.252469  5.538112  7.297910  7.992192  4.357613

Distancia Minkowski:

##  [1] 2.210061 1.899535 3.485135 2.978068 3.220286 2.435012 2.927299 2.406560
##  [9] 4.117731 5.280191 3.227249 4.115579 4.696799 2.986353 3.500646 3.040564
## [17] 2.770498 3.427739 3.894519 2.416369
## # A tibble: 8,319 × 7
##    estrato preciom areaconst banios habitaciones longitud latitud
##      <dbl>   <dbl>     <dbl>  <dbl>        <dbl>    <dbl>   <dbl>
##  1       3     250        70      3            6    -76.5    3.43
##  2       3     320       120      2            3    -76.5    3.43
##  3       3     350       220      2            4    -76.5    3.44
##  4       4     400       280      5            3    -76.5    3.44
##  5       5     260        90      2            3    -76.5    3.46
##  6       5     240        87      3            3    -76.5    3.37
##  7       4     220        52      2            3    -76.5    3.43
##  8       5     310       137      3            4    -76.5    3.38
##  9       5     320       150      4            6    -76.5    3.48
## 10       5     780       380      3            3    -76.5    3.49
## # ℹ 8,309 more rows

Grafica Clusters:

Apoyándonos en el calculo de la distancia manhattan y el numero de clusters graficamos estos grupos para distinguirlos. Asi mismo graficaremos los grupos tanto sin aplicar los datos escalados, como escalados.

5 grupos:

Datos Escalados:

Datos No Escalados:

Datos Escalados:

Datos No Escalados:

Datos No Escalados:

De lo anterior observamos que en realidad no se nota mucho la diferencia en ninguno de los dos diagramas, entre los diferentes grupos y que pareciera que hay 3 grupos predominantes cuando usamos la latitud para graficar, pero si graficamos por baños y estrato se ven mas segmentados el numero de grupos

3.Análisis de Correspondencia :

Ahora comenzamos la parte de analisis para variables categoricas

## Warning: package 'FactoMineR' was built under R version 4.3.2
##               
##                Estrato3 Estrato4 Estrato5 Estrato6
##   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

Hacemos prueba de Chi-cuadrado para ver si las variables son independientes entre si.

## 
##  Pearson's Chi-squared test
## 
## data:  tabla_zona_vs_estrato
## X-squared = 3830.4, df = 12, p-value < 2.2e-16

Obtenemos un valor de p-value 2.2e-16, lo que nos indica que se rechaza la hipótesis de independencia de las variables, y nos indica que estas tienen algun grado de relacion.

## Warning: package 'gridExtra' was built under R version 4.3.2
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine

## **Results of the Correspondence Analysis (CA)**
## The row variable has  5  categories; the column variable has 4 categories
## The chi square of independence between the two variables is equal to 3830.435 (p-value =  0 ).
## *The results are available in the following objects:
## 
##    name              description                   
## 1  "$eig"            "eigenvalues"                 
## 2  "$col"            "results for the columns"     
## 3  "$col$coord"      "coord. for the columns"      
## 4  "$col$cos2"       "cos2 for the columns"        
## 5  "$col$contrib"    "contributions of the columns"
## 6  "$row"            "results for the rows"        
## 7  "$row$coord"      "coord. for the rows"         
## 8  "$row$cos2"       "cos2 for the rows"           
## 9  "$row$contrib"    "contributions of the rows"   
## 10 "$call"           "summary called parameters"   
## 11 "$call$marge.col" "weights of the columns"      
## 12 "$call$marge.row" "weights of the rows"

De la grafica anterior podemos observar como el estrato 6 el mas alto, esta cerca de la Zona Oeste, mientras que los estratos 3 mas cerca de la Zona Oriente o Zona Centro, y los estratos 5 y 4 predominan cerca a la Zona Sur, y despues con la ZOna Norte. Nos indicaria cuales lugares son buenos para vender casas costosas y a buen precio, que seria Zona Oeste principalmente, y donde encontrar lugares mas economicos, ya sea Centro u Oriente.

Asi mismo nos muestra el grado que representa cada uno de los ejes.

Ahora procedemos a hacer una analisis de banios contra estrato, para ver que tanto se relacionan entre si, al ser baño una variable importante al momento de determinar el precio.

##     
##      Estrato3 Estrato4 Estrato5 Estrato6
##   0        15        9       13        8
##   1       359       93       35        9
##   2       623     1187      941      195
##   3       208      444      897      444
##   4       135      232      492      597
##   5        68      100      249      473
##   6        27       40       61      186
##   7         4        9       39       55
##   8         8       11       15       14
##   9         3        2        5        5
##   10        3        2        3        1

Hacemos prueba de Chi-cuadrado para ver si las variables son independientes entre si.

## Warning in chisq.test(tabla_banio_vs_estrato): Chi-squared approximation may be
## incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_banio_vs_estrato
## X-squared = 2883, df = 30, p-value < 2.2e-16

Obtenemos un valor de p-value 2.2e-16, lo que nos indica que se rechaza la hipótesis de independencia de las variables, y nos indica que estas tienen algun grado de relacion.

Con lo anterior vemos como tambien los estratos mas altos son los que suelen tener mas baños, y entre 5 a 7 es lo mas probable que tengan los estratos 6, y los inmuebles de estrato 5 tienen 3 baños predominantemente mientras que los estrato 4, tienen 2 baños principalmente y por ultimo el estrato 3 suele no tener un valor tan claro en cuanto a la cantidad e baños que tiene, ya que cerca a este estan los dos valores mas distantes 10, 2 y 1.

Ahora procedemos a hacer una analisis de banios contra zonas, para ver que tanto se relacionan entre si, el baño tambien puede estar relacionado con zonas mas espaciosas.

##     
##      Zona Oriente Zona Sur Zona Norte Zona Oeste Zona Centro
##   0             3       12          7          5          18
##   1            16      186         38         68         188
##   2            43      811        237        108        1747
##   3            26      438        315         78        1136
##   4            19      270        350         52         765
##   5            11      130        185         19         545
##   6             4       48         43         13         206
##   7             0       11         19          2          75
##   8             1       11          2          4          30
##   9             1        1          2          1          10
##   10            0        2          0          1           6

Hacemos prueba de Chi-cuadrado para ver si las variables son independientes entre si.

## Warning in chisq.test(tabla_banio_vs_zona): Chi-squared approximation may be
## incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_banio_vs_zona
## X-squared = 560.8, df = 40, p-value < 2.2e-16

Obtenemos un valor de p-value 2.2e-16, lo que nos indica que se rechaza la hipótesis de independencia de las variables, y nos indica que estas tienen algun grado de relacion.

Con lo anterior observamos que no hay un acercamiento demasiado marcado para algunas cantidades de baños excepto por Zona Oeste que suele tener muy pocos baños, esto nos indicaría que son lugares pequeños realmente, mientras que al sur obtengo lugares mas espaciosos al poder tener 8 o 10 baños, igual que par ala zona centro que esta muy cerca 6 y 4 baños.

4.Conclusiones :