## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.0 ✔ readr 2.2.0
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.2 ✔ tibble 3.3.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.1
## ── 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
El primer bloque del código se encarga de instalar y cargar las librerías necesarias para el análisis de datos en R. Estas librerías proporcionan funciones para manipulación, visualización y exploración de datos.
Este primer bloque del script tiene como objetivo preparar el entorno de trabajo en R, instalando y cargando las librerías necesarias para realizar el análisis del dataset Boston.
Dataset
data(Boston)
Esta línea de código carga en el entorno de trabajo el dataset Boston, que forma parte de la librería MASS.
El dataset Boston contiene información sobre 506 zonas o barrios de la ciudad de Boston, incluyendo variables socioeconómicas, ambientales y características de las viviendas.
Nombre de las variables
names(Boston)
## [1] "crim" "zn" "indus" "chas" "nox" "rm" "age"
## [8] "dis" "rad" "tax" "ptratio" "black" "lstat" "medv"
En esta sección del código se carga el dataset Boston y se muestran los nombres de sus variables. Esto permite conocer la estructura del conjunto de datos y entender qué tipo de información está disponible para el análisis de los precios de vivienda.
| 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 comienza con el Análisis Exploratorio de Datos (EDA). Aquí se inspecciona el dataset para entender su tamaño, estructura y estadísticas principales:
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 estadísticas descriptivas básicas para cada variable. Incluye: mínimo, primer cuartil, mediana, media, tercer cuartil, máximo. Esto permite comprender la distribución general de los datos.
En esta sección del código se realiza la selección de las variables que serán utilizadas para el análisis estadístico descriptivo. El dataset completo contiene 14 variables, pero no todas son necesarias para el objetivo del análisis. Por esta razón se seleccionan únicamente aquellas variables que se consideran más relevantes para estudiar los factores asociados al valor de las viviendas.
Posteriormente se crea un nuevo objeto llamado Boston_b1, que contiene únicamente las variables seleccionadas, para de esta manera simplificar el análisis y enfocarse en las variables más importantes.
#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
En esta sección se calculan medidas descriptivas básicas como la media y la desviación estándar para las variables seleccionadas. Estas estadísticas permiten entender el valor promedio de cada variable y el nivel de dispersión de los datos, lo cual es fundamental para interpretar el comportamiento general del dataset.
#HISTOGRAMAS UNIVARIANTE
Boston_b1 %>%
dplyr::select(medv,rm,lstat) %>%
pivot_longer(cols = everything(),#convierte el formato ancho a largo
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()
En esta sección se construyen histogramas para analizar la
distribución de tres variables clave del dataset:
-
medv: Valor medio de las viviendas.
-
rm: Número promedio de habitaciones.
-
lstat: Porcentaje de población de bajo estatus
socioeconómico.
Este tipo de visualización permite observar la forma
de la distribución de los datos y detectar posibles patrones o
concentraciones que pueden influir en el análisis posterior.
#Univariante
ggplot(Boston, aes(x = medv))+
geom_histogram(fill = "skyblue", color = "white", bins = 23)+
ggtitle("Histograma de medv")+
theme_minimal()
Podemos ver que: medv = Muestra una distribución
donde los precios de vivienda se concentran en ciertos rangos
medios.
ggplot(Boston, aes(x = rm))+
geom_histogram(fill = "salmon", color = "white", bins = 23)+
ggtitle("Histograma de rm")+
theme_minimal()
Se observa: rm = Presenta una distribución
relativamente compacta, indicando que el número de habitaciones suele
variar dentro de un rango limitado.
ggplot(Boston, aes(x = lstat))+
geom_histogram(fill = "lightgreen", color = "white", bins = 23)+
ggtitle("Histograma de lstat")+
theme_minimal()
Para este caso: lstat = Muestra mayor dispersión,
reflejando diferencias en el estatus socioeconómico entre zonas.
Comentario: En esta sección se construyen histogramas individuales para analizar la distribución de variables específicas del dataset. El análisis univariante se enfoca en examinar una variable a la vez, permitiendo comprender características como: la forma de la distribución, la concentración de valores, la presencia de asimetrías y posibles valores extremos.
##BOXPLOT EN CONJUNTO
Boston_b1 %>%
dplyr::select(medv,rm,lstat) %>%
pivot_longer(cols = everything(),#convierte el formato ancho a largo
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()
En esta sección se construye un boxplot conjunto para comparar la distribución de varias variables del dataset. Este tipo de gráfico permite identificar la mediana, la dispersión de los datos y posibles valores atípicos, lo que facilita la comprensión del comportamiento estadístico de las variables analizadas.
#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()
En esta sección se construye un gráfico de dispersión con facetas que permite analizar la relación entre el valor de las viviendas y varias variables socioeconómicas del dataset. Esta visualización facilita la comparación entre diferentes factores que pueden influir en el precio de las propiedades.
Interpretación general esperada:
- rm vs medv: muestra una relación positiva, indicando que las viviendas con más habitaciones tienden a tener mayor valor.
- lstat vs medv: presenta una relación negativa, lo que sugiere que áreas con mayor porcentaje de población de bajo estatus socioeconómico tienden a tener viviendas de menor valor.
- crim vs medv: presenta una tendencia negativa, indicando que mayores niveles de criminalidad pueden asociarse con menores precios de vivienda.
- tax vs medv: tiene relaciones menos claras, pero permite observar cómo los impuestos se relacionan con el valor de las propiedades.
#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()
En esta sección se analizan relaciones entre variables mediante diagramas de dispersión. Estos gráficos permiten observar posibles asociaciones entre el valor de las viviendas y factores como el estatus socioeconómico, la tasa de criminalidad y los impuestos sobre la propiedad.
#Matriz de correlacion visual
ggpairs(Boston[, c("medv", "rm", "lstat")])
La matriz de correlación visual permite analizar simultáneamente la
relación entre varias variables del dataset, facilitando la
identificación de patrones que pueden influir en el valor de las
viviendas.
A partir del análisis exploratorio realizado sobre el dataset Boston, se pudieron identificar diversos patrones y relaciones entre las variables socioeconómicas y el valor medio de las viviendas.
En primer lugar, el análisis descriptivo permitió comprender la estructura del conjunto de datos, el cual contiene 506 observaciones y 14 variables, cada una relacionada con características económicas, ambientales y sociales de distintas zonas urbanas. La selección de variables clave como medv, rm, lstat, crim y tax permitió enfocar el análisis en factores que pueden influir directamente en el valor de las viviendas.
Mediante las medidas descriptivas, como la media y la desviación estándar, se pudo obtener una primera aproximación al comportamiento de las variables.
Las visualizaciones univariantes, como histogramas y boxplots, permitieron analizar la distribución de las variables. En estos gráficos se observó la dispersión de los datos, así como la posible presencia de valores atípicos.
Posteriormente, el análisis bivariante mediante gráficos de dispersión permitió estudiar la relación entre el valor de las viviendas (medv) y otras variables explicativas. En particular, se identificaron algunos patrones relevantes:
El número promedio de habitaciones (rm) presenta una relación positiva con el valor de las viviendas, lo que sugiere que viviendas más grandes tienden a tener un mayor precio.
El porcentaje de población de bajo estatus socioeconómico (lstat) muestra una relación negativa significativa con el valor de las viviendas, indicando que zonas con mayores niveles de vulnerabilidad socioeconómica suelen tener precios de vivienda más bajos.
La tasa de criminalidad (crim) también presenta una relación negativa con el valor de las viviendas, lo cual sugiere que niveles más altos de criminalidad pueden asociarse con una disminución en el precio de las propiedades.
La variable tax, relacionada con los impuestos sobre la propiedad, muestra relaciones menos claras, aunque permite observar posibles patrones económicos dentro del conjunto de datos.
Finalmente, la matriz de correlación permitió confirmar estas relaciones, mostrando la intensidad y dirección de la asociación entre las variables analizadas.
En conjunto, el análisis exploratorio permitió identificar factores socioeconómicos y estructurales que pueden influir en el valor de las viviendas. Estos resultados proporcionan una base importante para futuros análisis estadísticos o modelos predictivos que permitan comprender con mayor precisión el comportamiento del mercado inmobiliario en este dataset.