El presente reporte detalla el flujo de trabajo seguido para realizar un Análisis Exploratorio de Datos (EDA) sobre el dataset Boston. El objetivo es identificar las variables socioeconómicas y estructurales que inciden en la determinación del valor de las viviendas en dicha región.
## Warning: package 'MASS' was built under R version 4.4.3
## Warning: package 'pacman' was built under R version 4.4.3
## Warning: package 'skimr' was built under R version 4.4.3
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'ggplot2' was built under R version 4.4.3
## Warning: package 'tibble' was built under R version 4.4.2
## Warning: package 'tidyr' was built under R version 4.4.3
## Warning: package 'readr' was built under R version 4.4.3
## Warning: package 'purrr' was built under R version 4.4.3
## Warning: package 'dplyr' was built under R version 4.4.3
## Warning: package 'stringr' was built under R version 4.4.3
## Warning: package 'forcats' was built under R version 4.4.3
## Warning: package 'lubridate' was built under R version 4.4.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.0 ✔ readr 2.1.6
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.2.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::select() masks MASS::select()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Warning: package 'GGally' was built under R version 4.4.3
En esta fase inicial se procede con la carga de las librerías
necesarias para la manipulación y visualización de datos. Se utilizan
herramientas del ecosistema tidyverse y paquetes
especializados como skimr y GGally para
garantizar un procesamiento eficiente y profesional de la
información.
data(Boston)
Se realiza la importación del dataset Boston, el cual contiene 506 observaciones relativas a diversos sectores de la ciudad. Cada registro integra variables sobre el entorno social, económico y ambiental de las viviendas.
Identificación de Variables:
names(Boston)
## [1] "crim" "zn" "indus" "chas" "nox" "rm" "age"
## [8] "dis" "rad" "tax" "ptratio" "black" "lstat" "medv"
Esta instrucción permite visualizar los identificadores de las columnas, facilitando la comprensión de la estructura del conjunto de datos antes de proceder con el análisis estadístico.
| Name | Boston |
| Number of rows | 506 |
| Number of columns | 14 |
| _______________________ | |
| Column type frequency: | |
| numeric | 14 |
| ________________________ | |
| Group variables | None |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| crim | 0 | 1 | 3.61 | 8.60 | 0.01 | 0.08 | 0.26 | 3.68 | 88.98 | ▇▁▁▁▁ |
| zn | 0 | 1 | 11.36 | 23.32 | 0.00 | 0.00 | 0.00 | 12.50 | 100.00 | ▇▁▁▁▁ |
| indus | 0 | 1 | 11.14 | 6.86 | 0.46 | 5.19 | 9.69 | 18.10 | 27.74 | ▇▆▁▇▁ |
| chas | 0 | 1 | 0.07 | 0.25 | 0.00 | 0.00 | 0.00 | 0.00 | 1.00 | ▇▁▁▁▁ |
| nox | 0 | 1 | 0.55 | 0.12 | 0.38 | 0.45 | 0.54 | 0.62 | 0.87 | ▇▇▆▅▁ |
| rm | 0 | 1 | 6.28 | 0.70 | 3.56 | 5.89 | 6.21 | 6.62 | 8.78 | ▁▂▇▂▁ |
| age | 0 | 1 | 68.57 | 28.15 | 2.90 | 45.02 | 77.50 | 94.07 | 100.00 | ▂▂▂▃▇ |
| dis | 0 | 1 | 3.80 | 2.11 | 1.13 | 2.10 | 3.21 | 5.19 | 12.13 | ▇▅▂▁▁ |
| rad | 0 | 1 | 9.55 | 8.71 | 1.00 | 4.00 | 5.00 | 24.00 | 24.00 | ▇▂▁▁▃ |
| tax | 0 | 1 | 408.24 | 168.54 | 187.00 | 279.00 | 330.00 | 666.00 | 711.00 | ▇▇▃▁▇ |
| ptratio | 0 | 1 | 18.46 | 2.16 | 12.60 | 17.40 | 19.05 | 20.20 | 22.00 | ▁▃▅▅▇ |
| black | 0 | 1 | 356.67 | 91.29 | 0.32 | 375.38 | 391.44 | 396.22 | 396.90 | ▁▁▁▁▇ |
| lstat | 0 | 1 | 12.65 | 7.14 | 1.73 | 6.95 | 11.36 | 16.96 | 37.97 | ▇▇▅▂▁ |
| medv | 0 | 1 | 22.53 | 9.20 | 5.00 | 17.02 | 21.20 | 25.00 | 50.00 | ▂▇▅▁▁ |
## [1] 506 14
## 'data.frame': 506 obs. of 14 variables:
## $ crim : num 0.00632 0.02731 0.02729 0.03237 0.06905 ...
## $ zn : num 18 0 0 0 0 0 12.5 12.5 12.5 12.5 ...
## $ indus : num 2.31 7.07 7.07 2.18 2.18 2.18 7.87 7.87 7.87 7.87 ...
## $ chas : int 0 0 0 0 0 0 0 0 0 0 ...
## $ nox : num 0.538 0.469 0.469 0.458 0.458 0.458 0.524 0.524 0.524 0.524 ...
## $ rm : num 6.58 6.42 7.18 7 7.15 ...
## $ age : num 65.2 78.9 61.1 45.8 54.2 58.7 66.6 96.1 100 85.9 ...
## $ dis : num 4.09 4.97 4.97 6.06 6.06 ...
## $ rad : int 1 2 2 3 3 3 5 5 5 5 ...
## $ tax : num 296 242 242 222 222 222 311 311 311 311 ...
## $ ptratio: num 15.3 17.8 17.8 18.7 18.7 18.7 15.2 15.2 15.2 15.2 ...
## $ black : num 397 397 393 395 397 ...
## $ lstat : num 4.98 9.14 4.03 2.94 5.33 ...
## $ medv : num 24 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 ...
Se realiza una inspección profunda de la estructura de datos: - Mediante options(), se desactiva la notación científica para asegurar una lectura clara de las magnitudes numéricas. - La función skim() proporciona un diagnóstico integral sobre la integridad y distribución de las variables. - Se verifican las dimensiones con dim() y la naturaleza de los datos con str() para validar la consistencia del set antes del análisis descriptivo.
summary(Boston)
## crim zn indus chas
## Min. : 0.00632 Min. : 0.00 Min. : 0.46 Min. :0.00000
## 1st Qu.: 0.08205 1st Qu.: 0.00 1st Qu.: 5.19 1st Qu.:0.00000
## Median : 0.25651 Median : 0.00 Median : 9.69 Median :0.00000
## Mean : 3.61352 Mean : 11.36 Mean :11.14 Mean :0.06917
## 3rd Qu.: 3.67708 3rd Qu.: 12.50 3rd Qu.:18.10 3rd Qu.:0.00000
## Max. :88.97620 Max. :100.00 Max. :27.74 Max. :1.00000
## nox rm age dis
## Min. :0.3850 Min. :3.561 Min. : 2.90 Min. : 1.130
## 1st Qu.:0.4490 1st Qu.:5.886 1st Qu.: 45.02 1st Qu.: 2.100
## Median :0.5380 Median :6.208 Median : 77.50 Median : 3.207
## Mean :0.5547 Mean :6.285 Mean : 68.57 Mean : 3.795
## 3rd Qu.:0.6240 3rd Qu.:6.623 3rd Qu.: 94.08 3rd Qu.: 5.188
## Max. :0.8710 Max. :8.780 Max. :100.00 Max. :12.127
## rad tax ptratio black
## Min. : 1.000 Min. :187.0 Min. :12.60 Min. : 0.32
## 1st Qu.: 4.000 1st Qu.:279.0 1st Qu.:17.40 1st Qu.:375.38
## Median : 5.000 Median :330.0 Median :19.05 Median :391.44
## Mean : 9.549 Mean :408.2 Mean :18.46 Mean :356.67
## 3rd Qu.:24.000 3rd Qu.:666.0 3rd Qu.:20.20 3rd Qu.:396.23
## Max. :24.000 Max. :711.0 Max. :22.00 Max. :396.90
## lstat medv
## Min. : 1.73 Min. : 5.00
## 1st Qu.: 6.95 1st Qu.:17.02
## Median :11.36 Median :21.20
## Mean :12.65 Mean :22.53
## 3rd Qu.:16.95 3rd Qu.:25.00
## Max. :37.97 Max. :50.00
La función summary() genera los parámetros de tendencia central y dispersión, tales como la media, mediana y cuartiles, permitiendo una visión general de la distribución de cada atributo.
Con el fin de optimizar el estudio, se seleccionan únicamente las variables con mayor relevancia teórica para el mercado inmobiliario, tales como el valor medio (medv), el número de habitaciones (rm) y el índice de criminalidad (crim). Se genera un subconjunto denominado Boston_b1 para focalizar el análisis.
#calcular media y varianza de las variables
sapply(Boston_b1[variable_b1],mean)
## medv rm lstat crim tax
## 22.532806 6.284634 12.653063 3.613524 408.237154
sapply(Boston_b1[variable_b1],sd)
## medv rm lstat crim tax
## 9.1971041 0.7026171 7.1410615 8.6015451 168.5371161
Se determinan las medias aritméticas y las desviaciones estándar de las variables seleccionadas. Estas métricas son fundamentales para establecer los puntos de referencia y el grado de variabilidad presente en el dataset.
#HISTOGRAMAS UNIVARIANTE
Boston_b1 %>%
dplyr::select(medv,rm,lstat) %>%
pivot_longer(cols = everything(),
names_to = "variable",
values_to="valor") %>%
ggplot(aes(x=valor, fill=variable))+
geom_histogram(color="white",bins = 15)+
facet_wrap(~variable, scales = "free_x")+
scale_fill_manual(values=c(medv="skyblue",rm="salmon",lstat="lightgreen"))+
labs(title = "HISTOGRAMA CONJUNTO")+
theme_minimal()
Se construyen histogramas conjuntos para evaluar la morfología de las distribuciones de las variables principales. Esto permite observar visualmente la concentración de los datos y la presencia de asimetrías en los precios y el estatus socioeconómico.
#Univariante
ggplot(Boston, aes(x = medv))+
geom_histogram(fill = "skyblue", color = "white", bins = 23)+
ggtitle("Histograma de medv")+
theme_minimal()
Variable medv: Se observa que los valores de las
viviendas tienden a concentrarse en rangos medios, con frecuencias
menores en los extremos.
ggplot(Boston, aes(x = rm))+
geom_histogram(fill = "salmon", color = "white", bins = 23)+
ggtitle("Histograma de rm")+
theme_minimal()
Variable rm: Presenta una distribución
relativamente simétrica, sugiriendo que el número de habitaciones en la
mayoría de las viviendas oscila cerca del promedio.
ggplot(Boston, aes(x = lstat))+
geom_histogram(fill = "lightgreen", color = "white", bins = 23)+
ggtitle("Histograma de lstat")+
theme_minimal()
Variable lstat: Muestra una dispersión mayor,
reflejando la heterogeneidad en las condiciones socioeconómicas de los
distintos sectores analizados.
Nota Metodológica: El desglose individual permite identificar con precisión la presencia de sesgos o comportamientos específicos que podrían influir en modelos predictivos futuros.
##BOXPLOT EN CONJUNTO
Boston_b1 %>%
dplyr::select(medv,rm,lstat) %>%
pivot_longer(cols = everything(),
names_to = "variable",
values_to="valor") %>%
ggplot(aes(x=variable,y=valor, fill=variable))+
geom_boxplot()+
scale_fill_brewer(palette="Set2")+
labs(title = "BOXPLOT CONJUNTO")+
theme_minimal()
El diagrama de caja y bigotes permite visualizar la mediana, el rango intercuartílico y la detección de valores atípicos (outliers) que se distancian significativamente del comportamiento central del grupo.
#Grafica de dispersion
Boston %>%
select(medv, rm, lstat, crim, tax) %>%
pivot_longer(cols = -medv,
names_to = "variable",
values_to = "valor") %>%
ggplot(aes(x = valor, y = medv, color = variable)) +
geom_point() +
facet_wrap(~variable, scales = "free_x")+
scale_fill_brewer(palette = "Set2")+
scale_color_manual(values = c(rm = "blue", lstat = "red", crim = "purple", tax = "orange"))+
ggtitle("Relación de medv", subtitle = "Graficos por faceta" )+
theme_minimal()
Se analiza la relación entre el valor de la vivienda y los factores explicativos. De acuerdo con los gráficos de dispersión, se infieren las siguientes tendencias: - rm vs medv: Existe una asociación positiva; a mayor número de habitaciones, se observa un incremento en el valor de la propiedad. - lstat vs medv: Se presenta una relación negativa, indicando que niveles socioeconómicos más vulnerables se asocian con precios de vivienda más bajos. - crim vs medv: La criminalidad muestra un impacto inverso sobre la valuación inmobiliaria.
#Grafica bivariante
ggplot(Boston, aes(x = lstat, y = medv)) +
geom_point(color = "red") +
ggtitle("medv vs lstat") +
theme_minimal()
ggplot(Boston, aes(x = crim, y = medv)) +
geom_point(color = "purple") +
scale_x_log10() +
ggtitle("medv vs crim (escala log)")+
theme_minimal()
ggplot(Boston, aes(x = tax, y = medv))+
geom_point(color = "orange")+
ggtitle("medv vs tax")+
theme_minimal()
Estas representaciones gráficas finales permiten confirmar con mayor detalle cómo las cargas impositivas y la seguridad pública interactúan con el valor del suelo en Boston.
Tras la ejecución del análisis sobre el dataset Boston, se han identificado patrones fundamentales que rigen el comportamiento del mercado inmobiliario en la región:
Este estudio proporciona la base estadística necesaria para avanzar hacia la implementación de modelos de regresión lineal o multivariante en etapas posteriores del curso de Cómputo Científico.