1 Introducción

Una empresa inmobiliaria líder en una gran ciudad está buscando comprender en profundidad el mercado de viviendas urbanas para tomar decisiones estratégicas más informadas. La empresa posee una base de datos extensa que contiene información detallada sobre diversas propiedades residenciales disponibles en el mercado. Se requiere realizar un análisis holístico de estos datos para identificar patrones, relaciones y segmentaciones relevantes que permitan mejorar la toma de decisiones en cuanto a la compra, venta y valoración de propiedades.

2 Objetivos

  • Implementar el análisis de componentes principales para reducir la dimensionalidad de los datos y identificar las principales variables que influyen en el mercado inmobiliario.
  • Aplicar técnicas de análisis de conglomerados para segmentar el mercado de viviendas y descubrir patrones de agrupación basados en características comunes.
  • Realizar un análisis de correspondencia para explorar las relaciones entre el estrato socioeconómico y la ubicación geográfica de las propiedades, y su impacto en el valor de mercado.

3 Preprocesamiento

Esta etapa es crucial para asegurar que los datos estén listos para su análisis, ayudando a obtener insights más precisos y a construir modelos predictivos más eficaces. La calidad y preparación de los datos pueden tener un impacto significativo en la fiabilidad y validez de los resultados obtenidos en fases posteriores.

3.1 Cargue de información - Viviendas

# Leer el archivo xlsx
datos_de_viviendas_original <- read_excel("vivienda.xlsx", sheet = 1)
# Ver los primeros registros del DataFrame para verificar
head(datos_de_viviendas_original)
## # 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>

3.2 Estructura de los datos

str(datos_de_viviendas_original)
## 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 ...

Dimensiones: La información cargada contiene 8,322 registros y 13 variables.

Variables y Tipos de Datos:

  • id: numérico (num), identificador único para cada observación.
  • zona: caracter (chr), describe la zona geográfica de la propiedad.
  • piso: caracter (chr), indica el piso de la propiedad.
  • estrato: numérico (num), categoría socioeconómica de la propiedad.
  • preciom: numérico (num), precio por metro cuadrado de la propiedad.
  • areaconst: numérico (num), área construida de la propiedad en metros cuadrados.
  • parqueaderos: numérico (num), número de parqueaderos disponibles.
  • banios: numérico (num), número de baños en la propiedad.
  • habitaciones: numérico (num), número de habitaciones en la propiedad.
  • tipo: caracter (chr), tipo de propiedad (por ejemplo, “Casa”).
  • barrio: caracter (chr), nombre del barrio donde se encuentra la propiedad.
  • longitud: numérico (num), coordenada longitudinal de la ubicación de la propiedad.
  • latitud: numérico (num), coordenada latitudinal de la ubicación de la propiedad.

En resumen, hay dos tipos de datos: numérico y carácter, con un total de 9 variables numéricas y 4 variables tipo carácter.

3.3 Identificación de valores nulos

total_nulos_por_columna <- colSums(is.na(datos_de_viviendas_original))

# Imprimir el total de valores nulos por columna
print(total_nulos_por_columna)
##           id         zona         piso      estrato      preciom    areaconst 
##            3            3         2638            3            2            3 
## parqueaderos       banios habitaciones         tipo       barrio     longitud 
##         1605            3            3            3            3            3 
##      latitud 
##            3

Observaciones:

  • Variables con mínimos valores nulos (3 registros nulos, 0.036%): id, zona, estrato, banios, habitaciones, tipo, barrio, longitud, y latitud. Estas variables tienen una cantidad minima de valores nulos en relación con el total de registros.

  • Variable preciom (2 registros nulos, 0.024%):* Esta variable tiene el menor número de valores nulos.

  • Variable parqueaderos (1,605 registros nulos, 19.286%): Contiene una cantidad alta de registros nulos sobre los parqueaderos, lo que podría afectar análisis relacionados con esta variable.

  • Variable piso (2,638 registros nulos, 31.699%): Esta variable tiene la mayor cantidad de valores nulos. Dado que más del 30% de los registros carecen de esta información, esto podría limitar los análisis que dependen de esta variable, a menos que se imputen los datos o se eliminen.

3.4 Eliminación de valores nulos

Se dicide eliminar las columnas “parqueaderos” y “piso” del set de datos debido a varias consideraciones clave. Primero, ambas columnas presentan un alto porcentaje de datos faltantes, con “piso” afectado por un 31.699% y “parqueaderos” por un 19.286% de valores nulos. Esta significativa ausencia de datos sugiere que mantener estas variables podría no aportar valor sustancial al análisis y podría, de hecho, sesgar los resultados debido a la falta de información. Además, la alta proporción de datos faltantes en estas variables puede indicar problemas en la recolección o en la integridad de la fuente de datos, lo que pone en duda la calidad del análisis si se incluyen estas columnas. Finalmente, considerando el impacto en la precisión del modelo, la presencia de tantos valores nulos en estas variables podría comprometer la fiabilidad de cualquier modelo predictivo desarrollado a partir de este dataset.

datos_de_viviendas_filtrado <- datos_de_viviendas_original[, -c(3, 7, 11, 12, 13)]

3.5 Registros duplicados

duplicados <- duplicated(datos_de_viviendas_filtrado) | duplicated(datos_de_viviendas_filtrado, fromLast = TRUE)
# Para ver los registros duplicados
datos_de_viviendas_filtrado[duplicados, ]
## # A tibble: 2 × 8
##      id zona  estrato preciom areaconst banios habitaciones tipo 
##   <dbl> <chr>   <dbl>   <dbl>     <dbl>  <dbl>        <dbl> <chr>
## 1    NA <NA>       NA      NA        NA     NA           NA <NA> 
## 2    NA <NA>       NA      NA        NA     NA           NA <NA>

Observaciones:

El resultado obtenido al identificar registros duplicados de la información cargada fueron dos (2) registros, donde todas sus filas son NA.

3.6 Eliminación de registros duplicados.

# Eliminar registros duplicados, manteniendo solo la primera aparición
datos_de_viviendas_unicos <- datos_de_viviendas_filtrado[!duplicated(datos_de_viviendas_filtrado), ]
#Eliminar registros con alguna variable nula
datos_de_viviendas_final <- na.omit(datos_de_viviendas_unicos)

Observaciones:

Se eliminaron los registros duplicados y aquellos que contenían valores nulos en alguna de sus variables. Inicialmente, se contaba con 8,322 registros; tras este proceso de limpieza, el conjunto de datos se redujo a 8,319 registros, los cuales están listos para el análisis subsiguiente.

3.7 Normalización de los nombres de las variables

La actulización de los nombres de las variables es una práctica común y útil en la manipulación y análisis de datos. Facilita la legibilidad, la consistencia, la preparación para el análisis, y puede mejorar la estética de los informes y gráficos generados.

