Problema

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.

#cargar base de datos
#devtools::install_github("dgonxalex80/paqueteMETODOS")
library(paqueteMET)
library(dplyr)
#vivienda <- read_csv("D:/1 MARIO GM/Data Science/Estadistica 2/vivienda.csv")
glimpse(vivienda)
## Rows: 8,322
## Columns: 13
## $ id           <dbl> 1147, 1169, 1350, 5992, 1212, 1724, 2326, 4386, 1209, 159…
## $ zona         <chr> "Zona Oriente", "Zona Oriente", "Zona Oriente", "Zona Sur…
## $ piso         <chr> NA, NA, NA, "02", "01", "01", "01", "01", "02", "02", "02…
## $ estrato      <dbl> 3, 3, 3, 4, 5, 5, 4, 5, 5, 5, 6, 4, 5, 6, 4, 5, 5, 4, 5, …
## $ preciom      <dbl> 250, 320, 350, 400, 260, 240, 220, 310, 320, 780, 750, 62…
## $ areaconst    <dbl> 70, 120, 220, 280, 90, 87, 52, 137, 150, 380, 445, 355, 2…
## $ parqueaderos <dbl> 1, 1, 2, 3, 1, 1, 2, 2, 2, 2, NA, 3, 2, 2, 1, 4, 2, 2, 2,…
## $ banios       <dbl> 3, 2, 2, 5, 2, 3, 2, 3, 4, 3, 7, 5, 6, 2, 4, 4, 4, 3, 2, …
## $ habitaciones <dbl> 6, 3, 4, 3, 3, 3, 3, 4, 6, 3, 6, 5, 6, 2, 5, 5, 4, 3, 3, …
## $ tipo         <chr> "Casa", "Casa", "Casa", "Casa", "Apartamento", "Apartamen…
## $ barrio       <chr> "20 de julio", "20 de julio", "20 de julio", "3 de julio"…
## $ longitud     <dbl> -76.51168, -76.51237, -76.51537, -76.54000, -76.51350, -7…
## $ latitud      <dbl> 3.43382, 3.43369, 3.43566, 3.43500, 3.45891, 3.36971, 3.4…

Ordenar DATA

La base de datos se denomina vivienda, se ha decidido ordenarla en forma ascendente con referencia a la columna id

# Ordenando por la columna 'id'
data01 <- vivienda[order(vivienda$id), ]

En el dataframe data01 se encuentran datos en forma de texto, que contienen mayúsculas o abreviaciones de las palabras, por tanto se decide cambiar todo a la opción minúsculas, para que los resultados no muestren distintas formas de un mismo dato, ejemplo:

Apartamento, APARTAMENTO, apto.

# Convertir todos los datos en minúsculas, para Mayúsculas usa toupper en vez de tolower
data01 <- mutate_if(data01, is.character, tolower)
data01$tipo[data01$tipo == "apto"] <- "apartamento"
unique(data01$tipo)
## [1] "casa"        "apartamento" NA

Interpretar datos

skim(data01)
Data summary
Name data01
Number of rows 8322
Number of columns 13
_______________________
Column type frequency:
character 4
numeric 9
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
zona 3 1.00 8 12 0 5 0
piso 2638 0.68 2 2 0 12 0
tipo 3 1.00 4 11 0 2 0
barrio 3 1.00 4 29 0 407 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
id 3 1.00 4160.00 2401.63 1.00 2080.50 4160.00 6239.50 8319.00 ▇▇▇▇▇
estrato 3 1.00 4.63 1.03 3.00 4.00 5.00 5.00 6.00 ▅▆▁▇▆
preciom 2 1.00 433.89 328.65 58.00 220.00 330.00 540.00 1999.00 ▇▂▁▁▁
areaconst 3 1.00 174.93 142.96 30.00 80.00 123.00 229.00 1745.00 ▇▁▁▁▁
parqueaderos 1605 0.81 1.84 1.12 1.00 1.00 2.00 2.00 10.00 ▇▁▁▁▁
banios 3 1.00 3.11 1.43 0.00 2.00 3.00 4.00 10.00 ▇▇▃▁▁
habitaciones 3 1.00 3.61 1.46 0.00 3.00 3.00 4.00 10.00 ▂▇▂▁▁
longitud 3 1.00 -76.53 0.02 -76.59 -76.54 -76.53 -76.52 -76.46 ▁▅▇▂▁
latitud 3 1.00 3.42 0.04 3.33 3.38 3.42 3.45 3.50 ▃▇▅▇▅

