Exploración del Data Frame Boston

data frame Boston del paquete MASS de R

El conjunto de datos Boston del paquete MASS de R. Es un conjunto de datos clásico utilizado en regresión lineal y análisis de datos.

Aquí hay algunos detalles sobre el conjunto de datos:

Descripción:

El conjunto de datos Boston contiene información sobre 506 barrios de Boston, Massachusetts, en 1970. Las 14 variables incluyen:

  • crim: tasa de criminalidad por 100,000 habitantes
  • zn: porcentaje de área residencial zonificada para uso de dos familias
  • indus: porcentaje de área no residencial
  • chas: índice de Charles River (1 si está al borde del río, 0 si no)
  • nox: concentración de óxidos de nitrógeno (partes por 10 millones)
  • rm: número promedio de habitaciones por vivienda
  • age: edad promedio de las viviendas
  • dis: distancia ponderada al centro de Boston
  • rad: índice de accesibilidad a las carreteras radiales
  • tax: tasa de impuestos a la propiedad por $10,000
  • ptratio: relación alumno-maestro en las escuelas públicas
  • black: porcentaje de población afroamericana
  • lstat: porcentaje de población con bajo estatus socioeconómico
  • medv: precio mediano de la vivienda (en miles de dólares)
library(MASS)
Boston

Nombres de la columnas de Boston

names(Boston)
##  [1] "crim"    "zn"      "indus"   "chas"    "nox"     "rm"      "age"    
##  [8] "dis"     "rad"     "tax"     "ptratio" "black"   "lstat"   "medv"

Estructura de las variables de Boston

str(Boston)
## '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 ...

Data Frame housing con longitud y latitud y próximidad al oceano

library(readr)
housing <- read_csv("housing.csv")
## Rows: 20640 Columns: 10
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): ocean_proximity
## dbl (9): longitude, latitude, housing_median_age, total_rooms, total_bedroom...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
housing

Nombres de la columnas de

names(housing)
##  [1] "longitude"          "latitude"           "housing_median_age"
##  [4] "total_rooms"        "total_bedrooms"     "population"        
##  [7] "households"         "median_income"      "median_house_value"
## [10] "ocean_proximity"

Estructura de las variables de Boston

str(housing)
## spc_tbl_ [20,640 × 10] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ longitude         : num [1:20640] -122 -122 -122 -122 -122 ...
##  $ latitude          : num [1:20640] 37.9 37.9 37.9 37.9 37.9 ...
##  $ housing_median_age: num [1:20640] 41 21 52 52 52 52 52 52 42 52 ...
##  $ total_rooms       : num [1:20640] 880 7099 1467 1274 1627 ...
##  $ total_bedrooms    : num [1:20640] 129 1106 190 235 280 ...
##  $ population        : num [1:20640] 322 2401 496 558 565 ...
##  $ households        : num [1:20640] 126 1138 177 219 259 ...
##  $ median_income     : num [1:20640] 8.33 8.3 7.26 5.64 3.85 ...
##  $ median_house_value: num [1:20640] 452600 358500 352100 341300 342200 ...
##  $ ocean_proximity   : chr [1:20640] "NEAR BAY" "NEAR BAY" "NEAR BAY" "NEAR BAY" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   longitude = col_double(),
##   ..   latitude = col_double(),
##   ..   housing_median_age = col_double(),
##   ..   total_rooms = col_double(),
##   ..   total_bedrooms = col_double(),
##   ..   population = col_double(),
##   ..   households = col_double(),
##   ..   median_income = col_double(),
##   ..   median_house_value = col_double(),
##   ..   ocean_proximity = col_character()
##   .. )
##  - attr(*, "problems")=<externalptr>

Exploración descriptiva del Data Frame Boston, con la función summary()

La función summary() en R se utiliza para obtener un resumen estadístico de un objeto. Este objeto puede ser un vector, una matriz, un data frame, un modelo de regresión, un modelo ANOVA, entre otros.

Función summary() en R