# Nombres originales
nombres_originales <- colnames(datos_de_viviendas_final)
# Nombres nuevos
nombres_nuevos <- c("Id", "Zona", "Estrato","PrecioVivienda","AreaConstruccion","CantidadBanos","CantidadHabitaciones","TipoVivienda")
# Cambiar los nombres de las columnas
colnames(datos_de_viviendas_final) <- nombres_nuevos
# Imprimir los nombres anteriores y los actuales
for (i in 1:length(nombres_originales)) {
  cat("El nombre de Columna", nombres_originales[i], "fue actualizado por:", nombres_nuevos[i], "\n")
}
## El nombre de Columna id fue actualizado por: Id 
## El nombre de Columna zona fue actualizado por: Zona 
## El nombre de Columna estrato fue actualizado por: Estrato 
## El nombre de Columna preciom fue actualizado por: PrecioVivienda 
## El nombre de Columna areaconst fue actualizado por: AreaConstruccion 
## El nombre de Columna banios fue actualizado por: CantidadBanos 
## El nombre de Columna habitaciones fue actualizado por: CantidadHabitaciones 
## El nombre de Columna tipo fue actualizado por: TipoVivienda

3.8 Errores tipográficos en variables categóricas

datos_de_viviendas_final$Zona <- as.factor(datos_de_viviendas_final$Zona)
datos_de_viviendas_final$Estrato <- as.factor(datos_de_viviendas_final$Estrato)
datos_de_viviendas_final$TipoVivienda <- as.factor(datos_de_viviendas_final$TipoVivienda)
# Variables categóricas a graficar
cols_cat <- c('Zona', 'Estrato', 'TipoVivienda')

# Crear los gráficos 
for (col in cols_cat) {
  print(ggplot(datos_de_viviendas_final, aes(x = !!sym(col), fill = !!sym(col))) + 
          geom_bar() + 
          theme(axis.text.x = element_text(angle = 30, hjust = 1)) + 
          labs(title = col, x = col, y = 'Count') +
          scale_fill_viridis_d())
}

Observaciones:

Una vez revisada las variables categóricas (Visualmente) en nuestro conjunto de datos, confirmamos que todos los subniveles están correctamente etiquetados y no existen discrepancias en su escritura. No se requiere acción adicional para unificar subniveles, permitiéndonos avanzar en nuestro análisis con datos consistentes y precisos.

3.9 Validación de integridad de datos numéricos

# Definir las columnas a evaluar
columnas_a_evaluar <- c('id', 'PrecioVivienda', 'AreaConstruccion', 'CantidadBanos', 'CantidadHabitaciones')

for(col in columnas_a_evaluar) {
  # Verificar si la columna es numérica
  if(is.numeric(datos_de_viviendas_final[[col]])) {
    # Índices de valores negativos
    negativos <- which(datos_de_viviendas_final[[col]] < 0)
    # Si hay valores negativos
    if(length(negativos) > 0) {
      #cat("Valores negativos en", col, "en los índices:", negativos, "\n")
    } else {
     # cat("No hay valores negativos en", col, "\n")
    }
  } else {
    # Indicar la presencia de valores que no son numéricos
    #cat("La columna", col, "contiene valores que no son numéricos.\n")
  }
}

Observaciones:

Una vez revisada las columnas específicas id, PrecioVivienda, AreaConstruccion, CantidadBanos, y CantidadHabitaciones en el conjunto de datos, se ha concluido que no existen valores negativos en ninguna de estas columnas. Además, todas las variables mencionadas han sido verificadas y confirmadas como numéricas, asegurando que son adecuadas para cualquier análisis estadístico o matemático que se pretenda realizar.

4 Análisis estadístico descriptivo

4.1 Tipo de viviendas

TipoVivienda

total_inmuebles

porcentaje_tipo

Apartamento

5,100

61.31

Casa

3,219

38.69

Observaciones:

El análisis del mercado inmobiliario muestra una clara división entre dos tipos principales de propiedades: apartamentos y casas. De un total de 8,319 inmuebles analizados, los apartamentos comprenden el 61.31% del mercado con 5,100 unidades, mientras que las casas representan el 38.69%, sumando 3,219 unidades. Esta distribución muestra la predominancia de los apartamentos, lo que podría indicar una tendencia hacia la densificación urbana y una preferencia por viviendas más compactas en áreas metropolitanas (Cali).

4.2 Tipo de viviendas por zonas

A continuacion, se detalla las ventas de apartamentos y casas teniendo en cuenta las diferentes zonas de la ciudad:

Zona

TipoVivienda

total_inmuebles

porcentaje_zona_tipo

Zona Centro

Apartamento

24

0.29%

Zona Centro

Casa

100

1.20%

Zona Norte

Apartamento

1,198

14.40%

Zona Norte

Casa

722

8.68%

Zona Oeste

Apartamento

1,029

12.37%

Zona Oeste

Casa

169

2.03%

Zona Oriente

Apartamento

62

0.75%

Zona Oriente

Casa

289

3.47%

Zona Sur

Apartamento

2,787

33.50%

Zona Sur

Casa

1,939

23.31%

Observaciones:

  • Dominancia de la zona Sur: La Zona Sur muestra la mayor concentración de inmuebles, tanto en apartamentos (33.50%) como en casas (23.31%), sumando más de la mitad del total del mercado inmobiliario analizado. Esto indica que la Zona Sur es la región más densamente poblada o con mayor actividad de desarrollo inmobiliario, lo cual podría reflejar una alta demanda de vivienda o una oferta amplia debido a políticas de urbanización o atractivos específicos de esta área.

  • Preferencia por apartamentos en zonas urbanizadas: En general, los apartamentos son más prevalentes que las casas en todas las zonas, destacando especialmente en la Zona Norte (14.40%) y la Zona Oeste (12.37%). Esto podría sugerir una tendencia hacia la verticalización y el aprovechamiento del espacio en áreas urbanas.

  • Zona Centro con menor densidad de inmuebles: La Zona Centro tiene la menor cantidad de inmuebles, con solo un 1.49% del total combinado de apartamentos y casas.

  • Variabilidad regional en tipos de vivienda: Mientras que la Zona Sur y la Zona Norte muestran una significativa mezcla de apartamentos y casas, las Zonas Oeste y Oriente tienen una marcada preferencia por apartamentos sobre casas, con la Zona Oriente mostrando el menor porcentaje de apartamentos.

4.3 Número de viviendas por estrato

