knitr::opts_chunk$set(echo = TRUE)
#instalar paquetes y cargar librerias sin que aparezcan en el informe
library(conflicted)
conflict_prefer("filter", "dplyr")
## [conflicted] Will prefer dplyr::filter over any other package.
conflict_prefer("lag", "dplyr")
## [conflicted] Will prefer dplyr::lag over any other package.
library(mice)
library(naniar)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.3     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.1     ✔ tidyr     1.3.0
library(dplyr)
library(simputation)
library(DescTools)
library(tidyr)
library(psych)
devtools::install_github("dgonxalex80/paqueteMODELOS", force = TRUE) #descarga paquete 
library(paqueteMODELOS)

1. Introducción


En el dinámico mercado inmobiliario urbano actual, la toma de decisiones estratégicas y bien informadas es fundamental para el éxito de las empresas. Este análisis integral, basado en una amplia base de datos de propiedades residenciales disponibles en el mercado, tiene como objetivo proporcionar a la empresa 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.Además proporcionando ventajas competitivas en el mercado, optimizando la inversión y maximizando los beneficios en un entorno altamente competitivo y en constante cambio.


2. Metodología


Se utilizará una combinación de técnicas de análisis de datos, incluyendo:

Análisis de Componentes Principales (PCA, por sus sigas en inglés): para identificar las características clave que influyen en el precio y la oferta del mercado.

Análisis de Conglomerados (AC): para agrupar las propiedades en segmentos homogéneos y comprender las dinámicas específicas de cada segmento.

Análisis de Correspondencia (ANC): para examinar las relaciones entre las variables categóricas (tipo de vivienda, zona y barrio) y los patrones de comportamiento de la oferta.

Visualización de resultados: para presentar los resultados por medio de gráficos, mapas y otros recursos que permitan comunicar los hallazgos de manera clara y efectiva.


3. Entendimiento de los datos

library(paqueteMODELOS)
## Loading required package: boot
## Warning: package 'boot' was built under R version 4.3.2
## 
## Attaching package: 'boot'
## The following object is masked from 'package:psych':
## 
##     logit
## Loading required package: broom
## Loading required package: GGally
## Warning: package 'GGally' was built under R version 4.3.2
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
## Loading required package: gridExtra
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
## Loading required package: knitr
## Warning: package 'knitr' was built under R version 4.3.2
## Loading required package: summarytools
## 
## Attaching package: 'summarytools'
## The following object is masked from 'package:tibble':
## 
##     view
data(vivienda)
# Obtengo las dimensiones de la variable "vivienda"
dimension <- dim(vivienda)
dimension 
## [1] 8322   13

La variable vivienda tiene 8322 filas y 13 columnas.

# Convierto la tibble a un tibble estándar
vivienda_standard <- as_tibble(vivienda)

# Analizo el tipo de atributos de la variable vivienda
str(vivienda_standard)
## tibble [8,322 × 13] (S3: tbl_df/tbl/data.frame)
##  $ id          : num [1:8322] 1147 1169 1350 5992 1212 ...
##  $ zona        : chr [1:8322] "Zona Oriente" "Zona Oriente" "Zona Oriente" "Zona Sur" ...
##  $ piso        : chr [1:8322] NA NA NA "02" ...
##  $ estrato     : num [1:8322] 3 3 3 4 5 5 4 5 5 5 ...
##  $ preciom     : num [1:8322] 250 320 350 400 260 240 220 310 320 780 ...
##  $ areaconst   : num [1:8322] 70 120 220 280 90 87 52 137 150 380 ...
##  $ parqueaderos: num [1:8322] 1 1 2 3 1 1 2 2 2 2 ...
##  $ banios      : num [1:8322] 3 2 2 5 2 3 2 3 4 3 ...
##  $ habitaciones: num [1:8322] 6 3 4 3 3 3 3 4 6 3 ...
##  $ tipo        : chr [1:8322] "Casa" "Casa" "Casa" "Casa" ...
##  $ barrio      : chr [1:8322] "20 de julio" "20 de julio" "20 de julio" "3 de julio" ...
##  $ longitud    : num [1:8322] -76.5 -76.5 -76.5 -76.5 -76.5 ...
##  $ latitud     : num [1:8322] 3.43 3.43 3.44 3.44 3.46 ...
  • Variables categóricas: zona, piso, tipo, barrio
  • Variables numéricas: id, estrato, preciom, areaconst, parqueaderos, banios, habitaciones, longitud, latitud