En el resumen del marco de datos, se puede observar la identificación de variables de la siguiente manera:

Variables Cuantitativas

Existen 9 de valor numérico, las cuales son: id, estrato, preciom, areaconst, parqueaderos, banios, habitaciones, longitud, latitud

Variables Cualitativas

Existen 4 atributos los cuales son: zona, piso, tipo, y barrio de carácter nominal

data02 <- data01 [, c(4, 5, 6, 8, 9)] 
chart.Correlation(data02, hist = TRUE, method = "pearson")

De acuerdo al anális de correlación podemos concluir los siguiente:

El coeficiente de Pearson o grado de asociación lineal del precio con respecto a:

  • área construida fue de 0.7

  • al número de habitaciones fue de 0.3

  • y con respecto al número de baños fue de 0.7

  • De lo cual se puede estimar que a mayor área contruida, mayor número de habitaciones y mayor numero de baños por tanto mayor será su precio.

  • Por otro lado el coeficiente de Pearson o grado de asociación lineal del área construida con respecto a: al número de habitaciones fue de 0.5 y con respecto al número de baños fue de 0.6, lo que indica que a mayor mayor área construida mayor numero de habitaciones y baños.

  • Finalmente el coeficiente de Pearson o grado de asociación lineal del número de habitaciones con respecto al número de baños es de 0.6, indicando que a mayor número de habitaciones, mayor número de baños se prsentarán. _____________________________________________________________________________________________

Distribución Zonas

conteo_valoreszona <- table(data01$zona  )
conteo_valoreszona_df <- as.data.frame(conteo_valoreszona )
datos <- conteo_valoreszona_df$Freq

# Etiquetas para las secciones
etiquetas <- round(conteo_valoreszona_df$Freq / sum(conteo_valoreszona_df$Freq), 3)*100


# Colores para las secciones (opcional)
colores <- c("red", "blue", "green", "orange", "purple")


# Crear el diagrama de sectores con etiquetas en la mitad
pie(datos, labels = etiquetas, col = colores, clockwise = TRUE, radius = 1, init.angle = 90)
leyenda_etiquetas <- conteo_valoreszona_df$Var1 
conflicts_prefer(graphics::legend)
## [conflicted] Will prefer graphics::legend over any other package.
legend ("topright", legend = leyenda_etiquetas, fill = colores)

Se presenta la distribución del numero de inmuebles por zona, donde el mayor porcentaje(56.8 %) se presento en la zona zur, seguido por la zona norte (23.1 %), zona oeste (14.4%), zona oriente (4.2%) y zona centro (1,5%).

Tipo de Vivienda

conteo_valorestipo <- table(data01$tipo )
conteo_valorestipo_df <- as.data.frame(conteo_valorestipo )
conteo_valorestipo_df

Hay más apartamentos que casas

# Crear el diagrama de cajas por categorías
boxplot(data01$preciom ~ data01$tipo, data = data01, col = c("red", "blue" ), ylab = "Precio", xlab = "Tipo")

Las casas presentan mayor precio que los apartamentos

Distribución Estrato

conteo_valoresestrato <- table(data01$estrato )
conteo_valoresestrato_df <- as.data.frame(conteo_valoresestrato )


# Obtener los valores de la columna "Valores"
valores <- round(conteo_valoresestrato_df$Freq / sum(conteo_valoresestrato_df$Freq),2)


# Etiquetas para las barras
etiquetas <- conteo_valoresestrato_df$Var1

# Colores para las barras (opcional)
colores <- c("red", "blue", "green", "orange")

# Crear el diagrama de barras
barplot(valores, names.arg = etiquetas, col = colores)


# Agregar el valor a cada barra
text(x = 1:length(valores), y = valores, labels = valores, pos = 1, col = "black")

De la gráfica anterior se puede concluir que el más alto porcentaje de inmuebles se encuentra en el estrato 5 con el 33%, seguido del estrato 4 (26%), estrato 6 (24%) y estrato 3 (17%).

