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.
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.
Para establecer sólidas ventajas competitivas en el mercado inmobiliario, hemos llevado a cabo un análisis exhaustivo de los datos que conforman el mercado de viviendas. El objetivo principal de este análisis exploratorio fue identificar patrones, tendencias y relaciones subyacentes en los datos, proporcionando una base sólida para la toma de decisiones estratégicas. A continuación, describimos el proceso paso a paso, resaltando cómo cada etapa puede guiar nuestras decisiones:
1. Descripción y Composición del Dataset. El conjunto de datos recopila una serie de atributos cruciales, como el precio de la propiedad, el área total, el estrato socioeconómico, el número de habitaciones y baños, la ubicación geográfica y la tipología específica de cada vivienda. Estos atributos son fundamentales para comprender los factores que influyen en los precios y las preferencias de los clientes.
2. Transformación y Estandarización del Dataset. Para asegurar la calidad y consistencia de los datos, implementamos un proceso de limpieza que involucró la eliminación de valores nulos y la estandarización de formatos, especialmente en la categoría “tipo” de propiedad. Al estandarizar los datos, hemos mejorado la integridad y uniformidad de la información, lo que se traduce en una base sólida y confiable para el análisis.
3. Análisis Estadístico Univariado. Después de transformar el dataset, realizamos un análisis univariado mediante gráficos de diagramas de caja y bigotes. Esto nos permitió explorar las relaciones entre los precios de las viviendas y sus áreas construidas en función de las diferentes zonas geográficas. Este enfoque visual nos ayudó a identificar valores atípicos, tendencias centrales y dispersiones en los precios y áreas construidas en cada zona. Esta información es esencial para comprender cómo varían las propiedades en diferentes ubicaciones y tamaños, lo que es vital para adaptar nuestras estrategias a las necesidades específicas de cada área.
4. Análisis Estadístico Bivariado. Asimismo, llevamos a cabo un análisis bivariado para explorar las relaciones entre las variables. Utilizamos el coeficiente de correlación para medir la magnitud de la asociación lineal entre dos variables. Este análisis nos proporcionó información valiosa sobre cómo las variables se relacionan entre sí y cómo pueden influir en conjunto en el precio y la demanda de viviendas.
A partir de este análisis profundo de los datos, hemos extraído conclusiones clave: i) existe una sólida tendencia a que los precios aumenten con el área construida; ii) se identificaron valores atípicos en áreas construidas y precios; iii) hay una relación significativa entre los precios y las zonas geográficas de las viviendas.
En el ámbito de la estadística, muchas veces nos enfrentamos a conjuntos de datos complejos que contienen múltiples variables. El análisis univariado y bivariado proporciona una comprensión limitada de la estructura y relaciones dentro de estos datos. Aquí es donde entra en juego el análisis estadístico multivariado, una poderosa herramienta que nos permite explorar, resumir y comprender de manera más completa y profunda la interacción entre múltiples variables.
Los métodos multivariados son una categoría de técnicas estadísticas diseñadas específicamente para manejar múltiples variables simultáneamente. Estos métodos tienen diversos propósitos y aplicaciones, cada uno dirigido a abordar un aspecto particular de los datos complejos. Tres de los enfoques más destacados en el análisis multivariado son:
Se ha llevado a cabo un análisis de componentes principales con el propósito fundamental de simplificar y reducir la complejidad inherente a nuestro conjunto de datos. A continuación, se detalla el proceso implementado en pasos secuenciales:
1. Estandarización de Variables. Con el objetivo de asegurar que las variables con escalas de valores más amplias no distorsionen las estimaciones realizadas, se procedió a la estandarización de las variables. Esta estrategia garantiza que cada variable aporte de manera equitativa a las estimaciones, independientemente de su rango inicial.
2. Estimación de Componentes Principales para Simplificación. El proceso de estimación de componentes principales fue implementado, permitiendo la comprensión de cómo los diferentes atributos se combinan para capturar la variabilidad subyacente en la base de datos. El primer componente principal emergió como portador del 58.7% de la variabilidad intrínseca en los datos. Al considerar los dos primeros componentes principales, se abarcó una notable proporción del 82.5% del total de los datos, lo que sugiere una representación efectiva y compacta de la información.
3. Visualización de Componentes Principales. La visualización gráfica de las variables en un plano bidimensional generado por los componentes principales, brindó una ventana hacia la interacción de las variables originales en la formación de estos componentes. Esta representación gráfica facilita la comprensión de cómo las variables se agrupan y contribuyen a las estructuras identificadas.
4. Análisis Biplot para Explorar Relaciones. El análisis biplot se implementó con la finalidad de desentrañar tendencias y relaciones entre las componentes principales y las variables categóricas, en este caso, los tipos de vivienda y las zonas geográficas. Al examinar de cerca los diferentes tipos de viviendas, surgió un patrón distintivo: las viviendas tipo “casa” se mostraron fuertemente vinculadas a precios más elevados, un mayor número de habitaciones y una mayor área construida. No obstante, estas viviendas presentaron estratos socioeconómicos relativamente bajos en comparación con otras categorías. Por otro lado, los apartamentos surgieron como alternativas con precios más bajos, menor área construida y menos habitaciones en promedio. Sin embargo, los apartamentos revelaron un patrón contrario en términos de estrato, exhibiendo valores más elevados en esta variable.
En lo que respecta a las zonas geográficas, un hallazgo intrigante se manifestó. La zona oeste resaltó como el área con estratos promedio más altos, indicando una mayor concentración de propiedades de prestigio en dicha región. En contraste, las zonas oriente y centro exhibieron estratos promedio más bajos, sugiriendo una distribución diversa de viviendas con diversos niveles socioeconómicos en estas áreas.
En conclusión, el análisis de componentes principales ha resultado en una simplificación efectiva de la complejidad inherente de nuestros datos inmobiliarios, permitiéndonos identificar patrones significativos y relaciones cruciales entre variables clave. La comprensión profunda obtenida a través de la estandarización de variables, la estimación de componentes principales, la visualización en un plano bidimensional y el análisis biplot ha enriquecido nuestra perspectiva sobre el mercado. Estas revelaciones, como las asociaciones entre tipos de vivienda y características socioeconómicas, así como la distinción geográfica en estratos, brindan una base sólida para guiar decisiones estratégicas informadas y generar una ventaja competitiva en un entorno inmobiliario en constante cambio.
Hemos realizado un análisis de conglomerados, también conocido como clustering, con el objetivo de agrupar objetos similares en función de sus características. A continuación, se detalla el proceso implementado en etapas secuenciales:
1. Selección del Algoritmo k-means. Hemos empleado el algoritmo k-means, una técnica de clasificación no supervisada que organiza elementos en k grupos en base a sus atributos. Durante esta fase, hemos realizado varios agrupamientos al considerar diferentes valores para k, incluyendo 2, 4 y 5. Al variar el número de clústeres, nuestra intención fue explorar la organización de los datos en distintos niveles de detalle, descubriendo así diversas estructuras y relaciones subyacentes presentes en el conjunto de datos.
2.Selección del Número de Clústeres. La elección adecuada del número de clústeres es un paso crítico en el análisis de agrupamiento, ya que impacta en la organización y comprensión de los datos. Aquí, dos enfoques destacan: los métodos no jerárquicos, utilizando criterios de calidad como el método del codo y el método de la silueta; y los métodos jerárquicos, que se visualizan a través de dendrogramas.
La elección entre dos o cuatro clústeres es una consideración importante, y se ha tomado en cuenta una evaluación integral. Si bien el método de la silueta sugiere dos clústeres y el método del codo sugiere cuatro, es crucial recordar que la elección debe basarse en el contexto y la complejidad de los datos. El enfoque combinado del método del codo y el método jerárquico lleva a la elección de cuatro clústeres, ya que brinda una comprensión más profunda de la estructura subyacente. Esta elección captura de manera más precisa la riqueza de las interacciones y afinidades dentro de los datos, superando un enfoque simplista basado únicamente en el método de la silueta.
3. Resultados del Agrupamiento. Como resultado, hemos generado un gráfico de boxplot que representa la distribución de la variable “preciom” en relación a los clústeres asignados. De manera sorprendente, el clúster número 3 destaca con los valores más elevados en “preciom”. Asociado a esto, se observa en este clúster una correlación entre valores altos de “preciom” y la variable “areaconst”, indicando que propiedades con precios mayores también tienden a tener áreas construidas más extensas. Esta revelación brinda una perspicacia valiosa sobre la relación entre estas dos variables y profundiza nuestra comprensión de la distribución de precios en los diferentes clústeres.
En resumen, el análisis de conglomerados ha permitido una agrupación efectiva de propiedades similares según sus características clave, brindando una visión más clara y refinada de la diversidad del mercado inmobiliario. Al seleccionar el número óptimo de clústeres a través de un enfoque equilibrado entre el método del codo y el método de la silueta, hemos logrado capturar la complejidad intrínseca de los datos de manera más precisa. La identificación de patrones significativos en la distribución de precios y su relación con el área construida, dentro de clústeres específicos, proporciona información crucial para tomar decisiones estratégicas informadas.
Hemos completado un minucioso análisis de correspondencia con el propósito de explorar y visualizar las posibles conexiones entre las variables categóricas. A continuación, detallamos el proceso implementado en una secuencia lógica:
1. Creación de Tablas Cruzadas para Explorar Relaciones. Se han generado diversas tablas cruzadas que relacionan variables clave, como zona-estrato, zona-precio y zona-área. Para abordar las variables precio y área, fue necesario aplicar un proceso de categorización basado en cuartiles para mejor comprensión y análisis.
2. Evaluación de Dependencia en Variables Categóricas. Con el objetivo de determinar la dependencia entre estas variables categóricas, se implementó la prueba de chi-cuadrado. Los resultados destacan que las variables no son independientes entre sí, lo que resalta la presencia de relaciones estadísticamente significativas entre las diferentes categorías.
3. Resultados y Patrones Emergentes. A través de representaciones visuales, se han identificado patrones notables:
En el contexto de la relación entre zona y estrato, se destaca la presencia del estrato 6 en la Zona Oeste, señalando una tendencia particular en esta región. Por otro lado, los estratos 4 y 5 exhiben una marcada asociación con las zonas sur y norte, revelando patrones de distribución diferenciados en estas áreas. Por último, se observa que el estrato 3 se manifiesta predominantemente en las zonas Oriente y Centro, aportando una comprensión más completa de la distribución de los estratos en el contexto geográfico.
En el proceso de análisis que abarcó la relación entre las zonas geográficas y los precios de las propiedades, se han revelado patrones significativos. Específicamente, se identificó que la Zona Oeste guarda una conexión destacada con valores inmobiliarios elevados, lo cual podría indicar una concentración de propiedades de alto valor en dicha área. Por otro lado, se constató que tanto las Zonas Centro como Oriente prevalecen con precios más bajos, sugiriendo una preferencia por propiedades asequibles en estas localidades. Las zonas Sur y Norte, por su parte, muestran una relación con precios intermedios, lo que posiblemente refleja una distribución de propiedades con valores moderados en estas regiones.
En el contexto del análisis que explora la conexión entre las zonas geográficas y el tamaño de las viviendas, se han desentrañado patrones discernibles. Específicamente, se ha constatado que las Zonas Norte y Sur están mayormente vinculadas a viviendas de dimensiones reducidas, lo cual podría apuntar a una concentración de propiedades compactas en estas áreas. En contraposición, las Zonas Oeste, Centro y Oriente presentan una inclinación hacia viviendas de mayor amplitud, sugiriendo la prevalencia de propiedades con áreas de construcción más espaciosas en dichas regiones.
En síntesis, este análisis detallado de correspondencia ha permitido descubrir patrones y relaciones entre variables categóricas clave. Los vínculos identificados entre estrato, precio, área y zona brindan información esencial para la toma de decisiones estratégicas en la industria inmobiliaria.
Los análisis exploratorios de datos, componentes principales, conglomerados y correspondencia han proporcionado una visión completa y enriquecedora del mercado inmobiliario. Estas metodologías han revelado patrones, relaciones y tendencias esenciales para guiar nuestras decisiones estratégicas con el objetivo de lograr ventajas competitivas en el mercado. El análisis exploratorio de datos desentrañó patrones y relaciones clave, mientras que el análisis de componentes principales simplificó nuestro conjunto de datos y reveló dimensiones latentes cruciales. El análisis de conglomerados segmentó propiedades afines para personalizar estrategias y mejorar la experiencia del cliente, y el análisis de correspondencia identificó conexiones entre variables categóricas para ajustar estrategias y satisfacer necesidades específicas. Estos análisis brindan una base sólida para tomar decisiones estratégicas ágiles y diferenciadas en un mercado inmobiliario en constante cambio, permitiéndonos anticiparnos a las tendencias y adaptarnos a las demandas del mercado con éxito.
Inicialmente, se llevó a cabo un minucioso análisis exploratorio de las variables presentes en la base de datos proporcionada. Esta base de datos alberga una rica y variada colección de información relacionada con propiedades residenciales actualmente disponibles en el mercado. Dicha información engloba una serie de atributos fundamentales, incluyendo, pero no limitándose a: precio de la propiedad, área total, estrato socioeconómico, número de habitaciones y baños, ubicación geográfica y la tipología específica de la vivienda.
Este análisis exploratorio tiene como objetivo principal analizar patrones, tendencias y relaciones ocultas en los datos. A través de la exploración detallada de estas variables, se espera arrojar luz sobre la dinámica del mercado de propiedades residenciales y proporcionar información valiosa que pueda guiar decisiones informadas en el ámbito inmobiliario.
1. Descripción del Dataset
Este conjunto de datos presenta información diversa sobre propiedades en una región específica. Aquí tienes una descripción detallada de las variables presentes en el dataset:
id: Un número de identificación único para cada propiedad.
zona: Indica la ubicación de la propiedad, especificando la zona geográfica. Los valores son de tipo carácter (string), como “Zona Oeste” o “Zona Sur”.
piso: El número del piso en el que se encuentra la propiedad. Los valores son números enteros, pero también puede haber valores faltantes representados como NA.
estrato: El estrato socioeconómico al que pertenece la propiedad. Los valores son números enteros, indicando diferentes niveles socioeconómicos.
preciom: El precio de mercado de la propiedad en moneda local. Los valores son números decimales.
areaconst: El área construida de la propiedad en metros cuadrados. Los valores son números decimales.
parquea: El número de espacios de estacionamiento disponibles en la propiedad. Los valores son números enteros.
banios: El número de baños en la propiedad. Los valores son números enteros.
habitac: El número de habitaciones en la propiedad. Los valores son números enteros.
tipo: El tipo de propiedad, como “Apartamento” o “Casa”. Los valores son cadenas de texto.
barrio: El nombre del barrio o vecindario en el que se encuentra la propiedad. Los valores son cadenas de texto.
longitud: La longitud geográfica de la propiedad. Los valores son números decimales que representan coordenadas.
latitud: La latitud geográfica de la propiedad. Los valores son números decimales que representan coordenadas. Este dataset parece contener información sobre propiedades inmobiliarias, incluyendo su ubicación, características, precios y detalles específicos. Es posible que este conjunto de datos sea útil para análisis de mercado inmobiliario, estudios de precios por zona, tendencias de demanda y otros análisis relacionados con bienes raíces.
# describe informationgs
str(data)
## spc_tbl_ [8,322 × 13] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ id : num [1:8322] 8312 8311 8307 8296 8297 ...
## $ zona : chr [1:8322] "Zona Oeste" "Zona Oeste" "Zona Oeste" "Zona Sur" ...
## $ piso : num [1:8322] 4 1 NA 2 NA NA 2 NA NA 2 ...
## $ estrato : num [1:8322] 6 6 5 3 5 5 6 5 5 5 ...
## $ preciom : num [1:8322] 1300 480 1200 220 330 1350 305 480 275 285 ...
## $ areaconst: num [1:8322] 318 300 800 150 112 390 125 280 74 120 ...
## $ parquea : num [1:8322] 2 1 4 1 2 8 2 4 1 2 ...
## $ banios : num [1:8322] 4 4 7 2 4 10 3 4 2 4 ...
## $ habitac : num [1:8322] 2 4 5 4 3 10 3 4 3 3 ...
## $ tipo : chr [1:8322] "Apartamento" "Casa" "Casa" "Casa" ...
## $ barrio : chr [1:8322] "arboleda" "normandía" "miraflores" "el guabal" ...
## $ longitud : num [1:8322] -76576 -76571 -76568 -76565 -76565 ...
## $ latitud : num [1:8322] 3454 3454 3455 3417 3408 ...
## - attr(*, "spec")=
## .. cols(
## .. id = col_double(),
## .. zona = col_character(),
## .. piso = col_double(),
## .. estrato = col_double(),
## .. preciom = col_double(),
## .. areaconst = col_double(),
## .. parquea = col_double(),
## .. banios = col_double(),
## .. habitac = col_double(),
## .. tipo = col_character(),
## .. barrio = col_character(),
## .. longitud = col_double(),
## .. latitud = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
2. Datos Nulos
Se procedió a analizar los valores nulos presentes en el conjunto de datos utilizando un gráfico de patrones faltantes (md.pattern). Los resultados obtenidos se presentan de la siguiente manera:
Se han identificado diversos patrones de valores nulos en las distintas variables que componen el conjunto de datos. En el conjunto de filas presentado, se resalta la cantidad de registros en los cuales se han encontrado valores faltantes para cada variable específica. Un aspecto importante es que, en la primera fila de este grupo, no se han hallado valores nulos en ninguna variable. Las filas subsiguientes revelan cómo se distribuyen los registros con valores nulos en función de las distintas combinaciones de variables.
Se han registrado 2638 instancias con valores nulos en la columna “piso”, 1605 casos con valores faltantes en la columna “parquea”, 3 registros con valores nulos en las columnas “id”, “zona”, “estrato”, “areaconst”, “banios”, “habitac”, “tipo”, “barrio”, “longitud” y “latitud”, y, por último, 2 registros con valores faltantes en la columna “preciom”.
3. Falta de Estandarización
En el conjunto de datos, es notable que la columna “tipo” muestra una falta de estandarización en los datos. Los resultados muestran una variedad de entradas que indican diferentes tipos de propiedades. Se presentan valores registrados en dicha columna como “Apartamento”, “Casa”, “APARTAMENTO”, “casa”, “CASA” y “apto”.
unique(data$tipo)
## [1] "Apartamento" "Casa" "APARTAMENTO" "casa" "CASA"
## [6] "apto" NA
Estos registros exhiben una mezcla de formatos y capitalizaciones en la denominación de los tipos de propiedades. Se puede observar la coexistencia de diferentes variantes, como “Apartamento”, “APARTAMENTO” y “apto” para referirse a la misma categoría de propiedad, así como las variaciones en mayúsculas y minúsculas para “Casa”.
Esta falta de consistencia en la manera en que se registran los tipos de propiedades puede dificultar el análisis y la interpretación de los datos. Para lograr una mayor coherencia y facilitar futuras búsquedas y análisis, sería recomendable estandarizar los valores en esta columna, quizás mediante la conversión de todas las entradas a un único formato, preferiblemente en minúsculas y con términos normalizados, como “apartamento” y “casa”.
4. Modificación del Dataset
Para mejorar la calidad y la coherencia de los datos, se ha llevado a cabo un proceso de eliminación de valores nulos y estandarización en el conjunto de datos. Esto ha permitido optimizar la integridad y la uniformidad de la información presentada.
En primer lugar, se procedió a la eliminación de los valores nulos identificados previamente en el análisis de patrones faltantes. Esta acción se ejecutó con el objetivo de garantizar que los datos utilizados para análisis y futuras interpretaciones sean completos y confiables. La eliminación de registros con valores nulos contribuye a evitar distorsiones y errores en los resultados obtenidos de análisis estadísticos y visualizaciones:
# Cleaning of data
data_na <- data[!is.na(data$id),]
data_na <- data_na %>% mutate(tipo = ifelse(tipo == "apto","Apartamento",tipo))
dataset <- data_na %>% select(zona,estrato,preciom,areaconst,banios,habitac,tipo,id)
dataset$tipo <- tolower(dataset$tipo)
str(dataset)
## tibble [8,319 × 8] (S3: tbl_df/tbl/data.frame)
## $ zona : chr [1:8319] "Zona Oeste" "Zona Oeste" "Zona Oeste" "Zona Sur" ...
## $ estrato : num [1:8319] 6 6 5 3 5 5 6 5 5 5 ...
## $ preciom : num [1:8319] 1300 480 1200 220 330 1350 305 480 275 285 ...
## $ areaconst: num [1:8319] 318 300 800 150 112 390 125 280 74 120 ...
## $ banios : num [1:8319] 4 4 7 2 4 10 3 4 2 4 ...
## $ habitac : num [1:8319] 2 4 5 4 3 10 3 4 3 3 ...
## $ tipo : chr [1:8319] "apartamento" "casa" "casa" "casa" ...
## $ id : num [1:8319] 8312 8311 8307 8296 8297 ...
md.pattern(dataset)
## /\ /\
## { `---' }
## { O O }
## ==> V <== No need for mice. This data set is completely observed.
## \ \|/ /
## `-----'
## zona estrato preciom areaconst banios habitac tipo id
## 8319 1 1 1 1 1 1 1 1 0
## 0 0 0 0 0 0 0 0 0
Además, se abordó específicamente la falta de estandarización en la columna “tipo”, donde se encontraron múltiples variantes para referirse a categorías de propiedades similares. Para remediar esta situación, se llevó a cabo un proceso de estandarización en los valores de esta columna. Esto implica que los diferentes formatos y capitalizaciones utilizados para describir los tipos de propiedades fueron homogeneizados. Como resultado, todas las entradas en la columna “tipo” se han ajustado a un único formato y se han normalizado en términos de capitalización.
Este proceso de estandarización no solo mejora la consistencia de los datos, sino que también facilita las consultas, análisis y comparaciones al trabajar con los tipos de propiedades en el conjunto de datos. Ahora, los valores en la columna “tipo” están presentados de manera uniforme y más comprensible, lo que contribuye a una interpretación más efectiva de la información y a la realización de análisis más precisos y confiables.
5. Análisis Gráfico
Se llevó a cabo un análisis exhaustivo de los datos utilizando diversas representaciones gráficas con el propósito de obtener una comprensión más profunda de los patrones y características de la información.
Primero, se emplearon diagramas de caja (boxplots) para explorar las relaciones entre los precios de las viviendas y las áreas construidas, considerando las distintas zonas geográficas. Esto permitió identificar de manera efectiva los valores atípicos, las tendencias centrales y las dispersiones en los precios y áreas construidas de las viviendas en cada zona. A través de esta representación gráfica, se pudo visualizar cómo varían las propiedades en diferentes ubicaciones geográficas y tamaños, brindando información crucial para comprender las dinámicas del mercado inmobiliario en cada zona.
# EDA
dataset %>%
group_by(zona) %>%
summarise(prom_precios_inmuebles=round(mean(preciom)),
min_precios_inmuebles=min(preciom),
max_precios_inmuebles=max(preciom)) %>%
kbl(caption="Precios de viviendas por zonas geograficas",
align="cc") %>%
kable_classic(full_width = F, html_font = "Cambria")
| zona | prom_precios_inmuebles | min_precios_inmuebles | max_precios_inmuebles |
|---|---|---|---|
| Zona Centro | 310 | 100 | 1100 |
| Zona Norte | 346 | 65 | 1940 |
| Zona Oeste | 678 | 85 | 1999 |
| Zona Oriente | 229 | 58 | 1350 |
| Zona Sur | 427 | 75 | 1900 |
Además, se generaron histogramas para analizar la distribución de costos de vivienda y áreas construidas en el conjunto de datos. Estos gráficos ofrecen una visión general de cómo se agrupan y distribuyen los valores de precios y áreas. En el caso del histograma de costos de vivienda, se pudo identificar la forma de la distribución de precios, lo que es fundamental para entender si predominan valores bajos, altos o si existe una dispersión equilibrada. De manera similar, el histograma de áreas construidas brindó información sobre la distribución de tamaños de las propiedades en el conjunto de datos:
par(mfrow=c(2,2))
boxplot(dataset$preciom ~ dataset$zona,
xlab= "Zonas Geograficas",
ylab= "precios ($MILL COP)",
main= "Precios de Viviendas por Zonas")
hist(dataset$preciom,main="Distribución de los costos de vivienda",xlab="Freq. precios ($MILL COP)")
boxplot(dataset$areaconst ~ dataset$zona,
xlab= "Zonas Geograficas",
ylab= "Área Construida (m2)",
main= "Área construida por Zonas")
hist(dataset$areaconst,main="Distribución de las áreas construidas",xlab="Freq. área construida (m2)")
6. Análisis de Correlación
Finalmente, procedimos a crear un conjunto de gráficos que comparan pares de variables con el propósito de visualizar posibles relaciones lineales y sus tendencias, sean estas ascendentes o descendentes. Al explorar estas representaciones gráficas, fue posible identificar patrones de correlación entre las variables, lo que contribuye a una comprensión más profunda de las interacciones presentes en los datos:
pairs(dataset[,c(2,3,4,5,6)])
correlacion <- round(cor(dataset[,2:6]),1)
corPlot(correlacion,number.cex = 0.5)
Destaca una correlación sólida entre el precio y el área construida (areaconst), lo cual sugiere una relación significativa entre el tamaño de la propiedad y su valor monetario. Esta asociación podría indicar que propiedades más grandes tienden a tener precios más elevados, o viceversa.
Además, se pudo observar una relación moderada entre el área construida (areaconst) y la cantidad de baños en la vivienda (baños). Esta conexión sugiere que las propiedades con áreas más amplias tienden a tener más baños, lo cual podría estar relacionado con la comodidad y la capacidad de acomodar más instalaciones.
En cuanto a la relación entre el precio y el estrato, se detectó una correlación moderada. Esto podría indicar que existe una tendencia donde propiedades con estratos más altos tienden a tener precios más altos, lo que podría estar relacionado con factores de estatus y características adicionales en propiedades de estrato superior.
Por último, se identificó una relación moderada entre el número de habitaciones (habitac) y la cantidad de baños en la vivienda (baños). Esta observación podría sugerir que las propiedades con más habitaciones tienden a contar con un mayor número de baños, lo cual podría ser un aspecto deseable en términos de comodidad y utilidad.
En conjunto, estas correlaciones arrojan luz sobre las posibles conexiones entre las variables estudiadas y cómo influyen mutuamente en el contexto del mercado inmobiliario. Estas observaciones podrían ser de gran relevancia para la toma de decisiones informadas en el ámbito inmobiliario y para comprender mejor las dinámicas subyacentes entre diferentes atributos de las propiedades.
El análisis de componentes principales (ACP) se constituye como una metodología fundamental en el campo de la estadística y el análisis de datos multidimensionales. Esta técnica poderosa tiene como objetivo primordial la reducción y simplificación de la complejidad presente en un conjunto de variables interrelacionadas, al mismo tiempo que busca capturar la máxima variabilidad contenida en los datos originales. A través de la transformación lineal de las variables originales en un nuevo sistema de coordenadas, el ACP revela patrones inherentes, destacando las direcciones de máxima variabilidad y permitiendo la extracción de componentes principales, los cuales condensan información esencial de manera eficiente. Esta metodología trasciende disciplinas, ofreciendo percepciones valiosas en campos tan diversos como la ciencia, la ingeniería y la economía, y desempeña un papel crucial en la simplificación y visualización de conjuntos de datos complejos.
Inicialmente y con el fin de evitar que las variables que tienen una escala con valores más grandes afecten las estimaciones realizadas (sesgo) se realiza la estandarización de las variables antes de proceder a realizar el proceso de estimación de los componentes principales.
#PCA
datapca <- dataset[2:6]
datapcaz <- datapca %>% scale()
res.pca <- prcomp(datapcaz)
fviz_eig(res.pca,addlabels = TRUE)
En esta instancia, el primer componente principal revela su capacidad excepcional al capturar el 58.7% de la variabilidad intrínseca de la base de datos. Cuando se consideran los dos primeros componentes principales, se logra abarcar una notable proporción del total de los datos, específicamente un 82.5%. Este logro insinúa que mediante el empleo de un único componente (CP1), construido a partir de una combinación lineal de las variables originales, se consigue condensar significativamente la diversidad que se encuentra en la base de datos.
Se llevó a cabo un detallado estudio de cada una de las dimensiones presentes en los datos. Al examinar la primera dimensión, se destacó que las variables que presentaron una contribución significativa fueron “baños”, “preciom” y “areaconst”. En la segunda dimensión, se apreció claramente que las variables que desempeñaron un papel más influyente fueron “estrato” y “habitación”. Al avanzar a la tercera dimensión, se constató que la variable “areaconst” emergió como la de mayor contribución. Al explorar la cuarta dimensión, se observó que la variable con la mayor influencia fue “baños”, seguida de cerca por “estrato”. Finalmente, en la quinta dimensión, se identificó que las variables preponderantes en términos de contribución fueron “precio” y “areaconst”:
# PCA contribución por dimensiones
res.pca
## 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
## preciom -0.5068715 0.2807656 -0.3015468 -0.2213868 0.7240921
## areaconst -0.4940473 -0.1638135 -0.6525373 0.2984641 -0.4628138
## banios -0.5189619 -0.1092831 0.3767649 -0.6647648 -0.3672488
## habitac -0.3475270 -0.6538568 0.4051685 0.4359154 0.3122700
fviz_contrib(res.pca,axes = 1, choice = "var", addlabels = TRUE)
fviz_contrib(res.pca,axes = 2, choice = "var", addlabels = TRUE)
fviz_contrib(res.pca,axes = 3, choice = "var", addlabels = TRUE)
fviz_contrib(res.pca,axes = 4, choice = "var", addlabels = TRUE)
fviz_contrib(res.pca,axes = 5, choice = "var", addlabels = TRUE)
La representación gráfica de las variables en el plano de los componentes principales brinda la capacidad de desentrañar la orientación y las características subyacentes de dichos componentes:
fviz_pca_var(res.pca, col.var = "contrib", gradient.cols = c("#FF7F00", "#034D94"),
repel = TRUE)
En este escenario de análisis, el primer componente principal se encuentra predominantemente vinculado a las variables “baños”, “preciom” y “areaconst”. Por otro lado, el segundo componente principal muestra afinidad con las variables “estrato” y “habitación”. Este discernimiento profundo arroja luz sobre cómo las variables originarias interactúan en la formación de los componentes principales.
Para ampliar nuestro entendimiento de la orientación de los ejes, seleccionamos cuatro ejemplos extremos representados por viviendas particulares:
# explicando el sentido de los ejes
adata <- rbind(dataset[6398,],dataset[984,],dataset[2432,],dataset[22,])
adata <- as.data.frame(adata)
rownames(adata) <- c("Registro 6398","Registro 984","Registro 2432","Registro 22")
adata
## zona estrato preciom areaconst banios habitac tipo
## Registro 6398 Zona Sur 6 1800 1586 4 5 casa
## Registro 984 Zona Sur 6 1200 296 0 0 casa
## Registro 2432 Zona Oriente 3 135 180 1 5 casa
## Registro 22 Zona Oeste 3 142 50 1 2 apartamento
## id
## Registro 6398 5684
## Registro 984 4574
## Registro 2432 81
## Registro 22 8268
caso1 <- rbind(res.pca$x[6398,1:2],res.pca$x[22,1:2])
rownames(caso1) <- c("6398","648")
caso1 <- as.data.frame(caso1)
caso2 <- rbind(res.pca$x[984,1:2],res.pca$x[2432,1:2])
rownames(caso2) <- c("444","304")
caso2 <- as.data.frame(caso2)
fviz_pca_ind(res.pca, col.ind = "#DEDEDE", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")) +
geom_point(data = caso1, aes(x = PC1, y = PC2), color = "red", size = 3) +
geom_point(data = caso2, aes(x = PC1, y = PC2), color = "blue", size = 3)
La vivienda 6398, con un valor elevado en “preciom” (1.800 millones), una amplia superficie en “areaconst” (1586 m²) y un número considerable de baños (“baños” = 4).En contraste, la vivienda 22 presenta características opuestas con un valor bajo en “preciom” (142 millones), una superficie modesta en “areaconst” (50 m²) y un mínimo de baños (“baños” = 1).
Estos casos ejemplifican el sentido de aumento de valores en el primer componente principal. De manera análoga, al examinar la dirección de incremento en el segundo componente principal, observamos que la vivienda 984 muestra un estrato alto (“estrato” = 6) con una cantidad reducida de habitaciones (“habitac” = 0), mientras que la vivienda 2432 exhibe un estrato bajo (“estrato” = 3) con un número considerable de habitaciones (“habitac” = 5).
La representación gráfica de los dos primeros componentes principales abre una ventana a las relaciones intrínsecas entre las variables “baños”, “preciom” y “areaconst”. Además, queda en evidencia que las variables “estrato” y “habitac” ejercen un impacto más significativo en el segundo componente principal.
Además, se llevó a cabo un análisis biplot con el propósito de descubrir tendencias y relaciones entre las componentes principales y las variables categóricas, específicamente los tipos de viviendas y las zonas geográficas. Mediante este enfoque, se buscó ampliar nuestra comprensión de cómo las variables categóricas influyen en la distribución y comportamiento de los datos:
fviz_pca_biplot(res.pca,
repel = TRUE,
habillage = dataset$tipo,
col.var = "#034A94", # Variables color
col.ind = c("#DEDEDE", "#034A94") # Individuals color
)
fviz_pca_biplot(res.pca,
repel = TRUE,
habillage = dataset$zona,
col.var = "#034A94", # Variables color
col.ind = c("#DEDEDE", "#034A94") # Individuals color
)
Los resultados del análisis biplot proporcionaron una visión más matizada de las interacciones entre las variables. Al examinar en detalle los diferentes tipos de viviendas, se pudo discernir que las viviendas de tipo “casa” exhiben una fuerte asociación con precios más elevados, un mayor número de habitaciones y una mayor área construida. Sin embargo, estas viviendas también presentaron un nivel de estrato relativamente bajo en comparación con otras categorías. Por otro lado, los apartamentos emergieron como la opción con precios más bajos, menor área construida y menos habitaciones en promedio. No obstante, los apartamentos mostraron un patrón opuesto en términos de estrato, con valores más altos en esta variable.
En relación a las zonas geográficas, se identificó una tendencia interesante. La zona oeste destacó como la región con los estratos más altos en promedio, sugiriendo una mayor concentración de propiedades de mayor estatus. En contraste, las zonas oriente y centro presentaron estratos promedio más bajos, indicando una distribución de viviendas con niveles socioeconómicos más diversos en esas áreas.
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.
Empleamos el algoritmo de k-means, una técnica de clasificación no supervisada que organiza elementos en k grupos según sus atributos inherentes. En esta etapa, llevamos a cabo múltiples agrupamientos, considerando los casos donde k toma los valores 2, 4 y 5. Al variar el número de clústeres, buscamos comprender cómo los datos se organizan en diferentes niveles de granularidad, explorando diversas estructuras y relaciones subyacentes que pueden estar presentes en el conjunto de datos:
dataclust <- dataset[,2:6]
dataclust <- dataclust %>% scale()
# evaluando el número de clusters
k1 <- kmeansruns(dataclust,krange=2,runs=100)
fviz_cluster(k1,data=dataclust)
k2 <- kmeansruns(dataclust,krange=4,runs=100)
fviz_cluster(k2,data=dataclust)
k3 <- kmeansruns(dataclust,krange=5,runs=100)
fviz_cluster(k3,data=dataclust)
En la búsqueda de una organización efectiva de datos en el ámbito de análisis de clústeres, dos enfoques primordiales emergen: los métodos de clasificación no jerárquicos, respaldados por criterios de calidad como el método del codo y el método de la silueta; y los métodos jerárquicos, que se despliegan visualmente a través de dendrogramas. En el primer enfoque, la elección del número óptimo de clústeres se basa en la evaluación rigurosa de las distancias y relaciones internas, destacándose el método del codo y el método de la silueta para guiar esta selección con base en el rendimiento de agrupamiento.
1. Elbow method
El método del codo es una técnica utilizada en análisis de clústeres y aprendizaje automático para determinar el número óptimo de clústeres en un conjunto de datos. Consiste en graficar la suma de las distancias cuadradas intraclúster en función del número de clústeres y luego identificar el punto en el gráfico donde la curva comienza a aplanarse, lo que se asemeja a un “codo”. Este punto representa el número de clústeres sugerido para una partición eficiente de los datos.
# metodo de codo
fviz_nbclust(dataclust, kmeans,method = "wss")+
labs(subtitle = "Elbom method")+geom_vline(xintercept = 4, linetype = 2)
2. Sillouet method
El método de la Silueta es una técnica de evaluación utilizada en análisis de clústeres para medir la calidad de la agrupación obtenida. Calcula un valor para cada punto de datos en función de su similitud con su propio clúster en comparación con otros clústeres cercanos. Los valores de silueta oscilan entre -1 y 1, donde un valor más alto indica que un punto está bien asignado a su clúster y mal asignado a otros clústeres. Una puntuación global alta promedio sugiere una partición de clústeres adecuada.
# metodo de la silueta
fviz_nbclust(dataclust,kmeans,method = "silhouette")+
labs(subtitle = "Silhouette method")
3. Dendograma
En el siguiente análisis, exploraremos un dendrograma que ha sido creado mediante técnicas de agrupamiento con el fin de identificar patrones y relaciones ocultas en un conjunto de datos. Este dendrograma nos permitirá visualizar la formación de cuatro clústeres distintos, cada uno representando un grupo homogéneo de elementos similares. A través de esta representación gráfica, podremos obtener una comprensión visual de cómo se agrupan los datos y cómo se relacionan entre sí, lo que arrojará luz sobre la estructura subyacente y las posibles categorías presentes en el conjunto de datos:
# Clustering con metodo jerarquico
#calculamos la matriz de distancia
d <- dist(dataclust, method = "euclidean")
# clustering jerarquico con liga completa
hc1 <- hclust(d, method = "complete")
# hacemos el dendograma
plot(hc1, cex=0.6,main = "Dendograma de Viviendas", hang = -1, ylab = "Distancia Euclidiana",xlab = "Grupos")
rect.hclust(hc1, k = 4, border = 2:10)
cluster_assigments <- cutree(hc1, k=4)
sil <- silhouette(cluster_assigments,dist(dataclust))
sil_avg <- mean(sil[,3])
4. Número de Cluster
La elección del número adecuado de clústeres es un paso crucial en el análisis de agrupamiento, ya que determina la organización y comprensión de los datos subyacentes. Aunque el método de la silueta sugiere una partición en 2 clústeres, es fundamental considerar el contexto y la complejidad inherente de los datos. A menudo, un resultado basado únicamente en el método de la silueta puede resultar demasiado simplista, ya que no siempre captura de manera completa la estructura subyacente.
En este sentido, es relevante adoptar un enfoque más robusto y multidimensional al utilizar tanto el método del codo como el método jerárquico. El método del codo identifica un punto donde la reducción de la suma de las distancias intraclúster ya no es significativa, lo que puede sugerir una partición óptima en cuatro clústeres. Al mismo tiempo, el método jerárquico aporta una comprensión jerarquizada y visual de las relaciones de agrupamiento, ofreciendo una perspectiva más completa de la estructura de los datos en diferentes niveles de granularidad.
Por lo tanto, la elección de cuatro clústeres en lugar de dos se justifica por la consideración de varios enfoques y la comprensión más profunda que proporciona el uso combinado del método del codo y el método jerárquico. Esta decisión permite capturar de manera más precisa la complejidad intrínseca de los datos y resulta en una partición de clústeres que refleja de manera más adecuada las interacciones y afinidades presentes en el conjunto de datos.
5. Resultados
Tras un análisis riguroso y considerando tanto el método del codo como el método jerárquico, se optó por una partición en cuatro clústeres en lugar de la sugerida por el método de la silueta. En consecuencia, se generó un gráfico de boxplot que ilustra la distribución de la variable “preciom” en función de los clústeres asignados. Sorprendentemente, el clúster número 3 se destaca por tener los valores más elevados en la variable “preciom”. Al mismo tiempo, se observa una correlación en este clúster entre los valores altos de “preciom” y la variable “areaconst”, sugiriendo que las propiedades con mayores precios también tienden a tener una mayor área construida. Esta asociación proporciona una visión valiosa de la relación entre estas dos variables y aporta un entendimiento adicional a la distribución de precios en los diferentes clústeres:
dataset %>%
ggplot(aes(x=factor(k2$cluster), y=preciom, fill=factor(k2$cluster)))+
geom_boxplot()+geom_point()+
xlab("Clusters")+labs(fill="Cluster")
dataset %>%
ggplot(aes(x=factor(k2$cluster), y=areaconst, fill=factor(k2$cluster)))+
geom_boxplot()+geom_point()+
xlab("Clusters")+labs(fill="Cluster")
El análisis de correspondencia, un enfoque estadístico esencial, se despliega para explorar y visualizar las posibles conexiones entre variables categóricas. Este método desvela las relaciones entre las categorías de dichas variables, permitiendo la detección de patrones y estructuras latentes en los datos. En el contexto presente, nuestra atención se dirige hacia la creación de una tabla cruzada que relaciona las variables “zona” y “estrato”:
tabla <- table(dataset$zona, dataset$estrato)
tabla
##
## 3 4 5 6
## Zona Centro 105 14 4 1
## Zona Norte 572 407 769 172
## Zona Oeste 54 84 290 770
## Zona Oriente 340 8 2 1
## Zona Sur 382 1616 1685 1043
chisq.test(tabla)
##
## Pearson's Chi-squared test
##
## data: tabla
## X-squared = 3830.4, df = 12, p-value < 2.2e-16
En aras de analizar la dependencia entre estas variables, aplicamos la prueba de chi-cuadrado, un proceso que evalúa la independencia entre las variables A y B. Los resultados obtenidos revelan que las variables “zona” y “estrato” no son independientes, lo que destaca la existencia de relaciones significativas entre sus categorías.
Este descubrimiento conlleva a rechazar la hipótesis de independencia entre las variables en cuestión. Con el objetivo de profundizar aún más en estas relaciones, procedemos a ejecutar el análisis de correspondencia. Este proceso implica calcular las coordenadas para cada nivel de ambas variables y plasmarlas en un plano cartesiano. El gráfico resultante se convierte en una herramienta poderosa para visualizar y validar las relaciones identificadas:
resultados_ac <- CA(tabla)
A través de esta representación gráfica, emergen patrones claros y concretos:
En este estudio, tambien llevamos a cabo un análisis de correspondencia para explorar y comprender la relación entre las categorías de “zona” y “precio”, con el objetivo de identificar posibles vínculos entre los niveles de precios y las diferentes zonas geográficas. Como primer paso, transformamos la variable numérica “precio” en una variable categórica para facilitar el análisis. Definimos categorías basadas en cuartiles: los precios por debajo del primer cuartil se clasificaron como “bajo”, los comprendidos entre el primer y segundo cuartil como “medio bajo”, los situados entre el segundo y tercer cuartil como “medio alto”, y los por encima del cuarto cuartil como “alto”.
Con el fin de evaluar la dependencia entre estas variables categóricas, aplicamos la prueba de chi-cuadrado. Los resultados de esta prueba indicaron claramente que las variables “zona” y “precio” no son independientes, lo que subraya la presencia de relaciones estadísticamente significativas entre sus respectivas categorías. Esta constatación nos brinda una comprensión más profunda de cómo las zonas geográficas y los niveles de precios están intrínsecamente relacionados en nuestro conjunto de datos:
q1 <- quantile(dataset$preciom, c(0.25), type = 6)
q2 <- quantile(dataset$preciom, c(0.50), type = 6)
q3 <- quantile(dataset$preciom, c(0.75), type = 6)
datacorresp <- dataset %>% mutate(value = ifelse(preciom <= q1, "bajo", ifelse(preciom <= q2,"medio bajo",ifelse(preciom <= q3,"medio alto","alto"))))
tabla <- table(datacorresp$zona, datacorresp$value)
chisq.test(tabla)
##
## Pearson's Chi-squared test
##
## data: tabla
## X-squared = 1137.6, df = 12, p-value < 2.2e-16
resultados_ac <- CA(tabla)
La representación gráfica generada a través del análisis de correspondencia nos ha permitido observar patrones concretos y claros en esta relación entre zonas y precios:
La Zona Oeste se asocia de manera destacada con precios altos, sugiriendo una posible concentración de propiedades de mayor valor en esta región.
En las Zonas Centro y Oriente, prevalecen los precios bajos, indicando una tendencia hacia propiedades más asequibles en estas áreas.
Las zonas Sur y Norte muestran una asociación con precios medios, posiblemente reflejando una distribución de propiedades con un rango intermedio de valores en estas regiones.
Con el propósito de profundizar en nuestro análisis, procedimos a establecer una relación entre las categorías “zona” y “areaconst” con el fin de investigar posibles conexiones entre el tamaño de las viviendas y sus ubicaciones geográficas. Para abordar este análisis, en primer lugar, transformamos la variable numérica “areaconst” en una variable categórica. Esta redefinición se basó en cuartiles, donde las áreas por debajo del primer cuartil se clasificaron como “pequeñas”, aquellas entre el primer y segundo cuartil como “medianas bajas”, las comprendidas entre el segundo y tercer cuartil como “medianas grandes”, y las por encima del cuarto cuartil como “grandes”.
Con el objetivo de evaluar la dependencia entre las variables “zona” y “areaconst”, aplicamos la prueba de chi-cuadrado. Los resultados obtenidos destacaron de manera contundente que las categorías de “zona” y “areaconst” no son independientes, lo cual nos señala la existencia de relaciones significativas entre ellas. Este descubrimiento nos proporciona una comprensión más profunda de cómo el tamaño de las viviendas se encuentra influenciado por las distintas zonas geográficas en nuestro conjunto de datos:
qa1 <- quantile(dataset$areaconst, c(0.25), type = 6)
qa2 <- quantile(dataset$areaconst, c(0.50), type = 6)
qa3 <- quantile(dataset$areaconst, c(0.75), type = 6)
datacorrespa <- dataset %>% mutate(value = ifelse(areaconst <= qa1, "Pequeño", ifelse(areaconst <= qa2,"Mediano Bajo",ifelse(areaconst <= qa3,"Mediano Grande","Grande"))))
tabla <- table(datacorrespa$zona, datacorrespa$value)
chisq.test(tabla)
##
## Pearson's Chi-squared test
##
## data: tabla
## X-squared = 402.51, df = 12, p-value < 2.2e-16
resultados_ac <- CA(tabla)
La visualización gráfica generada a través del análisis de correspondencia ha revelado patrones notables y sólidos en relación a esta interacción entre las zonas y el tamaño de las viviendas:
Las Zonas Norte y Sur se asocian de manera destacada con viviendas de tamaño pequeño, sugiriendo una posible concentración de propiedades más compactas en estas áreas.
Por otro lado, las Zonas Oeste, Centro y Oriente muestran una tendencia hacia viviendas más grandes, lo cual podría indicar una prevalencia de propiedades con áreas de construcción más amplias en estas regiones.