Observaciones:

  • Predominio del estrato 5: El estrato 5 representa el segmento más grande dentro de la distribución, con 2,750 viviendas que constituyen el 33.06% del total. Esto indica una significativa concentración de viviendas en este estrato, sugiriendo que una porción considerable de la población reside en zonas clasificadas como de alto nivel socioeconómico, posiblemente reflejando un mercado inmobiliario orientado a la clase media-alta.

  • Distribución por estrato: Los estratos 4 y 6 también presentan proporciones importantes, con el 25.59% y 23.89% respectivamente, mostrando una amplia distribución de viviendas en los estratos medio-alto y alto. El estrato 3, por su parte, representa el 17.47%, siendo el menos representado en esta muestra pero aún constituyendo una porción significativa, lo que indica una diversidad en las condiciones de vivienda y accesibilidad económica en la población analizada.

  • Implicaciones socioeconómicas: La distribución de viviendas por estrato refleja la estratificación socioeconómica y las preferencias habitacionales dentro de la sociedad. La concentración de viviendas en estratos más altos (4, 5, y 6) sugiere que existe una demanda robusta en el segmento de vivienda de media a alta gama, posiblemente impulsada por factores como ingresos familiares más altos, búsqueda de mejores servicios y ubicaciones preferenciales.

  • Oportunidades de mercado: Para desarrolladores e inversores inmobiliarios, el alto porcentaje de viviendas en estratos 5 y 6 destaca un mercado potencialmente lucrativo para proyectos residenciales de lujo y media-alta gama. Sin embargo, la presencia no despreciable de viviendas en el estrato 3 subraya también la importancia de considerar proyectos que aborden las necesidades de la población con menor capacidad económica.

4.4 Análisis de la variable precio de apartementos

## [1] "Análisis Original"
##        Media Mediana Moda Minimo Maximo  Q1  Q2  Q3 RIQ
## 25% 366.9435     279  250     58   1950 175 279 430 255

## [1] "Análisis Filtrado"
##        Media Mediana Moda Minimo Maximo  Q1  Q2  Q3 RIQ
## 25% 298.8171     260  250     58    810 175 260 430 255

Observaciones:

  • Reducción en los valores extremos: La aplicación del RIQ ha reducido significativamente el valor máximo de los precios de los apartamentos de 1950 a 810 millones, lo que indica una efectiva eliminación de valores extremos superiores que pueden distorsionar el análisis.

  • Disminución de la media: La media de los precios ha disminuido de 366.9435 a 298.8171 millones después de aplicar el RIQ. Esto sugiere que los valores extremos tenían un impacto considerable en aumentar el promedio de precios de los apartamentos.

  • Cambio en la mediana: La mediana ha disminuido ligeramente de 279 a 260 millones. La mediana es menos sensible a los valores extremos que la media, por lo que este cambio, aunque presente, es menos pronunciado.

  • Estabilidad de la moda: La moda permanece sin cambios en 250 millones en ambos análisis. Esto indica que el valor más frecuente de los precios de los apartamentos no fue afectado por la eliminación de valores extremos.

  • Consistencia en los cuartiles y el RIQ: Los valores de Q1, Q3, y el RIQ permanecen constantes (175, 430, y 255 millones, respectivamente) en ambos análisis. Esto sugiere que la aplicación del RIQ de 1.5 no alteró la distribución central de los datos, sino que se enfocó en ajustar los valores extremos.

  • Impacto en el rango de precios: El rango de precios (diferencia entre el máximo y el mínimo) ha disminuido considerablemente después de aplicar el RIQ, de 1892 (1950-58) a 752 (810-58) millones. Esto refleja una concentración más estrecha de los precios de los apartamentos alrededor de valores más típicos, eliminando los valores atípicos que distorsionan.

La aplicación del Rango Intercuartílico de 1.5 ha demostrado ser efectiva en mitigar el impacto de los valores atípicos en el análisis, resultando en una representación más precisa y menos sesgada de los precios de los apartamentos. Esto es particularmente útil para evitar conclusiones erróneas basadas en unos pocos valores extremadamente altos o bajos.

4.5 Análisis de la variable precio de Casas

## [1] "Análisis Original"
##        Media Mediana Moda Minimo Maximo  Q1  Q2  Q3 RIQ
## 25% 539.9935     430  350     77   1999 300 430 670 370

## [1] "Análisis Filtrado"
##        Media Mediana Moda Minimo Maximo  Q1  Q2  Q3 RIQ
## 25% 469.6859     400  350     77   1200 300 400 670 370

Observaciones:

  • Impacto en los valores extremos: Al igual que con los apartamentos, el valor máximo de los precios de las casas ha disminuido significativamente de 1999 a 1200 millones tras aplicar el RIQ, lo que indica una eliminación efectiva de valores extremos que podrían distorsionar el análisis general.

  • Reducción de la media: La media de los precios ha disminuido de 539.9935 a 469.6859 millones después de la filtración, reflejando el impacto significativo de los valores extremos en el promedio original y cómo su eliminación conduce a una media más representativa de la mayoría de los datos.

  • Disminución leve en la mediana: La mediana se ha reducido de 430 a 400 millones. Este cambio, aunque menor que el observado en la media, sugiere que la distribución central de los precios de las casas ha sido ligeramente ajustada hacia abajo tras la eliminación de valores atípicos.

  • Estabilidad de la moda: La moda se mantiene constante en 350 millones en ambos análisis, lo que indica que el precio más comúnmente observado en las casas no se ha visto afectado por el proceso de filtrado.

  • Consistencia en cuartiles y el RIQ: Los valores de Q1, Q3, y el RIQ permanecen iguales (300, 670, y 370 millones, respectivamente) antes y después de la aplicación del RIQ. Esto muestra que el ajuste de valores atípicos se centró en los extremos de la distribución sin alterar la estructura central de los datos.

  • Reducción del rango de precios: El rango de precios (diferencia entre el máximo y el mínimo) ha disminuido de 1922 (1999-77) a 1123 (1200-77) millones, indicando una distribución de precios de casas más concentrada y menos influenciada por valores atípicos extremos.

La aplicación del Rango Intercuartílico de 1.5 en el análisis de precios de casas ha demostrado ser efectiva para moderar el efecto de los valores extremos, llevando a conclusiones más representativas y confiables. Al igual que con los apartamentos, este método de filtrado ayuda a obtener una visión más precisa del mercado inmobiliario, eliminando distorsiones causadas por valores anormalmente altos o bajos.

4.6 Análisis de la variable Estrato

## [1] "Análisis Original"
##       Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 2.63361       3    3      1      4  2  3  3   1

Observaciones:

  • Media: 2.63, sugiriendo un promedio ligeramente inclinado hacia los valores más bajos dentro del rango observado.
  • Mediana y Moda: Ambas son 3, indicando que el valor central y el más frecuente en el conjunto de datos coincide, lo cual apunta a una concentración de los datos alrededor de este valor.
  • Rango: Los valores oscilan entre 1 (mínimo) y 4 (máximo), mostrando que los datos se distribuyen dentro de un rango limitado.
  • Rango Intercuartílico (RIQ): De 1, reflejando una dispersión moderada de los datos alrededor de la mediana.

Estas métricas sugieren una distribución relativamente concentrada de los datos, con una tendencia clara hacia el valor 3. Este patrón indica que, dentro del contexto analizado, existe una preferencia o tendencia predominante hacia el nivel representado por el valor 3. La similitud entre la media, mediana y moda, junto con un rango intercuartílico estrecho, refleja una distribución equilibrada con una variabilidad moderada.