# Cuento el número de valores N/A en cada variable de la variable vivienda.
vivienda %>%
  summarise_all(list(~ sum(is.na(.))))

La tabla muestra el número de valores N/A para cada variable de la variable vivienda.

# Calculo el porcentaje de valores perdidos por columna
missing_percentage <- colMeans(is.na(vivienda)) * 100

# Creo un data frame con la información
missing_data <- data.frame(variable = names(missing_percentage), pct_missing = missing_percentage)

# Creo el gráfico de barras
ggplot(missing_data, aes(x = reorder(variable, -pct_missing), y = pct_missing)) +
  geom_bar(stat = "identity", fill = "skyblue", color = "black") +
  geom_text(aes(label = sprintf("%.1f%%", pct_missing)), vjust = -0.5) +
  labs(title = "Porcentaje de valores perdidos por variable",
       x = "Variable",
       y = "Porcentaje de valores perdidos") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  ylim(c(0, 35))

Las variables con mayor numero de nulos son piso con 2638 equivalente al 31,7% y parqueaderos con 1605 equivalente al 19,3%. Dado que los datos faltantes son mas del 20% se decide realizar la imputación de estos.

4. Preparación de los datos

# Se realiza la imputación de los valores nulos 

# Defino la función Mode para calcular la moda
Mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

# Imputo los valores nulos con la moda para variables categóricas
vivienda$zona[is.na(vivienda$zona)] <- Mode(vivienda$zona)
vivienda$tipo[is.na(vivienda$tipo)] <- Mode(vivienda$tipo)
vivienda$barrio[is.na(vivienda$barrio)] <- Mode(vivienda$barrio)

# Imputo los valores nulos con la media para variables numéricas
if(is.numeric(vivienda$piso)) {
    vivienda$piso[is.na(vivienda$piso)] <- mean(vivienda$piso, na.rm = TRUE)
} else {
  vivienda$piso <- as.numeric(vivienda$piso)
  vivienda$piso[is.na(vivienda$piso)] <- mean(vivienda$piso, na.rm = TRUE)
}
vivienda$piso <- round(vivienda$piso)
vivienda$estrato[is.na(vivienda$estrato)] <- mean(vivienda$estrato, na.rm = TRUE)
vivienda$preciom[is.na(vivienda$preciom)] <- mean(vivienda$preciom, na.rm = TRUE)
vivienda$areaconst[is.na(vivienda$areaconst)] <- mean(vivienda$areaconst, na.rm = TRUE)
vivienda$parqueaderos[is.na(vivienda$parqueaderos)] <- mean(vivienda$parqueaderos, na.rm = TRUE)
vivienda$banios[is.na(vivienda$banios)] <- mean(vivienda$banios, na.rm = TRUE)
vivienda$habitaciones[is.na(vivienda$habitaciones)] <- mean(vivienda$habitaciones, na.rm = TRUE)
vivienda$longitud[is.na(vivienda$longitud)] <- mean(vivienda$longitud, na.rm = TRUE)
vivienda$latitud[is.na(vivienda$latitud)] <- mean(vivienda$latitud, na.rm = TRUE)
vivienda$id[is.na(vivienda$id)] <- mean(vivienda$id, na.rm = TRUE)

Se eliminaron los valores nulos en todas las variables, como se puede observar en el siguiente gráfico.

# Realizo un grafico para observar que ya no hay valores nulos en las variables
gg_miss_var(vivienda, show_pct = TRUE)

5. Exploración de los datos

# Obtengo el resumen estadístico para atributos numéricos
summary(vivienda)
##        id           zona                piso           estrato     
##  Min.   :   1   Length:8322        Min.   : 1.000   Min.   :3.000  
##  1st Qu.:2081   Class :character   1st Qu.: 2.000   1st Qu.:4.000  
##  Median :4160   Mode  :character   Median : 4.000   Median :5.000  
##  Mean   :4160                      Mean   : 3.844   Mean   :4.634  
##  3rd Qu.:6239                      3rd Qu.: 4.000   3rd Qu.:5.000  
##  Max.   :8319                      Max.   :12.000   Max.   :6.000  
##     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 : 1.835   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  
##   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  
##     latitud     
##  Min.   :3.333  
##  1st Qu.:3.381  
##  Median :3.416  
##  Mean   :3.418  
##  3rd Qu.:3.452  
##  Max.   :3.498

La tabla anterior muestra estadísticas descriptivas básicas para las variables numéricas de la variable vivienda. Estas incluyen el mínimo, el primer cuartil, la mediana, el tercer cuartil, el máximo y la media.

