Ciudad
El siguiente informe estadístico muestra un análisis descriptivo de los datos del mercado inmobiliario en la ciudad de Cali, dirigido a su compañía inmobiliaria B&C para la toma de decisiones, como: definir su nicho de mercado, desarrollar estrategias de marketing, establecer precios de venta y ofrecer servicios personalizados a sus clientes.
En este informe se describe la comprensión de datos, lo que implica acceder a los datos y explorarlos mediante de tablas, gráficos e indicadores, los cuales son realizadas en el software en R y RStudio (Lenguaje y entorno de programación con un enfoque al análisis estadístico), utilizando las fases entendimiento y preparación de la herramienta de proyectos CRISP-DM, se podrá determinar la calidad de los datos y describir los resultados de estos pasos en el documento del proyecto.
Inicialmente, se empezará con la importación de datos, para dar comienzo al análisis,
Primero, se instala el paquete “learnr”, y el paquete MET para acceder a la data de Viviendas por medio de la librería MET.
## Skipping install of 'paqueteMET' from a github remote, the SHA1 (624823ee) has not changed since last install.
## Use `force = TRUE` to force installation
Como medida de accesibilidad se guarda el dataset en formato Excel, y lectura de archivo para ser trabajado desde cualquier sitio.
Después de cargar la data, se realizará una exploración de los datos contenidos en él.
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 8330 obs. of 13 variables:
## $ id : num 8312 8311 8307 8296 8297 ...
## $ zona : chr "Zona Oeste" "Zona Oeste" "Zona Oeste" "Zona Sur" ...
## $ piso : num 4 1 NA 2 NA NA 2 NA NA 2 ...
## $ estrato : num 6 6 5 3 5 5 6 5 5 5 ...
## $ preciom : num 1300 480 1200 220 330 1350 305 480 275 285 ...
## $ areaconst: num 318 300 800 150 112 390 125 280 74 120 ...
## $ parquea : num 2 1 4 1 2 8 2 4 1 2 ...
## $ banios : num 4 4 7 2 4 10 3 4 2 4 ...
## $ habitac : num 2 4 5 4 3 10 3 4 3 3 ...
## $ tipo : chr "Apartamento" "Casa" "Casa" "Casa" ...
## $ barrio : chr "arboleda" "normandía" "miraflores" "el guabal" ...
## $ longitud : num -76576 -76571 -76568 -76565 -76565 ...
## $ latitud : num 3454 3454 3455 3417 3408 ...
## - attr(*, "spec")=List of 3
## ..$ cols :List of 13
## .. ..$ id : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ zona : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ piso : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ estrato : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ preciom : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ areaconst: list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ parquea : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ banios : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ habitac : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ tipo : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ barrio : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
## .. ..$ longitud : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## .. ..$ latitud : list()
## .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
## ..$ default: list()
## .. ..- attr(*, "class")= chr [1:2] "collector_guess" "collector"
## ..$ delim : chr ","
## ..- attr(*, "class")= chr "col_spec"
## - attr(*, "problems")=<externalptr>
El dataset contiene las siguientes características:
Tamaño: 8.330 registros y 13 atributos.
Descripción de las Variables:
El siguiente paso continua con la Limpieza de los datos, para lo cual lo primero es evidenciar datos vacíos en el dataset.
##
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
##
## filter
## The following objects are masked from 'package:base':
##
## cbind, rbind
En el grafico anterior se observan una gran cantidad de datos vacíos, la mayoría corresponde a la variable parqueadero y piso, las demás variables presentan vacíos, pero de manera muy mínima, por lo cual se procede a:
## /\ /\
## { `---' }
## { O O }
## ==> V <== No need for mice. This data set is completely observed.
## \ \|/ /
## `-----'
Finalmente, se observa que ya no existen registros vacíos (NA) y su
disminución en registros fue solo de 3, lo cual afectara en un mínimo
los resultados.
En el análisis de datos se realizará una representación de los datos por medio de Frecuencia, Tablas y Gráficos, adicionalmente analizaremos los resultados junto a los Indicadores, para que la compañía cuente con elementos para la toma de decisiones.
A continuación, se expondrán las tablas de frecuencia para mostrar de forma ordenada las variables y observar su distribución, de la Zona, el Estrato y el tipo de propiedad.
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::arrange() masks plyr::arrange()
## ✖ purrr::compact() masks plyr::compact()
## ✖ dplyr::count() masks plyr::count()
## ✖ dplyr::desc() masks plyr::desc()
## ✖ dplyr::failwith() masks plyr::failwith()
## ✖ dplyr::filter() masks mice::filter(), stats::filter()
## ✖ dplyr::id() masks plyr::id()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::mutate() masks plyr::mutate()
## ✖ dplyr::rename() masks plyr::rename()
## ✖ dplyr::summarise() masks plyr::summarise()
## ✖ dplyr::summarize() masks plyr::summarize()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Frequencies
## vivienda_faltantes$zona
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ------------------ ------ --------- -------------- --------- --------------
## Zona Centro 124 1.49 1.49 1.49 1.49
## Zona Norte 1922 23.08 24.57 23.08 24.57
## Zona Oeste 1204 14.46 39.03 14.46 39.03
## Zona Oriente 351 4.22 43.24 4.22 43.24
## Zona Sur 4726 56.76 100.00 56.76 100.00
## <NA> 0 0.00 100.00
## Total 8327 100.00 100.00 100.00 100.00
En la Tabla de frecuencias simples, acumuladas de la Variable Zona, se observa un mayor número de Propiedades en la Zona Sur, con 4.726 equivalentes a un 56,76% seguida de la Zona Norte con 1.922 propiedades equivalente a un 23,08%.
En el gráfico de barras, de la variable Tipo de Inmueble, se observa; dos Tipos de Inmuebles; CASA y APARTAMENTO con un 61,32%, superior a las Casas con un 38,68%.
Diagrama circular de las variables Estrato y Tipo de Inmueble, se
observa cuatro estratos, el estrato 5 más predominante con un 33,04%,
seguido por el 4 y 6 con un 25,59% y 23,92% respectivamente y de ultimas
el estrato 3 con un 17,44%
##
## APARTAMENTO CASA
## Zona Centro 0.2882190 1.2009127
## Zona Norte 14.3989432 8.6825988
## Zona Oeste 12.4294464 2.0295425
## Zona Oriente 0.7445659 3.4706377
## Zona Sur 33.4574276 23.2977063
##
## APARTAMENTO CASA
## 3 7.673832 9.775429
## 4 16.860814 8.730635
## 5 21.220127 11.816981
## 6 15.563829 8.358352
En las Tablas con dos variables para frecuencias absolutas en porcentajes, se observa la distribución entre Casa y Apartamentos en las Zonas, con un 33,45% de Apartamentos y un 23,29% de Casas en la Zona Sur, y referente al estrato se destaca los Apartamentos en el estrato 5 y 4.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 58.0 220.0 330.0 434.3 540.0 1999.0
Analizando la Variable Precio por Metro Cuadrado (Valores en Miles $), se destacan que el precio mínimo del metro cuadrado es de $58 mil y el precio mayor es de $1.999 mil, con una mediana de $330 mil
## Zona Tipo Rango.1 Rango.2
## 1 Zona Centro APARTAMENTO 52 155
## 2 Zona Norte APARTAMENTO 35 660
## 3 Zona Oeste APARTAMENTO 44 550
## 4 Zona Oriente APARTAMENTO 50 320
## 5 Zona Sur APARTAMENTO 40 932
## 6 Zona Centro CASA 74 750
## 7 Zona Norte CASA 30 1440
## 8 Zona Oeste CASA 55 1200
## 9 Zona Oriente CASA 40 1745
## 10 Zona Sur CASA 47 1600
Histogramas:
hist(x = vivienda_faltantes$areaconst, , main = "Histograma de Área Construida",
xlab = "Área", ylab = "Frecuencia")
En el resumen por subgrupo de las Zonas vs el Tipo de Inmueble se observa, que el Rango.1 (Min) y Rango.2 (Max), los Precios Mayores corresponden a la Zona del Sur para los Apartamentos, pero para las Casa es mayor en la Zona Oriente.
En la gráfica del histograma nos permite observar la distribución de
datos numéricos el Precio en Metros usando barras. Cada barra representa
el número de veces (frecuencia) que se observan datos, en este caso
vemos una distribución mayor entre $220 mil a $540 mil, pero con pocos
valores mayores a $1.000 mil.
En el diagrama de cajas, se observa que el número de baños de se
encuentran entre 2 y 4, y se observa claramente unos valores atípicos
con 8, 9 y 10 baños que se deben verificar y relacionar con el área
construida y el número de habitaciones.
En el diagrama de cajas, se observa que el número de habitaciones entre
3 a 4, y se observa claramente unos valores atípicos entre 6 y 10
habitaciones que se deben verificar y relacionar con el área construida
y el número de habitaciones.
En la tabla cruzada se puede observar el número de habitaciones por tipo
de inmueble, con un número Menor de habitaciones para los Apartamentos y
con un número Mayor de habitaciones para las Casas
En el caso con los baños tienen el mismo patrón.
En los gráficos de densidad se observa nuevamente los datos con simetría
izquierda, por lo cual dividir el dataset o eliminar los datos mayores
generaría mejor comprensión de los datos.