4.7 Análisis de la variable Area de contrucción

## [1] "Análisis Original"
##        Media Mediana Moda Minimo Maximo Q1  Q2  Q3 RIQ
## 25% 174.9349     123   60     30   1745 80 123 229 149

## [1] "Análisis Filtrado"
##        Media Mediana Moda Minimo Maximo Q1  Q2  Q3 RIQ
## 25% 153.4955     118   60     30    452 80 118 229 149

Observaciones:

La aplicación del RIQ de 1.5 ha tenido un efecto notable en la reducción de los valores extremos, especialmente en el valor máximo del área de construcción, lo que resulta en una media más representativa de la población general sin alterar significativamente la mediana, la moda, ni los cuartiles. Esto indica que el método fue efectivo para concentrar el análisis en un rango más típico y menos distorsionado de áreas de construcción, lo cual es crucial para obtener una comprensión más precisa del mercado inmobiliario. La consistencia en la moda y los cuartiles muestra que la distribución central de los datos permanece estable, lo que sugiere que la aplicación del RIQ se enfocó correctamente en ajustar los valores extremos sin alterar la estructura general de la distribución.

4.8 Análisis de la variable Cantidad de Banos

## [1] "Análisis Original"
##        Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 3.111311       3    2      0     10  2  3  4   2

## [1] "Análisis Filtrado"
##       Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 3.06463       3    2      0      7  2  3  4   2

Observaciones:

La aplicación de un filtro basado en el RIQ de 1.5 para manejar valores atípicos en la cantidad de baños resulta en una ligera reducción de la media, mientras que la mediana, moda, y el RIQ se mantienen estables. Este ajuste efectivamente reduce la variabilidad extrema (reduciendo el valor máximo de baños de 10 a 7) sin alterar significativamente la distribución central de los datos. Esto sugiere que la mayoría de las propiedades se concentran alrededor de tener 2 a 4 baños, y los valores extremos por encima de 7 baños son relativamente raros y pueden considerarse atípicos en este contexto.

4.9 Análisis de la variable Cantidad de habitaciones

## [1] "Análisis Original"
##        Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 3.605361       3    3      0     10  3  3  4   1

## [1] "Análisis Filtrado"
##        Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 3.290809       3    3      2      5  3  3  4   1

Observaciones:

La aplicación del filtro basado en el RIQ de 1.5 conduce a una notable reducción en la variabilidad extrema de la cantidad de habitaciones, limitando el máximo a 5 y estableciendo un mínimo en 2. Este ajuste hace que la media disminuya ligeramente, aunque la mediana, la moda, y el RIQ se mantienen estables. Este análisis resalta una distribución más concentrada y representativa de la cantidad de habitaciones en las propiedades, eliminando los casos extremos y enfocando la atención en el rango más común de 2 a 5 habitaciones.

4.10 Análisis de Correlación

El objetivo es determinar si existe una asociación lineal entre las variables y cuán fuerte es esa asociación.

4.11 Tipo de vivienda - Casa

# Filtrar para seleccionar solo las filas donde TipoVivienda es "Casa"
Casa_filtrada <- filter(datos_de_viviendas_final, TipoVivienda == "Casa")

# Seleccionar las variables de interés
Casa_seleccionada <- select(Casa_filtrada, 
                            PrecioVivienda, 
                            AreaConstruccion, 
                            CantidadBanos, 
                            CantidadHabitaciones)

# Calcular la matriz de correlación
Casa_cor <- cor(Casa_seleccionada)

# Visualizar la matriz de correlación
ggcorrplot(Casa_cor, type = "upper", lab = TRUE) +
  labs(title = "Mapa de Correlación de Características de Viviendas - CASAS") +
  theme(plot.title = element_text(hjust = 0.5))

print(Casa_cor)
##                      PrecioVivienda AreaConstruccion CantidadBanos
## PrecioVivienda           1.00000000        0.6529498     0.5581002
## AreaConstruccion         0.65294983        1.0000000     0.4871721
## CantidadBanos            0.55810021        0.4871721     1.0000000
## CantidadHabitaciones     0.09683573        0.2866020     0.4757406
##                      CantidadHabitaciones
## PrecioVivienda                 0.09683573
## AreaConstruccion               0.28660204
## CantidadBanos                  0.47574058
## CantidadHabitaciones           1.00000000

Observaciones:

La matriz de correlación sugiere que el precio de la vivienda (Casas) está más estrechamente vinculado al área de construcción y la cantidad de baños que al número de habitaciones. Además, se evidencia que las características físicas como el área de construcción, la cantidad de baños y habitaciones están interrelacionadas, lo que refleja cómo se estructuran y valoran las viviendas en el mercado.

4.12 Tipo de vivienda - Apartamentos

# Filtrar para seleccionar solo las filas donde TipoVivienda es "Casa"
apto_filtrada <- filter(datos_de_viviendas_final, TipoVivienda == "Apartamento")

# Seleccionar las variables de interés
apto_seleccionada <- select(Casa_filtrada, 
                            PrecioVivienda, 
                            AreaConstruccion, 
                            CantidadBanos, 
                            CantidadHabitaciones)

# Calcular la matriz de correlación
apto_cor <- cor(apto_seleccionada)

# Visualizar la matriz de correlación
ggcorrplot(apto_cor, type = "upper", lab = TRUE) +
  labs(title = "Mapa de Correlación de Características de Viviendas Tipo - (Apartamentos)") +
  theme(plot.title = element_text(hjust = 0.5))

print(Casa_cor)
##                      PrecioVivienda AreaConstruccion CantidadBanos
## PrecioVivienda           1.00000000        0.6529498     0.5581002
## AreaConstruccion         0.65294983        1.0000000     0.4871721
## CantidadBanos            0.55810021        0.4871721     1.0000000
## CantidadHabitaciones     0.09683573        0.2866020     0.4757406
##                      CantidadHabitaciones
## PrecioVivienda                 0.09683573
## AreaConstruccion               0.28660204
## CantidadBanos                  0.47574058
## CantidadHabitaciones           1.00000000

Observaciones:

La correlación entre el precio de la vivienda (Apartamentos) y sus características físicas destaca la importancia del área de construcción y la cantidad de baños como predictores significativos del valor de una propiedad. Mientras que el número de habitaciones tiene una influencia menor en el precio, su relación con otras características de la vivienda, como el número de baños, subraya cómo la funcionalidad y el diseño afectan la percepción de valor en el mercado inmobiliario.

4.13 Coeficientes de Cramér

El Coeficiente de Cramér es una medida estadística que se utiliza para cuantificar la fuerza y la significación de la asociación entre dos variables categóricas.