## 
##  Zona Centro   Zona Norte   Zona Oeste Zona Oriente     Zona Sur 
##          124         1920         1198          351         4729
# Creao un gráfico de barras con colores pasteles
ggplot(vivienda, aes(x = zona, fill = zona)) +
  geom_bar(color = "black") +
  scale_fill_brewer(palette = "Pastel1") +  # Uso la paleta de colores pasteles
  labs(title = "Distribución de vivienda por Zona",
       x = "Zona",
       y = "Frecuencia") +
  theme_minimal()

Se puede observar que el mayor número de viviendas se concentran en la zona sur, seguido de la zona norte.

# Obtengo el resumen estadístico para atributo categorico tipo
table(vivienda$tipo)
## 
## Apartamento        Casa 
##        5103        3219

El tipo de vivienda que mas se encuentra son apartamentos con 5103, seguido de casa con 3219.

# Paleta de colores pasteles
colores_pasteles <- c("#FFB6C1", "#87CEFA")

# Crear el gráfico de torta con colores pasteles y porcentajes
datos <- table(vivienda$tipo)
porcentajes <- prop.table(datos) * 100  # Calcular los porcentajes

# Etiquetas con porcentajes usando sprintf
labels_con_porcentaje <- sprintf("%s\n%.1f%%", names(porcentajes), porcentajes)

# Crear el gráfico de torta con colores pasteles y porcentajes
pie(datos, col = colores_pasteles, main = "Distribución de Tipos de Vivienda", labels = labels_con_porcentaje)

El 61,3% de las iviendas son apartamentos y el 38,7% son casas.

# Obtengo el resumen estadístico para atributo categorico barrio
tabla_frecuencias <- table(vivienda$barrio)
# Selecciono los 10 barrios más comunes
top_10_barrios <- head(sort(tabla_frecuencias, decreasing = TRUE), 10)
print(top_10_barrios)
## 
## valle del lili  ciudad jardín          pance       la flora santa teresita 
##           1011            516            409            366            262 
##       el caney     el ingenio    la hacienda          acopi  los cristales 
##            208            202            164            158            154

Entre los barrios mas comunes se encuentra valle del lili y ciudad jardín.

6. Análisis de componentes principales

Este análisis consiste en describir la variación producida por las observaciones de p variables aleatorias, mediante un conjunto de nuevas variables que están correlacionadas entre si, denominadas componentes y que están conformadas por combinación lineal de las variables originales.

Se utiliza como complemento de los análisis descriptivos y para contribución en modelos predictivos, reduciendo el número de variables empleadas en el modelo.

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 númericas antes de proceder a realizar el proceso de estimación de los componentes principales.

viviendanum <- vivienda[, c("piso", "estrato", "banios", "preciom", "areaconst", "parqueaderos", "habitaciones", "longitud", "latitud")]
viviendanum_scale <- scale(viviendanum)
head(viviendanum_scale)
##             piso    estrato      banios    preciom  areaconst parqueaderos
## [1,]  0.07231288 -1.5875138 -0.07795178 -0.5596093 -0.7341272   -0.8264234
## [2,]  0.07231288 -1.5875138 -0.77825510 -0.3465894 -0.3843261   -0.8264234
## [3,]  0.07231288 -1.5875138 -0.77825510 -0.2552951  0.3152762    0.1630750
## [4,] -0.85209228 -0.6157311  1.32265485 -0.1031380  0.7350376    1.1525734
## [5,] -1.31429487  0.3560517 -0.77825510 -0.5291779 -0.5942068   -0.8264234
## [6,] -1.31429487  0.3560517 -0.07795178 -0.5900407 -0.6151949   -0.8264234
##      habitaciones   longitud    latitud
## [1,]    1.6409799  0.9730220  0.3794392
## [2,]   -0.4148373  0.9333558  0.3763898
## [3,]    0.2704351  0.7608937  0.4226005
## [4,]   -0.4148373 -0.6550196  0.4071187
## [5,]   -0.4148373  0.8683951  0.9679811
## [6,]   -0.4148373  0.6671894 -1.1244036

Con el fin de analizar cuales de las variables númericas influyen en la variacion de los precios y la oferta del mercado se realiza la correlación de estan con la variable preciom. Cabe resaltar que los valores de la correlación pueden variar entre -1 y 1. Un valor de 0 indica que no hay correlación entre las variables, un valor de 1 indica una correlación positiva perfecta (las variables aumentan o disminuyen juntas) y un valor de -1 indica una correlación negativa perfecta (las variables aumentan o disminuyen en sentido contrario).