Imputación de datos

Seguidamente se calcula la existencia y el total de datos faltantes en la data VIVIENDA, la cual ha sido asignada anteriormente al dataframe df1

miss_var_summary(data01)
n_miss(data01)
## [1] 4275

se puede osbervar que hay un total de datos perdidos de: (4275) del porcentaje de datos perdidos que tiene cada variable en relación al total de 8330 observaciones que posee cada columna.

Validación NA´s

vis_miss(data01, cluster = TRUE)

aggr(data01,numbers=T,sortVar=T)

## 
##  Variables sorted by number of missings: 
##      Variable        Count
##          piso 0.3169911079
##  parqueaderos 0.1928622927
##            id 0.0003604903
##          zona 0.0003604903
##       estrato 0.0003604903
##     areaconst 0.0003604903
##        banios 0.0003604903
##  habitaciones 0.0003604903
##          tipo 0.0003604903
##        barrio 0.0003604903
##      longitud 0.0003604903
##       latitud 0.0003604903
##       preciom 0.0002403268

El diagrama ilustra cómo cerca del 50% de los datos presentan al menos una característica con valores faltantes (NA), lo que introduce una capa adicional de complejidad en la implementación de los algoritmos.

Dado este contexto, se tomará la decisión de abordar la imputación de estos valores faltantes en la variable “Piso y Parqueadero” omitiendo el uso de estas variables


Retos

El reto principal consiste 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:

1.Componentes PCA

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.

Respuesta:

Para identificar si es viable realizar un Análisis de Componentes Principales (PCA), primero debemos normalizar las variables y luego realizar test de barlett y kmo

Selección Variables

Ahora tendremos en cuenta las siguientes variables

head(data02,3)

Escalar Variables

data03 <- data02 %>%
scale()
head(data03,10) # primeros 2 registros
##          estrato    preciom  areaconst     banios habitaciones
##  [1,]  1.3275950  1.3574069  0.4341303  1.3224164    0.2703863
##  [2,] -0.6156201  2.3310953  4.3721812  2.0225935    2.3258329
##  [3,]  0.3559875 -0.5595420 -0.6220787 -0.7781148   -0.4147626
##  [4,]  1.3275950  2.5745174  1.1965594  2.0225935    0.9555352
##  [5,]  1.3275950  2.6353729  2.9732288  2.7227705    0.9555352
##  [6,]  1.3275950  0.2407081 -0.1044663  0.6222393    0.2703863
##  [7,]  1.3275950  1.3269792  2.2038050  2.0225935    0.9555352
##  [8,]  0.3559875 -0.3769755 -0.6465604 -0.7781148   -0.4147626
##  [9,] -0.6156201 -0.5899698 -0.6640473 -0.7781148   -0.4147626
## [10,]  1.3275950  0.7792795 -0.1744140  1.3224164    0.2703863

Test de Bartlett

prueba estadística para homogeneidad de varianzas, y para la aplicación en un AF es decir proporciona la probabilidad estadística de que la matriz de correlación de las variables sea una matriz identidad.

cortest.bartlett(data03)
## R was not square, finding R from data
## $chisq
## [1] 21905.33
## 
## $p.value
## [1] 0
## 
## $df
## [1] 10

Podemos identificar que Chi cuadrado de 21897 es mayor a 60 por tanto se puede hacer PCA

Medida MSA o KMO

Este índice se extiende de 0 a 1, llegando a 1 cuando cada variable es perfectamente predicha sin error por las otras variables. Esta medida puede ser interpretada de la siguiente forma:

  • 0.8 >= perfecto para realizar un AF
  • 0.6 a 0.7 adecuado (Es viable realizar un AF)
  • 0.4 a 0.5 aceptable (Se puede implementar un AF sin embargo se sugiere verificar el estado de las variables) Menores a 0.4 no se recomienda un AF
KMO(data03)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = data03)
## Overall MSA =  0.69
## MSA for each item = 
##      estrato      preciom    areaconst       banios habitaciones 
##         0.61         0.69         0.75         0.74         0.58

el resultado MSA es de 0.69 por tanto * 0.6 a 0.7 adecuado (Es viable realizar un AF)