# Crear tablas de contingencia
tabla_TipoVivienda_Zona <- table(datos_de_viviendas_final$TipoVivienda, datos_de_viviendas_final$Zona)
tabla_TipoVivienda_Estrato <- table(datos_de_viviendas_final$TipoVivienda, datos_de_viviendas_final$Estrato)
tabla_Zona_Estrato <- table(datos_de_viviendas_final$Zona, datos_de_viviendas_final$Estrato)

# Mostrar una de las tablas de contingencia como ejemplo
print(tabla_TipoVivienda_Zona)
##              
##               Zona Centro Zona Norte Zona Oeste Zona Oriente Zona Sur
##   Apartamento          24       1198       1029           62     2787
##   Casa                100        722        169          289     1939
# Calcular y mostrar el coeficiente de Cramér para cada par de variables
cramer_TipoVivienda_Zona <- assocstats(tabla_TipoVivienda_Zona)$cramer
cramer_TipoVivienda_Estrato <- assocstats(tabla_TipoVivienda_Estrato)$cramer
cramer_Zona_Estrato <- assocstats(tabla_Zona_Estrato)$cramer

print(paste("Coeficiente de Cramér - TipoVivienda y Zona:", cramer_TipoVivienda_Zona))
## [1] "Coeficiente de Cramér - TipoVivienda y Zona: 0.288191639436686"
print(paste("Coeficiente de Cramér - TipoVivienda y Estrato:", cramer_TipoVivienda_Estrato))
## [1] "Coeficiente de Cramér - TipoVivienda y Estrato: 0.164213592268196"
print(paste("Coeficiente de Cramér - Zona y Estrato:", cramer_Zona_Estrato))
## [1] "Coeficiente de Cramér - Zona y Estrato: 0.391767009686814"

Observaciones:

Interpretación de Coeficientes de Cramér

Los coeficientes de Cramér nos ofrecen una medida de la fuerza de asociación entre las variables categóricas analizadas.

  • TipoVivienda y Zona (0.288): Este valor indica una asociación moderada, lo que sugiere que la distribución de tipos de vivienda (Apartamento vs. Casa) varía significativamente entre diferentes zonas. Esto puede reflejar diferencias en la planificación urbana, la demanda de vivienda, o las preferencias de los habitantes en distintas áreas.

  • TipoVivienda y Estrato (0.164): Una asociación más débil entre el tipo de vivienda y el estrato indica que, aunque hay alguna relación, el estrato socioeconómico no determina de manera significativa si una vivienda será un apartamento o una casa. Esto sugiere que dentro de los mismos estratos socioeconómicos, puede haber una diversidad de tipos de vivienda disponibles.

  • Zona y Estrato (0.391): Este es el valor más alto entre los coeficientes calculados, lo que sugiere una asociación más fuerte entre la ubicación geográfica de la vivienda (Zona) y su estrato socioeconómico. Esto puede indicar patrones de segregación residencial, donde ciertas zonas son predominantemente de ciertos estratos, reflejando diferencias en el acceso a recursos, servicios y calidad de vida.

Los coeficientes de Cramér, al analizarlos en conjunto con estos porcentajes, nos ayudan a comprender mejor cómo el tipo de vivienda se relaciona con la zona y el estrato socioeconómico, revelando patrones de distribución urbana y segregación socioeconómica. La moderada asociación entre tipo de vivienda y zona puede reflejar una diversidad de preferencias y necesidades habitacionales, mientras que la fuerte asociación entre zona y estrato destaca cómo el espacio urbano está estratificado socioeconómicamente.

5 Analisis de componentes principales (PCA)

Iniciaremos un análisis de componentes principales (ACP) centrado en variables cruciales del mercado inmobiliario: PrecioVivienda, AreaConstruccion, CantidadBanos, y CantidadHabitaciones. Excluimos la información geográfica (longitud y latitud) y el ID, al ser datos de coordenadas e identificadores únicos que poco aportan al análisis. Este enfoque nos permitirá identificar las principales influencias en los precios y la oferta de viviendas, simplificando la complejidad de los datos para una interpretación más directa y eficaz de las tendencias del mercado.

# Escalado de los datos
datos_escalados <- scale(datos_de_viviendas_final[, 3:7])
# Detalle de los datos escalados
#head(datos_escalados)

# Análisis de patrones de datos faltantes
md.pattern(datos_escalados)
##  /\     /\
## {  `---'  }
## {  O   O  }
## ==>  V <==  No need for mice. This data set is completely observed.
##  \  \|/  /
##   `-----'

##      Estrato PrecioVivienda AreaConstruccion CantidadBanos CantidadHabitaciones
## 8319       1              1                1             1                    1
##            0              0                0             0                    0
##       
## 8319 0
##      0
# Analisis de componentes principales
#prcomp(datos_escalados) # Componentes pricipales

 #Ejecución de Análisis de Componentes Principales (ACP) y Almacenamiento de Resultados
datos_de_viviendas_acp <- prcomp(datos_escalados)

#---------------------------------------------------------
# Obtener los valores propios y el porcentaje de varianza explicada
valores_propios <- datos_de_viviendas_acp$sdev^2
porcentaje_varianza_explicada <- valores_propios / sum(valores_propios) * 100
# Visualización de Valores Propios y Porcentaje de Varianza Explicada por Cada Componente Principal
fviz_eig(datos_de_viviendas_acp, addlabels = TRUE)

# Mostrar los detalles
print(valores_propios)
## [1] 2.9331575 1.1883211 0.4453505 0.2416783 0.1914925
print(porcentaje_varianza_explicada)
## [1] 58.663151 23.766422  8.907009  4.833567  3.829851
#---------------------------------------------------------

El proceso inicia con el escalado de datos de viviendas para estandarizar las escalas de las variables y permitir una comparación equitativa entre ellas. Se realiza un análisis de los patrones de datos faltantes para evaluar cómo los valores ausentes podrían afectar el análisis. Posteriormente, se aplica un Análisis de Componentes Principales (ACP) sobre los datos escalados, una técnica que reduce la dimensionalidad de los datos y transforma las variables originales en componentes principales independientes, capturando la mayor varianza posible. A través de varias visualizaciones, se examina la importancia de cada componente principal, la contribución de las variables a estos componentes y cómo cada una influye en la estructura de los datos.

Observaciones:

Valores nulos:

  • No existen valores nulos en las variables.

Valores propios:

  • El primer componente principal tiene un valor propio de aproximadamente 2.93.
  • El segundo componente principal tiene un valor propio de alrededor de 1.19.
  • El tercer componente principal tiene un valor propio de aproximadamente 0.45.
  • El cuarto componente principal tiene un valor propio de alrededor de 0.24.
  • El quinto componente principal tiene un valor propio de aproximadamente 0.19.