# Selecciono las variables de interés
variables_interes <- c("piso", "estrato", "banios", "areaconst", "parqueaderos", "habitaciones", "longitud", "latitud", "preciom")

# Creo una subconjunto del conjunto de datos con las variables de interés
subset_datos <- viviendanum_scale[, variables_interes]

# Calculo la matriz de correlación solo para la variable "preciom" con las demás variables
correlaciones_preciom <- cor(subset_datos)[, "preciom"]

# Muestro las correlaciones con la variable "preciom"
print(correlaciones_preciom)
##         piso      estrato       banios    areaconst parqueaderos habitaciones 
## -0.009597976  0.609802978  0.669141560  0.687347834  0.630822172  0.264089619 
##     longitud      latitud      preciom 
## -0.343586159 -0.115666874  1.000000000

Areaconst: Presenta la mayor correlación con “preciom” (0.6873). A mayor área construida, mayor precio. Banios: Tiene una correlación de (0.66914) con preciom. A mayor número de baños mayayor precio. Parqueaderos: Muestra una correlación positiva considerable (0.6308). A mayor número de parqueaderos, mayor precio. Estrato: Le sigue en importancia estrato con una correlación de (0.6098). A mayor estrato, mayor precio.

Las viviendas con características como mayor área de construcción, mayor estrato, mayor número de baños y mayor número de parqueaderos, se asocian con un precio más elevado.

prcomp(viviendanum_scale)
## Standard deviations (1, .., p=9):
## [1] 1.8876605 1.2459640 1.0244162 0.8957879 0.8519785 0.7116859 0.6175863
## [8] 0.4855446 0.4276875
## 
## Rotation (n x k) = (9 x 9):
##                      PC1        PC2         PC3         PC4         PC5
## piso         -0.06136538 -0.3260952 -0.70285343 -0.58730315 -0.08633140
## estrato       0.32364618 -0.4790232 -0.09228735  0.15794924  0.02787610
## banios        0.44995533  0.1494583 -0.03982978 -0.23064247  0.09248805
## preciom       0.46792613 -0.1019225 -0.16557056  0.16549241 -0.09788262
## areaconst     0.42917293  0.2463324 -0.04781854  0.01595888 -0.04354080
## parqueaderos  0.38309048  0.0197812 -0.10262598  0.29432074 -0.44625508
## habitaciones  0.26900976  0.5230086  0.06424121 -0.45558566  0.26180040
## longitud     -0.23040232  0.4341646 -0.21871919 -0.00518733 -0.70464629
## latitud      -0.11693409  0.3291882 -0.63537104  0.50505323  0.45555408
##                      PC6         PC7          PC8         PC9
## piso         -0.19175561 -0.07071824 -0.026939523 -0.03190792
## estrato       0.56315564  0.24113665 -0.463060339 -0.20452858
## banios        0.25941221  0.28595991  0.689588210 -0.29540881
## preciom       0.10371641 -0.24338625  0.171331566  0.77905462
## areaconst    -0.04394226 -0.72971396 -0.188083059 -0.42532955
## parqueaderos -0.59574817  0.41436030 -0.107640691 -0.13547380
## habitaciones -0.01240462  0.28576570 -0.480759258  0.24683128
## longitud      0.45856196  0.03816047 -0.042722281  0.02154125
## latitud       0.02745882  0.09244962  0.006823958 -0.04805606

El PCA1 tiene la mayor varianza, ya que la mayor desviación estándar, permite capturar una mayor dispersión en los datos, con (1.887). Posteriomente con la mayor varianza se encuentran los PCA2 y PCA3.

** Elección del número de componentes principales**

options(repos = c(CRAN = "https://cran.rstudio.com"))
# Instalar y cargar el paquete necesario
install.packages("factoextra")
## Installing package into 'C:/Users/victo/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'factoextra' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\victo\AppData\Local\Temp\RtmpeKS6Ll\downloaded_packages
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
res.pca <- prcomp(viviendanum_scale)
fviz_eig(res.pca, addlabels = TRUE)

En este caso el primer componente principal explica el 39.6% de la variabilidad contenida en la base de datos y entre los dos primeros se casi el 57% de los datos (56.8%).

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 de Σ). En este ejercicio el primer componente principal está asociado principalmente con la variables banios y areaconst, mientras que el segundo componente se puede asociar a la variable preciom y estrato.

A continuación se gruparan 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.

7. Análisis de conglomerados