PCA estimar:

data03<- na.omit(data03)
prcomp(data03)
## Standard deviations (1, .., p=5):
## [1] 1.7126702 1.0901061 0.6673491 0.4916092 0.4376110
## 
## Rotation (n x k) = (5 x 5):
##                     PC1        PC2        PC3        PC4        PC5
## estrato      -0.3300034 -0.6744210 -0.4209148 -0.4795679 -0.1705853
## preciom      -0.5068979 -0.2807716  0.3015624  0.2214323  0.7240509
## areaconst    -0.4940391  0.1638245  0.6525161 -0.2985094 -0.4628195
## banios       -0.5189521  0.1092985 -0.3767724  0.6647387 -0.3672975
## habitaciones -0.3475145  0.6538646 -0.4051619 -0.4358863  0.3123167

PCA gráfica

library(FactoMineR) 
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
PCA(data03, scale.unit = TRUE, ncp = 5, graph = TRUE)

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 8319 individuals, described by 5 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"

De la anterior gráfica se puede observar la relación que existe entre la variable estrato y precio, así como la relación entre el area, las habitaciones y baños.

Un método alternativo para determinar el número de componentes principales es observar un Scree Plot, que es el gráfico de valores propios ordenados de mayor a menor. El número de componentes se determina en el punto, más allá del cual los valores propios restantes son todos relativamente pequeños y de tamaño comparable

grafico_pca <- prcomp(data03)
fviz_eig(grafico_pca, addlabels = TRUE)

Matríz correlaciones

matriz_correlaciones <- cor(data03, use = "pairwise.complete.obs")
matriz_correlaciones
##                  estrato   preciom areaconst    banios habitaciones
## estrato       1.00000000 0.6098066 0.2743233 0.4203218  -0.07137615
## preciom       0.60980664 1.0000000 0.6873520 0.6691456   0.26409121
## areaconst     0.27432332 0.6873520 1.0000000 0.6484165   0.51691292
## banios        0.42032178 0.6691456 0.6484165 1.0000000   0.58990641
## habitaciones -0.07137615 0.2640912 0.5169129 0.5899064   1.00000000
corPlot(matriz_correlaciones,numbers = 0.5)

Podemos observar una gran correlación entre el precio el estrato y el area lo cual incide en la compra de los bienes inmuebles

det(matriz_correlaciones)
## [1] 0.07183907

Cálculo Factores

resultado_pca<-prcomp(data03)
resultado_pca
## Standard deviations (1, .., p=5):
## [1] 1.7126702 1.0901061 0.6673491 0.4916092 0.4376110
## 
## Rotation (n x k) = (5 x 5):
##                     PC1        PC2        PC3        PC4        PC5
## estrato      -0.3300034 -0.6744210 -0.4209148 -0.4795679 -0.1705853
## preciom      -0.5068979 -0.2807716  0.3015624  0.2214323  0.7240509
## areaconst    -0.4940391  0.1638245  0.6525161 -0.2985094 -0.4628195
## banios       -0.5189521  0.1092985 -0.3767724  0.6647387 -0.3672975
## habitaciones -0.3475145  0.6538646 -0.4051619 -0.4358863  0.3123167
print(summary(resultado_pca))
## Importance of components:
##                           PC1    PC2     PC3     PC4    PC5
## Standard deviation     1.7127 1.0901 0.66735 0.49161 0.4376
## Proportion of Variance 0.5866 0.2377 0.08907 0.04833 0.0383
## Cumulative Proportion  0.5866 0.8243 0.91337 0.96170 1.0000

De los 5 factores se puede concluir los siguiente:

el factor 1, explica el 58.66% de la varianza. el factor 2, explica el 23.77% de la varianza. el factor 3, explica el 8.90% de la varianza. el factor 4, explica el 4.83% de la varianza. el factor 5, explica el 3.83% de la varianza.

Lo cual lo podemos observar en el gráfico de segmentación siguiente:

Gráf. sidementación

conflicts_prefer(psych::scree)
## [conflicted] Will prefer psych::scree over any other package.
scree(data03,main ="Grafico_de_Sedimentacion")

Según el gráfico de sedimentación, lo optimo seria realizar 3 componentes, puesto que este valor se encuentra por encima de la línea aceptable de la grafica .