Porcentaje de varianza explicada:

  • El primer componente principal explicada alrededor del 58.66% de la varianza total en los datos.
  • El segundo componente principal explicada aproximadamente el 23.77% de la varianza total.
  • El tercer componente principal explicada alrededor del 8.91% de la varianza total.
  • El cuarto componente principal explicada aproximadamente el 4.83% de la varianza total.
  • El quinto componente principal explicada alrededor del 3.83% de la varianza total.
# Visualización de la Contribución de Variables al Primer Componente Principal
fviz_contrib(datos_de_viviendas_acp, choice = "var", axes = 1)

#Visualización de la Contribución de Variables al Segundo Componente Principal
fviz_contrib(datos_de_viviendas_acp, choice = "var", axes = 2)

fviz_pca_var(datos_de_viviendas_acp,
             col.var = "contrib",
             gradient.cols = c("blue",  "red"),
            repel = TRUE)

print (datos_de_viviendas_acp)
## Standard deviations (1, .., p=5):
## [1] 1.7126464 1.0901014 0.6673458 0.4916079 0.4375986
## 
## Rotation (n x k) = (5 x 5):
##                            PC1        PC2        PC3        PC4        PC5
## Estrato              0.3300032 -0.6744363  0.4208934 -0.4795545  0.1706159
## PrecioVivienda       0.5068715 -0.2807656 -0.3015468  0.2213868 -0.7240921
## AreaConstruccion     0.4940473  0.1638135 -0.6525373 -0.2984641  0.4628138
## CantidadBanos        0.5189619  0.1092831  0.3767649  0.6647648  0.3672488
## CantidadHabitaciones 0.3475270  0.6538568  0.4051685 -0.4359154 -0.3122700

Los resultados muestran las cargas (o coeficientes) de las variables originales en cada componente principal. Las cargas indican la fuerza y dirección de la relación entre cada variable original y cada componente principal:

Componente Principal 1 (PC1):

Variables con cargas más altas: * CantidadBanos (0.5189619) * AreaConstruccion (0.4940473) * PrecioVivienda (0.5068715)

Interpretación: El PC1 está fuertemente influenciado por las variables relacionadas con el tamaño y precio de la vivienda, así como la cantidad de baños. Esto sugiere que el PC1 puede representar el tamaño y valor de la vivienda.

Componente Principal 2 (PC2):

Variables con cargas más altas: * CantidadHabitaciones (0.6538568) * Estrato (-0.6744363)

Interpretación: El PC2 está dominado por las variables de cantidad de habitaciones y estrato. Una carga negativa para estrato indica una relación inversa, lo que sugiere que este componente puede representar características relacionadas con el estrato y el tamaño de la vivienda.

Componente Principal 3 (PC3), Componente Principal 4 (PC4) y Componente Principal 5 (PC5):

Interpretación: Estos componentes tienen cargas menores en comparación con los primeros dos componentes principales. Esto indica que las variables originales tienen una influencia relativamente menor en estos componentes. Sin embargo, aún pueden proporcionar información sobre otros aspectos de la estructura de los datos.

Porcentaje suficiente para retener la información relevante:

Por lo general, se busca retener suficiente varianza para preservar la estructura y las relaciones importantes entre las variables del conjunto de datos. Esto implica seleccionar un número suficiente de componentes principales para explicar la mayor parte de la variabilidad en los datos. En muchos casos, se considera que retener al menos el 70-80% de la varianza total es adecuado para preservar la estructura subyacente de los datos.

Conclusiones:

  • Los primeros dos componentes principales (PC1 y PC2) capturan la mayor parte de la variabilidad en los datos y están principalmente influenciados por variables relacionadas con el tamaño, precio, estrato y características de las viviendas.
  • Los componentes restantes tienen cargas más bajas y pueden representar aspectos menos importantes o específicos de la estructura de los datos.
  • Teniendo en cuenta todo lo anterior, podemos concluir que seleccionar los primeros dos componentes principales sería suficiente para retener aproximadamente el 82.43% de la varianza total, lo que supera el umbral del 70-80% sugerido para preservar la estructura subyacente de los datos.

6 Análisis de conglomerados

En este análisis de agrupamiento, nuestro objetivo es segmentar las propiedades residenciales en grupos homogéneos con características similares. Esto nos permitirá comprender las dinámicas y demandas específicas en diferentes partes de la ciudad y en diferentes estratos socioeconómicos. Utilizaremos el mismo set de datos que se utilizó en el análisis de componentes principales, centrándonos en encontrar una relación entre el precio y el estrato socioeconómico como punto de partida.

# Escalado de los datos
datos_escalados <- scale(datos_de_viviendas_final[, 3:7])

# Detalle de los datos escalados
head(datos_escalados)
##         Estrato PrecioVivienda AreaConstruccion CantidadBanos
## [1,] -1.5872276     -0.5595498       -0.7339949   -0.07793773
## [2,] -1.5872276     -0.3465670       -0.3842568   -0.77811479
## [3,] -1.5872276     -0.2552886        0.3152194   -0.77811479
## [4,] -0.6156201     -0.1031580        0.7349051    1.32241640
## [5,]  0.3559875     -0.5291236       -0.5940997   -0.77811479
## [6,]  0.3559875     -0.5899759       -0.6150839   -0.07793773
##      CantidadHabitaciones
## [1,]            1.6406840
## [2,]           -0.4147626
## [3,]            0.2703863
## [4,]           -0.4147626
## [5,]           -0.4147626
## [6,]           -0.4147626
k_numbers <- numeric(10) 

for (k in 1:10) {
  kmeans_result <- kmeans(datos_de_viviendas_final[, 3:7], centers = k, nstart = 10)
  k_numbers [k] <- kmeans_result$tot.withinss
}

# Crear un data frame con los resultados
resultados_codo <- data.frame(
  numero_de_clusters = 1:10,
  inercia = k_numbers
)

# Mostrar el data frame
print(resultados_codo)
##    numero_de_clusters    inercia
## 1                   1 1068569117
## 2                   2  399834213
## 3                   3  228370848
## 4                   4  166324515
## 5                   5  138329120
## 6                   6  119135828
## 7                   7  105199863
## 8                   8   88150572
## 9                   9   75880735
## 10                 10   67022955
plot(1:10, k_numbers, type = "b", pch = 19, frame = FALSE,
     xlab = "Numero de Clusters", ylab = "Inercia",
     main = "Analisis de Codo")

Observaciones:

Para determinar el número de clusters apropiados usando la técnica del análisis de codo y los valores de inercia, debemos buscar el punto en el cual el descenso en la inercia se “suaviza” o se reduce la tasa de cambio.

Disminución de la inercia de un número de clusters al siguiente:

  • De 1 a 2 clusters: 1068569117 - 399834213 = 668735904
  • De 2 a 3 clusters: 399834213 - 228370848 = 171463365
  • De 3 a 4 clusters: 228370848 - 166324515 = 62046333
  • De 4 a 5 clusters: 166324515 - 138344252 = 27980263
  • De 5 a 6 clusters: 138344252 - 119135828 = 19208424
  • De 6 a 7 clusters: 119135828 - 101251771 = 17884057
  • De 7 a 8 clusters: 101251771 - 86763372 = 14488399
  • De 8 a 9 clusters: 86763372 - 75880735 = 10882637
  • De 9 a 10 clusters: 75880735 - 66759110 = 9121625

