Explicación de Código.

Parte 1.

## ── 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

Instalación y carga de paquetes.

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.

Cargar el 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.

Parte 2.

Data summary
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.

Parte 3

Selección de Variables:

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.

Cálculo de Medias Descriptivas:

#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.

Parte 4

Visualización de distribuciones: Histogramas univariantes.

#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.

Análisis univariante mediante histogramas.

#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.

Visualización de datos: Boxplot conjunto.

##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.

Análisis bivariante conjunto mediante gráficos de dispersión.

#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.

Análisis bivariante mediante diagramas de dispersión.

#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 correlación visual

#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.


Conclusiones del análisis exploratorio:

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:

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.