La función summary() en R se utiliza para obtener un resumen estadístico de un objeto. Este objeto puede ser un vector, una matriz, un data frame, un modelo de regresión, un modelo ANOVA, entre otros.

¿Qué información proporciona?

summary() genera un resumen con diferentes estadísticas descriptivas, dependiendo del tipo de objeto que se le pase como argumento. Para vectores numéricos, por ejemplo, la función proporcionará:

  • Mínimo
  • Primer cuartil (Q1)
  • Mediana
  • Media
  • Tercer cuartil (Q3)
  • Máximo
  • Número de valores no nulos (NA)

En el caso de data frames, summary() mostrará un resumen para cada variable, incluyendo:

  • Tipo de variable (numérica, categórica, etc.)
  • Número de observaciones
  • Resumen de valores numéricos (similar al de un vector)
  • Tabla de frecuencias para variables categóricas

Resumen descriptivo de todo el data frame Boston

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

Resumen descriptivo de las variables rm y medv

summary(Boston$rm)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.561   5.886   6.208   6.285   6.623   8.780
summary(Boston$medv)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    5.00   17.02   21.20   22.53   25.00   50.00

Resumen descriptivo de todo el data frame housing

summary(housing)
##    longitude         latitude     housing_median_age  total_rooms   
##  Min.   :-124.3   Min.   :32.54   Min.   : 1.00      Min.   :    2  
##  1st Qu.:-121.8   1st Qu.:33.93   1st Qu.:18.00      1st Qu.: 1448  
##  Median :-118.5   Median :34.26   Median :29.00      Median : 2127  
##  Mean   :-119.6   Mean   :35.63   Mean   :28.64      Mean   : 2636  
##  3rd Qu.:-118.0   3rd Qu.:37.71   3rd Qu.:37.00      3rd Qu.: 3148  
##  Max.   :-114.3   Max.   :41.95   Max.   :52.00      Max.   :39320  
##                                                                     
##  total_bedrooms     population      households     median_income    
##  Min.   :   1.0   Min.   :    3   Min.   :   1.0   Min.   : 0.4999  
##  1st Qu.: 296.0   1st Qu.:  787   1st Qu.: 280.0   1st Qu.: 2.5634  
##  Median : 435.0   Median : 1166   Median : 409.0   Median : 3.5348  
##  Mean   : 537.9   Mean   : 1425   Mean   : 499.5   Mean   : 3.8707  
##  3rd Qu.: 647.0   3rd Qu.: 1725   3rd Qu.: 605.0   3rd Qu.: 4.7432  
##  Max.   :6445.0   Max.   :35682   Max.   :6082.0   Max.   :15.0001  
##  NA's   :207                                                        
##  median_house_value ocean_proximity   
##  Min.   : 14999     Length:20640      
##  1st Qu.:119600     Class :character  
##  Median :179700     Mode  :character  
##  Mean   :206856                       
##  3rd Qu.:264725                       
##  Max.   :500001                       
## 

Resumen descriptivo de las variables rm y medv

summary(housing$total_rooms)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       2    1448    2127    2636    3148   39320
summary(housing$median_house_value)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   14999  119600  179700  206856  264725  500001

Distribución de frecuencias de medv, en Boston, con la función hist()

La función hist() en R se utiliza para crear un histograma de un vector de datos. Un histograma es una representación gráfica de la distribución de frecuencias de un conjunto de datos.

hist(Boston$medv)

Distribución de frecuencias de median_house_value, en housing, con la función hist()

hist(housing$median_house_value)

Dispersión entre medv y rm

library(MASS)
library(ggplot2)

# Carga del conjunto de datos
boston <- data.frame(Boston)

# Crea un diagrama de dispersión
ggplot(boston, aes_string(x = "rm", y = "medv")) +
  geom_point() +
  labs(title = "Relación entre rm y medv",
       x = "Número promedio de habitaciones por vivienda",
       y = "Precio medio de la vivienda (miles de dólares)")
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