Al observar los cambios en la inercia ocurre cuando pasamos de 1 a 2 clusters, lo cual es esperado ya que el primer cluster agrupa todos los datos y al introducir un segundo cluster, se puede capturar una gran cantidad de la estructura de datos. Sin embargo, buscamos el punto donde la disminución adicional en la inercia se vuelve más pequeña, que es donde se supone que está el “codo”. La disminución se reduce considerablemente después del tercer cluster (desde 171463365 a 62046333), y luego sigue una tendencia de disminuciones más graduales. Entre el 4 y el 5, la disminución es aún notable, pero comienza a ser menos pronunciada. Sin embargo, basándonos únicamente en los números, un buen candidato podría ser 4 clusters, ya que después de este punto las disminuciones en la inercia se vuelven menos pronunciadas, indicando que agregar más clusters no está mejorando significativamente la compactación de los mismos.

# Se establece el número óptimo de clusters
k_opt <- 4

# Seleccionamos solo las columnas numéricas para el clustering
datos_de_viviendas_cluster <- datos_de_viviendas_final[, 3:7]

# Aplicamos kmeans
kmeans_result <- kmeans(datos_de_viviendas_cluster, centers = k_opt, nstart = 10)

# Agregamos la asignación de clusters al data frame
datos_de_viviendas_cluster$cluster <- kmeans_result$cluster

# Calculamos el resumen por cluster, excluyendo la columna 'cluster' del cálculo de la media
cluster_summary <- aggregate(datos_de_viviendas_cluster[, -ncol(datos_de_viviendas_cluster)],  # Excluyes la última columna 'cluster'
                             by = list(cluster = datos_de_viviendas_cluster$cluster), 
                             FUN = mean)

print(cluster_summary)
##   cluster  Estrato PrecioVivienda AreaConstruccion CantidadBanos
## 1       1 3.531969       780.4893        306.57116      4.538789
## 2       2 2.851106       436.4115        198.16067      3.521722
## 3       3 2.095412       212.7789         88.99817      2.187408
## 4       4 3.798450      1389.8740        444.22180      5.189922
##   CantidadHabitaciones
## 1             4.255754
## 2             4.032780
## 3             3.065642
## 4             4.315891
ggplot(datos_de_viviendas_cluster, aes(x = PrecioVivienda, y = AreaConstruccion, color = cluster)) +
  geom_point() +
  labs(x = "Precio",
       y = "Area Construida",
       title = "Área construida y precio por cluster",
       color = "Cluster",
       shape = "Cluster") +
  theme_minimal()

ggplot(datos_de_viviendas_cluster, aes(x = PrecioVivienda, y = CantidadBanos, color = cluster)) +
  geom_point() +
  labs(x = "Precio",
       y = "Número de Baños",
       title = "Número de baños y precios por Cluster",
       color = "Cluster") +
  theme_minimal()

ggplot(datos_de_viviendas_cluster, aes(x = PrecioVivienda, y = CantidadHabitaciones, color = cluster)) +
  geom_point() +
  labs(x = "Precio",
       y = "Parqueaderos",
       title = "Número de habitaciones y precio por cluster",
       color = "Cluster") +
  theme_minimal()

resumen_cluster <- datos_de_viviendas_cluster %>%
  group_by(cluster) %>%
  summarise(
    Count = n(),
    PrecioMin = min(PrecioVivienda),
    PrecioMax = max(PrecioVivienda),
    BanosMin = min(CantidadBanos),
    BanosMax = max(CantidadBanos),
    AreaMin = min(AreaConstruccion),
    AreaMax = max(AreaConstruccion),
    HabitacionesMin = min(CantidadHabitaciones),
    HabitacionesMax = max(CantidadHabitaciones)
  )

# Visualizamos el resultado
print(resumen_cluster)
## # A tibble: 4 × 10
##   cluster Count PrecioMin PrecioMax BanosMin BanosMax AreaMin AreaMax
##     <int> <int>     <dbl>     <dbl>    <dbl>    <dbl>   <dbl>   <dbl>
## 1       1  1173       255      1110        0       10     100    1745
## 2       2  2532       170       650        0       10      47    1365
## 3       3  4098        58       360        0       10      30     410
## 4       4   516       980      1999        0       10     153    1600
## # ℹ 2 more variables: HabitacionesMin <dbl>, HabitacionesMax <dbl>

Observaciones:

Cluster 1: Con 516 viviendas, este grupo se caracteriza por tener propiedades con un rango de precio de 980 a 1999 millones, lo que sugiere que podrían ser viviendas de gama media a alta. El número de baños y habitaciones varía de 0 a 10, indicando una gran diversidad en el tamaño y posiblemente en el lujo o capacidades de las viviendas. El área de construcción varía entre 153 y 1600 mt2, lo que refleja una amplia gama de tamaños de propiedades, desde apartamentos pequeños hasta grandes casas.

Cluster 2: Es el segundo grupo más grande con 2532 viviendas. Las viviendas aquí tienen precios más bajos, de 170 a 650 millones, lo que indica que este cluster podría consistir principalmente en viviendas económicas. Al igual que el Cluster 1, la cantidad de baños y habitaciones varía de 0 a 10, aunque el rango de área de construcción es de 47 a 1365 mt2, sugiriendo que, a pesar de los precios más bajos, hay una considerable variación en el tamaño de las viviendas.

Cluster 3: Con 1173 viviendas, este grupo tiene un rango de precio de 255 a 1110 millones, colocándose en un segmento de precio medio. La variación en el número de baños y habitaciones es igual a los otros clusters (0 a 10), y el área de construcción oscila entre 100 y 1745 mt2, lo que indica que este cluster podría incluir una mezcla de viviendas de varios tamaños, incluyendo algunas de las propiedades más grandes en términos de área.

Cluster 4: Este es el grupo más numeroso con 4098 viviendas, pero también es el que tiene el rango de precios más bajo, de 58 a 360 millones, sugiriendo que consiste en viviendas muy económicas. La cantidad de baños y habitaciones también varía de 0 a 10, pero el área de construcción es notablemente menor, de 30 a 410 mt2, lo que implica que este cluster está compuesto principalmente por viviendas pequeñas.

Diversidad dentro de los clusters: Cada cluster muestra una amplia gama de viviendas en términos de tamaño (área de construcción y cantidad de habitaciones/baños), pero hay claras diferencias en los rangos de precios. Esto indica que el precio fue el factor determinante significativo en la formación de clusters.