# Almacenamiento de los componetes princilaes seleccionados
CP1 = resultado_pca[[2]][,1]
CP2 = resultado_pca[[2]][,2]
CP3 = resultado_pca[[2]][,3]
ComponentePrincipal = cbind(CP1, CP2, CP3)
ComponentePrincipal
##                     CP1        CP2        CP3
## estrato      -0.3300034 -0.6744210 -0.4209148
## preciom      -0.5068979 -0.2807716  0.3015624
## areaconst    -0.4940391  0.1638245  0.6525161
## banios       -0.5189521  0.1092985 -0.3767724
## habitaciones -0.3475145  0.6538646 -0.4051619

2.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.

Respuesta

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.

data04 <- data01 [, c(2, 4,10)]
head(data04,3)
cat("Parametrizacion de liberias: cluster, factoextra,NbClust")
## Parametrizacion de liberias: cluster, factoextra,NbClust
set.seed(123)
library(cluster)
library(factoextra)
library(NbClust)
print(" ")
## [1] " "

Variables dummy

A continuación, se realiza las conversión de la variables cualitativas (tipo y zona) en numéricas, esto con el objetivo de poder utilizar un algoritmo de clustering:

data_cluster <- data04
data_cluster <- data_cluster %>% mutate(zona = replace(zona, 
                                               zona == "zona centro", 1))
data_cluster <- data_cluster %>% mutate(zona = replace(zona, 
                                               zona == "zona norte", 2))
data_cluster <- data_cluster %>% mutate(zona = replace(zona, 
                                               zona == "zona oeste", 3))
data_cluster <- data_cluster %>% mutate(zona = replace(zona, 
                                               zona == "zona oriente",4))
data_cluster <- data_cluster %>% mutate(zona = replace(zona, 
                                               zona == "zona sur", 5))
data_cluster$zona <- as.numeric(data_cluster$zona)
                          
 # Tipo                         
data_cluster <- data_cluster %>% mutate(tipo = replace(tipo, 
                                               tipo == "casa", 1))
data_cluster <- data_cluster %>% mutate(tipo = replace(tipo, 
                                               tipo == "apartamento", 2))
data_cluster$tipo <- as.numeric(data_cluster$tipo)
head(data04,6)
head(data_cluster,6)

Kmeans CODO

data_cluster<- na.omit(data_cluster)
scv <- (nrow(data_cluster) - 1) * sum(apply(data_cluster, 2, var))
for (i in 2:15) scv[i] <- sum(kmeans(data_cluster,
                                     centers = i)$withinss)
plot(1:15, scv, 
     type = "b", 
     xlab = "Cantidad de Clusters",
     ylab="Suma de cuadrados dentro de grupos")

El gráfico anterior representa la varianza dentro de los clusters. Disminuye a medida que se aumenta k. Se puede observar una deflexión en k=4, esto indica que los clusteres adicionales más alla del cuarto tiene poco valor.

Una vez se tienen los datos preparados y se ha definido el número de clusters, se procede a la aplicación del algoritmo de clustering. Para esta caso, se usará k-means, uno de los algoritmos mas comunes, que busca formar grupos basados en la similitud entre las observaciones.

Método SILUETA

fviz_nbclust(data_cluster, kmeans, method = "silhouette") + labs (subtitle="silhouette method")

En la anterior gráfica siguiendo nos define más exactamente el uso de 2 cluster pues en el de Kmeans me subrayaba 4 cluster, por eso verificando con este método se tomará solo 2 cluster para el respectivo análisis

num_clusters <- 2
clustering_result <- kmeans(data_cluster, centers = num_clusters)

En los resultados podemos observar que se han generado 2 clusters con los siguientes tamaños de muestra:

clustering_result$size
## [1] 3242 5077

A continuación se graficará la ubicación de cada uno de los clusters con relación a las dos dimensiones principales:

fviz_cluster(clustering_result, data = data_cluster,
palette = c("#2E9FDF", "#E7B800"),
ellipse.type = "euclid", # Concentration ellipse
star.plot = TRUE, # Add segments from centroids to items
repel = FALSE, # Avoid label overplotting (slow)
ggtheme = theme_minimal()
)