# Añadir una línea de regresión lineal
stat_smooth(method = "lm")
## geom_smooth: se = TRUE, na.rm = FALSE, orientation = NA
## stat_smooth: method = lm, formula = NULL, se = TRUE, n = 80, fullrange = FALSE, level = 0.95, na.rm = FALSE, orientation = NA, method.args = list(), span = 0.75
## position_identity
# Mostrar el gráfico
ggsave("rm_medv.png")
## Saving 7 x 5 in image
# modelo <- lm(formula = Boston$medv ~ Boston$rm, data = Boston)
# abline(modelo)
# summary(modelo)

# Regresión lineal
modelo <- lm(medv ~ rm, data = Boston)

# Resumen del modelo
summary(modelo)
## 
## Call:
## lm(formula = medv ~ rm, data = Boston)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -23.346  -2.547   0.090   2.986  39.433 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -34.671      2.650  -13.08   <2e-16 ***
## rm             9.102      0.419   21.72   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.616 on 504 degrees of freedom
## Multiple R-squared:  0.4835, Adjusted R-squared:  0.4825 
## F-statistic: 471.8 on 1 and 504 DF,  p-value: < 2.2e-16

Esta es la interpretación de la salida del comando lm():

Llamada:

Esta línea especifica la fórmula utilizada para la regresión lineal. En este caso, el modelo predice el “valor mediano de la vivienda” (medv) en base a la “cantidad promedio de habitaciones” (rm) del conjunto de datos “Boston”.

Residuos:

Esta sección muestra el mínimo, primer cuartil (Q1), mediana, tercer cuartil (Q3) y máximo valor de los residuos. Los residuos representan la diferencia entre los valores reales de “medv” y los valores predichos por el modelo. Idealmente, estos valores deberían estar distribuidos aleatoriamente alrededor de cero, indicando que no hay errores sistemáticos en el modelo.

Coeficientes:

Esta sección es crucial para entender la relación entre las variables:

  • Intercepto: El intercepto estimado es -34.671. Esto significa que si el valor de “rm” fuera cero (no hay habitaciones), el “medv” predicho sería -34.671. Sin embargo, como los precios de las viviendas no pueden ser negativos, este valor debe interpretarse con cautela, ya que probablemente esté fuera del rango relevante de los datos.
  • rm: El coeficiente para “rm” es 9.102. Esto significa que por cada unidad de aumento en “rm” (una habitación adicional), el modelo predice un aumento de 9.102 en “medv” (miles de dólares). Este coeficiente positivo indica una relación positiva entre el número de habitaciones y el precio de la vivienda.
  • Error Std., valor t, Pr(>|t|): Estos valores brindan información adicional sobre la significancia estadística de los coeficientes. Los valores p pequeños (< 2.2e-16) indican que tanto el intercepto como el coeficiente “rm” son estadísticamente significativos a un nivel de 0.001, lo que significa que es poco probable que se deban al azar.

Error estándar residual: Este valor (6.616) representa la desviación estándar de los residuos, indicando la diferencia promedio entre los valores predichos y reales de “medv”.

R-cuadrado múltiple y R-cuadrado ajustado: Estos valores representan la proporción de la varianza en “medv” explicada por el modelo. En este caso, el 48.35% de la variabilidad en el precio de las viviendas es explicada por el modelo considerando el número de habitaciones, mientras que el R-cuadrado ajustado (48.25%) corrige por el número de predictores en el modelo y se considera una estimación más confiable de la varianza explicada.

Estadístico F y valor p: El estadístico F (471.8) y su valor p (< 2.2e-16) indican que el modelo es estadísticamente significativo, lo que significa que existe una fuerte relación lineal entre “rm” y “medv”.

En resumen, este modelo sugiere una relación positiva estadísticamente significativa entre el número de habitaciones y el valor mediano de la vivienda. Sin embargo, es importante recordar que este modelo solo explica una parte de la varianza en los precios de las viviendas. Otros factores no incluidos en el modelo también podrían influir en el precio.