Segmentación del mercado de viviendas: Los clusters reflejan diferentes segmentos del mercado, desde viviendas económicas (Cluster 4) hasta propiedades de gama media y alta (Clusters 1 y 3). El Cluster 2, siendo el más grande, podría representar el segmento económico con mayor diversidad en términos de tamaño.

7 Análisis de correspondencia

En el análisis propuesto, se examinarán las relaciones entre las zonas y los estratos de un conjunto de datos de viviendas, así como el impacto de la zona en el precio de las viviendas.

Primero, se seleccionarán específicamente las variables relacionadas con la zona y el estrato para un análisis detallado. A través de un Análisis de Correspondencias, se identificarán y visualizarán las asociaciones entre las distintas zonas y estratos, revelando cómo estas categorías interactúan entre sí. Este proceso permitirá descubrir patrones y conexiones subyacentes que podrían no ser evidentes a primera vista.

Posteriormente, se explorará cómo varía el precio de las viviendas en función de la zona, utilizando un enfoque visual a través de diagramas de caja. Este análisis destacará las diferencias en la distribución de precios entre las zonas, enfocándose en aspectos como la mediana, la variabilidad y la presencia de valores atípicos. La aplicación de colores distintivos para cada zona facilitará la comparación y comprensión de estas diferencias.

datos_de_viviendas_categoricos <- datos_de_viviendas_final[, c(2,3)] #Zona y Estrato
set.seed(1234)
md.pattern(datos_de_viviendas_categoricos, rotate.names = TRUE)
##  /\     /\
## {  `---'  }
## {  O   O  }
## ==>  V <==  No need for mice. This data set is completely observed.
##  \  \|/  /
##   `-----'

##      Zona Estrato  
## 8319    1       1 0
##         0       0 0
tabla_1 <- table(datos_de_viviendas_categoricos$Zona, datos_de_viviendas_categoricos$Estrato)
res_ac <- CA(tabla_1)

val_prop <-res_ac$eig
fviz_screeplot(res_ac, addlabels = TRUE, ylim = c(0, 80))+ggtitle("")+
  ylab("Porcentaje de varianza explicado") + xlab("Ejes")

xxxx <- datos_de_viviendas_final[, c(2,4)]
ggplot(datos_de_viviendas_final[, c(2,4)], aes(x = Zona, y = PrecioVivienda, fill = Zona)) +
  geom_boxplot(alpha = 0.75) +  # Ajusta la opacidad si es necesario
  labs(title = "Precios por zona") +
  theme(legend.position = "none",
        panel.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank()) +
  scale_fill_brewer(palette = "Set3")  # Utiliza una paleta de colores predefinida

Observaciones:

  • A partir de un análisis detallado de 8319 observaciones, se ha identificado una clara asociación entre el estrato socioeconómico y la ubicación de las viviendas dentro de la ciudad. Específicamente, el estrato 4 domina en la zona oeste, mientras que los estratos 4 y 5 se distribuyen predominantemente en las zonas sur y norte. Por su parte, el estrato 3 se encuentra más concentrado en las zonas centro y oriente, revelando patrones específicos de asentamiento según el nivel socioeconómico.

  • Adicionalmente, el análisis revela que el 70% de la varianza explicada por la primer componente. Este dato es significativo, ya que indica que una gran parte de la variabilidad en los datos puede ser atribuida a esta principal dimensión de análisis.

  • En cuanto a los precios de vivienda, la zona oriente destaca por tener los valores promedio más elevados, característica que se alinea con la predominancia del estrato 6, o zona de ingresos altos. Le sigue la zona sur con los segundos precios más altos, lo cual concuerda con la presencia frecuente de los estratos socioeconómicos 4 y 5. Contrariamente, la zona oriente registra los precios más bajos, situación influenciada no solo por la prevalencia del estrato 3 sino también por ser reconocida como la zona de ingresos más bajos de la ciudad en estudio. Este panorama subraya la coherencia entre la ubicación geográfica de las viviendas, su estrato socioeconómico y el nivel de precios, ofreciendo una perspectiva integral de la dinámica inmobiliaria de la ciudad.

8 Conlcusiones generales

Observaciones:

Estas observaciones se basan en la distribución y características de las propiedades, la segmentación del mercado, el estrato socioeconómico, la ubicación geográfica, y los patrones de precios identificados:

Preferencias y tendencias del mercado

  • Predominancia de apartamentos: Hay una clara preferencia por los apartamentos sobre las casas, indicando una tendencia hacia la densificación urbana y una preferencia por viviendas más compactas, especialmente en áreas metropolitanas.
  • Diversidad en la Distribución de Viviendas: La distribución de viviendas muestra una clara división entre diferentes zonas de la ciudad, con una predominancia de ciertos estratos en áreas específicas, reflejando patrones de asentamiento basados en el nivel socioeconómico.

Segmentación del mercado

  • Segmentación por precio y tamaño: Los clusters identificados demuestran que el mercado se puede segmentar de manera efectiva según el rango de precios, el tamaño de la vivienda, y la cantidad de habitaciones y baños. Esto subraya la existencia de segmentos de mercado distintos que van desde viviendas económicas hasta propiedades de gama media y alta.
  • Relación entre Estrato Socioeconómico y Ubicación: Existe una correlación significativa entre el estrato socioeconómico de las viviendas y su ubicación geográfica dentro de la ciudad, con estratos más altos predominando en ciertas zonas. Esto sugiere patrones de segregación residencial y preferencias habitacionales que varían según el nivel socioeconómico.

Importancia de las características físicas

  • Influencia en el precio de la vivienda: El análisis ha mostrado que el área de construcción y la cantidad de baños son predictores significativos del valor de una propiedad, tanto para casas como para apartamentos. Esto indica la importancia de estas características físicas en la percepción de valor y en la decisión de compra.

Uso del análisis estadístico para la toma de decisiones

  • Aplicación de técnicas avanzadas: El uso de técnicas como el Análisis de Componentes Principales y el análisis de clusters ha permitido identificar las principales variables que impactan en el mercado y segmentar el mercado de manera efectiva, facilitando la identificación de oportunidades y tendencias.

Conclusión global

La información analizada revela un mercado de viviendas urbanas complejo y segmentado, donde la ubicación, el estrato socioeconómico, y características específicas de las propiedades como el tamaño y la cantidad de baños juegan roles cruciales en la determinación del valor de las propiedades. Para la empresa inmobiliaria, entender estas dinámicas es esencial para tomar decisiones informadas sobre desarrollo de proyectos, estrategias de inversión, y posicionamiento de mercado.

Recomendaciones estratégicas

  • Enfocarse en segmentos de mercado específicos: Desarrollar y promocionar propiedades que se alineen con las preferencias y necesidades de segmentos específicos del mercado, basándose en las tendencias identificadas.
  • Valorar la ubicación y el estrato: Considerar la ubicación y el estrato socioeconómico como factores clave en la evaluación y desarrollo de propiedades, adaptando las ofertas a las expectativas de los segmentos objetivo.