El cluster plot muestra cómo las observaciones se agrupan en clusters. Cada color representa un cluster diferente.

Se observa una cercanía entre los clusters 1 y 2. También se ven observaciones alejadas de los clusters principales , esto puede hacer pensar que sean observaciones atípicas o anómalas y merecen un análisis adicional. No se observa demasiada superposición entre los clusters, es decir, los clusters estan claramente definidos, esto es una señal de que el número de clusters elegido es apropiado para los datos. Los porcentajes en las dos dimensiones dentro del cluster plot proporcionan información sobre la proporción de varianza que se captura en cada dimensión y cómo contribuye a la resepresentación visual de los resultados.


3.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.

Respuesta

data_acm <- data01 [, c(2,4,10)]
data_acm$estrato = as.factor(data_acm$estrato)
#head(data_acm,3)
str(data_acm)
## tibble [8,322 × 3] (S3: tbl_df/tbl/data.frame)
##  $ zona   : chr [1:8322] "zona sur" "zona oeste" "zona sur" "zona sur" ...
##  $ estrato: Factor w/ 4 levels "3","4","5","6": 4 2 3 4 4 4 4 3 2 4 ...
##  $ tipo   : chr [1:8322] "casa" "casa" "apartamento" "apartamento" ...
# Realizar la prueba de chi-cuadrado

set.seed(7)  # Establecer una semilla para reproducibilidad
chi_cuadrado <- data.frame(
  estrato = rep(c("3", "4", "5", "6"), times = 50),
  tipo = sample(c("zona centro", "zona sur","zona norte", "zona oeste","zona oriente"), size = 100, replace = TRUE)
)

# Crear una tabla de contingencia
tabla_zona_estrato <- table(data_acm$estrato, data_acm$zona)

# Mostrar la tabla de contingencia
print(tabla_zona_estrato)
##    
##     zona centro zona norte zona oeste zona oriente zona sur
##   3         105        572         54          340      382
##   4          14        407         84            8     1616
##   5           4        769        290            2     1685
##   6           1        172        770            1     1043
chisq <- chisq.test(tabla_zona_estrato)
chisq
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_zona_estrato
## X-squared = 3830.4, df = 12, p-value < 0.00000000000000022
library(factoextra) # Librerías
library(gridExtra)
ac <- CA(tabla_zona_estrato) # Gráfico

A través de esta representación gráfica, emergen patrones claros y concretos:

  • El estrato 6 se encuentra prominentemente ubicado en la Zona Oeste.
  • Los estratos 4 y 5 exhiben una asociación con las zonas sur casi cerca a la zona norte
  • El estrato 3 se manifiesta en las zonas Oriente y Centro.

Conclusiones

La visualización gráfica resultante nos brinda una perspectiva valiosa de las relaciones entre las variables estrato y zona en el mercado inmobiliario. Podemos identificar patrones significativos permitiendo una segmentación más precisa del mercado y una mejor comprensión de las preferencias de los compradores en diferentes áreas geográficas.

Este enfoque estadístico refuerza la validez de las tendencias que se han identificado visualmente y establece un fundamento sólido para guiar las decisiones estratégicas en el ámbito inmobiliario.

La reducción de dimensionalidad mediante PCA permitió identificar las variables numéricas más influyentes en la variabilidad del mercado inmobiliario. El 82.43% de la varianza total fue capturada por los primeros 2 componentes.

El análisis de correspondencia reveló relaciones significativas entre las variables categóricas y numéricas, lo que sugiere cómo factores como el tipo de propiedad y la zona se relacionan con características numéricas como el estrato.

Recomendaciones

Valoración Precisa: Utilizar las variables más influyentes identificadas por el análisis PCA para mejorar la valoración precisa de las propiedades, considerando factores clave.

Segmentación de Mercado: Utilizar los resultados del análisis de agrupamientos para desarrollar estrategias de segmentación de mercado dirigidas a diferentes tipos de propiedades y compradores.

El análisis de datos ha proporcionado una comprensión más profunda y cuantificable del mercado inmobiliario, esto puede conllevar a la optimización de la inversión y la maximización de los beneficios a través de estrategias generando una ventaja competitiva significativa en un entorno altamente competitivo y en constante cambio.