El análisis de conglomerados, también conocido como clustering, es un método estadístico usado para agrupar objetos similares en función de sus características. Mediante este análisis se logra identificar grupos muy parecidos (homogéneos) de objetos o individuos. Dentro de cada grupo los objetos son más similares entre sí que con los de otros grupos. El análisis de conglomerados implica la selección de un conjunto de variables para medir las características de los objetos o individuos, y luego aplicar un algoritmo de agrupamiento para clarificarlos en conglomerados. Los algoritmos de agrupamiento utilizados pueden ser jerárquicos o no jerárquicos, dependiendo de si los grupos se construyen de forma iterativa a partir de subgrupos más pequeños.

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

Como se puede observar, el codo se encuentra en K=4, siendo este el número ideal para el conjunto de datos.

8. Análisis de correspondencia

El Análisis de Correspondencia es un método estadístico utilizado para representar posibles asociaciones entre variables categóricas, es decir la asociación entre sus cagarías, con el fin establecer si existe, patrones o estructuras en los datos

Este método estadístico es de tipo exploratorio y complementario de otros tipos de análisis como los modelos de regresión logístico.

La creación de esta herramienta estadística se le atribuye al matemático y estadístico francés Jean-Paul Benzécri al final de la década de los noventa. A lo largo del tiempo este método se ha empleado por varios campos del conocimiento con diversos nombres como : Escalonamiento óptimo, Análisis canónico, Método de los promedios recíprocos, Puntuaciones aditivas, Puntuaciones apropiadas, Ponderaciones de Guttman, Teoría de cuantificación de Hayashi, Regresión lineal simultánea, Análisis factorial de correspondencia, Biplot, Escalado dual.

library(FactoMineR)
## Warning: package 'FactoMineR' was built under R version 4.3.2
tabla <- table(vivienda$zona, vivienda$estrato)
tabla
##               
##                   3    4 4.63360980887126    5    6
##   Zona Centro   105   14                0    4    1
##   Zona Norte    572  407                0  769  172
##   Zona Oeste     54   84                0  290  770
##   Zona Oriente  340    8                0    2    1
##   Zona Sur      382 1616                3 1685 1043
chisq.test(tabla)
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  tabla
## X-squared = 3833.8, df = 16, p-value < 2.2e-16

Como el valor p es menor que el nivel de significancia, se rechaza la hipótesis nula y se concluye que las dos variables no son independientes.

library(FactoMineR)
library(factoextra)
library(gridExtra)
resultados_ac <- CA(tabla)

Se puede observar que el estrato 4 y 5 se encuentran principalente en la zona sur, el estrato 6 en la zona oeste y el estrato 3 cerca a la zona centro.

valores_prop <-resultados_ac$eig ; valores_prop
##         eigenvalue percentage of variance cumulative percentage of variance
## dim 1 3.221853e-01           6.993563e+01                          69.93563
## dim 2 1.275383e-01           2.768429e+01                          97.61992
## dim 3 1.096206e-02           2.379496e+00                          99.99942
## dim 4 2.686953e-06           5.832475e-04                         100.00000
fviz_screeplot(resultados_ac, addlabels = TRUE, ylim = c(0, 80))+ggtitle("")+
  ylab("Porcentaje de varianza explicado") + xlab("Ejes")

Resultados

Tras examinar detalladamente los datos, se observó una cantidad significativa de información faltante en las variables de parqueadero y piso. Dado que este número superaba el 20%, se optó por realizar imputaciones para mantener la integridad de los datos.

El análisis reveló que las viviendas con características como mayor área de construcción, estrato más alto, un mayor número de baños y un mayor número de parqueaderos tienden a tener un precio más elevado.

El análisis de componentes principales (PCA) destacó la relación existente entre el área construida, el número de baños, el número de parqueaderos y el estrato en relación con el precio de las viviendas.

Adicionalmente, se observó que las viviendas con estrato 4 y 5 están predominantemente ubicadas en la zona sur, mientras que el estrato 6 se encuentra más concentrado en la zona oeste. Por otro lado, el estrato 3 tiende a localizarse cerca de la zona central.

Conclusiones Claves

  • Hay una fuerte relación entre el tamaño de la vivienda, el precio y caracteristicas como numero de baños y parqueaderos.
  • Con base en el analisis de correspondencia se pueden reocmendar las zonas en las que se encuentran las viviendas con relación a su estrato.

Recomendaciones especificas

  • Tener en cuenta que las caracteristicas de la vivienda influyen significativamente en su precio.
  • Realizar campañas de marketing teniendo en cuenta la zona y estrato como se observa en el análisis de correspondencia